review 第十章内容

This commit is contained in:
xiemengjun
2012-10-30 21:36:46 +08:00
parent 64d34185fa
commit f6b42217c9
2 changed files with 18 additions and 17 deletions

11
10.3.md
View File

@@ -1,7 +1,7 @@
# 10.3 国际化站点
前面小节介绍了如何处理本地化资源即Locale一个相应的配置文件那么如果处理多个的本地化资源呢而对于一些我们经常用到的例如简单的文本翻译、时间日期、数字等如果处理呢本小节将一一解决这些问题。
## 管理多个本地包
我们开发一个应用的时候,首先我们应该知道这个Web应用要支持多少个语言例如首先这个Web应用需要支持中文和英文也许以后会支持其他语言但是结构已经有了所以扩展非常容易。那么我们设计如下Locale文件夹在config/locales下假设你要支持中文和英那么你需要在这个文件夹下放置en.json和zh.json。大概的内容如下所示
在开发一个应用的时候,首先我们要决定是只支持一种语言,还是多种语言,如果要支持多种语言,我们则需要制定一个组织结构,以方便将来更多语言的添加。在此我们设计如下Locale有关的文件放置在config/locales下假设你要支持中文和英那么你需要在这个文件夹下放置en.json和zh.json。大概的内容如下所示
# zh.json
@@ -21,12 +21,12 @@
}
}
然后调用go-i18n包里面注册一下这个目录这样Go会加载config/locales目录下的locale文件
为了支持国际化在此我们使用了一个国际化相关的包——go-i18n(https://github.com/astaxie/go-i18n)首先我们向go-i18n包注册config/locales这个目录,以加载所有的locale文件
Tr:=i18n.NewLocale()
Tr.LoadPath("config/locales")
使用很简单,你可以通过下面的方式进行测试:
这个包使用起来很简单,你可以通过下面的方式进行测试:
fmt.Println(Tr.Translate("submit"))
//输出Submit
@@ -35,7 +35,8 @@
//输出“递交”
## 自动加载本地包
上面我们介绍了多个自定义语言包的自动加载那么在我们加载的同时其实go-i18n库会自动帮你加载一些定义的格式信息例如时间格式、货币格式。所以在go-i18n包里面已经有了很多语言的时间格式、货币格式等定义其实在调用NewLocale的时候这些默认的配置已经加载好了用户可以继续在自己的定义配置中复写这些配置,请看下面的处理过程:
上面我们介绍了如何自动加载自定义语言包其实go-i18n库已经预加载了很多默认的格式信息例如时间格式、货币格式用户可以在自定义配置时改写这些默认配置,请看下面的处理过程:
//加载默认配置文件这些文件都放在go-i18n/locales下面
@@ -95,7 +96,7 @@
//输出:¥11.11
## template mapfunc
上面我们实现了多个语言包的管理和加载,而一些函数的实现是基于逻辑层的,例如:"Tr.Translate"、"Tr.Time"、"Tr.Money"等函数,虽然利用这些函数我们逻辑层可以把需要的参数进行转换后在模板层渲染的时候直接输出,但是如果我们想在模版层直接使用这些函数该怎么实现呢?我们前面介绍模板这小节的时候介绍过,Go语言的模板支持自定义模板函数下面是我们实现的方便操作的mapfunc
上面我们实现了多个语言包的管理和加载,而一些函数的实现是基于逻辑层的,例如:"Tr.Translate"、"Tr.Time"、"Tr.Money"等,虽然我们逻辑层可以利用这些函数把需要的参数进行转换后在模板层渲染的时候直接输出,但是如果我们想在模版层直接使用这些函数该怎么实现呢?不知你是否还记得,在前面介绍模板的时候说过:Go语言的模板支持自定义模板函数下面是我们实现的方便操作的mapfunc
1. 文本信息