多语言支持PHP

时间:2013-06-07 01:05:50

标签: php internationalization

好吧,所以我不得不用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'];

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

有什么意见吗?

顺便说一下,我打算自己翻译一切。

2 个答案:

答案 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

希望它可以帮到你!