CodeIgniter 語言類

2018-07-21 15:39 更新

語言類

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

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

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

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

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

注解

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

處理多語言

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

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

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

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

語言文件的例子

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
            ...

切換語言

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

國際化

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

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

注解

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

使用語言類

創(chuàng)建語言文件

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

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

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

注解

在每個(gè)文件中使用一個(gè)通用的前綴來避免和其他文件中的相似名稱沖突是個(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';

加載語言文件

在使用語言文件之前,你必須先加載它。可以使用下面的代碼:

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

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

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

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

注解

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

讀取語言文本

當(dāng)你的語言文件已經(jīng)加載,你就可以通過下面的方法來訪問任何一行語言文本:

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

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

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

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

注解

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

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

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

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

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

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è)已加載的語言文件中,通過行名獲取一行該語言的文本。

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)