Прогрес с Multilingual WP

През последните две седмици нямах особено голяма възможност да отделя много време за работа по плъгина, ОБАЧЕ съм горд да заявя че 2 доста големи неща се случиха през това време:

1. Започнах да ползвам плъгина за голям корпоративен сайт

В компанията в която работя в момента получихме задачата да превърнем един ASP.NET сайт в WordPress сайт. Сайта е на два езика и има сравнително много съдържание – добре де, около 70 страници за всеки език и една камара файлове не е чак толкова много, но е значително повече от средностатистическия уеб сайт. Тъй като реших да не иползвам qTranslate когато стане дума за големи многоезични сайтове, реших да изпробвам моя плъгин и да видя как ще се сработи с подобен сайт и нуждите му.

Докато работех по сайта успях да намеря някои малки проблеми, които успях да оправя много бързо. Като цяло нищо сериозно не се появи, което ме кара да се чувствам по-сигурен относно (надявам се)скорошното пускане на плъгина за масова употреба

Също така се натъкнах на един друг проблем на многоезичните сайтове – понякога не всяка страница трябва да е достъпна на всеки език. Понякога искате да покажете специфично съдържание само за конкретен езики/езици. Ето следния пример:

Имате университет и на сайта му сте публикували информация за него – включително адрес, контакти, тн. Също така сте създали страница на майчиния ви език за програмите и намаленията от които местните студенти могат да се възползват – информация, която определено не е подходяща и нужна за чуждестранните ви студенти и тяхното посещение в сайта не трябва да се обременява с тази допълнителна информация. От друга страна сте създали и страница на чужд език, която обяснява какво предлагате на чуждестранните си студенти – отново нещо, което местните студенти няма да имат полза от. В крайна сметка искате да показвате тези страници само на очакваната за тях аудитория.

Почовърках малко тук и там и накрая намерих специфично решение за този сайт. Решението работи сравнително просто – на екрана за редактиране на всяка страница/публикация има панел със отметки за всеки един от активните в момента езици. Когато изберете някой език от този списък, тази страница става напълно недостъпна за съответния език – тя се премахва от навигацията, търсения, дори и ако се опитате да отворите страницата посредством правилния и адрес, ще получите грешка 404 – тоест, че страницата не е намерена. В момента се замислям да добавя тази функционалност към плъгина, обаче определено ще се наложи да поработя върху нея още малко.

2. Първия сайт който ползва Multilingual WP е вече на лице

Добре де – втория сайт, за който знам, но така или иначе не броя themoonwatch.com

Това е сайта за един от отборите които ще участват в състезанието Red Bull X-Alps тази година. Можете да разгледате техния сайт тук – X-Alps – BasqueTeam. Човека който разработи сайта е един от членовете на отбора – Iñigo Arizaga. Той първоначално се свърза с мен във връзка с няколко проблема с плъгина ми, и в последствие продължи да ме оведомява за малките проблеми на които се натъкваше докато разработваше сайта. Това беше изключително полезно за мен и за плъгина и аз много го оценявам Искам да им пожелая късмет, попътен вятър и подходящи метеорологични условия и най-важното – да се насладят на състезанието!

 

Във връзка с това – ако някой друг е успял да подкара сайта си ползвайки Multilingual WP за да го направи многоезичен – чувствайте се свободни да оставите коментар с линк към сайта си, така че аз(и всички останали) да разберат за него.

Миграция към Multilingual WP

След дълга и упорита работа по кода на плъгина за многоезично съдържание, най-накрая се усмелих да го пробвам на истински сайт – моя

Миграцията не беше толкова безпроблемна, колкото ми се искаше, но това се очакваше – така оправих куп малки проблеми, които не бях забелязал до тогава. За сега развитието на плъгина се движи доста добре и се надявам скоро да успея да го пусна официално за всички WordPress потребители(няма да се заемам с определяне на конкретна дата, защото много неща могат да се случат/променят дори само за седмица).

След като добавих поддръжка за страхотния плъгин за sitemaps Google XML Sitemaps(до сега това беше основната причина, поради която не исках да кача плъгина на моя сайт) и подобрявайки поддръжката за таксономиите, реших да кача плъгина на моя сайт и да видя какво ще се случи.

Ако решите да направите същото, моля ви, МОЛЯ ВИ, направете копие на базата с данни – в моя случай не се наложи да го използвам, но е добре да имате едно под ръка в случай че нещо се обърка.

След като активирах плъгина и настроих желаните езици, минах през миграцията на категориите и публикациите(което за 2 езика се случи учудващо бързо). Миграцията мина безупречно и накрая се оказах със съдържание на два езика в новия интерфеис(съдържанието бе мигрирано от qTranslate) – както за публикациите и страниците, така и за категориите и таговете.

Също така реших да ползвам една от възможностите на плъгина, която ми позволява да избера специфичен „slug“ за всяка една от таксономиите(освен многоезичните „slug-ове“ за всяка категория/таг). Това проработи долу-горе добре и се наложи да оправя няколко бъга свързани с тази опция. Единственото притеснение което може да имате ако ползвате тази опция е за сайтове които вече имат съдържание и са индексирани от търсачките – тъй като най-вероятно повечето линкове към съдържанието ви ще спрат да работят и ще се наложи да използвате плъгин който да пренасочи старите, неработещи линкове към новите. За целта аз иползвах плъгина 404 Redirected – не е особено ефикасен и му липсва поддръжка на регуларни изрази, но тъй като имам само шепа адреси в сайта си, това не беше голям проблем.

