我正在开发一个国际网站(PHP,自定义轻量级MVC框架),需要以用户的母语显示内容。内容主要是文本,但也可能是图像。
我们当前的解决方案是一个巨大的文件,每个要翻译的文本都有单独的功能,每个功能都有一个切换案例。这已经变得非常糟糕,并且也不具备特别的可扩展性。
我们的优先事项是性能,可维护性(如果我们需要修复错误或进行更改,应该在尽可能少的地方发生)和可扩展性(允许翻译人员添加更多语言)。我们希望使用至少10-12种语言。我们还需要考虑文本中的HTML内容,例如<p></p>
和链接。目前,我们在返回的文本中有HTML内联(显然,它不是特别易于维护)。我们考虑过的一些选项:
翻译的数据库表,包含每种语言的列
+可扩展到大量内容
- 翻译人员不容易添加/更改内容
- 大量数据库事务,性能低下
一个平面文本文件(CSV)
+转换为电子表格,翻译人员可以轻松使用
- 将巨型文件加载到内存中可能会影响性能(不确定这实际会产生多大影响)
- 可能很难维护
每种语言一个平面文本文件
+易于翻译人员使用
?更好的表现(也许)
持续集成系统,使用嵌入的本地化内容创建每个(MVC)视图的多个版本
+性能最佳
+可以与CSV或其他易于翻译人员使用的格式结合使用
- 复杂设置
- 可能难以维护
我们一直在寻找有关如何在网络应用中提供翻译内容的指南,但没有发现任何有用的内容。这些选项中哪一个是最好的,以及我们没有考虑过的其他实现?
答案 0 :(得分:0)
可以使用php的 gettext 扩展名和 .po 文件类型来实现本地化。 Po文件类型与FNU gettext相关联。使用POEdit我们可以创建.po和.mo文件 .po文件包含转换的文字信息,如下所示
eng.po
msgstr“”msgstr“”
ch.po
msgstr“”msgstr“”