0

好吧,所以我不得不创建一个 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'];

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

有什么意见吗?

顺便说一句,我正计划自己翻译所有内容。

4

2 回答 2

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 都内置了这个功能......

我希望这会有所帮助。

于 2013-06-07T01:11:36.887 回答
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'

在此处阅读有关初始化文件的更多信息:http ://en.wikipedia.org/wiki/INI_file

希望它可以帮助你!

于 2013-06-07T01:33:00.120 回答