4

OK、私は公式にびっくりしています。しばらく前に IOS プロジェクトを開始し、最初はローカリゼーションに少し手こずりましたが、それを適切に行う方法がまだわからなかったので、少し混乱しました。

今、私はゼロからローカライズを行うことに決めたので、すべての .strings ファイルを破棄し、適切な多言語構造を作成しました。空の Localizable.strings ファイルから始め、アプリを実行して、すべてが適切にクリーンアップされたかどうかを確認しました。空の Localizable.string ファイルを使用すると、"NSLocalizedString" 呼び出しは単にキーをテキストとして返すと想定しました。彼らはしません。古い .strings ファイルにあった古いテキストがまだ返されます。

念のため、次のように、NSLocalizedString 呼び出しの 1 つの下に NSLog ステートメントを配置しました。

NSString *text = NSLocalizedString( key, nil );
NSLog(@"key=%@ text=%@", key, text);

次に、返されたテキストをハードディスク全体で検索します。私のハードディスクには、NSLocalizedString が返す文字列を含むファイルはありません。また、キーとはまったく異なる文字列であるため、NSLocalizedString でも構築できません。

誰もがこれがどのように起こるか知っていますか? 古い情報は XCode によってどこかにキャッシュされていますか? 新しい Localizable.strings ファイルを使用するようにツールを説得するにはどうすればよいですか? 明らかに、私はすでにプロジェクト全体を「クリーン」にして再構築しました。

4

3 に答える 3

4

電話からアプリを削除してから、プロジェクトをクリーンアップして、アプリを新たにインストールしてみてください。

それでもうまくいかない場合は、ビルド ルールを何らかの形で台無しにしていないことを確認します (Xcode 4 -> ターゲットを選択 -> [ビルド ルール] タブ)。 「CopyStringsFile」を使用していないルール。その場合は、1 つを除いてすべて削除できます。

于 2012-01-24T15:49:35.580 に答える
0

ビルドフォルダーもきれいにしましたか?コマンド + オプション + シフト + k または製品に移動し、オプションを押します。クリーンなビルド フォルダーが作成されます。通常、リソース ファイルはキャッシュされます。リソース ファイルの置換 (ファイル名は同じでオブジェクトが異なるファイル) は、XCode によって検出されない場合があります。

また、アプリの削除/シミュレーターのリセットも役立ちます。削除されたファイルは、再デプロイしても削除されないことがあります。

于 2012-01-24T15:48:27.873 に答える
0

シミュレーターでテストしている場合は、「iOS シミュレーター」アプリケーション メニューの「コンテンツと設定をリセット...」オプションを使用してシミュレーターをリセットしてみてください。

アプリの新しいビルドを再デプロイすると、クリーン ビルドの後でも、以前にビルドされたバージョンのキャッシュされたコンテンツが消去されないことがよくあります。

于 2012-01-24T15:57:42.210 に答える