好吧,所以我被迫创建一个多语言支持的网站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
希望能帮到你!