# 語言類
語言類提供了一些方法用于獲取語言文件和不同語言的文本來實現國際化。
在你的 CodeIgniter 的 system 目錄,有一個 language 子目錄, 它包含了一系列 英文 的語言文件。 在 system/language/english/ 這個目錄下的這些文件定義了 CodeIgniter 框架的各個部分使用到的一些常規消息,錯誤消息,以及其他一些通用的單詞或短語。
如果需要的話,你可以創建屬于你自己的語言文件,用于提供應用程序的錯誤消息和其他消息, 或者將核心部分的消息翻譯為其他的語言。翻譯的消息或你另加的消息應該放在 application/language/ 目錄下,每種不同的語言都有相應的一個子目錄(例如, 'french' 或者 'german')。
CodeIgniter 框架自帶了一套 "英語" 語言文件,另外可以在 CodeIgniter 3 翻譯倉庫 找到其他不同的語言,每個語言都有一個獨立的目錄。
當 CodeIgniter 加載語言文件時,它會先加載 system/language/ 目錄下的,然后再加載 你的 application/language/ 目錄下的來覆蓋它。
**注解**
每個語言都有它自己的目錄,例如,英語語言文件位于:system/language/english
# 處理多語言
如果你想讓你的應用程序支持多語言,你就需要在 application/language/ 目錄下提供不同語言的文件, 然后在 application/config/config.php 配置文件中指定默認語言。
application/language/english/ 目錄可以包含你的應用程序需要的額外語言文件,例如錯誤消息。
每個語言對應的目錄中都應該包含從 翻譯倉庫 中獲取到的核心文件,或者你自己翻譯它們,你也可以添加 你的程序需要的其他文件。
你應該將你正在使用的語言保存到一個會話變量中。
# 語言文件的例子
~~~
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 的語言類給你的應用程序提供了一種簡單輕便的方式來實現多語言, 它并不是通常我們所說的 國際化與本地化 的完整實現。
我們可以給每一種語言一個別名,一個更通用的名字,而不是使用諸如 "en"、 "en-US"、"en-CA-x-ca" 這種國際標準的縮寫名字。
**注解**
當然,你完全可以在你的程序中使用國際標準的縮寫名字。
# 使用語言類
# 創建語言文件
語言文件的命名必須以 _lang.php 結尾,例如,你想創建一個包含錯誤消息的文件, 你可以把它命名為:error_lang.php 。
在此文件中,你可以在每行把一個字符串賦值給名為 $lang 的數組,例如:
~~~
$lang['language_key'] = 'The actual message to be shown';
~~~
**注解**
在每個文件中使用一個通用的前綴來避免和其他文件中的相似名稱沖突是個好方法。 例如,如果你在創建錯誤消息你可以使用 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 是你要加載的語言文件名(不帶擴展名),language 是要加載哪種語言(比如,英語)。 如果沒有第二個參數,將會使用 application/config/config.php 中設置的默認語言。
你也可以通過傳一個語言文件的數組給第一個參數來同時加載多個語言文件。
~~~
$this->lang->load(array('filename1', 'filename2'));
~~~
**注解**
language 參數只能包含字母。
# 讀取語言文本
當你的語言文件已經加載,你就可以通過下面的方法來訪問任何一行語言文本:
~~~
$this->lang->line('language_key');
~~~
其中,language_key 參數是你想顯示的文本行所對應的數組的鍵名。
萬一你不確定你想讀取的那行文本是否存在,你還可以將第二個參數設置為 FALSE 禁用錯誤日志:
~~~
$this->lang->line('misc_key', FALSE);
~~~
**注解**
該方法只是簡單的返回文本行,而不是顯示出它。
# 使用語言行作為表單的標簽
這一特性已經從語言類中廢棄,并移到了 語言輔助函數 的 lang() 函數。
# 自動加載語言文件
如果你發現你需要在整個應用程序中使用某個語言文件,你可以讓 CodeIgniter 在系統初始化的時候 自動加載 該語言文件。 可以打開 application/config/autoload.php 文件,把語言放在 autoload 數組中。
# 類參考
**class CI_Lang**
**load**($langfile[, $idiom = ''[, $return = FALSE[, $add_suffix = TRUE[, $alt_path = '']]]])
參數:
* $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
加載一個語言文件。
* * * * *
**line**($line[, $log_errors = TRUE])
參數:
* $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
從一個已加載的語言文件中,通過行名獲取一行該語言的文本。
- 空白目錄
- 歡迎使用 CodeIgniter
- 安裝說明
- 下載CodeIgniter
- 安裝說明
- 從老版本升級
- 疑難解答
- CodeIgniter 概覽
- 開始
- CodeIgniter 是什么?
- 支持特性
- 應用程序流程圖
- 模型-視圖-控制器
- 架構目標
- 教程 - 內容提要
- 加載靜態內容
- 讀取新聞條目
- 創建新聞條目
- 結束語
- 向 CodeIgniter 貢獻你的力量
- 編寫 CodeIgniter 的文檔
- Developer's Certificate of Origin 1.1
- 常規主題
- CodeIgniter URL
- 控制器
- 保留名稱
- 視圖
- 模型
- 輔助函數
- 使用 CodeIgniter 類庫
- 創建類庫
- 使用 CodeIgniter 驅動器
- 創建驅動器
- 創建核心系統類
- 創建附屬類
- 鉤子 - 擴展框架核心
- 自動加載資源
- 公共函數
- 兼容性函數
- URI 路由
- 錯誤處理
- 網頁緩存
- 程序分析
- 以 CLI 方式運行
- 管理你的應用程序
- 處理多環境
- 在視圖文件中使用 PHP 替代語法
- 安全
- PHP 開發規范
- 類庫參考
- 基準測試類
- 緩存驅動器
- 日歷類
- 購物車類
- 配置類
- Email 類
- 加密類
- 加密類(新版)
- 文件上傳類
- 表單驗證類
- FTP 類
- 圖像處理類
- 輸入類
- Javascript 類
- 語言類
- 加載器類