21
DrupalCIS 2013 Многоязычные сайты на Drupal 8 Катя Маршалкина, Licel LLC

Multilingual Drupal 8

Embed Size (px)

DESCRIPTION

Слайды доклада «Многоязычные сайты на Drupal 8» для DrupalCamp СНГ 2013. http://drupalcis.org/node/72 Катя Маршалкина, Licel LLC 24.08.2013

Citation preview

Page 1: Multilingual Drupal 8

DrupalCIS 2013

Многоязычные сайтына Drupal 8

Катя Маршалкина, Licel LLC

Page 2: Multilingual Drupal 8

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

Page 3: Multilingual Drupal 8

DrupalCIS 2013

Для кого этот доклад*

Для тех, кто делает сайты на нескольких языках

Для тех, кто делает одноязычные сайты на любом языке кроме английского (на русском)

Для тех, кто пишет код

1

2

3

* Для тех, кто интересуется Drupal 8

Page 4: Multilingual Drupal 8

• Сам определит и установит ваш язык

• Сам скачает переводы установщика

• Сам создаст базу

• Сам скачает переводы ядра и контрибов

Первое, что вы видите, скачав Drupal 8 / Spark 8

Page 5: Multilingual Drupal 8

DrupalCIS 2013

Модули из коробки

Page 6: Multilingual Drupal 8

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, …

Page 7: Multilingual Drupal 8

l10n_update в ядре

Page 8: Multilingual Drupal 8

DrupalCIS 2013

Функция t()• Не нужны, get_t(), st(), $t. Просто t().

• Реализовано как сервис string_translation:– CustomStrings– FileTranslation– StaticTranslation– LocaleTranslation

Page 9: Multilingual Drupal 8

DrupalCIS 2013

Английский• Английский можно удалять, если не нужен• Можно менять язык по умолчанию с английского на любой другой

(без риска всё сломать)• Английский можно переводить на английский (stringoverrides в ядре)

Page 10: Multilingual Drupal 8

DrupalCIS 2013

Определение текущего языка

Page 11: Multilingual Drupal 8

DrupalCIS 2013

Определение текущего языка из URL

Page 12: Multilingual Drupal 8

DrupalCIS 2013

Контент

Drupal 7 Drupal 8

• Content Translation (translation)

• Entity Translation (entity_translation)

• Content Translation (content_translation)

• Content Translation deprecated (translation)

Page 13: Multilingual Drupal 8

Content Translation (D8)• Все сущности (content entities) поддерживаются

Page 14: Multilingual Drupal 8

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;

Page 15: Multilingual Drupal 8

DrupalCIS 2013

Content Translation (D8)• Property Translation API для НЕ-полей (title, status, created, …)

Drupal 7 Drupal 8

Page 16: Multilingual 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

Page 17: Multilingual Drupal 8

DrupalCIS 2013

Перевод конфигурации

Интерфейс Configuration Translation Контент

• Название сайта• Словари• Типы

материалов• Названия полей• Rules• Настройки Views• Настройки

блоков• Роли

пользователей• …

Contrib: https://drupal.org/project/config_translation

Page 18: Multilingual Drupal 8

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: 'Лучшие материалы за неделю.'

Page 19: Multilingual Drupal 8

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

Page 20: Multilingual Drupal 8

DrupalCIS 2013

Итого

• Множественные улучшения в интерфейсе

• Переход на Field Level перевод контента

• Удобные API для работы с полями и переводами

• Универсальная система перевода любых конфигураций

• Централизованное хранение переводов (files/translations)

• Множество полезных функций в ядре (transliteration, admin_language,

l10n_update и т.д.)

Page 21: Multilingual Drupal 8

DrupalCIS 2013

Drupal 8 Multilingual Initiative — http://www.drupal8multilingual.org/Change records for Drupal core — https://drupal.org/list-changes

Спасибо за внимание!

Катя Маршалкина[email protected]