2011-09-11 35 views
1

我正在爲我的項目開發本地化文件,並且我不確定我是否做了很好的選擇。優化國際化腳本,我做出了不錯的選擇嗎?

<?php 
$translation= array(
    "sentence" => array ("fr" => "phrase", "it" => "frase") 
); 

function _($toTranslate = '', $lang = 'en'){ 

    if($toTranslate != ''){ 

     if(!array_key_exists($toTranslate[$lang], $translation)) 
      return $toTranslate; 

     else 
      return ${$lang}[$toTranslate]; 
    } 
} 
?> 

我清楚不知道我是否做得很好。

回答

0

不夠好。

  1. 改進您的實施。

將每種語言放在一個文件中對於性能和維護會更好。例如,製作一個名爲「language」的文件夾,它包含「fr.inc.php」,「de.inc.php」等。在配置文件中,你有一個像

$config['language'] = 'de'; 

線你也可以加載從GET參數的語言代碼:

$config['language'] = htmlspecialchars($_GET['lang']); 

請記住,如果語言文件存在與否(file_exists()

有檢查

在你的引導代碼,加載語言文件(前檢查)

require_once LANGUANGE_DIR . '/' . $config['language'] . '.inc.php'; 

,當你需要的語言資源字符串,你打電話給你 「_」 功能,現在它應該看起來像

function _($LANG_RES_ID) { 
    global $lang; 
    return isset($lang[$LANG_RES_ID] ? $lang[$LANG_RES_ID] : $LANG_RES_ID; 
} 

2使用gettext

看到php.net:http://www.php.net/gettext

此外,許多例如,開源應用程序是學習的好例子,phpMyAdmin。

+0

謝謝。如果我想翻譯我有 echo _(「WELCOME」); and on my fr.inc.php $ _lang ['WELCOME'] =「Bienvenue」; – Zeroth