2011-05-26 119 views
0

我對定義我的web腳本配置的更好方式有些疑惑。
目前,我有這樣的事情:爲網站定義配置

switch($lang){ 
    case 'en': 
     define('VAR1', 'abc') 
     define('VAR2', 'def') 
     break; 
    case 'unk': 
     define('VAR1', 'omg') 
     define('VAR2', 'wtf') 
     break; 
} 

等看起來有點怪我(是不是我的想法),但它工作正常。
我的想法,不過,是要確定這些CONFIGS數組:

$vars = array( 
    'en'=>array( 
     'VAR1'=>'abc', 
     'VAR2'=>'def' 
    ), 
    'unk'=>array( 
     'VAR1'=>'omg', 
     'VAR2'=>'wtf' 
    ) 
) 

你怎麼想,哪一個會更好? define的方式是有點漂亮,因爲我只需要寫<?=VAR1 ?>而不是<?=$vars[$lang]['VAR1'] ?>,但是明智的做法是使用define嗎?

回答

2

IMO,你應該把你的翻譯分割成不同的文件,而不是把2個(或更多)翻譯成同一個文件。如果您有超過1000行翻譯,會發生什麼?

如果你想使用的定義和仍要轉換,你可以嘗試這樣的:

switch ($lang) { 
case 'en': 
    require_once ('path/to/lang/trans.en.ext'); 
    break; 
case 'unk': 
    require_once ('path/to/lang/trans.en.ext'); 
    break; 
default: 
    require_once ('path/to/lang/trans.default.ext'); 
    break; 

}

,並把你的設置中的那些文件。我在一個項目中使用了相同的方法,但只適用於生產,開發和沙箱設置之間的配置。對於本地化,我創建了一個類,其工作方式與您描述的幾乎相同,但使用單獨的文件。

祝你好運!

+0

這些翻譯的事情之一是,它變得越來越困難(至少對我來說,現在),以瞭解如何進行解析,並提出訪問的文本。但我會盡我所能瞭解它,謝謝:) – jurchiks 2011-05-26 12:46:40

+0

如果你喜歡使用大量的人工智能,請嘗試[getteext](http://php.net/manual/en/book.gettext.php)也許在這裏面[Stackoverflow](http://stackoverflow.com/questions/tagged/gettext)獲取更多信息。祝你好運。 – RRStoyanov 2011-05-26 12:57:17

+0

我沒有偏好,我只是在尋找一些簡單的東西,或者至少用好的,簡短易懂的文檔/ howto。在這種情況下,我不知道在哪裏存儲了哪些內容(解析後)以及如何訪問這些數據:'require_once('path/to/lang/trans.default.ext');' – jurchiks 2011-05-26 13:04:14

2

您可能正在談論本地化。最好的方法是使用gettext-related tools

如果你正在談論配置,最好的方法是使用PHP可以輕鬆解析的ini文件。