ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 本土化 本地化意味着适应不同语言的软件,区域差异和目标市场的技术要求。 在创建多语言应用程序时,您可能需要使用各种语言呈现相同的页面或表单。 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> ~~~