i18n到底做了什么

现在有个需要做国际化的需求,网上都是用i18n来做的,那到底它做了什么,用了这个库也还要写json数据,那为什么还需要用这个库,自己写不可以吗

“Devil组”引证GPT后的撰写:

  • 国际化(i18n)是将一个应用程序或网站适配到不同语言和地区的过程。为了方便应用程序或网站的国际化,可以使用i18n库,这是一个专门用于国际化的库,可以轻松地实现多语言支持。
  • i18n库主要的作用是提供一个易于管理和更新多语言文本的方法。通过使用i18n库,可以将不同语言的文本存储在单独的文件中,而不是将它们硬编码到代码中。这样,就可以更轻松地管理和更新多语言文本,而不必修改代码。
  • 另外,使用i18n库还可以方便地进行语言切换。只需将当前语言设置为所需的语言,i18n库将自动加载相应的语言文件并使用其中的文本。
  • 虽然可以手动编写自己的多语言支持代码,但使用i18n库可以减少编写和维护多语言支持代码的工作量,并提供更好的可读性和可维护性。此外,i18n库还提供了一些其他功能,如变量替换和复数支持,使多语言支持更加灵活和可扩展。
  • 需要注意的是,使用i18n库需要编写JSON格式的语言文件来存储不同语言的文本。这可能会增加一些工作量,但在实现多语言支持时,这也是一种通用的做法。

其实说白了就一句话
用i18n你只需要提供数据而不需要自己写代码
自己写连数据带代码都要自己写

  • 这篇文章讲的很详细,请看:解决i18n报错的问题
  • 除此之外, 这篇博客: 网站国际化 多语言处理工具i18n安装使用方法中的 3、在i18n文件夹下创建i18n.js 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import Vue from 'vue';
    import Element from 'element-ui'
    import VueI18n from 'vue-i18n';
    import enLocale from 'element-ui/lib/locale/lang/en'
    import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
    import en from './locale/en'
    import zh from './locale/zh-CN'
    const messages={
      en: {
          ...en,
          ...enLocale
      },
      zh: {
          ...zh,
          ...zhLocale
      }
    }
    let lang = localStorage.getItem('lang');
    let locale = lang =='en_US'?'en':'zh';
    
    Vue.use(VueI18n)
    const i18n = new VueI18n({
    	locale: locale, //设置默认语言
    	messages,
        silentTranslationWarn: true
    });
    
    Vue.use(Element,{
        i18n:(key,value) => i18n.t(key,value)
    })
    export default i18n;