From 1089152d60d752985b0581ec1e636cde5b81501d Mon Sep 17 00:00:00 2001 From: astaxie Date: Mon, 22 Oct 2012 14:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=92=8C=E5=AE=8C=E6=88=90=E7=AC=AC=E5=8D=81=E7=AB=A0?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10.1.md | 16 ++++++++++++++++ 10.md | 12 +++++++++++- 8.3.md | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/10.1.md b/10.1.md index 6e469fa1..0969f306 100644 --- a/10.1.md +++ b/10.1.md @@ -1,4 +1,20 @@ ##10.1 设置默认地区 +##什么是地区 +地区是一组描述世界上某一特定区域文本格式和语言习惯的设置集合。地区名通常由三个部分组成:第一部分,是一个强制性的,表示语言的缩写,例如"en"表示英文或"zh"表示中文。第二部分,跟在一个下划线之后,是一个可选的国家说明符,用于区分将同一种语言的不同国家,例如"en_US"表示美国英语,而"en_UK"表示英国英语。最后一部分,跟在一个句点之后,是一个可选的字符集说明符,例如"zh_CN.gb2312"表示中国实用gb2312字符集。 + +GO语言默认是"UTF-8"字符集,所以我们这一章实现的i18n不考虑地区的第三部分,接下来我们都采用地区描述的前面两部分来作为i18n标准的地区名。 + +>在Linux和Solaris系统中可以通过`locale -a`命令列举所有支持的地区名,读者可以看到这些地区名的命名规范。对于BSD等系统,没有locale命令,但是地区信息存储在/usr/share/locale中。 + +##设置地区 + +###通过域名设置地区 +###从域名参数设置地区 +###从客户端设置地区 +- Accept-Language +- IP地址 +- 用户profile + ## links * [目录]() * 上一节: [国际化和本地化](<10.md>) diff --git a/10.md b/10.md index 536a7743..f2b9a0b7 100644 --- a/10.md +++ b/10.md @@ -3,7 +3,17 @@ 国际化与本地化(Internationalization and localization,通常用i18n和L10N表示),国际化是指针对一个为某一个地区设计的程序进行重构,使得它能够在更多地区使用,本地化是指在一个面向国际化的程序中增加一个新地区的支持。 -Go语言目前标准包里面没有i18n的支持,但是有第三方应用支持,我们将在第一小节里面介绍如何设置正确的地区以便让访问你的站点的用户能够得到相应的正确的语言。第二小节里面介绍本地化如何处理,第三小节将介绍如何实现国际化站点,我们将会给出一些i18n的设计理念,顺便实现一个i18n的包。 +Go语言目前标准包里面没有i18n的支持,但有一些第三方库支持,但是都是比较简单的实现,我们通过这一章的介绍将实现一个go-i18n库,用来支持Go语言的i18n。 + +所谓的国际化:就是根据特定的locale信息,提取相应的字符串和其它一些东西(比如时间和货币的格式)等等。那么这个里面需要解决三个问题: + +1、如何确定locale。 + +2、如何保存这些locale相关的字符串和其它信息。 + +3、如何根据locale提取字符串和其它相应的信息。 + +我们将在第一小节里面介绍如何设置正确的locale以便让访问你的站点的用户能够得到相应的正确的语言。第二小节里面介绍本地化如何处理字符串、货币、时间日期等信息,如何存储locale对应的信息,第三小节将介绍如何实现国际化站点,如何根据不同locale返回不同的字符串。通过这三个小节的介绍,将实现一个完整的i18n方案。 ## 目录 * 1 [设置默认地区](10.1.md) diff --git a/8.3.md b/8.3.md index b3f6b86c..00cc30e6 100644 --- a/8.3.md +++ b/8.3.md @@ -83,6 +83,8 @@ Go没有为REST提供直接支持,但是因为RESTful是基于HTTP协议实现 } func adduser(w http.ResponseWriter, r *http.Request) { + params := r.URL.Query() + uid := params.Get(":uid") fmt.Fprint(w, "you are add user %s", uid) }