多语言支持PHP


Multilanguage support PHP

好吧,所以我被迫创建一个多语言支持的网站4种语言(希腊语,法语,英语和德语)。我对如何设置有一些想法,尽管我想听听别人的意见。

第一个选项是根据用户的设置对文件进行include

/* 
------------------
Language: English   in   ENGLISH.PHP
------------------ 
*/
$lang['TITLE'] = 'My website page title';
$lang['HOME'] = 'Home';
/* 
------------------
Language: French  in   FRENCH.PHP
------------------
*/
$lang['TITLE'] = 'Titre site-web';
$lang['HOME'] = 'Accueil';

文件将相应地包含:include_once 'ENGLISH.PHP';

另一个选项是创建一个通用文件,但将语言输出在数组中:

$lang = array("en"=> array("TITLE"=>'My website page title',
                           "HOME" =>'Home'),
              "fr"=> array("TITLE"=>'Titre site-web',
                           "HOME" =>'Accueil'));

$set = $USER_INFO->langPref();   //  output:    en, fr, gr, de
echo $lang[$set]['TITLE'];

第二个选项似乎更容易管理,但我不确定这种方法是否有任何缺点…

的意见吗?

顺便说一下,我打算自己翻译所有的东西。

不要浪费时间,使用框架,例如Symfony2就有一个优秀的国际化组件:

http://symfony.com/doc/current/components/intl.html

或CakePHP,更简单=)

http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

但是…如果你真的……真的想从头开始做=)我建议你使用像。po文件的东西,这里有一些文章可以帮助你;http://www.icanlocalize.com/site/tutorials/how-to-translate-with-gettext-po-and-pot-files/

我强烈建议使用框架,甚至CMS内置这个功能…

您可以使用。ini来存储语言:

set = $USER_INFO->langPref(); 
if(file_exists("PATH_TO_FOLDER_LANGUAGE/".$set.'.ini')){
    $arrLanguage= parse_ini_file("PATH_TO_FOLDER_LANGUAGE/".$set.'.ini');
}else{
    $arrLanguage = array();
    echo "Language file not found";
}
print_r($arrLanguage);

在ini文件中,它将是相同的:

TITLE=Titre site-web
HOME=Accueil'

在这里阅读更多关于init文件:http://en.wikipedia.org/wiki/INI_file

希望能帮到你!