好吧,所以我不得不用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'];
第二种选择似乎更容易管理,但我不确定这种方法是否有任何缺点......
有什么意见吗?
顺便说一下,我打算自己翻译一切。
答案 0 :(得分:2)
不要浪费你的时间,使用框架,例如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都内置了这个功能......
我希望这可以提供帮助。
答案 1 :(得分:1)
您可以使用.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
希望它可以帮到你!