我们正在开发一个基于网络的视频游戏:https://colonist.io/
我们对国际化产品感兴趣,需要关于如何处理的建议。i18next似乎是一个设计良好的框架,拥有许多插件,可以与各种不同的产品集成,但经过一些研究和测试,我们发现在适合我们的方式下有些困难。
我们在整个代码库中使用TypeScript。在服务器端,我们使用Express(Node.JS)来处理API并呈现EJS模板。在客户端,我们没有使用任何特殊的库或框架,只是纯TypeScript,使用SASS进行样式化和PIXI.js进行游戏渲染。我们使用Webpack进行捆绑。
我们有3个文件夹:server、client和共享shared。
当前,我们在代码库的多个地方都有文本:
理想情况下,系统应该这样工作:
问题:
我们在整个代码库中使用TypeScript。在服务器端,我们使用Express(Node.JS)来处理API并呈现EJS模板。在客户端,我们没有使用任何特殊的库或框架,只是纯TypeScript,使用SASS进行样式化和PIXI.js进行游戏渲染。我们使用Webpack进行捆绑。
我们有3个文件夹:server、client和共享shared。
当前,我们在代码库的多个地方都有文本:
- 共享shared文本文件中的文本,可以从服务器和客户端访问。
- 直接在EJS模板中的文本。
- 直接在TS代码中的文本,同时位于服务器和客户端。
理想情况下,系统应该这样工作:
- 在服务器端: a.轻松将区域设置与http请求/API请求/socket连接关联(当语言更改时,我们可以断开连接的socket) b.轻松在EJS模板中使用本地化文本 c.需要时本地化呈现SASS(如果样式需要LTR和RTL的特殊规则等)
- 在客户端: a.代码应仅加载所选区域设置所需的资源(因此不会为英语用户下载西班牙语)。 b.最好由Webpack捆绑包处理,并远离显式异步请求资源。 c.缓存。
- 共享区域设置;无需为服务器和客户端创建单独的文件。
- 易于添加新条目,我们可能会自动添加或使用GitHub Copilot/Google Translate来处理大部分文本。
- 隔离语言/区域设置,而不是将所有内容放在一个文件中。
- 自动检测需要翻译的字符串并给出通知。
问题:
- 是否有现成的插件可以直接实现这个功能?
- 如果不是全部,哪些可以,哪些不可以?
- 对于不能直接使用的功能,我们自己实现会有多难?容易出现错误吗?需要持续更新吗?
- 还有其他框架可以实现这个功能(并且仍然处理大多数国际化情况,如复数形式、格式等)吗?