Skip to content

Instantly share code, notes, and snippets.

@innabelaya
Created August 14, 2015 12:46
Show Gist options
  • Save innabelaya/78c4e04d89f3ab81ffe9 to your computer and use it in GitHub Desktop.
Save innabelaya/78c4e04d89f3ab81ffe9 to your computer and use it in GitHub Desktop.

Использование

Функция i18n может использоваться:

В шаблонах

Для работы с разными языками используется один шаблон.

  • Для библиоткеи bem-bl

    В BEMHTML:

    block('block').content()(function() {
        return {
            elem: 'tooltip',
            content: BEM.I18N('block', 'tooltip');
        };
    });

    В BH:

    bh.match('block', function (ctx) {
        ctx.content({
            elem: 'tooltip',
            content: bh.lib.i18n('block', 'tooltip');
        });
    });
  • Для библиоткеи bem-core

    В BEMHTML функция i18n доступна через this.i18n:

    block('block').content()(function() {
        return {
            elem: 'tooltip',
            content: this.i18n('block', 'tooltip');
        };
    });

    В BH:

    bh.match('block', function (ctx) {
        ctx.content({
            elem: 'tooltip',
            content: bh.lib.i18n('block', 'tooltip');
        });
    });
    

В JavaScript

Cпособы использования i18n в JavaScript зависят от наличия модульной системы и ее типа. Файлы могут подключаться как в Node.js, так и в браузере, независимо от используемой библиотеки (bem-bl или bem-core):

Использование в Node.js

Скомпилированный файл подключается как модуль в формате CommonJS.

var i18n = require('bundle.lang.en.js'); // Путь до скомпилированного файла

i18n('scope', 'key'); // 'val'

Использование в браузере

В браузере применение скомпиллированных ?.lang.<lang>.js-файлов зависит от наличия модульной системы:

  • В браузере без YModules как BEM.I18N

    BEM.I18N('scope', 'key'); // Ядро `i18n` предоставляется в глобальную видимость в переменную `BEM.I18N`. 
                              // Ядро `i18n` подключается в модульную систему (YModules или CommonJS) как отдельный модуль с именем `i18n`.
  • В браузере с YModules как i18n-модуль

    modules.require('i18n', function (i18n) {
        i18n('scope', 'key'); // 'val'
    });

    Важно! В проект с модульной системой ядро библиотеки интернационализации подключаются одинаково, как модуль i18n, вне зависимости от используемой библиотеки bem-core или bem-bl.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment