提问人:anas ali 提问时间:11/17/2023 最后编辑:anas ali 更新时间:11/17/2023 访问量:20
如何使用 VU-I18N 将语言与货币分开
how to separate languages from currencies using vu-i18n
问:
我试图让用户能够独立更改显示语言和货币,我在 Vue3+Vite 项目上使用 Vue-I18n v9 插件。该项目需要支持 20 多种语言和超过 25 种货币,直到现在我都找不到明确的方法,我能想到的最接近的事情就是为每个语言-货币组合制定多个数字格式规则,如下所示:
本地化/货币.js
export default {
'en-US': {
currency: {
style: "currency",
currency: "USD",
...
}
},
'ru-US': {
currency: {
style: "currency",
currency: "USD",
...
}
}
}
然后像这样将其添加为 Vue-I18n 函数的选项numberFormats
createI18n
本地化/索引.js
import numberFormats from "./currencies.js";
export default createI18n({
...
numberFormats,
...
})
这将起作用,但这意味着我必须为每种语言-货币(国家/地区)组合制作大约 500 个条目,这让我:)想到它就会微笑。如果我想使用两个字母的标识符而不是,这将不起作用,使用两个字母的方法对我的用例更有意义,因为浏览器仅显示来自 navigator.language
属性的语言首选项和相关国家/地区,所以我怀疑我会看到类似阿拉伯语的东西加元。en
en-US
ar-CA
那么有什么推荐的方法吗?我是 I18n 的新手,一般来说,国际化问题是我第一次。
答:
0赞
Sami Kuhmonen
11/17/2023
#1
Vue-I18n 有一个函数 setNumberFormat
,你应该使用它。这将把货币与本地化完全分开,你可以随时更改它。您无需进行任何组合或滥用国家/地区代码作为货币指标。
评论
0赞
anas ali
11/17/2023
我正在使用插件的 v9,但问题仍然相同,v8 就像我正在做的事情一样,第一个参数是(locale)'en-US',第二个参数是格式。因此,它将格式绑定到该特定语言环境,我想要一种独立于语言环境的方法。你滥用国家代码是对的,但我不知道该怎么做,除非我制作自己的自定义标识符。setNumberFormat
0赞
Sami Kuhmonen
11/17/2023
@anasali我在生产中使用它,包括 v8 和 v9。仅将 en、fi、de 等作为区域设置,并根据用户选择设置数字格式。它工作得很好。
评论