如何优化大型 lang.json 文件以减小包大小

How to optimize large lang.json files to reduce the bundle size

我使用自动翻译脚本更新我的 lang.json 文件以支持 36 种语言。

例如我的 lang.json 文件中的一个条目

"reports": {
    "en-us": {
      "text": "Reports"
    },
    "da": {
      "text": "Rappoter"
    },
    "hr": {
      "text": "Izvještaji"
    },
    "sv": {
      "text": "Rapporter"
    },
    "sq": {
      "text": "Raportet"
    },
    "ar": {
      "text": "تقارير"
    },
    "bg": {
      "text": "Доклади"
    },
    "zh": {
      "text": "报告"
    },
    "nl": {
      "text": "Verslagen"
    },
    "et": {
      "text": "Aruanded"
    },
    "fi": {
      "text": "raportit"
    },
    "fr": {
      "text": "Rapports"
    },
    "ka": {
      "text": "ანგარიშები"
    },
    "de": {
      "text": "Berichte"
    },
    "it": {
      "text": "Rapporti"
    },
    "he": {
      "text": "דוחות"
    },
    "hi": {
      "text": "रिपोर्ट"
    },
    "es-mx": {
      "text": "Reportes"
    },
    "hu": {
      "text": "Jelentések"
    },
    "id": {
      "text": "Laporan"
    },
    "ja": {
      "text": "レポート"
    },
    "ko": {
      "text": "보고서"
    },
    "lv": {
      "text": "Ziņojumi"
    },
    "no": {
      "text": "Rapporter"
    },
    "pl": {
      "text": "Sprawozdania"
    },
    "pt": {
      "text": "Relatórios"
    },
    "ro": {
      "text": "rapoarte"
    },
    "ru": {
      "text": "Доклады"
    },
    "sr": {
      "text": "Izveštaji"
    },
    "sk": {
      "text": "Správy"
    },
    "sl": {
      "text": "Poročila"
    },
    "es": {
      "text": "Informes"
    },
    "ta": {
      "text": "அறிக்கைகள்"
    },
    "th": {
      "text": "รายงาน"
    },
    "tr": {
      "text": "Raporlar"
    },
    "uk": {
      "text": "Звіти"
    },
    "vi": {
      "text": "Báo cáo"
    }
  },

所以我面临的问题是在将每个字符串翻译成 36 种语言后,我的 json 文件目前变得非常大 i.e. 66000 lines

这个巨大的文件增加了我的应用程序的包大小。

如您所见,lang 文件在我的包大小中占用了 1.33 MB。

有什么方法可以减少 lang 文件对我的包大小的影响。

听起来你的文字很多。我会在捆绑包中仅包含给定您的用户群的最可能的语言(无论是仅英语,还是英语和其他语言,等等)。如果用户 没有 阅读给定的语言并想要更改它,请向服务器发出 XHR 请求以下载他们想要的任何语言,并更新 UI请求完成后的新语言。

换句话说,仅按需提供 less-common 语言,而不是与主包一起提供。

如果您不想在初始页面加载后收到额外的 round-trip 请求,您还可以检查用户的 IP 并提供他们可能使用的语言。