中国語のローカライズ表記
iOS の言語設定の言語一覧画面と同じような画面を作ろうと思って実装してみたら中国語の場合に思い通りにいかなかったメモ
iOS の言語設定の言語一覧画面
cell.textLabel.title
には現地語でのローカライズ表記
cell.detailTextLabel.title
にはシステム言語でのローカライズ表記で言語が表示されている。
これらをとりあえず見えてる範囲で同じ表記になるよう実装してみる。
ロケールの identifier は以下のように場合によっては言語コード+国コードの形になっている。
コメント部分に記載した様におおよそ設定画面と同じように表示されている。*1
問題は中国語で、まず日本語表記では「簡体中文」「繁体中文」と表記されて欲しいところが「中文」のみが表示されている。
また現地語表記では「香港」が「中華人民共和国香港特別行政区」と表示されている。
試しにコードから取得できる中国語の全リストを洗ってみる。
香港とマカオは 中華人民共和国XXX特別行政区
と付与されるらしい。
これをシステム設定の表記に合わせるには、直接 displayNameForKey:
メソッドを呼ばずに1つクッションをかまして特定の NSLocaleIdentifier
の時には自前で用意したローカライズ文字列を返す様にしてやる事で対応できる。
また「中文」の表記の部分についても同様に、システム設定の表記に合わせるには特定の NSLocaleLanguageCode
の時には自前のローカライズ文字列を返す様にする事で対応できる。
*2