This commit is contained in:
mitakeck
2017-03-01 22:24:50 +09:00
parent 0e2322ff91
commit 91d8976ff1
5 changed files with 11 additions and 11 deletions

View File

@@ -5,13 +5,13 @@ Localeとは世界中のある特定の地域を表現したテキスト形式
GO言語はデフォルトで"UTF-8"符号化方式を採用しています。ですので、i18nを実装する際つ目の部分は考慮しません。以降ではlocaleが表現する前のつの部分でもってi18n標準のlocale名とします。
>LinuxとSolarisシステムでは`locale -a`コマンドを使ってサポートされるすべての地域名をリストアップすることができます。読者はこれらの地域名の命名規則を見ることができます。BSDといったシステムではlocaleコマンドはありません。しかし地域情報は/usr/share/localeに保存されています。
>LinuxとSolarisシステムでは`locale -a`コマンドを使ってサポートされるすべての地域名をリストアップすることができます。読者はこれらの地域名の命名規則を見ることができます。BSDといったシステムではlocaleコマンドはありません。しかし地域情報は`/usr/share/locale`に保存されています。
## Localeを設定
上のlocaleに対する定義で、ユーザの情報(アクセス情報、個人情報、アクセスしたドメイン名等)に従ってこれに対応するlocaleを設定する必要があります。以下のいくつかの方法を使ってユーザのlocaleを設定することができます。
### ドメイン名によってLocaleを設定
Localeの設定にはアプリケーションが実行される際のドメインによって区別する方法があります。例えば、www.asta.comを我々の英語のサイト(デフォルトサイト)として、www.asta.cnというドメイン名を中国語のサイトとしたとします。この場合アプリケーションではドメイン名と対応するlocaleの対応関係を設定することで地域を設定るうことができます。このような処理にはいくつかのメリットがあります
Localeの設定にはアプリケーションが実行される際のドメインによって区別する方法があります。例えば、`www.asta.com`を我々の英語のサイト(デフォルトサイト)として、`www.asta.cn`というドメイン名を中国語のサイトとしたとします。この場合アプリケーションではドメイン名と対応するlocaleの対応関係を設定することで地域を設定るうことができます。このような処理にはいくつかのメリットがあります
- URLを見るだけで簡単に識別できる
- ユーザはドメイン名を通して直感的にどの言語のサイトに訪問するか知ることができる。
@@ -43,11 +43,11 @@ Localeの設定にはアプリケーションが実行される際のドメイ
ドメイン名によるLocaleの設定は上で示したようなメリットがあります。しかし一般的にWebアプリケーションを開発する場合このような方法は採用されません。なぜならまずドメインはコストが比較的高く、Localeを一つ開発するのに一つドメイン名を必要とするからです。また、往々にして統一されたドメイン名を申請できるかどうか分かりません。次に各サイトに対してローカライズというひとつの設定を行いたくなく、urlの後にパラメータを追加する方法が採用されがちです。下のご紹介をご覧ください。
### ドメインのパラメータからLocaleを設定
現在最もよく使われるLocaleの設定方法はURLにパラメータを追加することです。例えばwww.asta.com/hello?locale=zhまたはwww.asta.com/zh/helloといった具合に。このようにすることで地域を設定することができます`i18n.SetLocale(params["locale"])`
現在最もよく使われるLocaleの設定方法はURLにパラメータを追加することです。例えば`www.asta.com/hello?locale=zh`または`www.asta.com/zh/hello`といった具合に。このようにすることで地域を設定することができます:`i18n.SetLocale(params["locale"])`
このような設定方法は前に述べたドメインによるLocaleの設定のすべてのメリットをほとんど持ちあわせています。これはRESTfulな方法を採用しており、余計な方法を追加することで処理する必要がありません。しかしこのような方法では各linkにおいて対応するパラメータlocaleを追加する必要があり、すこし複雑でかなりめんどくさい場合もあります。しかし共通の関数urlを書くことですべてのlinkアドレスをこの関数を通して生成することができます。この関数では`locale=params["locale"]`パラメータを追加することでめんどくささを和らげます。
URLアドレスをもっとRESTfulな見た目にしたいと思うかもしれません。例えばwww.asta.com/en/books(英語のサイト)とwww.asta.com/zh/books(中国語のサイト)。このような方法のURLはさらにSEOに効果的です。またユーザビリティもよく、URLから直感的にアクセスしているサイトを知ることができます。このようなURLアドレスはrouterを使ってlocaleを取得します(RESTの節でご紹介したrouterプラグインの実装をご参考ください)
URLアドレスをもっとRESTfulな見た目にしたいと思うかもしれません。例えば`www.asta.com/en/books`(英語のサイト)と`www.asta.com/zh/books`(中国語のサイト)。このような方法のURLはさらにSEOに効果的です。またユーザビリティもよく、URLから直感的にアクセスしているサイトを知ることができます。このようなURLアドレスはrouterを使ってlocaleを取得します(RESTの節でご紹介したrouterプラグインの実装をご参考ください)
mux.Get("/:locale/books", listbook)