В случай че имате повече линкове, най-вероятно би било по-мъдро да използвате плъгин като Redirection – Аз лично не го харесах много, защото няма опция да се изключи автоматичното пренасочване към началната страница когато се отвори страница която не е намерена, но от друга страна той има поддръжка за регулярни изрази, което би направило по-лесно пренасочването на счупените линкове.

Освен тези неща – widget-a за избиране на език няма готово стилизиране – както можете да видите в сайдбар-а в момента текста не е правилно подреден със знамената за всеки език, но тъй като не смятам това за голям проблем ще отложа решаването му за малко. Най-вероятно ще намеря време за него тези дни, но не е сигурно.

Още едно нещо, което за малко да забравя – статистиките(долу-горе) за работата на плъгина в сравнение с qTranslate – честно казано, повечето от цифрите не са много по-ниски, но тъй като сайта ми е сравнително малък, не затрудняваше много qTranslate. Направих по два записа на производителността със qTranslate on и два записа със Multilingual WP – по един автоматичен и един ръчен(разликата е дали сам избирам кои адреси да отворя по време на проверката, или плъгина сам решава).

По-долу са резултатите само от автоматичните записи, тъй като изглеждаше че те са записали повече страници, от ръчните записи(може би плъгина не работи особено точно винаги).

С qTranslate:

WordPress Plugin Profile Report
===========================================
Report date: June 6, 2013
Theme name: Moon Watch
Pages browsed: 3
Avg. load time: 1.8621 sec
Number of plugins: 19
Plugin impact: 82.56% of load time
Avg. plugin time: 1.5373 sec
Avg. core time: 0.1272 sec
Avg. theme time: 0.0281 sec
Avg. mem usage: 137.17 MB
Avg. ticks: 158,059
Avg. db queries : 52.67
Margin of error : 0.1695 sec

Plugin list:
===========================================
P3 (Plugin Performance Profiler) – 0.0017 sec – 0.11%
qTranslate Separate Comments – 0.0451 sec – 2.93%
qTranslate – 0.8806 sec – 57.28%
Other(13 plugins) – 0.6097 sec – 39.68%

Plugin impact with qTranslate

 

С Multilingual WP:

WordPress Plugin Profile Report
===========================================
Report date: June 6, 2013
Theme name: Moon Watch
Pages browsed: 5
Avg. load time: 0.7518 sec
Number of plugins: 18
Plugin impact: 79.91% of load time
Avg. plugin time: 0.6008 sec
Avg. core time: 0.1270 sec
Avg. theme time: 0.0129 sec
Avg. mem usage: 58.95 MB
Avg. ticks: 14,781
Avg. db queries : 82.60
Margin of error : 0.0111 sec

Plugin list:
===========================================
P3 (Plugin Performance Profiler) – 0.0023 sec – 0.38%
Multilingual Wp – 0.1557 sec – 25.92%
Other(16 plugins) – 0.4426 sec – 73.7%

Plugin impact with Multilingual WP

 

Резултатите са приблизителни, тъй като за по-точни резултати трябваше да направя повече тестове за повече страници, но мисля че част информацията която дават е доста красноречива.

За тестовете използвах плъгина P3 (Plugin Performance Profiler) – според мен един страхотен инструмент за разработчици на плъгини(и не само) – не съм сигурен колко точен е в изчисленията които прави, но изглежда доста добре

 

Ами, това е всичко за сега – чувствайте се свободни да пробвате бета версията на плъгина, която можете да изтеглите от GitHub и ми пожелайте късмет с по-скорошното пускане на плъгина за масова употреба!

 

Multilingual WordPress

Multilingual WordPress – това е името на плъгин-а за WordPress по който работя в момента. Този плъгин ще дава възможност на хората ползващи WordPress да създават многоезични версии на съдържанието на сайта им.

Идеята се роди, след като на няколко пъти след като излизаха нови версии на WordPress, qTranslate(това е плъгина който ползвам в момента на писането на този пост за да постигна същата цел) се чупеше по нов странен начин. Автора на този плъгин няма изключително голяма възможност да го поддържа в момента и за това реших да направя нов плъгин, почвайки от нулата, но стараейки се да използвам основно вградени функции на WordPress, за да постигна максимална съвместимост с бъдещите му версии.

Самия проект го почнах към средата на ноември 2012, но поради многото работа и някои лични ангажименти, нямах възможност да работя по него изключително много. В края на февруари обаче най-накрая успях отново да възобновя работата по проекта си и постигнах що-годе значителен напредък

До момента плъгина се държи прилично в изпитателна среда и може да прави следните неща:

  • Поддръжка на неопределен брой езици(добавянето на нови езици е много лесно)
  • Добавяне на отделни текстови редактори(за всеки език) към всички избрани пост-типове(страници/публикации/тн)
  • Различен адрес(URL) за всеки език – освен частта която определя езика, всяка страниця може да има различен „slug“ за всеки език – за целта ако ползвате qTranslate, ще имате нужда и от допълнителния плъгин „Qtranslate Slug
  • Различни коментари за всеки език(всеки коментар автоматично се показва само на езика на който е бил написан) – отново ако ползвате qTranslate, ще ви трябва плъгина „qTranslate Separate Comments
  • Бързи кодове, стил qTranslate – „[ :bg]съдържание на български[ :en]съдържание на английски“, както и „[ bg]съдържание на български[ /bg][ en]съдържание на английски[ /en]“ и „[ mlwp langs=“bg,en“]Съдържание на български и английски[ /mlwp]“
  • И други дребни неща

Естествено има още време докато плъгина стане достатъчно добре развит и тестван за да бъде публично достъпен на WordPress.org . До тогава ако имате интерес можете да следите проекта в GitHub.