Php 优化国际化脚本,是我做出的好选择吗?

Php 优化国际化脚本,是我做出的好选择吗?,php,optimization,localization,internationalization,Php,Optimization,Localization,Internationalization,我将继续为我的项目开发本地化文件,我不确定我是否做了一个好的选择 <?php $translation= array( "sentence" => array ("fr" => "phrase", "it" => "frase") ); function _($toTranslate = '', $lang = 'en'){ if($toTranslate != ''){ if(!array_key_exists($toTransla

我将继续为我的项目开发本地化文件,我不确定我是否做了一个好的选择

<?php
$translation= array(
    "sentence" => array ("fr" => "phrase", "it" => "frase")
);

function _($toTranslate = '', $lang = 'en'){

    if($toTranslate != ''){

        if(!array_key_exists($toTranslate[$lang], $translation))
            return $toTranslate;

        else 
            return ${$lang}[$toTranslate];
    }
}
?>

我显然不知道我是否做得很好。

不够好

  • 改进您的实现
  • 将每种语言放在一个文件中会更好地实现性能和维护。例如,制作一个名为“language”的文件夹,其中包含“fr.inc.php”、“de.inc.php”等等。在配置文件中,有一行

    $config['language'] = 'de';
    
    您还可以从GET参数加载语言代码:

    $config['language'] = htmlspecialchars($_GET['lang']);
    
    请记住检查语言文件是否存在(
    file\u exists()

    在引导代码中,加载语言文件(之前请检查)

    当您需要语言资源字符串时,您可以调用您的“\”函数,现在它应该是

    function _($LANG_RES_ID) {
        global $lang;
        return isset($lang[$LANG_RES_ID] ? $lang[$LANG_RES_ID] : $LANG_RES_ID;
    }
    
    2使用gettext

    请参见php.net:


    此外,许多开源应用程序都是很好的研究案例,例如phpMyAdmin。

    谢谢。如果我想翻译,我有echo(“欢迎”);在我的fr.inc.php$_lang['WELCOME']=“Bienvenue”;
    function _($LANG_RES_ID) {
        global $lang;
        return isset($lang[$LANG_RES_ID] ? $lang[$LANG_RES_ID] : $LANG_RES_ID;
    }