Кажется, что библиотека находится в затруднительном положении при поиске правильной локали при вызове __n
. Просто установите i18n.setLocale('de')
, и это работает. Код, показанный ниже, выведет
Das ist ein Test
1 Pferd
3 Pferde
Я ожидал, что defaultLocale будет достаточно, но, похоже, нет.
Надеюсь, этот ответ поможет!
var i18n = require("i18n");
var path = require('path');
var __dirname = path.resolve();
i18n.configure({
locales:['en', 'de'],
directory: __dirname + '/locales',
defaultLocale: 'de'
});
i18n.setLocale('de')
console.log(i18n.__('test'));
console.log(i18n.__n("%s horse", 1));
console.log(i18n.__n("%s horse", 3));
Просто для вашей информации, я отладил его, зарегистрировав некоторые функции отладки, подобные этой, в configure()
вызове
logDebugFn: console.log,
logWarnFn: console.log,
logErrorFn: console.log
Тогда без звонка setLocale()
я получил это WARN: No locale found - check the context of the call to __(). Using de as current locale
. Форсирование текущей локали на объекте i18n
решило эту проблему.