質問: お世話になります。 今回端末の言語設定ではなく、アプリ内部に言語の設定を持たせ 言語の切り替えを行いたいという要望があり、その対応のためアプリ内部の メッセージをまとめたヘッダファイルを言語別に作成し、切り替えを行いたいと考えています。 ヘッダをインポートする際にフラグによってインポートファイルを切り替えることは可能でしょうか? (フラグはユーザデフォルトに保存しようと考えています。) 例 message_ja.h (日本語定義ファイル) ``` #define MES1 @"メッセージ1" #define MES2 @"メッセージ2" #define MES3 @"メッセージ3" ``` message_en.h (英語定義ファイル) ``` #define MES1 @"message1" #define MES2 @"message2" #define MES3 @"message3" ``` main.m (定数使用クラス) 下記xxxxxxの箇所にユーザデフォルトのフラグで分岐するような処理を記述したい。 ``` xxxxxx #import "message_ja.h" xxxxxx #import "message_en.h" NSLog(@"%@",MES1); NSLog(@"%@",MES2); NSLog(@"%@",MES3); ```
回答: #importは、コンパイルの時点で処理を行います。そのため、一度コンパイルしたら、その後に変更することはできません。 ユーザーデフォルトで変更したいのであれば、メッセージを配列等に保存(mes[0]="hello", mes[1]="こんにちは"のように)し、フラグに応じて配列等から読み込むようにしたほうが良いと思います。