review 第十章内容
This commit is contained in:
11
10.3.md
11
10.3.md
@@ -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. 文本信息
|
||||
|
||||
|
||||
Reference in New Issue
Block a user