# 創建模板&語言包
## 模板命名
模板位于`/Var/Template/`目錄下。
該目錄下,以模板名作為文件夾名稱。
例如模板`default`就應該位于`/Var/Template/default/`目錄下。
在模板目錄下,就是模板了。模板也可以根據分類,存儲在子目錄下。
例如`default`模板下`System`分類的模板就在`/Var/Template/default/System/`下。
而一個模板,存儲在分類目錄下或模板目錄下。那么,它是如何命名的呢?
`[模板名稱].tpl`。例如`Index.tpl`。
再舉兩個例子,假設系統使用的模板名稱叫做`default`:
1. 沒有分類,名稱叫做`Index`的模板,應該是 `/Var/Template/default/Index.tpl` 文件。
2. 分類為`Article`,名稱叫做`Show`的模板,應該是 `/Var/Template/default/Article/Show.tpl` 文件。
## 語言包命名
語言包位于`/Var/Language/` 目錄下。
使用`[語言包名稱].json`命名。例如語言包`zh_cn`就應該是`/Var/Language/zh_cn.json`文件。
## 創建語言包
我們已經給出了`zh_cn.json`和`en_us.json`兩個示例。
現在,我們來創建`jp_jp.json`。
語言包的格式比較隨便,只要是json就行,他會作為一個數組加載到模板的`$L`變量中。
而XPHP系統需要的語言包,位于其中的`System`節點下。
先給出一個`zh_cn.json`的示例。
```json
{
"System" : {
"Error" : "錯誤",
"WeHadRecordThisError" : "我們已經記錄這次錯誤,給您帶來不便,抱歉!",
"jumpNow" : "立即跳轉",
"SecondsAfterAutoJump" : "秒后自動跳轉",
"BackHome" : "返回首頁"
},
"Index" : {
"WelcomeTo" : "歡迎來到"
}
}
```
而有了一個語言包,轉換成其他語言就非常方便。例如`jp_jp.json`:
```json
{
"System" : {
"Error" : "エラー",
"WeHadRecordThisError" : "ご不便を、このエラーを記録してきた、申し訳ありません!",
"jumpNow" : "すぐにジャンプ",
"SecondsAfterAutoJump" : "秒は自動的にジャンプした後、",
"BackHome" : "リターン家"
},
"Index" : {
"WelcomeTo" : "歓迎來ます"
}
}
```
## 創建模板
模板的語法很簡單,他其實就是一個有兩個特殊語法的html文件。
在模板中,`{{ $var }}`和`{{# echo $var; }}`和`<?=$var?>`和`<?php echo $var; ?>`的結果是等效的。
`{{# //some code }}`和`<?php //some code ?>`是等效的。
所有在控制器中的`$this->Data`變量中的內容,都會被加載到全局變量中。
例如`$this->Data['fool']` 在模板中可以通過 `$fool` 或者 `$this->vars['fool']`訪問。
在模板中,如果需要引用另一個模板,可以通過 `{{# $this->need("模板名"); }}` 實現。
在模板中,語言包內容已經被加載到`$L`中,通過`$L`變量訪問。
在模板中,本模板所在目錄已經被加載到變量`$TplDir`中,如果需要訪問模板目錄下的靜態資源,例如模板目錄下的`jquery.min.js`,您可以這么寫:
```handlebars
<script src="{{ $TplDir }}jquery.min.js" type="text/javascript"></script>
```
最后,附上一個樣例模板:
```handlebars
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>{{ $L['Index']['WelcomeTo'] }} XPHP!</title>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
</head>
<body>
<style>
body{
margin:0;
padding:30px;
font:12px/1.5 "Microsoft Yahei UI",Helvetica,Arial,Verdana,sans-serif;
}
h1{
margin:0;
font-size:48px;
font-weight:normal;
line-height:48px;
}
h1{
margin:0;
font-size:38px;
font-weight:normal;
line-height:48px;
}
strong{
display:inline-block;
width:65px;
}
</style>
<table border="0" width="100%" height="100%">
<tr valign="middle" align="center">
<td><h1>XPHP</h1></td>
</tr>
<tr valign="middle" align="center">
<td><h3>Version {{ $Version }}</h3></td>
</tr>
</table>
</body>
</html>
```
## 在控制器中引用模板
只需要:
```php
return $this->View("[模板名稱]");
```
例如:
```php
return $this->View("Index");
```
```php
return $this->View("Article/Show");
```