PHP的国际化

Rob*_*itt 11 php internationalization

我目前正在研究i18n融入项目的最佳方法.

我想到了几种方法,首先是存储字符串和相关语言环境的数据库方案,但问题是选择字符串并不容易,因为我不想像所以:

SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543
Run Code Online (Sandbox Code Playgroud)

要么

SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello'
Run Code Online (Sandbox Code Playgroud)

下一个方法是将它们存储在文件中locales/en_gb/login/strings.php,然后尝试通过专门开发的类来访问它们:

$Language = Registry::Construct('Language',array('en_GB'));
echo $Language->login->strings->hello;
Run Code Online (Sandbox Code Playgroud)

这个问题是我必须构建一个系统,通过管理面板更新这些文件非常耗时,不仅仅是构建系统来管理字符串,而是在网站增长时实际管理字符串

  • 还有哪些方法对大型系统有益
  • 是否有任何自动化的方式来进行"翻译"
  • 我应该坚持使用数据库方法并构建一个系统供用户翻译带有评级/建议更好版本的字符串吗?
  • 您过去尝试过哪些系统,我应该调查它们还是完全避免它们.

Gor*_*don 8

除了gettext已经提到的,PHP 5.3还具有原生国际化支持

如果这不是一种选择,可以考虑使用Zend框架Zend_Translate,Zend_Locale并为相关组件.Zend_Translate支持许多适配器,包括但不限于简单数组,gettext,XmlTm等.


hal*_*dan 5

我已经将XML翻译实用程序实现为更大项目的一部分.你可以找到它在这里,和样本翻译文件是在这里(EN_US).


小智 5

最令人印象深刻的学习方法是Drupal的实现。第二好的是Wordpress。两者都使用gettext和.pot / .po / .mo进行本地化。而且,好处是,有一个名为Poedit的漂亮的开源.po编辑器。Windows系统用户可以使用它,它具有更广泛的吸引力。它也适用于Mac和Linux。在这里查看:http : //www.poedit.net/