2012-02-01 9 views
2

私は今、自分のアプリケーションのローカライズを開始しました。今私が欲しいのは、すべてのロケールで異なるメソッドです。私はこれを行ういくつかの方法を考えています:このメソッドは現在、実装のための唯一のメソッドなので、私は.m全体をローカライズすることができます。これが可能であれば、メソッドが1つしかない場合でも動作する可能性がありますが、新しいメソッドが追加されると問題が発生する可能性があります。 2番目の選択肢は、メソッド内での単純な意思決定です(ロケールがXに等しい場合はこれを実行し、そうでない場合はYを実行します)が、非常に長いメソッドを作成するローカリゼーションが10個ある場合。Objective Cで実装ファイルをローカライズ

これを行うにはどうすればよいでしょうか?ちょうど明確にする:私は、ロケールに依存するいくつかの異なる文字列について話しているわけではなく、コード全体が各ロケールごとに異なります。

+0

それぞれ局在化は異なるクラスを持つし、その後、実行時に動的に右のクラスのロード? – JoePasq

+0

もっと多くのメソッドを追加すると、バットの痛みになります... –

+0

(私はそれぞれが非常に具体的であると仮定しています) – JoePasq

答えて

3

.mを "ローカライズ"することはできません。これはコードにコンパイルされるためです。私はあなたのオプション2を調べなければならないと思う。それを実装する潜在的によりエレガントな方法は、関数へのポインタの配列を使用し、あなたのロケールに基づいて配列から選択することです。

これは助けることができる:

どう

Objective-c function pointer

+0

ああ、私はそれがどのように動作するかを見ています。 if/else文を一括して扱う代わりに、ロケールごとに関数/メソッドを用意していますか?それは私の最高の賭けのように見えます。 –

+0

うん、そうだろう。助けてくれることを願っています! – Almo

+1

確かに、助けてくれてありがとう! –

関連する問題