24139
お世話になります。

今回端末の言語設定ではなく、アプリ内部に言語の設定を持たせ  
言語の切り替えを行いたいという要望があり、その対応のためアプリ内部の  
メッセージをまとめたヘッダファイルを言語別に作成し、切り替えを行いたいと考えています。  
ヘッダをインポートする際にフラグによってインポートファイルを切り替えることは可能でしょうか？  
（フラグはユーザデフォルトに保存しようと考えています。）

例  
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);
    
```
CC BY-SA 3.0
2016-04-19T02:25:15.067
24135
2016-04-26T22:56:34.027
2016-04-19T02:48:04.160
76
9986
question
ios
フラグによって読み込むヘッダファイルを変更する方法
#importは、コンパイルの時点で処理を行います。そのため、一度コンパイルしたら、その後に変更することはできません。  
ユーザーデフォルトで変更したいのであれば、メッセージを配列等に保存(mes[0]="hello",
mes[1]="こんにちは"のように)し、フラグに応じて配列等から読み込むようにしたほうが良いと思います。
CC BY-SA 3.0
2016-04-19T03:12:46.477
24139
2016-04-19T03:12:46.477
8077
24135
answer
質問の趣旨からやや逸れますが、コードにメッセージを直書きしないで外部ファイルにメッセージを集めて、言語ごとに切り替えればよいと思います。そうすれば読み込みの部分だけ変更すれば各言語に対応できて後々の手間が省けます。また、将来他の言語を追加しても柔軟に対応できます。
CC BY-SA 3.0
2016-04-26T22:56:34.027
24372
2016-04-26T22:56:34.027
14631
24135
answer