2012-02-18 4 views
4

Есть ли что-то уже в стеке технологий, используемый MM, который будет обрабатывать i18n для JS? Например. то, что займет раздел javascript: из файла en.yml и es.yml и сделает его доступным в виде файла translation.js - или что-то подобное (Я знаю только, как его иногда делают в рельсах).Как я могу сделать i18n для javascript с Middleman?

Fwiw, https://github.com/fnando/i18n-js, похоже, является популярным решением для рельсов. Я предполагаю, что части JS будут работать отлично. Я просто не уверен, как интегрировать процесс сборки в стек MM, чтобы все файлы были сгенерированы и попали в нужное место.

@tdreyno предлагает: Не в данный момент, но, похоже, мы могли бы подключить Звездочки (JS) и I18N.

Кто-нибудь сделал это или у вас есть предложения о том, как действовать (для тех, кто проходит в Ruby/Rails, но еще не прокопал путь к ресурсу 3.1, но не боится попробовать).

ответ

1

Я просто думаю о решении той же проблемы. Так вот мое решение:

В source/layouts/layout.html.slim:

javascript: 
    var I18n = {}; 
    I18n.locale = 'fr'; 
    I18n.translations = {}; 
    I18n.translations['fr'] = #{I18n.backend.send(:translations)[:fr].to_json}; 

Затем обращающиеся переводы в JS является столь же легко, как:

I18n.translations.fr['menu']['glossaire'] 
#=> "Glossaire" 
решение
0

caedes' прост и работоспособным, но в моем случае я хочу чтобы использовать некоторые из более сложных функций i18n-js, таких как строковая интерполяция, а не просто набор вложенных словарей.

Удачливейше, i18n-js есть read in from a dictionary. Я установил i18n-js с browserify, импортировать его в глобальном масштабе с window.I18n = require('i18n-js'); и добавил частичную _i18n_js.slim:

javascript: 
    I18n.translations = #{I18n.backend.send(:translations).to_json}; 

, а затем вы можете использовать все возможности отличной i18n-js.

Смежные вопросы