无处不在所以当它涉及到使一个多语言的应用程序在PHP每个人都说 gettext 是最好的方式来做到这一点。我只是想知道为什么吗?

像什么使得这种方法下,较少的高效率后使用gettext?

<?PHP
//Have seperate language files for each language I add, this would be english file
function lang($phrase){
    static $lang = array(
        'NO_PHOTO' => 'No photo\'s available',
        'NEW_MEMBER' => 'This user is new'
    );
    return $lang[$phrase];
}
//Then in application where there is text from the site and not from users I would do something like this
echo lang('NO_PHOTO');  // No photo's available would show here
?>
有帮助吗?

解决方案

一个好的事情gettext是,它是一种事实上的标准:它是用来通过许多应用程序,在许多语言--这意味着很多人工作。

另一件好事 (也许有后果,或导致的,或两者,实际上) 是,若干工具,喜欢 Poedit 例如,存在对编辑gettext文件:你不必通过一些PHP (或者) 源代码。这是非常重要的:

  • 这意味着非技术人员可以编辑gettext本地化的文件
    • 也许这似乎并不重要你现在
    • 但是如果你的工作在一个大大的开放源应用程序,它将成为重要的,如果它是成功的,并且许多人需要它自己的语言。
  • 这意味着他们不要冒险打破应用程序 (认为"分析错误",因为不匹配的报价,例如;-))

其他提示

有几个缺点在"执行"。

  • 不像 gettext 它的实现 php. ;-)
  • 它保持整个翻译记忆无论如果你要用它或者不
  • 这是糟糕的是,它实例化的整个系列的数据,每当你需要一个线(它不会采取而且相当一些存在PHP)
  • 这是无法处理复数形式,对于许多语言
  • 代码,使用这种翻译几乎是不可读的
  • 代码,使用这种翻译没有嵌入退回到采用的情况下不存在的翻译。

基本上,你的实施被广泛用于许多项目的人正在死亡权利要求他们的国际支持和高度创新发明车轮,但是不关心了一下,有关结果并不知道的好坏。

它是相同的答案,对于所有的问题看起来像:

什么是更好地与[通证明 和大使用液] 比我的哈克骄傲小白 执行]?

  • 它已经在这里很长一段时间,信不信由你,如果有经验的开发工作,使用它,并称赞它,它可能是一个原因。
  • 这是一个标准,因此,即使解决方案将会更好、价格支付的破坏它不可能是值得的。
  • 它可以做1000多你的实施,因为它开发一个全球性的范围中心的而你的想法只是为了解决您的问题。

我不是批评,我们都这样做,试图说服自己,我们是利己和其他被矫枉过正的程序员。这一部分的学习方式。我实际上连续这样做,重新发明车轮,或者表示我的朋友/同事有关的一些亲吻的代码,我砍死。有时你只是做它越来越少,我想你停止这样做有一天你会实际上应该做到这一点:-)

与其他解决方案(如您的Java字符串表或Windows资源)相比,gettext的优势在于它使源代码更具可读性。

比较一下:

printf(_("No photo available (error %d)."), err);

用这个:

printf(i18n(NO_PHOTO), err);
// or some variant of the same thing

在第一种情况下,您可以在代码中看到消息,并确切知道它的作用。在后一种情况下,您只能看到一个符号常量,并且必须查找确切的文本和格式说明符。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top