2

私の C++ iOS ゲーム エンジンは Android に移植されており、Android 2.2 のデバイスでも問題なく動作しますが、ローカリゼーションのサポートに関して問題が発生しています。

C++ エンジンは、poedit を使用して作成された .po (gettext) ローカライズ ファイルをロードし、std::wstring. これは、私がサポートしている他のプラットフォームでは問題なく動作しますが、NDK が wchar/wstring を適切にサポートしていないため、Android では動作しません。現在の (非常に基本的な) 実装については、githubを参照してください。

これで、マルチバイト文字列からカスタム定義の .xml に手動で変換できると思いますstd::basic_string<uint_32>。で提案されているように - Android NDK C++ 'wstring' サポート

ほとんどの場合はそれで問題ありませんが、文字列の書式設定をどのように処理していますか? 私の文字列の大部分は書式設定を必要としない単なるテキストですが、一部は「よくできました %1$s, あなたは %2$d を獲得しました!」という行に沿っています。

swprintfサポートなしでこれらの文字列のフォーマットをどのように処理していますか?

wchar/wstring サポートに依存せずにクロスプラットフォームのローカリゼーションを確実に処理するための推奨される方法はありますか?モバイル)?

どうもありがとう。

4

1 に答える 1

1

私はこれを機能させることができました。アプリ全体でワイド文字列を使用するのではなく、全体で UTF8 を使用するように変換しました。これによりsprintf、通常どおり使用できます (もちろん、機能しない文字列の長さのキャッピングなどの特定の例外はあります)。次に、フォント レンダラー内で文字列を UTF32 に変換しているので、その場で UTF8 をデコードする必要はありません。

ローカリゼーションフォント レンダラーの実装がgithubにアップロードされました。

参考文献

ビデオ ゲームでの Unicode の使用は
どこでも UTF8

于 2012-08-14T19:43:57.553 に答える