我正在构建一个多语言 Web 应用程序,并且正在努力决定如何存储 i18n 数据。
一方面,我可以采用传统方式将短语保存到 JSON 文件中并从那里加载。但对于我的应用程序,我使用 create-react-app 和 firebase,这使得这非常不方便(加载短语很好,但我也希望我的 i18n 库将丢失的翻译保存到文件中,这不是这么简单,因为我必须设置一个小型 express 服务器来处理文件修改)。
另一方面,我可以将所有内容存储在数据库中。这将使这个过程变得更加简单,但是这样做可以吗?是否存在任何陷阱或安全问题? (我知道没有人可能关心窃取翻译文本,但如果它以某种方式发生改变,这对用户来说就不太好了)
我更喜欢使用 JSON 格式。如果您无法上传“.json”文件,您可以使用“.js”文件,不会带来任何不便。例如:
en.js
module.exports = {
"sayHi": "hello",
};
es.js
module.exports = {
"sayHi": "hola",
};
如果您不想错过任何语言的任何翻译文本,您可以创建一个小脚本,如果缺少文本,它会提醒您。另一方面,您可以创建另一个脚本来填充不完整的语言并生成新的 .js 文件。
这是另一种方法:
TL;DR 对于打算在不同语言中使用的 Web 应用程序,建议使用翻译子模式(表结构)。
https://vertabelo.com/blog/multi-language-database-design/
快乐编码;