2014-10-05 2 views
2

Я пытаюсь интернационализировать мое приложение nodejs express с помощью модуля i18n-2. Все работает, но у меня есть вопрос. Есть ли способ перевести строку из моих нефритовых шаблонов. Представьте, что у меня на моем сайте 100 строк. Должен ли я отправлять 100 переводов в шаблон через вызов res.render?Интернационализируйте шаблоны jade jsdjs

res.render('profile', { 
    title: 'My cool title', 
    user: req.user, 
    hello1: req.i18n.__("hello1"), 
    hello2: req.i18n.__("hello2"), 
    hello3: req.i18n.__("hello3"), 
    ... 
    helloN: req.i18n.__("helloN") 
}); 

Есть ли другой способ сделать это? Somethin как следующий код:

res.render('profile', { 
    title: 'My cool title', 
    user: req.user, 
    i18n: req.i18n // to be used inside jade 
}); 
+0

Похоже, вы ответили на свой вопрос. Вы уже пытались передать 'req.i18n' в шаблон нефрита и использовать его в шаблоне? – JME

+0

Да, я пробовал. В jade я получаю ошибки при попытке этого # {i18n .__ ('hello1')}. Я только положил i18n .__ ('hello1'), это текст напечатан. –

+0

Можете ли вы подготовить скрипку, чтобы я мог видеть, что вы делаете? – JME

ответ

1

i18n-2 уже регистрирует вспомогательные объекты в ваших Экспресс местных жителей, которые доступны формы ваш шаблон Джейд. Эти вспомогательные методы регистрируются автоматически: «__», «__n», «getLocale» и «isPreferredLocale». Без какой-либо дополнительной конфигурации вы должны иметь возможность сделать следующее в своем шаблоне Jade:

a(href="/") #{ __('home') }