Многоязычие            Multilingual            title
сайта на Drupal       sites in Drupal
             ,       Problems, ...
•
•                  Drupal 5 (   )
•                  Drupal 6:
    –
    –
    –

•       Drupal 7



                  ...
?
•
•                     -

•
    (         ,           .)
•
• (               )


•
        – (       ,

              –...
ВОЗМОЖНОСТЬ vs ЦЕЛЕСООБРАЗНОСТЬ
•
    «
            »?
•                            :
    –   -


•                       ...
user-generated
   content:                             ?

• Wikipedia:

       ,                   interwiki-         ,
  ...
…

node/1                   Title (lang1)       Title (lang2)
(multilingual)          Body (lang1)        Body (lang2)
   ...
...
                                      ,
                                                    .
node/1                 T...
Drupal
•               ,            –
    content=“text/html; charset=utf-8”

•
    utf-8 (8-                    Unicode),...
Drupal 5:
                             -
•                                ,




•



•            ,
                      ...
”i18n”?
internationalization               i18n

                       18 штук ниасилили
      Много букав.
             ...
Drupal 5 +           vs         Drupal 5 +
      i18n.module                   Localizer.module




Additional db tables:
...
i18n vs Localizer:




Localizer’

     5.x-3.13.
        Drupal 6




                                   12
Drupal 6
              “node”



                  node.language


                      node.tnid
               (= origi...
Drupal 6
                  (                          ):
Locale (locale.module) –


Content translation (translation.modul...
Drupal 6
•               ,                         ,
                                     –   …
            :
    –   ,   ...
Drupal 6




(Jose Reyero,
 i18n.module developer)
                                     16
Drupal 6 + i18n:
                     • General features
• i18n.module           – Multilingual variables
                ...
CivicActions.com:                   D6 +
i18n     Sony Music (             2009).
               (D6 core & i18n)     …


...
drupal.org/node/383954




                         19
:

•   Модули: Установка и включение нужных (Content translation, Locale, i18n, i18n
    submodules), редактирование setti...
drupal.org/node/338018




                         21
drupal-translation.com/node/10




                                 22
: site_name,
   site_footer, theme_settings    . .
                        settings.php
/**
 * Multilingual settings
 *
 *...
,
              settings.php
Теперь при редактировании параметров,
соответствующих ‘i18n_variables'
                     i...
D6:


(code-based strings).
        i18n.strings:
+                  ,      ,
                . .
(user-entered strings).
...
:
•
•




        26
1:                   (common terms)


                 taxonomy/term/1
                   (для всех языков)

(EN)         ...
2:
                  (per language terms)

 taxonomy/term/1                    taxonomy/term/2
(EN)                       ...
•                                                 :
                                      -
•                        :
   ...
Views
• i18n.views




                       Поэтому блок, в
                       который выводится
                   ...
•                  ,                           ,                          :
    1)
                                   ,
  ...
• Все языки   Можно дублировать
                            • Язык 1      блок в целом, можно
                            ...
?
                            URL           en/about                   ru/about
                 Текст в меню             ...
Primary & secondary links
Для них настройки видимости пунктов меню могут не срабатывать: видны
лишние кнопки, которые для ...
primary & secondary links:



               settings.php:
               $conf['i18n_variables'] = array(
               ...
i18nsync:

        •


                          .
        •       ,

            –
            –

            –

        ...
i18nsync                nodereference
    node/3 (en)         Перевод         node/4 (ru)
                        (tnid=3)...
Nodereference

• en/lectures/by-teachers/       • ru/lectures/by-teachers/
  Lectures grouped by
  teachers:              ...
• i18ncomments by neochief
  drupal.org/node/526942
                  i18n experimental module

  Node/1 (en)      Node/2 ...
,
•           ,
    -
        ,

•       ,       ,
            .




                    40
,
•              1:
                                          ,



         (En)                                          ...
,
•                  2:



    •              :

         (Garland etc.);



•                                Acquia Marin...
,

•           1:                 drupal.org/node/494068
                 page.tpl.php:
    $base_path        check_url($f...
CCK:

AL|Albania           Текстовые ярлыки должны
AM|Armenia           переводиться через систему перевода интерфейса:
. ...
CCK:


•                    neochief:
    –              i18ncck         drupal.org/node/531660
    –          CCK,       ...
Перевод (система перевода содержания)
                  ,    Многоязычные переменные i18n
slogan, footer, etc.
           ...
“Language sections”
• «           »

•                                  ,«         » views        . .
•                   ...
“Translation Table”
•

•                    :
    –«       »
    –«           »
    –«   »
•
                         ,   ...
Модуль
  Translation
      table
встраивается в
    систему
   перевода
 интерфейса




                 49
“Localization client”
        (L10n_client)
•
                .
                     ,
    ,                              ...
“Translation overview”
•

•               ,               :
            ,           ,           .
•                   ,
  ...
Drupal 7:
   «
                      »?

groups.drupal.org/node/19671




                               52
Drupal 7
•                       D7
          i18n:
    –                    ,   . .;
    –
    –             ,
•

•

• Tr...
Upcoming SlideShare
Loading in …5
×

Multilangaunguage Drupal

3,011 views

Published on

Published in: Technology, Travel
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,011
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Multilangaunguage Drupal

  1. 1. Многоязычие Multilingual title сайта на Drupal sites in Drupal , Problems, solutions, , workarounds, and body “goodness on the way” Grigory NAUMOVETS author Kiev city Ukraine country imgfield node/1 node/2 node/nid tnid=1 tnid=1 tnid
  2. 2. • • Drupal 5 ( ) • Drupal 6: – – – • Drupal 7 2
  3. 3. ? • • - • ( , .) • • ( ) • – ( , – ???) 3
  4. 4. ВОЗМОЖНОСТЬ vs ЦЕЛЕСООБРАЗНОСТЬ • « »? • : – - • : ? – ? – ? – user-generated content? 4
  5. 5. user-generated content: ? • Wikipedia: , interwiki- , , Wikimedia commons . . • Youtube: , , . 5
  6. 6. … node/1 Title (lang1) Title (lang2) (multilingual) Body (lang1) Body (lang2) Some field (lang1) Some field (lang2) Another field (language-neutral) Some file attached (lang1) Some file attached (lang2) Another file attached (language-neutral) comments 6
  7. 7. ... , . node/1 Title node/2 Title lang1 Body lang2 Body Some field Some field Another field Another field Some file attached Some file attached Another file attached Another file attached comments Drupal торжественно объявляет node/1 и node/2 comments переводами друг друга 7
  8. 8. Drupal • , – content=“text/html; charset=utf-8” • utf-8 (8- Unicode), , , . 8
  9. 9. Drupal 5: - • , • • , : – i18n Localizer 9
  10. 10. ”i18n”? internationalization i18n 18 штук ниасилили Много букав. 10 штук ниасилили Localization L10n “i18n” “L10n” Drupal, “i18n”, “L10n_client” 10
  11. 11. Drupal 5 + vs Drupal 5 + i18n.module Localizer.module Additional db tables: Additional db tables: • i18n_blocks • localizerblock • i18n_blocks_i18n • localizertranslation • i18n_node • localizernode • i18n_profile_fields • localizeruser • i18n_strings • i18n_taxonomy_term i18n vs Localizer: • i18n_variable Drupal 5 11
  12. 12. i18n vs Localizer: Localizer’ 5.x-3.13. Drupal 6 12
  13. 13. Drupal 6 “node” node.language node.tnid (= original node’s nid) node.translate (translation status) 13
  14. 14. Drupal 6 ( ): Locale (locale.module) – Content translation (translation.module) – 14
  15. 15. Drupal 6 • , , – … : – , , – , , – Views, CCK, . . . . • ? • Drupal 6 . 15
  16. 16. Drupal 6 (Jose Reyero, i18n.module developer) 16
  17. 17. Drupal 6 + i18n: • General features • i18n.module – Multilingual variables – Translatable user defined strings: Menu items, taxonomy content type names and – i18nblocks descriptions, etc... – Language selection: Only content in the selected language is displayed for each – i18ncontent page view. – i18nmenu – Several selection modes are available for content, meaning you can have node lists for only the current language, for current and default languages, all – i18nprofile languages, etc. – Profile: Translates profile field names and descriptions in every language – i18nstrings – Polls: Provides an aggregated view and results block for votes in all languages – i18nsync – Some, still limited, Views and CCK support • Multilingual Taxonomy – i18ntaxonomy – Language can be set up for vocabularies or terms, or terms can be localized – i18nviews – Both multilingual vocabularies with terms in multiple languages and single- language vocabularies can be created – Translations can be defined between terms in different languages – Taxonomy term synchronization can be defined per vocabulary for translations – Taxonomy term translation can be done using localization for selected vocabularies 17
  18. 18. CivicActions.com: D6 + i18n Sony Music ( 2009). (D6 core & i18n) … 18
  19. 19. drupal.org/node/383954 19
  20. 20. : • Модули: Установка и включение нужных (Content translation, Locale, i18n, i18n submodules), редактирование settings.php. • Языки: Включение нужных • Типы контента: Включение многоязычия для нужных типов (при этом, если нужно – задание синхронизации для выбранных полей: например, приложенных файлов, изображений, дат, таксономии и т.п.) • Переключатель языка: вывести (стандартный блок или сниппет, встраиваемый в шаблон темы) • Главная страница, название сайта, footer и т.п.: настроить в соответствии с языком • Pathauto: Если нужно – подстроить автоматические URL с учётом языка • Ноды: Подготовка к переводу - задать язык, если нода считается language-neutral; создание переводов • Меню: Перевод или дупликация, настройка в соответствии с языком • Блоки: Перевод или дупликация, настройка видимости по языкам и URL’ам • Тема: Если есть параметры, зависящие от языка – подстроить • Permissions: Настроить права доступа на перевод содержания и интерфейса • Решение непредвиденных проблем и прочее 20
  21. 21. drupal.org/node/338018 21
  22. 22. drupal-translation.com/node/10 22
  23. 23. : site_name, site_footer, theme_settings . . settings.php /** * Multilingual settings * * This is a collection of variables that can be set up for each language when i18n is enabled. * These are the basic ones for Drupal core, but you can add your own here. */ $conf['i18n_variables'] = array( // Site name, slogan, mission, etc.. 'site_name', 'site_slogan', 'site_mission', 'site_footer', 'anonymous', // Different front page for each language 'site_frontpage', // Primary and secondary links 'menu_primary_links_source', 'menu_secondary_links_source', // Contact form information 'contact_form_information', // For theme variables, read more below 'theme_settings', 'theme_garland_settings', ); 23
  24. 24. , settings.php Теперь при редактировании параметров, соответствующих ‘i18n_variables' i18n_variables, в форме видна приписка: “This is a multilingual variable”. Переключая языки, задайте и сохраните нужные значения для каждого языка ‘site_name' ‘site_slogan' 24
  25. 25. D6: (code-based strings). i18n.strings: + , , . . (user-entered strings). 25
  26. 26. : • • 26
  27. 27. 1: (common terms) taxonomy/term/1 (для всех языков) (EN) (RU) Dogs Everything about dogs Перевод названия - через систему перевода интерфейса 27
  28. 28. 2: (per language terms) taxonomy/term/1 taxonomy/term/2 (EN) (RU) Dogs Everything about dogs Объявляем категории переводами друг друга. (Ну и на что это влияет? SFW?) 28
  29. 29. • : - • : – , , – Mutlilingual Block English Block Русскоязычный блок Translatable Title (переводимый English Title Русский заголовок заголовок) Translatable Content English Русскоязычное (Переводимое Content содержание содержание) 29
  30. 30. Views • i18n.views Поэтому блок, в который выводится вид, можно делать многоязычным: при переключении языка под него автоматически подстраивается содержание 30
  31. 31. • , , : 1) , 2) . • : – . . – , : , , . ., . . . – Primary/secondary links – , • JQuery Menu: , 31
  32. 32. • Все языки Можно дублировать • Язык 1 блок в целом, можно • Язык 2 внутри блока одни пункты дублировать, другие переводить. Общая А переводить весь • Все языки видимость блок имеет смысл • Язык 1 блока • Язык 2 только при отсутствии меню ссылок на ноды. • Все языки • Язык 1 Види- • Язык 2 мость нода каждого • отдель- вид • Все языки • • Язык 1 ного пункта • таксономия • Язык 2 меню • форма • Все языки • Язык 1 • Язык 2 32
  33. 33. ? URL en/about ru/about Текст в меню About us О нас Системный адрес ссылки node/1 node/2 • , (“about”), ”node/1”. (“About us” -> “ ”), . • , , . • , (Page View), ( , ) . ., , . 33
  34. 34. Primary & secondary links Для них настройки видимости пунктов меню могут не срабатывать: видны лишние кнопки, которые для данного языка нужно спрятать. Причина: во многих темах их вывод описан не так, как вывод блоков и обычных меню drupal.org/node/313302 34
  35. 35. primary & secondary links: settings.php: $conf['i18n_variables'] = array( // Primary and secondary links 'menu_primary_links_source', 'menu_secondary_links_source', ); 'menu_primary_links_source' 'menu_secondary_links_source' 35
  36. 36. i18nsync: • . • , – – – – . . 36
  37. 37. i18nsync nodereference node/3 (en) Перевод node/4 (ru) (tnid=3) nodereference nodereference Перевод node/1 (en) (tnid=1) node/2 (ru) • nodereference node/4 node/1 node/2. • , i18nsync , ( , , ) 37
  38. 38. Nodereference • en/lectures/by-teachers/ • ru/lectures/by-teachers/ Lectures grouped by teachers: : – John Brown (6) – (6) – Peter Green (4) – (4) en ru en/lectures/by-teachers/36 ru/lectures/by-teachers/37 List of lectures by John Brown en ru • “John Brown” (node/36) “ ” (node/37) – , “List of lectures by John Brown” “ ”, . 38
  39. 39. • i18ncomments by neochief drupal.org/node/526942 i18n experimental module Node/1 (en) Node/2 (uk) Node/3 (ru) comments 39
  40. 40. , • , - , • , , . 40
  41. 41. , • 1: , (En) (Ru) Main Page link link link link Logo Title Logo Title Logo Title Page 41
  42. 42. , • 2: • : (Garland etc.); • Acquia Marina • Acquia Marina – Waffles, Black Mamba, etc. 42
  43. 43. , • 1: drupal.org/node/494068 page.tpl.php: $base_path check_url($front_page) ( ) • 2: template.php: $terms= taxonomy_node_get_terms_by_vocabulary ($vars['node'], $vocabulary->vid) $terms=i18ntaxonomy_localize_terms (taxonomy_node_get_terms_by_vocabulary ($vars['node'], $vocabulary->vid)) 43
  44. 44. CCK: AL|Albania Текстовые ярлыки должны AM|Armenia переводиться через систему перевода интерфейса: . . . Albania Албания Armenia Армения Но реально перевод работает не всегда: бывает, что одни строки поиск находит, а другие нет. Есть трюк с заданием значений поля CCK через php-код: return array( Некоторые строки после 'AL' => t('Albania'), этого находятся поиском, 'AM' => t('Armenia') ); другие всё равно нет. Запуск и перезапуск cron, «дергание» сайта за ноды и виды, WTF ??? прочие танцы с бубном. drupal.org/node/293297 44
  45. 45. CCK: • neochief: – i18ncck drupal.org/node/531660 – CCK, drupal.org/node/531662 i18ncck , . 45
  46. 46. Перевод (система перевода содержания) , Многоязычные переменные i18n slogan, footer, etc. Перевод названия и содержания (система перевода строк) или дублирование Перевод (система перевода строк) или дублирование пунктов – в зависимости от того, меняется ли ссылка Primary & secondary Как обычные меню; если проблемы – добавить к links списку многоязычных переменных i18n Добавление фильтра по языку; заголовки и подписи – система перевода строк CCK Cистема перевода строк; танцы с бубном Загрузка .po файлов с переводом, отдельные строки - система перевода строк 46
  47. 47. “Language sections” • « » • ,« » views . . • , « » === en === English text === ru === Русский текст - === qz === Текст на прочих языках === qq === Текст, не зависящий от языка This is some =en= English =ru= Russian =qq= text 47
  48. 48. “Translation Table” • • : –« » –« » –« » • , , 48
  49. 49. Модуль Translation table встраивается в систему перевода интерфейса 49
  50. 50. “Localization client” (L10n_client) • . , , . • img_assist (drupal.org/node/273511) 50
  51. 51. “Translation overview” • • , : , , . • , - ( ) 51
  52. 52. Drupal 7: « »? groups.drupal.org/node/19671 52
  53. 53. Drupal 7 • D7 i18n: – , . .; – – , • • • Translatable fields ( Fields API) 53

×