Multilingual WP – making multilingual WordPress easy
Проблема
Използвали ли сте/ползвате ли плъгина qTranslate за да направите вашия WordPress сайт достъпен на повече от един езици? Ако е така, предполагам вече сте се натъквали на проблемите които се случваха на няколко пъти през последната година(след обновления на WordPress) – приината за това е, че човека който стои зад плъгин, просто няма достатъчно време за да оправи тези проблеми на време. За което не го виня – като програмист мога ясно да разбера, че понякога е трудно да намериш свободно време да излезеш с приятелите си, още по-малко да оправяш проблеми във страничен проект.
Аз – също като вас – използвам qTranslate(да си призная честно, дори съм го използвал в много от работните си проекти ) и на няколко пъти се опитвах да правя малки кръпки по плъгина, така че да работи с последната версия на WordPress. Но проблема е, че сами плъгин е разработен доста зле и подобряването/оправянето му би отнело доста време – всъщност автора на плъгина е имал идеята да го пренапише напълно, но никога не е стигнал до там, че да изпълни тази идея.
Решението
За това, реших да напиш мой плъгин, който да използва/разширява единствено вградена в WordPress функционалност за да се добави поддръжка на множество езици. Причината за този подход е, че той ще направи поддържането на плъгина много по-лесно и също така ще го направи много по-съвместим с бъдещи версии на WordPress.
Как работи
Ето кратка информация за това как плъгина работи:
- Първоначално избирате кои пост-типове(публикация, страница, тн) искате да бъдат многоезични
- След това избирате езиците, които искате да бъдат позволени(най-вероятно ще трябва да ги създадете първо)
- Пускате автоматичния ъпдейтър, който ще създаде нов пост за всеки език, който сте позволили(да, включително и езика по подразбиране)
- Така че, ако имате 3 публикации и сте позволили 2 езика, след тази стъпка вие ще имате 9 публикации в базата данни(само 3 ще се показват в администрацията на WordPress). Реших да избера този подход, за да се улесни смяната на езика по подразбиране.
- Не сте длъжни да пуснете автоматичния ъпдейтър, но освен ако не отидете на страницата за редактиране на всяка една от публикациите/страниците които имате, отделните публикации за всеки език няма да бъдат създадени.
- Оригиналната публикация има отношение едно-към-много с публикациите за всеки език чрез мета запис с името _mlwp_langs
- Публикацията на всеки език има отношение едно-към-едно с оригиналната публикация чрез мета запис с името _mlwp_rel_post
- На екрана за редактиране на публикациите се появява бутон за всеки от разрешените езици над секциите със заглавие/съдържание:
Това дава най-добра съвместимост(по мое мнение) с WordPress и други плъгини, защото:- Използва вградена в WordPress функция
- Поради предходното, не се налага използването на нестандартни решения за разделяне на съдържанието на всеки език.
- Понеже всеки превод е де-факто различна публикация, получавате различни “slug”-ове за всеки език :) Това става чрез добавянето на допълнителни “rewrite” правила към тези генерирани от WordPress. Още един възможен проблем със производителността при по-големи сайтове.
- Тъй като всички публикации се редактират от един екран, няма как да получите различни мета полета за всеки превод – вместо това, всички мета полета които имате са свързани с оригиналната публикация – в тях все още можете да ползвате бързи тагове или “shortcode”-ове за да преведете съдържанието им.
За последната информация за плъгина, постете страницата в GitHub