CodeIgniter 語(yǔ)言類

2018-07-21 15:39 更新

語(yǔ)言類

語(yǔ)言類提供了一些方法用于獲取語(yǔ)言文件和不同語(yǔ)言的文本來(lái)實(shí)現(xiàn)國(guó)際化。

在你的 CodeIgniter 的 system 目錄,有一個(gè) language 子目錄, 它包含了一系列 英文 的語(yǔ)言文件。 在 system/language/english/ 這個(gè)目錄下的這些文件定義了 CodeIgniter 框架的各個(gè)部分使用到的一些常規(guī)消息,錯(cuò)誤消息,以及其他一些通用的單詞或短語(yǔ)。

如果需要的話,你可以創(chuàng)建屬于你自己的語(yǔ)言文件,用于提供應(yīng)用程序的錯(cuò)誤消息和其他消息, 或者將核心部分的消息翻譯為其他的語(yǔ)言。翻譯的消息或你另加的消息應(yīng)該放在 application/language/ 目錄下,每種不同的語(yǔ)言都有相應(yīng)的一個(gè)子目錄(例如, 'french' 或者 'german')。

CodeIgniter 框架自帶了一套 "英語(yǔ)" 語(yǔ)言文件,另外可以在 CodeIgniter 3 翻譯倉(cāng)庫(kù) 找到其他不同的語(yǔ)言,每個(gè)語(yǔ)言都有一個(gè)獨(dú)立的目錄。

當(dāng) CodeIgniter 加載語(yǔ)言文件時(shí),它會(huì)先加載 system/language/ 目錄下的,然后再加載 你的 application/language/ 目錄下的來(lái)覆蓋它。

注解

每個(gè)語(yǔ)言都有它自己的目錄,例如,英語(yǔ)語(yǔ)言文件位于:system/language/english

處理多語(yǔ)言

如果你想讓你的應(yīng)用程序支持多語(yǔ)言,你就需要在 application/language/ 目錄下提供不同語(yǔ)言的文件, 然后在 application/config/config.php 配置文件中指定默認(rèn)語(yǔ)言。

application/language/english/ 目錄可以包含你的應(yīng)用程序需要的額外語(yǔ)言文件,例如錯(cuò)誤消息。

每個(gè)語(yǔ)言對(duì)應(yīng)的目錄中都應(yīng)該包含從 翻譯倉(cāng)庫(kù) 中獲取到的核心文件,或者你自己翻譯它們,你也可以添加 你的程序需要的其他文件。

你應(yīng)該將你正在使用的語(yǔ)言保存到一個(gè)會(huì)話變量中。

語(yǔ)言文件的例子

system/
    language/
        english/
            ...
            email_lang.php
            form_validation_lang.php
            ...

application/
    language/
        english/
            error_messages_lang.php
        french/
            ...
            email_lang.php
            error_messages_lang.php
            form_validation_lang.php
            ...

切換語(yǔ)言

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key');

國(guó)際化

CodeIgniter 的語(yǔ)言類給你的應(yīng)用程序提供了一種簡(jiǎn)單輕便的方式來(lái)實(shí)現(xiàn)多語(yǔ)言, 它并不是通常我們所說(shuō)的 國(guó)際化與本地化 的完整實(shí)現(xiàn)。

我們可以給每一種語(yǔ)言一個(gè)別名,一個(gè)更通用的名字,而不是使用諸如 "en"、 "en-US"、"en-CA-x-ca" 這種國(guó)際標(biāo)準(zhǔn)的縮寫(xiě)名字。

注解

當(dāng)然,你完全可以在你的程序中使用國(guó)際標(biāo)準(zhǔn)的縮寫(xiě)名字。

使用語(yǔ)言類

創(chuàng)建語(yǔ)言文件

語(yǔ)言文件的命名必須以 _lang.php 結(jié)尾,例如,你想創(chuàng)建一個(gè)包含錯(cuò)誤消息的文件, 你可以把它命名為:error_lang.php 。

