W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
語言類提供了一些方法用于獲取語言文件和不同語言的文本來實(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)的縮寫名字。
語言文件的命名必須以 _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);
注解
該方法只是簡單的返回文本行,而不是顯示出它。
這一特性已經(jīng)從語言類中廢棄,并移到了 語言輔助函數(shù) 的 lang() 函數(shù)。
如果你發(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ù):
返回: Array of language lines if $return is set to TRUE, otherwise void
返回類型: mixed
加載一個(gè)語言文件。
line($line[, $log_errors = TRUE])
參數(shù):
返回: Language line string or FALSE on failure
返回類型: string
從一個(gè)已加載的語言文件中,通過行名獲取一行該語言的文本。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: