i18n 的一点疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ketteiron
0.2D
0.03D
V2EX    Vue.js

i18n 的一点疑问

  •  
  •   Ketteiron 2022-08-03 15:02:49 +08:00 3639 次点击
    这是一个创建于 1244 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如页面上我有一些静态数据,为了美观、管理方便我放单独的 js 文件下
    export const arr1 = [{value:1,label:"测试"},...]
    然后页面上 import 使用。如果要实现国际化,有什么优雅点的方式吗?
    之前我想的是定义 arr1_zh-CH,arr1_en-US 等数据,页面全部 import 进来,写一个计算属性,根据状态管理存放的 locale 变量 return 其中的一个,有没有更优雅的实现
    10 条回复    2022-08-04 15:04:26 +08:00
    pigspy
        1
    pigspy  
       2022-08-03 16:14:00 +08:00
    我一般用 i18next 这个框架
    jetyang
        2
    jetyang  
       2022-08-03 16:15:47 +08:00
    标准的做法是后端根据用户的个人信息、UA 及 IP 综合判断 locale ,找到对应的本地文字、图标、时间,返回给前端渲染。搜索一下 ICU 库,但这样做比较麻烦,很多小网站在前端放一个下拉列表,让用户自己选 locale
    zhangjiancheng
        3
    zhangjiancheng  
       2022-08-03 16:26:55 +08:00
    我的做法是多个语言放在一个数组内,约定好语言顺序的下标,然后用 webpack 的 api 自动导入然后用$t()使用
    Ketteiron
        4
    OP
       2022-08-03 16:37:42 +08:00
    @pigspy vue-i18n 我试了下好像加载不了数组
    fstar
        5
    fstar  
       2022-08-03 18:37:22 +08:00
    建议做语言包懒加载。

    https://blog.fstars.wang/posts/lazy-load-language-package-by-dynamic-script/
    https://blog.fstars.wang/posts/i18n-lazy-import-lang-pkg/
    https://blog.fstars.wang/posts/why-i18n-difficult/
    Martens
        6
    Martens  
       2022-08-03 20:26:00 +08:00
    @dssxzuxc #4 ant design pro 自带国际化 可以参考参考
    catinsides
        7
    catinsides  
       2022-08-03 23:21:10 +08:00   1
    比如要做 label 的多语言,把 label 的内容换成常量,比如 LABEL_TEST ,多语言 json 文件中再写要替换的内容 cn 是 测试,en 是 Test ,ja 是 テスト... html 里就是{{ $t('LABEL_TEST') }},再进一步优化就是根据 ua 只加载某一个多语言的 json ,是这意思不?
    JounQin
        8
    JounQin  
       2022-08-04 08:23:44 +08:00 via iPhone
    james504
        9
    james504  
       2022-08-04 09:41:19 +08:00
    看成了 18cm 的一点疑问
    啊 天啦我太可怕了~~~
    Envov
        10
    Envov  
       2022-08-04 15:04:26 +08:00
    i18next 的方案很好
    https://github.com/i18next/i18next-scanner
    扫描源代码中的字符,创建唯一 id ,统一翻译,可以做到懒加载词条,或者把翻译的活扔给产品
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5350 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:02 PVG 16:02 LAX 00:02 JFK 03:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86