2014年12月6日土曜日

[iOS][Objective-C]エラー内容のローカライズ表示(NSError)


どうも。

frameworkなどを使って機能を実装する際、
結果をデリゲートによる通知で受けることが多々あります。
成功したら成功した旨のデリゲート、
失敗したら失敗した旨のデリゲート、
といった具合に。

例えば、
失敗したときにエラーのAlertViewを表示してユーザに通知するとする。
他言語対応のアプリだと、Localizable.stringsに項目を増やさなければなりません。
何カ国語も対応している場合には大変です...。

実例として、
日・英・韓・中(繁体字/簡体字)
と対応しているアプリを開発しています。
文言が新たに追加されると、
その分依頼を出さないとどうにもならない状況です。
開発側としても翻訳側としてもその手間をどう省くか?

例えば、失敗のデリゲートでNSErrorが連携される場合、
無条件にエラー内容を出せばよいのなら、
下記の様にすることで、
ローカライズされたエラー内容を取得することが出来る。

NSString *alertMsg = [error localizedDescription];

さらに細かな条件によりメッセージを出し分けたり、
デリゲートで受け取るNSErrorの文言ではフィットしない等あれば、
自力でローカライズするしかないです。

指定5カ国語以外は英語、
みたいな取り決めがある等の場合にも、
自力でローカライズするしかない。

でもこの場合にも、
framework側が出す確認のAlertや部品って、
ユーザ言語に合わせて出てくるから、
frameworkの流れの中では合わせちゃってもいいかな、
と個人的には思います。


それでは。
ちゃお☆


まこぴー。