# 本土化
本地化意味着适应不同语言的软件,区域差异和目标市场的技术要求。
在创建多语言应用程序时,您可能需要使用各种语言呈现相同的页面或表单。 Nette Framework提供了一个翻译界面。 只需创建所谓的翻译器,它是一个实现Nette \ Localization \ ITranslator接口的对象。 接口只有一个方法 - translate()。
~~~
class MyTranslator implements Nette\Localization\ITranslator
{
/**
* Translates the given string.
* @param string message
* @param int plural count
* @return string
*/
public function translate($message, $count = NULL)
{
return ...;
}
}
~~~
Nette不提供ITranslator的默认实现。 但是,我们可以从各种解决方案中选择,例如Kdyby Translation
## 表单翻译
表单和个别表单控件都有一个setTranslator()方法,可以用来为他们设置翻译器。
~~~
$translator = new MyTranslator;
$form->setTranslator($translator); // set the translator for the form
~~~
从这一点开始,所有标签,还有所有错误消息或选择框项目被翻译成另一种语言。
对于单个表单控件,仍然可以设置另一个翻译器或使用NULL值完全关闭翻译:
~~~
$form->addSelect('carModel', 'Model:', $cars)
->setTranslator(NULL);
~~~
## 模板翻译
也可以为模板设置转换器。 同样,通过使用setTranslator()方法,例如在presenter中:
~~~
function beforeRender()
{
...
$this->template->setTranslator($translator);
}
~~~
之后,本地化宏中的所有表达式将被翻译:
~~~
<li><a href="basket">{_'Basket'}</a> {_$item}
~~~
您可以使用备用对符号:
~~~
<li><a href="order">{_}Order{/_}</a>
~~~
- Nette简介
- 快速开始
- 入门
- 主页
- 显示文章详细页
- 文章评论
- 创建和编辑帖子
- 权限验证
- 程序员指南
- MVC应用程序和控制器
- URL路由
- Tracy - PHP调试器
- 调试器扩展
- 增强PHP语言
- HTTP请求和响应
- 数据库
- 数据库:ActiveRow
- 数据库和表
- Sessions
- 用户授权和权限
- 配置
- 依赖注入
- 获取依赖关系
- DI容器扩展
- 组件
- 字符串处理
- 数组处理
- HTML元素
- 使用URL
- 表单
- 验证器
- 模板
- AJAX & Snippets
- 发送电子邮件
- 图像操作
- 缓存
- 本土化
- Nette Tester - 单元测试
- 与Travis CI的持续集成
- 分页
- 自动加载
- 文件搜索:Finder
- 原子操作