iOS xibを分けない国際化

xibファイルのLocalize

xibファイルに指定したUILabelやUIButtonなどのタイトルの文字を日本語/英語表示したい場合、 xibファイル自体を分けるやり方もあるが、レイアウト等全く同じなのに文言のためだけに2ファイル作らないといけない。

プログラムで指定

またUILabelやUIButtonをコードと紐付けてプログラムで指定方法もあるがそれだけのためにヘッダーファイルやviewDidLoadに追記するのもめんどくさい

「User Defined Runtime Attributes」+ Category

xibエディター上では指定できないパラメータ等をキー値コーディングにて設定できる。
その指定したパラメータを基にCategoryで拡張したメソッドにてNSLocalizeStringを行う。
#import "UILabel+Localize.h"

@implementation UILabel (Localize)

- (void)setLocalizeKey:(NSString*)key
{
    self.text = NSLocalizedString(key, key);
}

@end

xibエディター


あとはLocalizable.stringsを準備すればOK

0 件のコメント:

コメントを投稿

ReactNativeでAndroid対応する話

前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...