📚
Go製REST APIの自前i18n対応
コード全体
コードはこちら
大まかな流れ
- HTTPヘッダーのAccept-Languageをパースする
- 言語情報をcontext.Contextに格納する
- 言語情報によりメッセージを切り替える
- 呼び出す
LCID
今回は言語と地域のペアをLCIDという構造体で定義しています
LCIDの厳密な定義はわからないです
HTTPヘッダーのAccept-Languageをパースする
MDNでどんな値がAccept-Languageとしてくるか確認しパースします
言語情報をcontext.Contextに格納する
特に説明不要かと
言語情報によりメッセージを切り替える
Translatefという関数が言語に対応したメッセージを返す関数です
呼び出し
curl localhost:8080/greet/nishi // => Hello, nishi!
curl localhost:8080/greet/nishi -H "Accept-Language: ja" // => こんにちは、nishi!
Discussion
AcceptLangageヘッダーのパース関数が準標準に存在した、圧倒的敗北