Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 15 лет назад пользователемingvar
1 Игорь Бровченко Киев, 16 мая 2009 Интернационализация и локализация в Symfony
2 Что такое I18n и L10n? Интернационализа́ция (англ. internationalization) процесс адаптации продукта, такого как программное или аппаратное обеспечение, к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт. В английском языке для слова «internationalization» принято сокращение «i18n». При этом число 18 означает количество пропущенных между «i» и «n» букв. Локализа́ция (англ. localization) перевод и адаптация элементов интерфейса, вспомогательных файлов и документации. В английском языке для слова «localization» иногда применяется сокращение «l10n». При этом число 10 означает количество пропущенных между «l» и «n» букв. Источник: ВикипедиЯ
3 Предоставление региональных данных для всех языков Перевод текстов (интерфейс, данные БД) Стандарты форматирования дат и чисел в зависимости от региональных настроек Поддержка I18n и L10n в Symfony?
4 Все данные для интернационализации (I18n) получены из Common Locale Data Repository (CLDR).
5 Указываем Culture по умолчанию # frontend/config/settings.yml all:.settings: default_culture: ru
6 Использование Culture в Action // Установить Culture $this->getUser()->setCulture('ru'); // Получить Culture $culture = $this->getUser()->getCulture(); // => ru
7 Использование Culture в Template getCulture() ?>
8 Создание многоязычного сайта # frontend/config/routing.yml news_list: url: /:sf_culture/news param: { module: news, action: index } requirements: { sf_culture: (?:uk|ru|en) }
9 Демонстрация возможностей I18n (код)
10 en_US 12, /15/09 May 15, :20:02 PM EEST $1, en_GB 12, /05/ May :20:02 EEST US$1, ru 12, мая 2009 г. 21:20:02 EEST US$ 1, uk , травня :20:02 EEST $ 1 350,00 Результат для различных Culture
11 sfWidgetFormI18nDate sfWidgetFormI18nTime sfWidgetFormI18nDateTime sfWidgetFormI18nSelectCountry sfWidgetFormI18nSelectLanguage sfWidgetFormI18nSelectCurrency Widgets с поддержкой I18n
12 Локализация данных в БД propel: my_product: _attributes: { isI18N: true, i18nTable: my_product_i18n } id: ~ slug: { type: varchar, size: 255 } price: { type: float } my_product_i18n: name: { type: varchar, size: 255 }
13 Включение локализации интерфейса # frontend/config/settings.yml all:.settings: i18n: on standard_helpers: [Partial, Form, I18N ]
14 Пример использования локализации
15 Словарь в формате XLIFF # frontend/i18n/messages.fr.xml Welcome to our website. Bienvenue sur notre site web. Today's date is La date d'aujourd'hui est
16 Локализация с указанием словаря navigation.fr.xml terms_of_service.fr.xml search.fr.xml
17 Настройка локализации # frontend/config/factories.yml i18n: class: sfI18N param: source: XLIFF debug: off untranslated_prefix: "[T]" untranslated_suffix: "[/T]" cache: class: sfFileCache param: automatic_cleaning_factor: 0 cache_dir: %SF_I18N_CACHE_DIR% lifetime: prefix: %SF_APP_DIR%/i18n
18 Задачи (tasks) для локализации > php symfony i18n:extract frontend en > php symfony i18n:extract --auto-save frontend en > php symfony i18n:extract --auto-save --auto-delete frontend en Ограничения: команды работают только с стандартным словарем messages
19 Настройка локализации для работы с БД # frontend/config/factories.yml i18n: class: sfI18N param: source: MySQL # XLIFF debug: off untranslated_prefix: "[T]" untranslated_suffix: "[/T]" cache: class: sfFileCache param: automatic_cleaning_factor: 0 cache_dir: %SF_I18N_CACHE_DIR% lifetime: prefix: %SF_APP_DIR%/i18n
20 Создание таблиц для локализации в БД CREATE TABLE `catalogue` ( `cat_id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', `source_lang` varchar(100) NOT NULL default '', `target_lang` varchar(100) NOT NULL default '', `date_created` int(11) NOT NULL default '0', `date_modified` int(11) NOT NULL default '0', `author` varchar(255) NOT NULL default '', PRIMARY KEY (`cat_id`) ) TYPE=InnoDB; CREATE TABLE `trans_unit` ( `msg_id` int(11) NOT NULL auto_increment, `cat_id` int(11) NOT NULL default '1', `id` varchar(255) NOT NULL default '', `source` text NOT NULL, `target` text NOT NULL, `comments` text NOT NULL, `date_added` int(11) NOT NULL default '0', `date_modified` int(11) NOT NULL default '0', `author` varchar(255) NOT NULL default '', `translated` tinyint(1) NOT NULL default '0', PRIMARY KEY (`msg_id`) ) TYPE=InnoDB; # symfony-1.2/lib/i18n/sfMessageSource_MySQL.class.php
21 Проблемы при использовании БД для локализации Для работы с локализацией через источник (source) MySQL открывается ещё один коннект к БД При загрузке страницы выполняется несколько дополнительных запросов Структура таблиц крайне неудобная для работы в Админке
22 Образец модуля «Локализация» для Админки
23 Решение проблемы с БД для локализации Был написан свой класс источника (source) для sfI18N - sfMessageSource_PDO.class.php Это позволило использовать текущее соединение с БД через PDO Была переписана структура таблиц, чтобы редактировать данные в Админке стало проще использовали generate-admin и embedI18n Были устранены проблемы с лишними запросами к БД
24 Вопросы? Игорь Бровченко
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.