如何优化大型 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 并提供他们可能使用的语言。
我使用自动翻译脚本更新我的 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 并提供他们可能使用的语言。