2015-11-14 45 views
0

我正在本地化我的站點並使用數組來存儲語言字符串。這是我的架構:

每種語言一個文件,例如:language_en.php英文,language_fr.php法文,包含在腳本的開頭。

在每個語言文件我有一個數組(由約2000元素):

static $phrases = array(); 
$phrases['del'] = 'Remove'; 
... 

然後我有一個函數:

function phrase($key) { 
    global $phrases; 
    return $phrases[$key] 
} 

凡有史以來我需要一個本地化字符串中進一步我的應用程序,我使用:

phrase('del'); 

有關此架構的幾個問題:

  1. $language是全球性的,這是否具有負面效果 當數組越來越大時會產生效果嗎?
  2. 將數組直接添加到phrase()函數並避免它成爲全局函數會更好嗎?
+0

這沒有什麼錯關於這種做法。即使陣列在某個時候長大,它也不會損害性能。此外,在這種情況下使用全局也沒關係。 – felipsmartins

回答

1

這種方法沒有錯。
即使陣列在某個時間長大,它也不應該導致性能損失。此外,在這種情況下使用全局也沒關係。
如果你已經「全球偏執狂」,你可以使用閉包來創建全局變量的副本,是這樣的:

$phrase = function() use ($phrases) 
{  
    return $phrases[$key]; 
}; 

我勸你爲了管理翻譯目錄使用symfony/translation組件。 Symfony trabslations是一個很好的組件。

也許你想採取那朵答案(我的)一看:Best way to organize your localized translation file