#node.js #internationalization #sails.js #i18n-node
#node.js #интернационализация #sails.js #i18n-узел
Вопрос:
Использование Sails.js
версии 0.10.x
и попытка заставить материал i18n работать.
У меня в моем config/locales/en.json
{
"countries": {
"au": {
"name": "Australia",
"fiatCurrency": "AUD",
"subnationalDivisions": {
"NSW": "New South Wales",
"WA": "Western Australia",
"VIC": "Victoria",
"QLD": "Queensland",
"TAS": "Tasmania",
"SA": "South Australia",
"NT": "Northern Territory",
"ACT": "Australian Capital Territory"
}
}
}
}
Мой config/i18n.js
файл выглядит так
module.exports.i18n = {
// Which locales are supported?
locales: ['en', 'es', 'fr', 'de'],
objectNotation: true
};
В моем контроллере я пытаюсь получить правильное subnationalDivision
имя через
res.i18n("countries." country ".subnationalDivisions." state)
но это просто дает мне "countries.au.subnationalDivisions.ACT"
, не "Australian Capital Territory"
Я проверил тривиальный пример:
Данный en.json
файл, содержащий { "bingo" : "sparky" }
, res.i18n("bingo")
выводит "sparky"
Но примеры использования objectNotation
не работают, несмотря на инструкции в документации i18n-node.
Как я должен заставить это работать?
Комментарии:
1. Вы можете попробовать l10ns . Он предоставляет вам формат сообщений ICU и синхронизирует ваш ключ перевода для вас. Таким образом, вы можете легче управлять файлами локализации
2. Я проверю это. Тем временем проблема, которую я описал, оказалась ошибкой в Sails (которую я исправил).
Ответ №1:
Проблема оказалась ошибкой в Sails — она использовала более старую версию i18n
пакета. Я нашел и исправил ошибку и отправил PR команде Sails, и она была включена в v 0.10.3
Sails. (При текущей записи Sails теперь находится на 0.10.5)