2017-11-05 3 views
0

クロスプラットフォーム(iOS、watchOSおよびmacOS)アプリケーションがあります。そこで、私はXcodeでフレームワークを作成し、すべてのプラットフォームで動作するソースコードである共有ファイルをフレームワークに入れました。フレームワーク内の翻訳された文字列リソースは、Xcodeでフレームワークをインポートするアプリケーションでは使用されていません。

その後、私はそれらを翻訳しました。アプリは正常に動作します。唯一の問題は、フレームワーク内の翻訳された文字列リソースがアプリケーションで使用されないことです。

文字列リソースのコンテンツをフレームワークからコピーして、アプリケーションの文字列リソースに挿入すると動作します。しかし、私はそうしたやり方をするのは良い考えではないと思います。

どのようにアプリケーションを作成する上でのアイデアは、フレームワークの文字列リソースを直接使用していますか?

これは目的に合ったものですか、それともAppleに提出する必要があるバグですか?

のXcode 9.1(9B55)、MacOSのハイシエラ10.13.1(17B48) スウィフト4.0.2

サンプルプロジェクトをここで見つけることができます。 https://www.dropbox.com/s/c6bdp28rmk9rxii/Framework%20Translation%20Issue.zip?dl=0

答えて

0

フレームワーク内のNSLocalizedStringは、フレームワークのバンドルに明示的に指示する必要があります。または、フレームワークを呼び出すアプリケーションはメインバンドルを使用してローカリゼーションリソースを検索します。

NSLocalizedString("Test", tableName: nil, bundle: bundle, comment: "Test") 

あなたは、フレームワークのバンドルを取得するためのフィルターでinit(for: AnyClass)allFrameworks: [Bundle]のいずれかを使用することができます。

バンドルのIDは、1つのプラットフォームのみに固定されており、今後変更されないことが確実でない限り、直接使用しないでください。

関連する問題