reactjs - 使用 react-i18next 翻译全球日期和月份
问题描述
用户可以将语言从瑞典语切换到英语或英语到瑞典语。我可以翻译除星期几和月份之外的所有字符串。
这是我的 i18n.js,主要翻译实用程序所在的位置。
import i18n from 'i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
import XHR from 'i18next-xhr-backend'
// languages
import translationSv from '../locales/sv/translation.json'
import translationEn from '../locales/en/translation.json'
i18n
.use(XHR)
.use(LanguageDetector)
.init({
debug: false,
react: {
useSuspense: false,
},
fallbackLng: 'sv',
keySeparator: false,
load: 'languageOnly',
interpolation: {
escapeValue: false,
},
resources: {
sv: {
translations: translationSv,
},
en: {
translations: translationEn,
},
},
ns: ['translations'],
defaultNS: 'translations',
detection: {
order: ['querystring', 'localStorage', 'navigator'],
lookupQuerystring: 'lang',
lookupLocalStorage: 'i18nextLng',
},
})
export default i18n
在我的 dateHeader.js 中,我有以下代码:
import React from 'react'
import moment from 'moment'
import Moment from 'react-moment'
const dateHeader = () => {
<Typography variant="body2">
<Moment format="DD MMMM" subtract={{ days: 1 }}>
{dateOfArrival}
</Moment>
</Typography>
}
我在 Moment 中添加了 locale = "sv" ,但日子被永久更改为瑞典语,我不希望这样。我看到 onLanguageChanged 可以用来改变语言。我是新手,所以我对如何在全球范围内翻译所有日期和月份感到困惑。
解决方案
您可以从以下位置获取当前语言i18next.language
:
import React from 'react'
import moment from 'moment'
import Moment from 'react-moment'
import i18n from './src/i18n.js' // IMPORT YOUR CONFIGURATION
const dateHeader = () => {
<Typography variant="body2">
<Moment format="DD MMMM" subtract={{ days: 1 }} locale="{{ i18n.language }}">
// ^-- ADD DYNAMIC LOCALE
{dateOfArrival}
</Moment>
</Typography>
}
推荐阅读
- spring-boot - 使用我的自定义登录控制器调用 oauth/token
- python - Python对偶函数递归与迭代函数
- azure - 我在 azure 中有 4 个 vm,如何使用 powershell 将一个 vm 与另一个 vm 通信?
- java - 如何在最大堆上修复我的 remove(Comparable e) 方法?
- css - 使用 CSS 在设计布局上制作类似拱形曲线的问题
- vimeo-api - 可恢复的方法不返回视频 ID
- android - android:使用 FFMPEG 将两个音频文件合并为一个
- android - Android:错误:链接引用失败
- c# - 遍历树并计算特殊节点的总和
- java - 从构造函数调用重写的方法。改用什么?