diff --git a/ja/ebook/07.4.md b/ja/ebook/07.4.md index 8d4fd785..88d1e5aa 100644 --- a/ja/ebook/07.4.md +++ b/ja/ebook/07.4.md @@ -157,22 +157,21 @@ emailが出力される場所では上のような方法で出力をすべてhtm {{with $x := "output"}}{{printf "%q" $x}}{{end}} {{with $x := "output"}}{{$x | printf "%q"}}{{end}} ### テンプレート関数 -模板在输出对象的字段值时,采用了`fmt`包把对象转化成了字符串。但是有时候我们的需求可能不是这样的,例如有时候我们为了防止垃圾邮件发送者通过采集网页的方式来发送给我们的邮箱信息,我们希望把`@`替换成`at`例如:`astaxie at beego.me`,如果要实现这样的功能,我们就需要自定义函数来做这个功能。 -テンプレートがオブジェクトのフィールドの値を出力する際、`fmt`パッケージを採用してオブジェクトを文字列に変換します。しかしときどき我々はこうしたくはないときもあります。 +テンプレートがオブジェクトのフィールドの値を出力する際、`fmt`パッケージを採用してオブジェクトを文字列に変換します。しかしときどき我々はこうしたくはないときもあります。例えばスパムメールの送信者がウェブページから拾い集めてくる方法で我々のメールボックスへ情報を送信することを防止したいときがあります。`@`をatに変換したいわけです。たとえば:`astaxie at beego.me`のように。このような機能を実装したい場合は、自分で定義した関数でこの機能を作成する必要があります。 -每一个模板函数都有一个唯一值的名字,然后与一个Go函数关联,通过如下的方式来关联 +各テンプレート関数はいずれも単一の名前をもっていて、一つのGo関数と関係しています。以下の方法によって関係をもたせます。 type FuncMap map[string]interface{} -例如,如果我们想要的email函数的模板函数名是`emailDeal`,它关联的Go函数名称是`EmailDealWith`,n那么我们可以通过下面的方式来注册这个函数 +例えば、もしemail関数のテンプレート関数の名前を`emailDeal`としたい場合は、これが関係するGo関数の名前は`EmailDealWith`となります。下の方法でこの関数を登録することができます。 t = t.Funcs(template.FuncMap{"emailDeal": EmailDealWith}) -`EmailDealWith`这个函数的参数和返回值定义如下: +`EmailDealWith`という関数の引数と戻り値は以下のように定義します: func EmailDealWith(args ...interface{}) string -我们来看下面的实现例子: +以下の実装例を見てみましょう: package main @@ -233,7 +232,7 @@ emailが出力される場所では上のような方法で出力をすべてhtm } -上面演示了如何自定义函数,其实,在模板包内部已经有内置的实现函数,下面代码截取自模板包里面 +上ではどのように自分で関数を定義するかお見せしました。実は、テンプレートパッケージの内部ではすでにビルトインの関数が実装されています。下のコードを切り取って自分のテンプレートパッケージの中にはりつけてください。 var builtins = FuncMap{ "and": and, @@ -252,7 +251,7 @@ emailが出力される場所では上のような方法で出力をすべてhtm ## Must操作 -模板包里面有一个函数`Must`,它的作用是检测模板是否正确,例如大括号是否匹配,注释是否正确的关闭,变量是否正确的书写。接下来我们演示一个例子,用Must来判断模板是否正确: +テンプレートパッケージには`Must`という関数があります。この作用はテンプレートが正しいか検査することです。例えば大括弧が揃っているか、コメントは正しく閉じられているか、変数は正しく書かれているかといったことです。ここでは例を一つお見せします。Mustを使ってテンプレートが正しいか判断します: package main @@ -281,22 +280,22 @@ emailが出力される場所では上のような方法で出力をすべてhtm The next one ought to fail. panic: template: check parse error with Must:1: unexpected "}" in command -## 嵌套模板 -我们平常开发Web应用的时候,经常会遇到一些模板有些部分是固定不变的,然后可以抽取出来作为一个独立的部分,例如一个博客的头部和尾部是不变的,而唯一改变的是中间的内容部分。所以我们可以定义成`header`、`content`、`footer`三个部分。Go语言中通过如下的语法来申明 +## ネストしたテンプレート +Webアプリケーションを作る時はテンプレートの一部が固定され不変である場合がよくあり、抜き出して独立した部分とすることができます。例えばブログのヘッダと降ったが固定で、変更があるのは真ん中のコンテンツの部分だけだとします。そのため`header`、`content`、`footer`の3つの部分として定義することができます。Go言語では以下のような文法によってこれを宣言します - {{define "子模板名称"}}内容{{end}} + {{define "サブテンプレートの名前"}}コンテンツ{{end}} -通过如下方式来调用: +以下の方法によってコールします: - {{template "子模板名称"}} + {{template "サブテンプレートの名前"}} -接下来我们演示如何使用嵌套模板,我们定义三个文件,`header.tmpl`、`content.tmpl`、`footer.tmpl`文件,里面的内容如下 +ここではどのようにしてネストしたテンプレートを使うかお見せします。3つのファイルを定義します。`header.tmpl`、`content.tmpl`、`footer.tmpl`ファイルです。内容は以下のとおり //header.tmpl {{define "header"}}
-