У меня есть следующий код:
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import locales from 'locales'
const resources = {
en: locales.en,
no: locales.no,
de: locales.de,
se: locales.se
}
function getDefaultLocale() {
const preferredLanguage = localStorage.getItem('preferredLanguage')
const lng = locales.languages
.map(({ code }) => code)
.find(code =>
code === preferredLanguage || // The user has set a preferred language
code === '__DEFAULT_LOCALE__' || // Default locale set at build time.
code === navigator.language
)
return lng
}
i18n
.use(initReactI18next)
.init({
resources,
lng: getDefaultLocale(),
appendNamespaceToCIMode: true
})
export default i18n
Моя проблема в том, что, скажем, когда английский язык определяется с помощью navigator.language
, это может быть en
, en-US
, en-GB
, или для норвежского языка это может быть nb
, nb-NO
, ny-NO
и т. д.
Мы хотели бы использовать одни и те же переводы для всех кодов английского языка и для всех кодов норвежского языка.
Мое текущее решение состоит в том, чтобы определить ресурсы следующим образом:
const resources = {
en: locales.en,
'en-US': locales.en,
'en-GB': locales.en,
no: locales.no,
'nb-NO': locales.no,
'ny-NO': locales.no,
de: locales.de,
se: locales.se
}
Но должно быть лучшее решение для этого! Может ли кто-нибудь помочь?