# 本土化
本地化意味著適應不同語言的軟件,區域差異和目標市場的技術要求。
在創建多語言應用程序時,您可能需要使用各種語言呈現相同的頁面或表單。 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
- 原子操作