8

私は Xcode 4 を使用して独自のフレームワークを開発しており、それを 2 つのサンプル アプリ (コンソール アプリと Mac OS X Cocoa アプリケーション) で使用しています。

フレームワークにローカライズを追加しようとしているので、Localizable.stringsファイルの 2 つのバージョン (en および fr バージョン) を作成しましたが、サンプル アプリからローカライズされた文字列を印刷しようとするたびに、その技術的な情報しか得られません。名前。たとえば、フレームワークのコード内に次の行があります。

NSLog(NSLocalizedString(@"LOC_TEST", nil));

出力にのみ"LOC_TEST"表示されます...

ただし、ローカライズは Cocoa アプリ自体では問題なく機能します (つまり、Cocoa アプリのローカライズされた文字列は適切に表示されます)。

この記事に従って、フレームワークの plist ファイルにローカライズを追加しようとしました。

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>fr</string>
</array>

でも何も変わらなかった…

私は何が欠けていますか?

4

4 に答える 4

12

フレームワークによって正しい.stringsファイルが選択されない原因は、NSLocalizedStringマクロにあります。

#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

フレームワークの.stringsファイルの場所が[NSBundle mainBundle]、マクロで指定されたとおりではありません。

私が見たところ、NSLocalizedStringFromTableInBundle代わりにフレームワークのバンドルの場所を使用して指定する必要があります。

于 2012-10-31T09:51:34.777 に答える
1

あなたが呼ぶ「技術名」は、実際にはキーです。.strings ファイルは次のようになります。

/* ノーコメント */ "LOC_TEST" = "LOC_TEST";

en.lproj /Localizable.strings で、2 番目のLOC_TEST (= の後のもの) を英語の文字列に置き換えます。フランス語のテキストを使用して、fr.lproj で同じことを行います。

于 2012-05-17T11:05:33.563 に答える