Xcode 4でローカライズされた文字列を定義するにはどうすればよいですか?
「Localization」プロパティ(ファイルインスペクター、右パネル)を使用して、InfoPlist.stringsに言語を追加できると仮定しました。
...次に、各ローカライズバージョンで「キー」=「値」を入力します。
しかし、プロジェクトをビルドすることはできません。私はこのエラーを受け取ります:
.stringsファイルのコピーエラー検証に失敗しました:データが破損しているため、データを読み取ることができませんでした。
テキストエンコーディングをUTF 16に変換しても問題は解決しません。 Xcodeを終了して再起動することもありません。
Q1:ビルドエラーを修正するにはどうすればよいですか?
いくつかの冗談で、InfoPlist.strings(フランス語)と(英語)を追加して実行するテストアプリを取得することができました。フランス語の文字列ファイルではエラーが発生しませんでしたが、英語ではエラーが発生しました。だから、私は英語のものだけを残し、フランス語のものにパラメータを置くだけです。ただし、シミュレーターでは、フランス語に設定されています-パラメーターは選択されませんでした。 NSLocalizedString()で指定されたデフォルトに戻しました
Q2:ビルドエラーが修正された場合でも、どのように機能させることができますか?
行の終わりにセミコロンが欠落しているのと同じくらい簡単です。
ローカライズファイル内でエラーを見つけるのと同じ問題がありました...
ターミナルでplutilツールを使用してファイルを変換すると、行番号を含む適切なエラーメッセージが表示されます。
plutil -lint Localizable.strings
応答
plutil [74058:707] CFPropertyListCreateFromXMLData():古いスタイルのplistパーサー:422行目の辞書にセミコロンがありません。解析は中止されます。 _CFPropertyListMissingSemicolonでブレークしてデバッグします。 Localizable.strings:行1の予期しない文字 "
はい、500件の翻訳をたどりました
2番目の文字列のKISSは、別の二重引用符エラーの内側にある二重引用符で囲まれています
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers "KISS" müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
これで結構です
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers KISS müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
これはそのまま(二重内の単一引用符に置き換えてください)
"Before using KISS Remixer, you must agree to the terms and conditions of use." = "Vor der Nutzung des Remixers 'KISS' müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.";
ヒントバイナリ検索を使用して、問題のある行を見つけます。
UTF-16リトルエンディアンは、それを「UTF-16」に戻しました。10.ビルド/ビルドの同じエラーを削除しました。
ファイルのどこかにあります
/* popup message */
"Save mix" = "Enregistrer le mixage";
/* popup message */
"Save mix" = "Enregistrer le mixage"
違う
/* popup message */
"Save mix" = "Enregistrer le "mix" age"
右
/* popup message */
"Save mix" = "Enregistrer le mixage"
また右
/* popup message */
"Save mix" = "Enregistrer le 'mix'age"
ファイルのエンコードを確認してください。これは多くの場合、拡張文字(アクセント記号付き文字など)と非UTFエンコードが原因です。特に、XCode 4にはバグがあり、アクセント記号付きの文字をSafariから文字列ファイルにコピーすると、Western Mac OS Romanとして保存されます。
XCodeの構文チェッカーがこれを理解できないのは残念です。
また、テキストをText Wrangler(翻訳者からファイルを受け取った後に行うこと)にコピーして、適切に引用された文字列をチェックしたり、セミコロンの正規表現チェックを実行することもできます。 Text Wranglerの構文の色分けは、XCodeの文字列エディターでは現在表示されていない引用符で囲まれた(またはエスケープされていない)文字列を表示します。
私の場合、 plutil -lint Localizable.strings
は、生成したエラーメッセージが「Unexpected character " at line 1
"実際のエラーが”
の代わりに"
行2340で。
私の場合、それはウェブサイトからコピー&ペーストされた「引用」記号の問題であり、受け入れられませんでした。
シンタックスハイライトが機能しないことを検出する必要がありましたが、「引用符、キー、引用符、等号、引用符、値、引用符...」というソースを読みました。
ローカライズで二重引用符「」を使用する場合は、バックスラッシュを使用してエスケープすることを忘れないでください。
このような構文を確認する必要があります
"Recharge_Data" = "Data";
1)「」は適切な場所にある必要があります。
2)=チェックする必要があります。
3);ステートメントの最後にある必要があります。
私は1時間から大きなローカライズされたファイルに対して同じ問題を抱えており、上記のすべての手順を適用しても問題は解決しません。 、c ...そしてファイルからそれらの文字列を切り取り、テキストファイルにそれらを保持し、part-kだけが残っているポイントに到達するまでプロジェクトを再度ビルドします。間違って押したことがわかりました- fキーボードで..fewww!解決しました。私はこれが解決策ではないことを知っていますが、私のような人の助けになるかもしれません:)
友達がWindowsで翻訳してくれました。エンコーディングの変更は役に立たないことがわかったので、私がやったこと:すべての文字列をコメントし、コメントを外してcmd-Bを押して、どの文字列に問題があるかを見つけました。次に、問題の文字列を手動で書き直した後、それが機能しました。
私も同じ問題を抱えています。約60ページのローカリゼーションファイルがあり、「多すぎます-見つけるのに時間がかかりました」