在 PHP 中使用变量进行本地化是否有任何缺点


Does using variables for localizations in PHP have any drawbacks?

在 PHP 中对数组使用变量来本地化项目有什么缺点吗?

例如:

英文.php

$string1 = "Open";

德.php

$string1 = "Öffnen";

我看到了缺点,如果你声明 1000 个变量,你有 1000 个带有 1000 个值的 zval 容器。如果将其声明为如下所示的数组:

英文.php

$translations = array (
    'yes' => 'yes',
    'no'  => 'no'
);

。那么只需要一个 zval 容器(当然还有更大的价值部分)。这将有助于保持 PHP 的内部符号表更小并节省内存。如果你问我,使用数组。

更详细的替代方案是使用 gettext 扩展


为了完整性,另一个缺点是使用变量进行翻译可能会导致几乎任何可以想象的变量名称,因此极易受到命名空间污染。如果你应该使用变量(无论出于何种原因,我没有看到),那么你必须"命名空间"它们以避免这种情况,比如:

$translation_yes = 'yes';
$translation_no = 'no';
...