# 语言类
语言类提供了一些方法用于获取语言文件和不同语言的文本来实现国际化。
在你的 CodeIgniter 的 **system** 目录,有一个 **language** 子目录, 它包含了一系列 **英文** 的语言文件。 在 **system/language/english/** 这个目录下的这些文件定义了 CodeIgniter 框架的各个部分使用到的一些常规消息,错误消息,以及其他一些通用的单词或短语。
如果需要的话,你可以创建属于你自己的语言文件,用于提供应用程序的错误消息和其他消息, 或者将核心部分的消息翻译为其他的语言。翻译的消息或你另加的消息应该放在 **application/language/** 目录下,每种不同的语言都有相应的一个子目录(例如, 'french' 或者 'german')。
CodeIgniter 框架自带了一套 "英语" 语言文件,另外可以在 [CodeIgniter 3 翻译仓库](https://github.com/bcit-ci/codeigniter3-translations) 找到其他不同的语言,每个语言都有一个独立的目录。
当 CodeIgniter 加载语言文件时,它会先加载 **system/language/** 目录下的,然后再加载 你的 **application/language/** 目录下的来覆盖它。
注解
每个语言都有它自己的目录,例如,英语语言文件位于:system/language/english
* [处理多语言](http://codeigniter.org.cn/user_guide/libraries/language.html#id2)
* [语言文件的例子](http://codeigniter.org.cn/user_guide/libraries/language.html#id3)
* [切换语言](http://codeigniter.org.cn/user_guide/libraries/language.html#id4)
* [国际化](http://codeigniter.org.cn/user_guide/libraries/language.html#id5)
* [使用语言类](http://codeigniter.org.cn/user_guide/libraries/language.html#id7)
* [创建语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id8)
* [加载语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id9)
* [读取语言文本](http://codeigniter.org.cn/user_guide/libraries/language.html#id10)
* [使用语言行作为表单的标签](http://codeigniter.org.cn/user_guide/libraries/language.html#id11)
* [自动加载语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id12)
* [类参考](http://codeigniter.org.cn/user_guide/libraries/language.html#id13)
## [处理多语言](http://codeigniter.org.cn/user_guide/libraries/language.html#id14)
如果你想让你的应用程序支持多语言,你就需要在 **application/language/** 目录下提供不同语言的文件, 然后在 **application/config/config.php** 配置文件中指定默认语言。
**application/language/english/** 目录可以包含你的应用程序需要的额外语言文件,例如错误消息。
每个语言对应的目录中都应该包含从 翻译仓库 中获取到的核心文件,或者你自己翻译它们,你也可以添加 你的程序需要的其他文件。
你应该将你正在使用的语言保存到一个会话变量中。
### [语言文件的例子](http://codeigniter.org.cn/user_guide/libraries/language.html#id15)
~~~
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
...
~~~
### [切换语言](http://codeigniter.org.cn/user_guide/libraries/language.html#id16)
~~~
$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key');
~~~
## [国际化](http://codeigniter.org.cn/user_guide/libraries/language.html#id17)
CodeIgniter 的语言类给你的应用程序提供了一种简单轻便的方式来实现多语言, 它并不是通常我们所说的 [国际化与本地化](http://en.wikipedia.org/wiki/Internationalization_and_localization) 的完整实现。
我们可以给每一种语言一个别名,一个更通用的名字,而不是使用诸如 "en"、 "en-US"、"en-CA-x-ca" 这种国际标准的缩写名字。
注解
当然,你完全可以在你的程序中使用国际标准的缩写名字。
## [使用语言类](http://codeigniter.org.cn/user_guide/libraries/language.html#id18)
### [创建语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id19)
语言文件的命名必须以 **_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';
~~~
### [加载语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id20)
在使用语言文件之前,你必须先加载它。可以使用下面的代码:
~~~
$this->lang->load('filename', 'language');
~~~
其中 filename 是你要加载的语言文件名(不带扩展名),language 是要加载哪种语言(比如,英语)。 如果没有第二个参数,将会使用**application/config/config.php** 中设置的默认语言。
你也可以通过传一个语言文件的数组给第一个参数来同时加载多个语言文件。
~~~
$this->lang->load(array('filename1', 'filename2'));
~~~
注解
language 参数只能包含字母。
### [读取语言文本](http://codeigniter.org.cn/user_guide/libraries/language.html#id21)
当你的语言文件已经加载,你就可以通过下面的方法来访问任何一行语言文本:
~~~
$this->lang->line('language_key');
~~~
其中,language_key 参数是你想显示的文本行所对应的数组的键名。
万一你不确定你想读取的那行文本是否存在,你还可以将第二个参数设置为 FALSE 禁用错误日志:
~~~
$this->lang->line('misc_key', FALSE);
~~~
注解
该方法只是简单的返回文本行,而不是显示出它。
#### [使用语言行作为表单的标签](http://codeigniter.org.cn/user_guide/libraries/language.html#id22)
这一特性已经从语言类中废弃,并移到了 [语言辅助函数](http://codeigniter.org.cn/user_guide/helpers/language_helper.html) 的 [lang()](http://codeigniter.org.cn/user_guide/helpers/language_helper.html#lang "lang") 函数。
### [自动加载语言文件](http://codeigniter.org.cn/user_guide/libraries/language.html#id23)
如果你发现你需要在整个应用程序中使用某个语言文件,你可以让 CodeIgniter 在系统初始化的时候 [自动加载](http://codeigniter.org.cn/user_guide/general/autoloader.html) 该语言文件。 可以打开**application/config/autoload.php** 文件,把语言放在 autoload 数组中。
## [类参考](http://codeigniter.org.cn/user_guide/libraries/language.html#id24)
classCI_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 URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 辅助函数参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- 语言辅助函数
- Inflector 辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- 向 CodeIgniter 贡献你的力量