テキストの多言語対応

(サンプル一覧を表示する)

FlashDevelop を使って、テキストを多言語対応にするテストをしてみました。

Capabilities クラスの language プロパティから得られる
2 文字 (中国語の場合 4 文字) の国コードを使用して言語別の処理を行うようです。

このサンプルでは直接ソースコードに文字列データを入れてしまっていますが、
言語別に、「〜〜_ja.swf」 というようなファイル名を付けた
動的にロード可能な SWF を用意して
その中に同じ変数名で文字列データを入れるようにすると
簡単に多言語対応可能な構造にできると思います。

SWF を作り直すのが面倒な場合は、「〜〜_ja.xml」というような感じで
XML ファイルにしても良いかもしれません。
Flash の実行画面
テキストの多言語対応

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

テキストの多言語対応

ソースコード

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.system.Capabilities;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	/*
	 * [使用可能な言語コード一覧]
	 * 
	 * 言語			値
	 * チェコ語		cs
	 * デンマーク語		da
	 * オランダ語		nl
	 * 英語			en
	 * フィンランド語	fi
	 * フランス語		fr
	 * ドイツ語		de
	 * ハンガリー語		hu
	 * イタリア語		it
	 * 日本語		ja
	 * 韓国語		ko
	 * ノルウェー語		no
	 * その他/不明	xu
	 * ポーランド語		pl
	 * ポルトガル語		pt
	 * ロシア語		ru
	 * 簡体字中国語	zh-CN
	 * スペイン語		es
	 * スウェーデン語	sv
	 * 繁体字中国語	zh-TW
	 * トルコ語		tr
	 */

	/**
	 * テキストの多言語対応サンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化メソッド
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			// メッセージ表示用テキストフィールドの準備
			var textField:TextField;
			textField = new TextField();
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.x = 10;
			textField.y = 10;
			addChild(textField);
			
			// 言語別のあいさつ文を準備
			var greetingJapanese:String = "こんにちわ";
			var greetingEnglish:String = "Hello World";
            var greetingGerman:String = "Hallo Welt";
            var greetingFrench:String = "Bonjour Monde";
            var greetingSpanish:String = "Hola Mundo";
			
			// 2 文字 (中国語は 4 文字) の国コードを取得
			var lang:String = Capabilities.language;
			
			// 言語コードをテキストフィールドに表示
			textField.appendText("言語コード : " + lang + "\n\n");
			
			// 言語コード別のあいさつ文を取得
			var message:String;
			
			switch (lang) {
				case "ja":
					message = greetingJapanese;
					break;
				case "en":
					message = greetingEnglish;
					break;
				case "de":
					message = greetingGerman;
					break;
				case "fr":
					message = greetingFrench;
					break;
				case "es":
					message = greetingSpanish;
					break;
				default:
					message = "Sorry your system's language is not supported at this time.";               
			}
			
			// あいさつ文をテキストフィールドに表示
			textField.appendText(message);
		}
		
	}
	
}		

外部リンク