Upload
kate-marshalkina
View
1.184
Download
7
Embed Size (px)
DESCRIPTION
Слайды доклада «Многоязычные сайты на Drupal 8» для DrupalCamp СНГ 2013. http://drupalcis.org/node/72 Катя Маршалкина, Licel LLC 24.08.2013
Citation preview
DrupalCIS 2013
Многоязычные сайтына Drupal 8
Катя Маршалкина, Licel LLC
DrupalCIS 2013
Вместо предисловия…
DrupalCamp Kyiv 20137 докладов про Drupal 8, материалы доступны в сетиcamp13.drupal.ua
Портирование модулей с Drupal 7 на Drupal 8Константин Комелин, Катя МаршалкинаCLI .GS/D8CX-13
DrupalConf Moscow 2011Многоязычность в Drupal 7, Катя Маршалкинаti nyurl .com/DRUPAL-LANG-2011
@[email protected] er.com/kalabrodgo.to/@kalabro
1
2
3
4
DrupalCIS 2013
Для кого этот доклад*
Для тех, кто делает сайты на нескольких языках
Для тех, кто делает одноязычные сайты на любом языке кроме английского (на русском)
Для тех, кто пишет код
1
2
3
* Для тех, кто интересуется Drupal 8
• Сам определит и установит ваш язык
• Сам скачает переводы установщика
• Сам создаст базу
• Сам скачает переводы ядра и контрибов
Первое, что вы видите, скачав Drupal 8 / Spark 8
DrupalCIS 2013
Модули из коробки
DrupalCIS 2013
Интерфейс vs Контент
Интерфейс ? Контент
• t()• format_plural(
)• watchdog()• @Translation• Twig (trans,
plural)Примеры:• 'Save content'• '@count
comments'
То, что можно скачать при помощи l10n_update.
• Ноды• Термины
таксономии• Комментарии• Пользователи• …
• Название сайта• Словари• Типы
материалов• Названия полей• Rules• Настройки Views• Настройки
блоков• Роли
пользователей• …
i18n, i18n_block, i18n_node, i18n_string, i18n_field, i18nviews, rules_i18n, path_breadcrumbs_i18n, …
l10n_update в ядре
DrupalCIS 2013
Функция t()• Не нужны, get_t(), st(), $t. Просто t().
• Реализовано как сервис string_translation:– CustomStrings– FileTranslation– StaticTranslation– LocaleTranslation
DrupalCIS 2013
Английский• Английский можно удалять, если не нужен• Можно менять язык по умолчанию с английского на любой другой
(без риска всё сломать)• Английский можно переводить на английский (stringoverrides в ядре)
DrupalCIS 2013
Определение текущего языка
DrupalCIS 2013
Определение текущего языка из URL
DrupalCIS 2013
Контент
Drupal 7 Drupal 8
• Content Translation (translation)
• Entity Translation (entity_translation)
• Content Translation (content_translation)
• Content Translation deprecated (translation)
Content Translation (D8)• Все сущности (content entities) поддерживаются
DrupalCIS 2013
Content Translation (D8)• Field Level (метод переводимых полей)
• Методы– getTranslation()– getUntranslated()– getTranslationLanguages()– addTranslation()– hasTranslation()– и т.д.
// Drupal 7 (bad practice)$value = $entity->field_foo[LANGUAGE_NONE][0]['value'];
// Drupal 8$value = $entity->field_foo->value;
DrupalCIS 2013
Content Translation (D8)• Property Translation API для НЕ-полей (title, status, created, …)
Drupal 7 Drupal 8
DrupalCIS 2013
Entities
FieldableEntityNG (DX)
Why: deployment, unification
Idea: ctools exportables
Implementation: plugins + yml
newContent Entities Config Entities
Examples: NodesTaxonomy termsUsersCommentsFilesMenu Links
…
Examples: Block instancesVocabulariesUser rolesViewsMenusDisplay ModesImage Styles…
Источник: CLI.GS/D8CX-13, слайд 23
DrupalCIS 2013
Перевод конфигурации
Интерфейс Configuration Translation Контент
• Название сайта• Словари• Типы
материалов• Названия полей• Rules• Настройки Views• Настройки
блоков• Роли
пользователей• …
Contrib: https://drupal.org/project/config_translation
DrupalCIS 2013
Перевод конфигурации
File: sites/default/files/config_#HASH#/active/locale.config.ru.views.view.frontpage.yml
display: default: display_options: empty: area_text_custom: content: 'Пока нет никаких материалов.' header: area_text_custom: content: 'Лучшие материалы за неделю.'
DrupalCIS 2013
Перевод конфигурации
name: 'Smells like Drupal 8'mail: [email protected]: 'Демо для DrupalCIS 2013'page: 403: '' 404: '' front: nodeadmin_compact_mode: '0'weight_select_max: '100'langcode: ru
slogan: 'DrupalCIS 2013 Demo'
system.site.yml locale.config.en.system.site.yml
DrupalCIS 2013
Итого
• Множественные улучшения в интерфейсе
• Переход на Field Level перевод контента
• Удобные API для работы с полями и переводами
• Универсальная система перевода любых конфигураций
• Централизованное хранение переводов (files/translations)
• Множество полезных функций в ядре (transliteration, admin_language,
l10n_update и т.д.)
DrupalCIS 2013
Drupal 8 Multilingual Initiative — http://www.drupal8multilingual.org/Change records for Drupal core — https://drupal.org/list-changes
Спасибо за внимание!
Катя Маршалкина[email protected]