Drupal - i18n и многоезичността

Posted by Stanislav Nedelchev on Sun, 04/20/2008 - 13:49

Да споделя и моят опит с Drupal 5 и Internationalization (i18n).
Като цяло модула работи доста добре и се интегрира във системата без проблеми.
Осигурена е поддръжка за основните и най използвани допълнителни модули като: CCK и Views.
Има настройка в многоезичността, с която се казва да се показва само това съдържание, с което в момента работи човека, който разглежда страницата.
Например site.com/en/
В този случай ще се показва само съдържание, което има превод на английски.
Това работи много добре с модула views. Няма да ви се налага да указвате изрично, че искате само това съдържание, което е на английски.
Когато създавате съдържание след като го запишете ще видите линк отгоре с който може да направите превод.
И системата знае кое съдържание има превод и кое не.
Също така няма никакъв проблем и със CCK. Можете да променяте и имената на полетата освен съдържанието.
Ако обаче искате да имате мисия на сайта на повече от един език. Ще трябва са направите някои промени в settings.php.
Примерно:

$conf['i18n_variables'] = array(
  'site_name',
  'site_slogan',
  'site_mission',
  'site_footer',
  'anonymous',
  'menu_primary_menu',
  'menu_secondary_menu',   
);

Също така често се случва да се добави грешен блок за превод на съдържанието.
Единият блок превежда само интерфейса а другият превежда интерфейса и съдържанието.
И много често ако ползвате този който превежда само интерфейса да се чудите защо всичко наоколо си смени езика а само статията не.
В общи линии нещата работят доста добре.
Но когато задълбаете повече започват да се появяват неща които не са направени.
Примерно, ако добавите полета в потребителските профили не можете да преведете съдържанието в тях.
Можете да преведете само имената на полетата пример: Name - Име. Но името Станислав - Stanislav не можете.
Заглавието (title) във модула views също не може да се преведе (ако сте направили provide page).
В Интернет някои препоръчват да влезнете и да промените модула views, като просто заградите функцията, която връща заглавието във функцията t().
Но това не е в стила Drupal way - don't change overwrite.
Няма да се впускам в подробности, но ако пишете собствен модул всички текстове, които се печатат към потребителя е добре да преминат през тази функция на по късен етап могат да бъдат преведени.

Happy Drupaling

Tags: 

Add new comment

Refresh Type the characters you see in this picture. Type the characters you see in the picture; if you can't read them, submit the form and a new image will be generated. Not case sensitive.  Switch to audio verification.