2011-12-20 52 views
0

我正在進行一個項目,將會有3種不同的語言:英文,法文和西班牙文。這將在用戶註冊時定義。PHP如何在配置文件中處理不同的語言?

現在在我的配置文件我有以下幾點:

define("DEFAULT_SLOGAN", "The default slogan will go here."); 

,直到我開始意識到我需要接受不同的語言。

用戶具有指定的語言代碼(EN,FR,SP)。我將如何去爲每個頁面使用不同的語言字符串?我需要這樣的事情:

define("DEFAULT_SLOGAN_EN", "Slogan in english"); 
define("DEFAULT_SLOGAN_FR", "Slogan in french"); 
define("DEFAULT_SLOGAN_SP", "Slogan in spanish"); 

而對於每個字符串只有3個不同的版本呢?不太確定解決這個問題的最佳方法。

謝謝!經常使用

回答

3

一個更好的方法是創建

  • 含locale_definitions_EN.php

    定義( 「DEFAULT_SLOGAN」, 「默認的英文標語會在這裏。」);

  • 定義( 「DEFAULT_SLOGAN」, 「法國默認標語會在這裏。」)local_definitions_FR.php;

等,然後像做

include "locale_definitions_$userLocale.php"; 

這樣做的好處,你並不需要內存來存放未使用其他語言的常量。

+0

非常感謝,我認爲這對我也是最好的。 – Drew 2011-12-20 14:52:23

+0

這看起來像一個相當髒的解決方案。如果沒有法文翻譯,您最終會面臨一個您想要回退到英文翻譯的地步。這種方法無法實現。想想你的項目的未來;-) – 2011-12-20 15:28:28

+0

@TomvanderWoerdt:這是在不同的水平上處理!因爲'$ userLocale'是**總是**可用的,所以如果FR不可用,則後退將設置爲EN。 – 2015-11-17 00:53:33

4

一個簡單的策略是數組:

$lang['en'] = array(
    'DEFAULT_SLOGAN' => 'The default slogan will go here.', 
); 
// Same for other languages 

然後,在你的實際代碼,確保$ LANG是可用的(你可以使用這個global關鍵字),並使用這些陣列。

相關問題