关于语言文件的gettext有什么好处?

Jas*_*vis 8 php gettext

在用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
?>
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 13

gettext的一个好处是它是一种事实上的标准:它被许多应用程序,许多语言使用 - 这意味着许多人使用它.

另一个好处(可能是后果,或者原因,或者两者兼而有之)就是存在一些工具,例如Poedit,用于编辑gettext文件:您不必经过某些PHP (或其他)源代码.这非常重要:

  • 这意味着非技术人员可以编辑gettext本地化文件
    • 也许这对你来说似乎并不重要,
    • 但是如果你正在开发一个大型的开源应用程序,那么如果它成功并且许多人用他们自己的语言需要它将变得很重要.
  • 这意味着他们没有破坏应用程序的风险(例如,因为引号不匹配而认为是"解析错误";-))


Mic*_*ker 6

您的"实施"有一些缺点.

  • 不像gettext它实现的那样php.;-)
  • 无论你是否使用它,它都会将整个翻译保存在内存中
  • 更糟糕的是,无论何时需要一行,它都会实例化整个数据数组(在PHP中需要一段时间和相当大的内存)
  • 它无法处理多种语言的复数形式
  • 使用此转换的代码几乎不可读
  • 使用此转换的代码在没有翻译的情况下没有嵌入式回退.

基本上,你的实施被广泛用于许多项目,他们渴望获得国际化支持和高度创新的车轮发明,但不关心结果并且不了解坏的好处.