Format and remove 10.1.md spaces
This commit is contained in:
48
zh/10.1.md
48
zh/10.1.md
@@ -21,26 +21,26 @@ GO语言默认采用"UTF-8"编码集,所以我们实现i18n时不考虑第三
|
||||
我们可以通过下面的代码来实现域名的对应locale:
|
||||
```Go
|
||||
|
||||
if r.Host == "www.asta.com" {
|
||||
i18n.SetLocale("en")
|
||||
} else if r.Host == "www.asta.cn" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if r.Host == "www.asta.tw" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
if r.Host == "www.asta.com" {
|
||||
i18n.SetLocale("en")
|
||||
} else if r.Host == "www.asta.cn" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if r.Host == "www.asta.tw" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
```
|
||||
当然除了整域名设置地区之外,我们还可以通过子域名来设置地区,例如"en.asta.com"表示英文站点,"cn.asta.com"表示中文站点。实现代码如下所示:
|
||||
```Go
|
||||
|
||||
prefix := strings.Split(r.Host,".")
|
||||
prefix := strings.Split(r.Host,".")
|
||||
|
||||
if prefix[0] == "en" {
|
||||
i18n.SetLocale("en")
|
||||
} else if prefix[0] == "cn" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if prefix[0] == "tw" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
if prefix[0] == "en" {
|
||||
i18n.SetLocale("en")
|
||||
} else if prefix[0] == "cn" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if prefix[0] == "tw" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
```
|
||||
通过域名设置Locale有如上所示的优点,但是我们一般开发Web应用的时候不会采用这种方式,因为首先域名成本比较高,开发一个Locale就需要一个域名,而且往往统一名称的域名不一定能申请的到,其次我们不愿意为每个站点去本地化一个配置,而更多的是采用url后面带参数的方式,请看下面的介绍。
|
||||
|
||||
@@ -52,7 +52,7 @@ GO语言默认采用"UTF-8"编码集,所以我们实现i18n时不考虑第三
|
||||
也许我们希望URL地址看上去更加的RESTful一点,例如:www.asta.com/en/books(英文站点)和www.asta.com/zh/books(中文站点),这种方式的URL更加有利于SEO,而且对于用户也比较友好,能够通过URL直观的知道访问的站点。那么这样的URL地址可以通过router来获取locale(参考REST小节里面介绍的router插件实现):
|
||||
```Go
|
||||
|
||||
mux.Get("/:locale/books", listbook)
|
||||
mux.Get("/:locale/books", listbook)
|
||||
```
|
||||
### 从客户端设置地区
|
||||
在一些特殊的情况下,我们需要根据客户端的信息而不是通过URL来设置Locale,这些信息可能来自于客户端设置的喜好语言(浏览器中设置),用户的IP地址,用户在注册的时候填写的所在地信息等。这种方式比较适合Web为基础的应用。
|
||||
@@ -62,14 +62,14 @@ GO语言默认采用"UTF-8"编码集,所以我们实现i18n时不考虑第三
|
||||
客户端请求的时候在HTTP头信息里面有`Accept-Language`,一般的客户端都会设置该信息,下面是Go语言实现的一个简单的根据`Accept-Language`实现设置地区的代码:
|
||||
```Go
|
||||
|
||||
AL := r.Header.Get("Accept-Language")
|
||||
if AL == "en" {
|
||||
i18n.SetLocale("en")
|
||||
} else if AL == "zh-CN" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if AL == "zh-TW" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
AL := r.Header.Get("Accept-Language")
|
||||
if AL == "en" {
|
||||
i18n.SetLocale("en")
|
||||
} else if AL == "zh-CN" {
|
||||
i18n.SetLocale("zh-CN")
|
||||
} else if AL == "zh-TW" {
|
||||
i18n.SetLocale("zh-TW")
|
||||
}
|
||||
```
|
||||
当然在实际应用中,可能需要更加严格的判断来进行设置地区
|
||||
- IP地址
|
||||
|
||||
Reference in New Issue
Block a user