Здравейте
За да уважа българската част от форума първо ще пусна тук идентично на съобщението което ще пусна и в английската му част. Тук нещата са идентични като работа с разликатата, че коментарите в пакете и обясненията са на български език. Без повече излишни приказки.
Представям ви един пакет (снипет+плугин) за мултиезичност алтернатива на досегашните. Не се смятам за PHP разработчик (поне не добър), но съм се постарал работата да е възможно по-малко изисквани ресурси. Нещата са тествани и работят. За да няма недоволни трябва да сте наясно, че това е alpha или pre-alpha :-j версия. Сигурен съм, че има какво да се направи за да бъде кодът по-добър, по-бърз и т.н. Отворен съм към нови идеи и оптимизация на кода.
Да ви представя Multylingo
Пакета Мultylingo (снипета и плугина) позволява изграждането на пълнофункционален мултиезичен сайт без изискването да правите допълнителни темплейти, като можете да зададете персонализирани страници за грешки на всеки език. Можете да ги използвате в комбинация или поотделно според вашите нужди. Няма “противопоказания” спрямо други плугини и снипети (поне при тестовете). Тествано е на MODx 1.0.4 с PHP 5.2.4, но смятам, че ще работи безпроблемно и при по-стари версии на двете съответно MODx 0.9.6.3 и PHP 4.x.
Ако имате въпроси, аз съм насреща. При положение, че не знам отговора се надявам и другите които наистина разбират какво правят да се намесят.
За повече информация за използването на пакета четете файлът readme.txt
Снипета се използва по следният начин
[[Multylingo? &parents=`2,3,4,5,6` &default_lang=`en` &textchunk=`examle`]]
В &default_lang се вписва двубуквеното съкращението на основният език който използвате на сайта си (намиращ се в основната папка).
В &parents се вписват паките на съответно вторият, третият или колкото езика имате (до 6-тия). Kaтo тази последователност е добре да се спазва при въвеждането на елементите от chunk.
В &textchunk се вписва името на чънка който служи за показване на текстове според различните езици.
Първите 2 елемента &parents и &default_lang са задължителни, а &textchunk се използва по желание
Важно е документите вписани като основни папки на езиковите да имат alias за &parents и да се впише основния език(&default_lang ) според съответният модел:
http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm
В резултат на snippet се може да извеждат следните Placeholders
[+lang-big+] - вади езика за съответния snippet автоматично според съответният език (това къде се намира документа). Може да се ползва за Ditto, Jot и т.н.
[+lang-ids+] - вади съответния parent според съответният език разпожението на папката. Може да се използва при AjaxSearch или други.
[+text1+] , [+text2+] ... [+text10+] Показва съответен текст от предварително зададените в чънка (взима се от &textchunk ).
Плугин Multylingo
Служи за изграждане на 404 страници за различните езици.
Този код е базиран на моят код пуснат тук:
http://modxcms.com/forums/index.php/topic,46636.msg274624.html#msg274624
Доразвит тук:
http://modxcms.com/forums/index.php/topic,46636.msg274991.html#msg274991
Трябва да маркирате в System Events:
[X] OnPageNotFound
За да работи е нужно да е активирана SEF на адресите и използване на път с псевдоним.
В $parents се задават ID адресите на езиците катo автоматично се извлича техния alias.
Работи само при двубуквени alias-и на parents адресите на езиците (може лесно да се преправи) на база:
Английски имена на страни и елементи на кода ISO 3166-1 и кореспондиращо с ISO 3166-1-alpha-2 код елементи.
http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm .
Максималният брой езици е 5+1. 5 зададени и един основен който се извлича автоматично.
В $parents се задават ID адресите на папките на съответните езиции. Това което сте приели за основен (home document)
Максималният брой страници за грешки при езиците е 5+1. 5 зададени и една 404 който се извлича автоматично (основната страница за сайта)
В $langs_404 се задават ID адресите на 404 грешките в последователността в която сте ги задали при $parents.