【问题标题】:PHP How to handle different languages in config file?PHP 如何在配置文件中处理不同的语言?
【发布时间】:2011-12-20 14:34:01
【问题描述】:

我正在做一个项目,将有 3 种不同的语言:英语、法语和西班牙语。这将在用户注册时定义。

现在在我的配置文件中,我有以下内容:

define("DEFAULT_SLOGAN", "The default slogan will go here.");

直到我开始意识到我需要接受不同的语言。

用户有一个分配的语言代码(EN、FR、SP)。我将如何为每个页面设置不同的语言字符串?我需要这样的东西吗:

define("DEFAULT_SLOGAN_EN", "Slogan in english");
define("DEFAULT_SLOGAN_FR", "Slogan in french");
define("DEFAULT_SLOGAN_SP", "Slogan in spanish");

每个字符串只有 3 个不同的版本?不太确定解决此问题的最佳方法。

谢谢!

【问题讨论】:

    标签: php translation


    【解决方案1】:

    一个常用的简单策略是数组:

    $lang['en'] = array(
        'DEFAULT_SLOGAN' => 'The default slogan will go here.',
    );
    // Same for other languages
    

    然后,在您的实际代码中,确保 $lang 可用(您可以为此使用 global 关键字)并使用这些数组。

    【讨论】:

      【解决方案2】:

      更好的方法是创建

      • locale_definitions_EN.php 包含

        define("DEFAULT_SLOGAN", "英文默认slogan会放这里。");

      • local_definitions_FR.php 包含

        define("DEFAULT_SLOGAN", "法语默认口号会放在这里。");

      等等。然后做类似

      的事情
      include "locale_definitions_$userLocale.php";
      

      这样做的好处是您不需要内存来保存未使用的其他语言常量。

      【讨论】:

      • 非常感谢,我想这对我来说也是最好的。
      • 这看起来是一个相当肮脏的解决方案。当没有可用的法语翻译时,您最终将面临一个需要回退到英语翻译的问题。您无法使用此方法实现这一目标。想想你的项目的未来;-)
      • @TomvanderWoerdt:这是在不同的级别上处理的!因为$userLocale总是可用,如果 FR 不可用,后备方法是将其设置为 EN。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多