在此文件中,你可以在每行把一個(gè)字符串賦值給名為 $lang 的數(shù)組,例如:

$lang['language_key'] = 'The actual message to be shown';

注解

在每個(gè)文件中使用一個(gè)通用的前綴來(lái)避免和其他文件中的相似名稱沖突是個(gè)好方法。 例如,如果你在創(chuàng)建錯(cuò)誤消息你可以使用 error_ 前綴。

$lang['error_email_missing'] = 'You must submit an email address';
$lang['error_url_missing'] = 'You must submit a URL';
$lang['error_username_missing'] = 'You must submit a username';

加載語(yǔ)言文件

在使用語(yǔ)言文件之前,你必須先加載它??梢允褂孟旅娴拇a:

$this->lang->load('filename', 'language');

其中 filename 是你要加載的語(yǔ)言文件名(不帶擴(kuò)展名),language 是要加載哪種語(yǔ)言(比如,英語(yǔ))。 如果沒(méi)有第二個(gè)參數(shù),將會(huì)使用application/config/config.php 中設(shè)置的默認(rèn)語(yǔ)言。

你也可以通過(guò)傳一個(gè)語(yǔ)言文件的數(shù)組給第一個(gè)參數(shù)來(lái)同時(shí)加載多個(gè)語(yǔ)言文件。

$this->lang->load(array('filename1', 'filename2'));

注解

language 參數(shù)只能包含字母。

讀取語(yǔ)言文本

當(dāng)你的語(yǔ)言文件已經(jīng)加載,你就可以通過(guò)下面的方法來(lái)訪問(wèn)任何一行語(yǔ)言文本:

$this->lang->line('language_key');

其中,language_key 參數(shù)是你想顯示的文本行所對(duì)應(yīng)的數(shù)組的鍵名。

萬(wàn)一你不確定你想讀取的那行文本是否存在,你還可以將第二個(gè)參數(shù)設(shè)置為 FALSE 禁用錯(cuò)誤日志:

$this->lang->line('misc_key', FALSE);

注解

該方法只是簡(jiǎn)單的返回文本行,而不是顯示出它。

使用語(yǔ)言行作為表單的標(biāo)簽

這一特性已經(jīng)從語(yǔ)言類中廢棄,并移到了 語(yǔ)言輔助函數(shù) 的 lang() 函數(shù)。

自動(dòng)加載語(yǔ)言文件

如果你發(fā)現(xiàn)你需要在整個(gè)應(yīng)用程序中使用某個(gè)語(yǔ)言文件,你可以讓 CodeIgniter 在系統(tǒng)初始化的時(shí)候 自動(dòng)加載 該語(yǔ)言文件。 可以打開(kāi)application/config/autoload.php 文件,把語(yǔ)言放在 autoload 數(shù)組中。

類參考

classCI_Lang

load($langfile[, $idiom = ''[, $return = FALSE[, $add_suffix = TRUE[, $alt_path = '']]]])

參數(shù):

  • $langfile (mixed) -- Language file to load or array with multiple files
  • $idiom (string) -- Language name (i.e. 'english')
  • $return (bool) -- Whether to return the loaded array of translations
  • $add_suffix (bool) -- Whether to add the '_lang' suffix to the language file name
  • $alt_path (string) -- An alternative path to look in for the language file

返回: Array of language lines if $return is set to TRUE, otherwise void

返回類型: mixed

加載一個(gè)語(yǔ)言文件。

line($line[, $log_errors = TRUE])

參數(shù):

  • $line (string) -- Language line key name
  • $log_errors (bool) -- Whether to log an error if the line isn't found

返回: Language line string or FALSE on failure

返回類型: string

從一個(gè)已加載的語(yǔ)言文件中,通過(guò)行名獲取一行該語(yǔ)言的文本。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)