LoginSignup
2
1

More than 5 years have passed since last update.

インドネシア語対応してたらgolintとgo-i18nに怒られた。

Last updated at Posted at 2018-03-30

TL;DR

インドネシア語はISO639言語コードで表すと"id"だが、go-i18nでは"in"で代用可能

golintに怒られた。

インドネシア語のリソースを追加するため言語コードを調べたらまさかの"id"
とりあえずやるだけやってみようと思いリソース追加の対応を開始。

カラムの命名がよくないと言ってしまえばそれまでだが、

HOGE_TITLE
HOGE_TITLE_EN

このようにカラムを作っているため、Entity等は

hogeTitle
hogeTitleEn

のようにしていた。
そのためインドネシアの"id"を付与したカラムを追加すると以下のようになった。

hogeTitleId

lintでチェックしてみたら当然

struct field hogeTitleId should be hogeTitleID [go/golint]

知ってた。

go-i18nに怒られた。

"id"がだめなら仕方ない統一感はなくなるが3文字で"ind"にしてみよう。

hogeTitleInd

lintチェック問題なし。よしよし。
問題なさそうだしリソースファイル追加しよう。

ind.all.json を追加してビルド!

panic: no language found in "ind.all.json"

なん・・・だと・・・

どうやらgo-i18nではもともと決められた言語コードしか対応していないようだった。適当に作ってもだめなんですね。そりゃそうか。

回避策

ドキュメントを読み進めているとgo-i18nのREADMEに

Supports pluralized strings for all 200+ languages 
in the Unicode Common Locale Data Repository (CLDR).

こんな記述がだいぶ上のほうにあった。先にREADME見ましょうってことですよね。
Unicode Common Locale Data Repositoryのリンク先ページを確認すると
Indonesianの所にこんなことが書いてあることを発見。

Code Type
in =id

inで定義すればidと同義として受け取ってくれるということだと思い、ためしてみます。

in.all.json のリソースファイルを追加してビルド
今回はビルド成功しました!
リソースファイルの方が問題なかったのでEntity等も

hogeTitleIn

として追加していきます。
こちらのlintチェックも問題ないことを確認して無事解決。

教訓

ドキュメントはちゃんと読みましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1