Интернационализация и локализация в Symfony / Symfony I18n And L10n

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

4 comments

Comments 1 - 4 of 4 previous next Post a comment

  • + 228vit Vitaly Alyokhin 5 months ago
    80+ чел это круто!!!

    в страница 22, где контент на разных языках представлен в виде табов, поделись решением если не жалко :)
  • + ingvar Igor Brovchenko 5 months ago
    Спасибо, старался :)
  • + redpilot redpilot 5 months ago
    раскрыл глаза на то как проще работать с переводами!
  • + guest609108 guest609108 5 months ago
    good job!:)
Post a comment
Embed Video
Edit your comment Cancel

Favorites, Groups & Events

Интернационализация и локализация в Symfony / Symfony I18n And L10n - Presentation Transcript

  1. Интернационализация и локализация в Symfony Игорь Бровченко Igor.Brovchenko@gmail.com Киев, 16 мая 2009
  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 <span> <?php echo $sf_user->getCulture() ?> </span>
  8. Создание многоязычного сайта # frontend/config/routing.yml news_list: url: /:sf_culture/news param: { module: news, action: index } requirements: { sf_culture: (?:uk|ru|en) }
  9. Демонстрация возможностей I18n (код) <?php $sf_user->setCulture('en_US'); echo $sf_user->getCulture(); echo format_number(12000.10); echo format_date(time()); echo format_datetime(time()); echo format_currency(1350, 'USD'); ?>
  10. Результат для различных Culture en_US ru 12,000.1 12,000.1 5/15/09 15.05.09 May 15, 2009 9:20:02 PM EEST 15 мая 2009 г. 21:20:02 EEST $1,350.00 US$ 1,350.00 en_GB uk 12,000.1 12 000,1 15/05/2009 15.05.09 15 May 2009 21:20:02 EEST 15 травня 2009 21:20:02 EEST US$1,350.00 $ 1 350,00
  11. Widgets с поддержкой I18n sfWidgetFormI18nDate sfWidgetFormI18nTime sfWidgetFormI18nDateTime sfWidgetFormI18nSelectCountry sfWidgetFormI18nSelectLanguage sfWidgetFormI18nSelectCurrency
  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. Пример использования локализации <?php echo __('Welcome to our website.') ?> <?php echo __(\"Today's date is \") ?>
  15. Словарь в формате XLIFF # frontend/i18n/messages.fr.xml <?xml version=\"1.0\" ?> <xliff version=\"1.0\"> <file original=\"global\" source-language=\"en_US\" datatype=\"plaintext\"> <body> <trans-unit id=\"1\"> <source>Welcome to our website.</source> <target>Bienvenue sur notre site web.</target> </trans-unit> <trans-unit id=\"2\"> <source>Today's date is </source> <target>La date d'aujourd'hui est </target> </trans-unit> </body> </file> </xliff>
  16. Локализация с указанием словаря <?php echo __('Welcome to our website.', null, 'navigation') ?> <?php echo __(\"Today's date is \") ?> ● 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: 31556926 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: 31556926 prefix: %SF_APP_DIR%/i18n
  20. Создание таблиц для локализации в БД # symfony-1.2/lib/i18n/sfMessageSource_MySQL.class.php CREATE TABLE `catalogue` ( CREATE TABLE `trans_unit` ( `cat_id` int(11) NOT NULL auto_increment, `msg_id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', `cat_id` int(11) NOT NULL default '1', `source_lang` varchar(100) NOT NULL default '', `id` varchar(255) NOT NULL default '', `target_lang` varchar(100) NOT NULL default '', `source` text NOT NULL, `date_created` int(11) NOT NULL default '0', `target` text NOT NULL, `date_modified` int(11) NOT NULL default '0', `comments` text NOT NULL, `author` varchar(255) NOT NULL default '', `date_added` int(11) NOT NULL default '0', PRIMARY KEY (`cat_id`) `date_modified` int(11) NOT NULL default '0', ) TYPE=InnoDB; `author` varchar(255) NOT NULL default '', `translated` tinyint(1) NOT NULL default '0', PRIMARY KEY (`msg_id`) ) TYPE=InnoDB;
  21. Проблемы при использовании БД для локализации ● Для работы с локализацией через источник (source) MySQL открывается ещё один коннект к БД ● При загрузке страницы выполняется несколько дополнительных запросов ● Структура таблиц крайне неудобная для работы в Админке
  22. Образец модуля «Локализация» для Админки
  23. Решение проблемы с БД для локализации ● Был написан свой класс источника (source) для sfI18N - sfMessageSource_PDO.class.php ● Это позволило использовать текущее соединение с БД через PDO ● Была переписана структура таблиц, чтобы редактировать данные в Админке стало проще — использовали generate-admin и embedI18n ● Были устранены проблемы с лишними запросами к БД
  24. Вопросы? ● Игорь Бровченко / Igor Brovchenko ● Igor.Brovchenko@gmail.com ● http://tigor.com.ua ● http://www.linkedin.com/in/IgorBrovchenko

+ Igor BrovchenkoIgor Brovchenko, 5 months ago

custom

1622 views, 0 favs, 5 embeds more stats

Презентация доклада "Интерн more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 1622
    • 1363 on SlideShare
    • 259 from embeds
  • Comments 4
  • Favorites 0
  • Downloads 7
Most viewed embeds
  • 255 views on http://tigor.com.ua
  • 1 views on http://feeds2.feedburner.com
  • 1 views on http://209.85.129.132
  • 1 views on http://translate.googleusercontent.com
  • 1 views on http://xss.yandex.net

more

All embeds
  • 255 views on http://tigor.com.ua
  • 1 views on http://feeds2.feedburner.com
  • 1 views on http://209.85.129.132
  • 1 views on http://translate.googleusercontent.com
  • 1 views on http://xss.yandex.net

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories