【发布时间】:2013-09-30 13:09:33
【问题描述】:
我正在开发一个需要以用户的母语显示内容的国际网站(PHP,自定义轻量级 MVC 框架)。内容主要是文本,但也可能是图像。
我们当前的解决方案是一个巨大的文件,每个要翻译的文本都有单独的函数,每个函数中都有一个 switch case。这已经变得难以维护并且也不是特别可扩展。
我们的首要任务是性能、可维护性(如果我们需要修复错误或进行更改,应该在尽可能少的地方进行)和可扩展性(允许翻译人员添加更多语言)。我们预计将使用至少 10-12 种语言。我们还需要考虑文本中的 HTML 内容,例如 <p></p> 和链接。目前,我们在返回的文本中有 HTML 内联(显然,这不是特别可维护的)。我们考虑过的一些选项:
用于翻译的数据库表,包含每种语言的列
+ 可扩展到大量内容
- 译者不容易添加/更改内容
- 大量数据库事务,性能缓慢
一个纯文本文件 (CSV)
+ 转换为电子表格,便于翻译人员使用
- 将一个巨大的文件加载到内存中可能会影响性能(不确定这实际上会产生多大的影响)
- 可能很难维护
每种语言一个平面文本文件
+ 易于翻译人员使用
?更好的性能(也许)
为每个 (MVC) 视图创建多个版本的持续集成系统,其中包含嵌入的本地化内容
+ 性能最佳
+ 可以与 CSV 或其他易于翻译人员使用的格式结合使用
- 设置复杂
- 可能难以维护
我们一直在寻找有关如何在网络应用程序中提供翻译内容的指南,但没有找到任何有用的东西。这些选项中哪一个是最好的,还有哪些我们没有考虑过的其他实现?
【问题讨论】:
-
php.net/manual/en/book.gettext.php,每种语言的平面文件。
标签: php localization translation