Multi Language Text Managerは、XNAでローカライズテキストの使用を簡単にするライブラリとエディタです。
GUIエディタで多言語に対応したテキストデータを作成し、XML形式へシリアライズします。
XNA側では、シリアライズしたデータをContent.Load()メソッドを使用して読み込んで使用します。
Download
- [download id=”108″]
- [download id=”115″]
- [download id=”118″]
エディタ説明
メイン画面
- メニューバー
- ファイルメニュー
- 新規
ファイルを新規作成します。 - ファイルを開く
XMLファイルを読み込みます。 - 上書き保存
編集中のデータを、上書き保存します。 - 名前を付けて保存
編集中のデータを、ファイル名を指定して保存します。 - 終了
プログラムを終了します。
- 新規
- ツール メニュー
- 言語IDの管理
言語IDを追加・編集・削除する言語ID管理画面を表示します。 - 使用文字テーブルテキストの生成
使用されている文字一覧をテキストファイルへ出力します。
生成されたテキストファイルはUTF-8で出力され、文字コード順にテキストがソートされます。 - 使用文字テーブルテキストオプション
使用文字テーブルテキスト生成機能の動作を設定します。- XMLファイル保存時に自動生成
チェックされた場合、ファイル保存時、同時に使用文字テーブルテキストを生成します。
一度手動で使用文字テーブルの生成を行う必要があります。 - ファイル保存モード
使用文字テーブルテキストの保存方法を設定します。- 追加保存
指定した既存ファイルに対して、現在編集中の使用文字を追加して保存します。
既存ファイルに存在する文字が編集中ファイルに存在する場合、重複して追加はされません。
既存ファイルに存在する文字列と追加された文字列を合わせてソートします。
複数のXMLを使用する場合、こちらの設定で保存することが推奨されます。 - 上書き保存
指定した既存ファイルの中身を無視して、現在編集中のテキストのみを保存します。
- 追加保存
- XMLファイル保存時に自動生成
- 言語IDの管理
- ファイルメニュー
- テキストID一覧
編集する項目をこの一覧から選択しクリックします。
↑、↓ボタンをクリックすると選択中の項目の順序を入れ替えます。 - 追加ボタン
新たなテキストIDを新規登録します。 - 削除ボタン
選択中のテキストIDを削除します。
削除したIDに紐付くテキストは全て削除されます。 - テキストID
入力エリア選択中のテキストIDを変更します。 - 行数
編集するテキストのテキストボックスのサイズを変更します。
1行で編集中は、Enterで変更を適用できます。
2行以上で編集中は、Enterで改行が行われます。 - 変更を適用ボタン
変更した情報を適用します。
テキストが変更されると押下できます。
このボタンをクリックしないと変更が反映されません。
1行で編集中は、テキスト入力エリアでEnterキーを押しても変更を適用できます。 - テキスト情報
入力エリア各言語に対応したテキストを入力します。
言語ID管理画面
- 言語IDリスト
編集する項目をこの一覧から選択しクリックします。
↑、↓ボタンをクリックすると選択中の項目の順序を入れ替えます。 - 追加ボタン
新たな言語IDを登録します。 - 削除ボタン
選択中の言語IDを削除します。
削除したIDに紐付くテキストは全て削除されます。 - ID
選択中の言語IDを変更します。 - 説明
選択中の言語IDの説明を変更します。 - 変更を適用ボタン
変更した情報を適用します。
このボタンをクリックしないと変更が反映されません。
テキスト入力エリアでEnterを押しても変更を適用できます。
ライブラリ使用サンプルコード
MultiLanguageTextDataをそのまま使用する場合
// ContentManager.Load()メソッドで作成したXML(アセット名:Text)を読み込む MultiLanguageTextData textData = Game.Content.Load<MultiLanguageTextData>( @"Text" ); // エディタで設定した言語ID(ja)を設定する string lang = "ja"; // 読み込んだデータから、言語ID、テキストID(Menu_01)を指定してテキストを取得する string text = textData.GetText( lang, "Menu_01" );
MultiLanguageTextManagerを使用する場合
// MultiLanguageTextManagerを生成 MultiLanguageTextManager textManager = new MultiLanguageTextManager(); // エディタで設定した言語ID(ja)を設定する string lang = "ja"; // デフォルト言語IDをjaに設定する textManager.SetDefaultLanguageID( lang ); // ContentManager.Load()メソッドで作成したXML(アセット名:Menu, Game)を読み込む MultiLanguageTextData menuText = Game.Content.Load<MultiLanguageTextData>( @"Menu" ); MultiLanguageTextData gameText = Game.Content.Load<MultiLanguageTextData>( @"Game" ); // カテゴリID(Menu,Game)を指定してMultiLanguageTextManagerへ読み込んだデータを設定する textManager.AddContent( "Menu", menuText ); // 自動でデフォルトカテゴリにMenuが登録される textManager.AddContent( "Game", gameText ); // デフォルトカテゴリはMenuのまま // デフォルトカテゴリIDをGameに設定する textManager.SetDefaultCategory( "Game" ); // 言語ID"ja"、カテゴリID"Game"、テキストID"ID_001"のテキストを取得 string text = textManager.GetText( "ID_001" );
プロジェクトへの組み込み
- Visual Studioのソリューションエクスプローラから、Contentプロジェクトを探して右クリックします。
- 右クリックメニューより「参照の追加」を探して選択します。
- 「参照」タブを選択し、ダウンロードした「MultiLanguageTextManager.dll」を探して選択します。
使用文字テーブルテキストの利用方法
英語の場合のみは全ての文字をテクスチャとして使用してもあまり問題にはなりませんが、
日本語の場合、平仮名、片仮名だけではなく、漢字も含めると膨大な文字数になります。
使用文字テーブルテキストは、ツールで入力された文字列のみをテキストファイルとして出力したものです。
WPF フォントプロセッサーと使用文字テーブルテキストを連携させることで、
Multi Language Text Managerで使用する文字のみのテキストファイルテクスチャを生成することができます。
この設定をしておくと、テキストファイルに変更があった場合でも、手動で作業を行う必要がなくなります。
WPF フォントプロセッサーについてはこちらをご参照ください。
- WPFフォントプロセッサーへの参照をプロジェクトへ追加します。
- Visual Studioのソリューションエクスプローラから、Contentプロジェクト内のspritefontファイルを探して右クリックします。
- 右クリックメニューより「プロパティ」を探して選択します。
- 「コンテンツ プロセッサ」に「WPF フォントプロセッサー」を選択します。
- 「コンテンツ プロセッサ」の項目を開き、「追加文字 テキストファイル名」に生成した使用文字テーブルテキストファイルを指定します。
ライブラリ クラスとメソッドの詳細
作成中
メソッドは必要に応じて随時追加・変更・削除されます。
動作環境
XNA Framework 4.0 必須
Windows XP, Windows Vista, Windows 7, Windows 8
更新履歴
- Ver 1.3.2.0 2012/08/22
- 仕様変更
- テキストボックスの行数を保存するようにした。
- 使用文字テーブルテキスト自動設定時にテキストを一度も生成していない場合、
XML保存を行った時に確認メッセージを表示してテキスト保存を行うようにした。
- 仕様変更
- Ver 1.3.1.1 2012/08/18
- 不具合修正
- 一度複数行編集モードに移行すると、単数行表示モードに戻れない不具合を修正した。
- 不具合修正
- Ver 1.3.1.0 2012/08/01
- 仕様変更
- 複数行編集モードを、チェックボックスから表示行数プルダウンメニューに変更した。
- 仕様変更
- Ver 1.3.0.0 2012/07/26
- 追加機能
- 上書き保存のみであった使用文字テーブルテキストの作成に、上書き保存か追加保存か選択できる機能を追加した。
- ドラッグ&ドロップでファイルを読み込めるようにした。
- 仕様変更
- 使用文字テーブルテキストに関するメニュー構成を変更した。
- 使用文字テーブルテキストの自動生成は、一度手動でテキストを生成した後でなければ選択できないようにした。
- 使用文字テーブルのパスを保存するようにした。これに伴い、過去のバージョンで作成したXMLは読み込みできなくなりました。
- 不具合修正
- テキストIDを削除しても、XMLファイルに削除IDに紐付くテキストが残る不具合を修正した。
- 追加機能
- Ver 1.2.0.0 2012/07/24
- 追加機能
- 使用文字テーブルテキストの自動生成機能を追加した。
- 仕様変更
- 使用文字テーブルテキストに、改行コードを出力しないようにした。
- 不具合修正
- テキストID編集時、既に登録されたIDを入力すると強制終了する不具合を修正しエラーメッセージが表示されるようにした。あわせて、言語ID編集時にも同様のエラーメッセージを表示するようにした。
- IDを消去する際、確認ダイアログにキャンセルボタンが表示されない不具合を修正した。
- 言語ID編集画面で何も行わずにOKを押した場合、ファイルが変更されたという判定がクリアされる不具合を修正した。
- 追加機能
- Ver 1.1.1.0 – 2012/07/20
- 仕様変更
- マルチライン編集モード時でも、テキストID編集中はEnterキーで変更の適用が行えるようにした。
- 仕様変更
- Ver 1.1.0.0 – 2012/07/13
- 追加機能
- 複数行テキストの入力に対応した。それに伴い、MultiLanguageTextManager クラスと MuitlLanguageTextData クラスに改行コード置換用メソッド ReplaceNewLineCode() を追加した。
- 言語ID情報クラス LanguageIDInformation を追加した。
- 仕様変更
- 入力データが変更された状態で保存を行った場合、変更を適用して保存するようにした。
- 編集中のファイルパスが30文字を超える場合、省略して表示するようにした。
- 言語ID一覧取得メソッド GetLanguageIDList() の戻り値を、Dictionary<string,string> から List<LanguageIDInformation> に変更した。
- サンプルのデータを複数行対応データに変更した。
- 不具合修正
- 言語ID管理画面で、全ての項目を削除すると強制終了する不具合を修正した。
- 追加機能
- Ver 1.0.1.0 – 2012/07/05
- 追加機能
- エディタのメニューバーに、ショートカットの記載を追加。
- MultiLanguageTextManager クラスに、言語IDと説明の一覧を取得できるメソッドを追加。
- 同クラスに、Clear() メソッドを追加。
- サンプルプロジェクトを追加した。
- 仕様変更
- 使用文字テーブルテキストの作成時、言語IDとその説明に使用された文字列も出力するようにした。
- 編集中に×ボタンでウィンドウを閉じようとした場合に確認メッセージを出すようにした。
- 追加機能
- Ver 1.0.0.1 – 2012/06/19
- 追加機能
- MuitlLanguageTextManager クラスのコンストラクタを追加。
- 不具合修正
- MuitlLanguageTextManager 使用時、正常に文字列を取得できないことがある不具合の修正。
- 追加機能
- Ver 1.0.0.0 – 2012/06/18
- リリース
免責事項・ライセンス
本ソフトウェアは開発中のβバージョンです。
今後、本バージョンで作成したファイルが使用できなくなる可能性があります。
エディタ、ライブラリの使用にライセンス記載の義務や制限はありません。
エディタで作成されたXMLデータを改変し、独自クラスにデシリアライズしても問題ありません。
サンプルプログラムには、ひにけにXNA Yuichi Ito様作成のWPFフォントプロセッサーライブラリが、本人の許可を得て同梱されています。
本 ライブラリについてはこちらをご参照ください。