V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dssxzuxc
V2EX  ›  Vue.js

i18n 的一点疑问

  •  
  •   dssxzuxc ·
    jianxingxuejian · 2022-08-03 15:02:49 +08:00 · 3163 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如页面上我有一些静态数据,为了美观、管理方便我放单独的 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()使用
    dssxzuxc
        4
    dssxzuxc  
    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   ·   实用小工具   ·   2650 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:10 · PVG 19:10 · LAX 03:10 · JFK 06:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.