enb / enb-bem-tmpl-specs

BEM template specs for ENB
Other
15 stars 11 forks source link

Add `langs` option #12

Closed blond closed 9 years ago

blond commented 10 years ago

Для шаблонов использующих BEM.I18N требуется сборка таргетов с учётом языка.

Добавляем опцию langs в конфиг:

tmplSpecs.configure({
    destPath: 'tmpl-specs',
    levels: ['blocks'],
    langs: ['ru', 'en'],
    engines: {/*...*/}
});

И на файловой системе в суффиксы эталонов добавляем признак языка:

<block-name>/
 └── <block-name>.tmpl-specs/
      ├── 10-name.ru.bemjson.js
      ├── 10-name.ru.html
      ├── 10-name.en.bemjson.js
      └── 10-name.en.html

В результате сборки добавятся таргеты вида ?.bemhtml.{lang}.js, которые и будут применяться для получения актуальных html.

Если использовать значение langs: true эталоны не нужно писать по языкам, а в код шаблонизаторов будет примёрживаться только ядро BEM.I18N без кейсетов.

arikon commented 10 years ago

@andrewblond А зачем в эталонах языки? С ключами вроде достаточно. Так получается, что тесты на шаблоны сильно зависят от работы переводчиков.

Переводчики что-то допереведут — тесты сломаются.

tadatuta commented 10 years ago

@arikon Логика про склонения, множественные числа — это ведь все делается на уровне шаблонов.

Изначально фичу заказывал Серп, на общей встрече вы, вроде, тоже сказали, что оно вам нужно ;)

blond commented 10 years ago

Давайте определимся как можно хотеть тестировать шаблоны c BEM.I18N:

  1. В шаблонах никогда не используется код BEM.I18N для этого просто не используем langs опцию.
  2. В шаблонах используется BEM.I18N и мы хотим тестировать результат каждого языка. Для этого указываем langs: ['ru'. 'en'] и пишем эталоны для каждого языка.
  3. В шаблонах используется BEM.I18N но мы не хотим тестировать результат каждого языка, а просто хочется чтобы тесты не падали.

@arikon, я правильно тебя понимаю, что тебе интересен 3й вариант? Т.е. просто подставлять ядро i18n в код шаблонов, а в эталонах использовать ключи из кейсетов?

Если так, то почему не подходит вариант выбрать только 1 язык и использовать его?

arikon commented 10 years ago

Приведи пример шаблона, где логика про числа и склонения?

20.10.2014, 15:23, "Vladimir Grinenko" notifications@github.com:

@arikon Логика про склонения, множественные числа — это ведь все делается на уровне шаблонов.

Изначально фичу заказывал Серп, на общей встрече вы, вроде, тоже сказали, что оно вам нужно ;)

— Reply to this email directly or view it on GitHub.

Отправлено из мобильной Яндекс.Почты: http://m.ya.ru/ymail

arikon commented 10 years ago

Не подходит тем, что строки в этом случае — это данные. Хочется, чтобы данные оставались неизменными. А так получится, что при обновлении переводов придётся пересобрать эталоны. Сейчас этот процесс ручной и неудобный.

20.10.2014, 17:04, "Andrew Abramov" notifications@github.com:

Давайте определимся как можно хотеть тестировать шаблоны c BEM.I18N:

В шаблонах никогда не используется код BEM.I18N для этого просто не используем langs опцию. В шаблонах используется BEM.I18N и мы хотим тестировать результат каждого языка. Для этого указываем langs: ['ru'. 'en'] и пишем эталоны для каждого языка. В шаблонах используется BEM.I18N но мы не хотим тестировать результат каждого языка, а просто хочется чтобы тесты не падали.

@arikon, я правильно тебя понимаю, что тебе интересен 3й вариант? Т.е. просто подставлять ядро i18n в код шаблонов, а в эталонах использовать ключи из кейсетов?

Если так, то почему не подходит вариант выбрать только 1 язык и использовать его?

— Reply to this email directly or view it on GitHub.

Отправлено из мобильной Яндекс.Почты: http://m.ya.ru/ymail

tadatuta commented 10 years ago

Приведи пример шаблона, где логика про числа и склонения?

Например, https://nda.ya.ru/3QTTWo

blond commented 10 years ago

Есть предложение сделать специальное значение langs: true при котором эталоны не нужно будет писать по языкам, а в код шаблонизаторов будет примёрживаться только ядро i18n без кейсетов.

arikon commented 10 years ago

@andrewblond Это хорошее предложение

arikon commented 10 years ago

Например, https://nda.ya.ru/3QTTWo

@tadatuta В такой случае я бы хотел, чтобы значения параметров находили своё отражение в итоговом html.

deeonis commented 9 years ago

@andrewblond ping, когда планируется решить задачу? Она стопит нам вливание BH-шаблонов.

blond commented 9 years ago

@deeonis выпусти v0.6.0

arikon commented 9 years ago

@andrewblond Спасибо!