Rhyztech blog

国際化対応の言語情報の持ち方について

tech

国際化対応(internationalization)や多言語対応での言語情報の持ち方について考察しました。

TLTR

ブラウザのAccept-Languageに従って、jaenの形式を使い、リージョン情報が必要な場合のみzh-TWのように記述する。

ブラウザの場合

ブラウザの国際化対応では多くの場合Accept-Languageの仕様に従ったライブラリが多い。railsやlaravelもこのAccept-Languageの仕様に従っている。 Accept-LanguageはRFC 7231 で定められている通り、言語を表す2~3文字の基本言語タグと、任意で追加のサブタグを’-‘で区切って続ける。 基本的にはjaenの2文字の基本言語タグが使われ、中国語などの地域によって言語が違うもの(簡体字と繁体字)はzh-CHzh-TWと、リージョンの情報が追加される。

iOSの場合

iOSはISO 639に従っているのでlanguageCodeとしてはjaenの2文字を返す。iOSにはpreferredLanguagesというものがあり、これはlanguage - region またはlanguage - script - regionを返すので、en-USzh-Hans-USみたいな値が返ってくる

Androidの場合

Androidの場合はIETF BCP 47(現在は RFC 5646RFC 4647に従っている。 これもブラウザの仕様に近く、基本的にはjaenの2文字の基本言語タグが使われ、中国語などの地域によって言語が違うもの(簡体字と繁体字)はzh-CHzh-TWと、リージョンの情報が追加される。ただし、zh-Hant-USみたいな表現もとりうる。

参考リンク

Copyright 2021, rhyztech. All Rights Reserved.