トップページ > 記事閲覧
多言語対応について
名前:BayLeaf 日時: 2017/07/24 15:56

いつもお世話になっております。 Androidアプリを配信する場合、国内だけでなく海外にも目を向けなければと思い アプリの多言語対応をさせようかと考えています。 理想としては現在端末で使用している言語を取得・変更できたらと思いますが、 DXライブラリでそういった関数や方法はありますでしょうか? 本来ならXMLに文字を書いておいてそこに直接アクセスしようと思ったのですが、 C++の場合ですと別のライブラリが必要だったり手間がかかったりするようで一旦保留にしています。 あと、今後DXライブラリ自体の多言語対応の予定はありますでしょうか?
メンテ

Page: 1 |

Re: 多言語対応について ( No.1 )
名前:管理人 日時:2017/07/25 01:22

> 理想としては現在端末で使用している言語を取得・変更できたらと思いますが、 > DXライブラリでそういった関数や方法はありますでしょうか? 言語設定を変更することはできませんが、端末に設定されている言語の設定を取得する為の 関数は追加できましたので、よろしければ関数を追加したこちらのバージョンを ダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用 以下の関数を追加しました // 端末に設定されている言語を取得する // ( 戻り値 -1:エラー 0以上:言語名文字列の格納に必要なバイト数 ) int GetLanguage( char *StringBuffer, int StringBufferSize ) ; // 端末に設定されている国を取得する // ( 戻り値 -1:エラー 0以上:国名文字列の格納に必要なバイト数 ) int GetCountry( char *StringBuffer, int StringBufferSize ) ; ↑こちらの関数を使用して画面に言語名と国名を表示するプログラムを組むとこのようになります #include "DxLib.h" int android_main() { char LanguageName[ 64 ] ; int LanguageNameBytes ; char CountryName[ 64 ] ; int CountryNameBytes ; if( DxLib_Init() < 0 ) { return -1 ; } SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0) { ClearDrawScreen() ; GetLanguage( LanguageName, sizeof( LanguageName ) ) ; GetCountry( CountryName, sizeof( CountryName ) ) ; DrawFormatString( 0, 0, GetColor( 255,255,255 ), "Country : %s" ) ; DrawFormatString( 0, 24, GetColor( 255,255,255 ), "Languege : %s" ) ; ScreenFlip(); } DxLib_End(); return 0; } 国名と言語名が分かれているのは、例えば言語が日本語の場合は ja、国が日本の場合は JP で 特に国の情報は必要ありませんが、中国語の場合は言語名が中国語を示す zh でも、それだけでは 簡体字( 中国で使用される文字 )なのか繁体字( 香港、台湾で使用される文字 )かを判別できないので、 その場合は国名が CN の場合は簡体字、TW 又は HK の場合は繁体字、という様に判別するようです > あと、今後DXライブラリ自体の多言語対応の予定はありますでしょうか? 多言語対応とは、例えば各言語の文字列データを読み込んで言語設定に応じて自動的に 描画する文字列が切り替わるような機能のことでしょうか? 仮にそうだとしますと、今のところ対応の予定はありません
メンテ
Re: 多言語対応について ( No.2 )
名前:BayLeaf 日時:2017/07/25 19:59

早速の対応ありがとうございます。 実行してみたところ無事取得することができました。 ところで、int型の変数(〇〇NameBytes)がコード中で使われていないのですが これは書きミスということでよろしいですか? DrawFormatString内の変数も書かれていないようですので。 > 国名と言語名が分かれているのは、例えば言語が日本語の場合は ja、国が日本の場合は JP で > 特に国の情報は必要ありませんが、中国語の場合は言語名が中国語を示す zh でも、それだけでは > 簡体字( 中国で使用される文字 )なのか繁体字( 香港、台湾で使用される文字 )かを判別できないので、 > その場合は国名が CN の場合は簡体字、TW 又は HK の場合は繁体字、という様に判別するようです その他の国については一般的に定義されているものを使えばよろしいのでしょうかね? 間違った国コードを書いてしまわないようにするために念のため、 どこの国コード一覧を参照したらいいか教えていただけるとありがたいです。 > 多言語対応とは、例えば各言語の文字列データを読み込んで言語設定に応じて自動的に > 描画する文字列が切り替わるような機能のことでしょうか? > > 仮にそうだとしますと、今のところ対応の予定はありません 言葉足らずですみませんでした。私が聞きたかったことは、機能のことではなく 外国人用のDXライブラリドキュメントの作成はしないのかなということです。 もし外国の方と共同開発することになった場合、英語用のドキュメントがあったらスムーズに開発できるのではと考えています。 とはいえ、作業量が大変になると思うのでできればで構いません。
メンテ
Re: 多言語対応について ( No.3 )
名前:管理人 日時:2017/07/26 00:01

> ところで、int型の変数(〇〇NameBytes)がコード中で使われていないのですが > これは書きミスということでよろしいですか? あ、すみません、int LanguageNameBytes ; と int CountryNameBytes ; を削除するのを忘れていました 最初は戻り値を受け取って DrawFormatString で文字列のサイズも描画する処理になっていたのですが、 考えてみればこの例では必要の無い処理だったので、文字列を描画するだけの処理に変更しました > 間違った国コードを書いてしまわないようにするために念のため、 > どこの国コード一覧を参照したらいいか教えていただけるとありがたいです。 Google で『android locale 一覧』というキーワードで検索すると Android が対応している 国コードの一覧を載せられているサイトが幾つか見つかりますので、よろしければお試しください > 言葉足らずですみませんでした。私が聞きたかったことは、機能のことではなく > 外国人用のDXライブラリドキュメントの作成はしないのかなということです。 なるほど、そういうことですか 日本語以外のドキュメントを作成する予定はありません ( 作業量もありますが、単純に外国語が苦手というのが大きいです )
メンテ
Re: 多言語対応について ( No.4 )
名前:BayLeaf(解決) 日時:2017/08/03 11:38

> あ、すみません、int LanguageNameBytes ; と int CountryNameBytes ; を削除するのを忘れていました > 最初は戻り値を受け取って DrawFormatString で文字列のサイズも描画する処理になっていたのですが、 > 考えてみればこの例では必要の無い処理だったので、文字列を描画するだけの処理に変更しました 了解です。 > Google で『android locale 一覧』というキーワードで検索すると Android が対応している > 国コードの一覧を載せられているサイトが幾つか見つかりますので、よろしければお試しください ありがとうございます。調べてみたら出てきたのでそちらを使ってみようと思います。 もし何かエラーが出た場合はまた聞きに来ます。 > 日本語以外のドキュメントを作成する予定はありません > ( 作業量もありますが、単純に外国語が苦手というのが大きいです ) 了解です。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存