世界の言語でこんにちは
Google AJAX Language APIを使ってもういっちょ。「hello」をGoogle AJAX Language APIで変換できる言語の数だけやってみた。
本当は「CHINESE : 你好」のように表示したかったんだけど、いかんせん非同期なもんで、show関数を一通り実行してからgoogle.lnaguage.translate関数の結果が返るため、以下の様ないけてない表示になります。。
非同期だからというのは嘘。変数スコープの問題でした。2009.2.15追記
CHINESE CHINESE_SIMPLIFIED CHINESE_TRADITIONAL ARABIC FRENCH GERMAN ITALIAN JAPANESE KOREAN PORTUGUESE RUSSIAN SPANISH DUTCH 你好 你好 你好 مرحبا Bonjour Hallo Ciao こんにちは 안녕하십니까 Olá Здравствуйте Hola Hallo
あらら。アラビア語とハングル語がうまく表示されて無い・・・
修正したプログラムの結果は次のようになります。いつの間にやらすごい数になっていますね。言語は用意されているけど、まだ翻訳が全部できるわけではなさそう。中国語が前回と違う結果に・・2009.2.15追記
AFRIKAANS : ALBANIAN : përshëndetje AMHARIC : ARABIC : مرحبا ARMENIAN : AZERBAIJANI : BASQUE : BELARUSIAN : BENGALI : BIHARI : BULGARIAN : привет BURMESE : CATALAN : hola CHEROKEE : CHINESE : 喂 CHINESE_SIMPLIFIED : 喂 CHINESE_TRADITIONAL : 餵 CROATIAN : zdravo CZECH : ahoj DANISH : hej DHIVEHI : DUTCH : hallo ESPERANTO : ESTONIAN : tere FILIPINO : hello FINNISH : hei FRENCH : bonjour GALICIAN : Ola GEORGIAN : GERMAN : hallo GREEK : γεια σου GUARANI : GUJARATI : HEBREW : שלום HINDI : हैलो HUNGARIAN : helló ICELANDIC : INDONESIAN : halo INUKTITUT : ITALIAN : ciao JAPANESE : こんにちは KANNADA : KAZAKH : KHMER : KOREAN : 안녕하세요 KURDISH : KYRGYZ : LAOTHIAN : LATVIAN : sveiki LITHUANIAN : labas MACEDONIAN : MALAY : MALAYALAM : MALTESE : hello MARATHI : MONGOLIAN : NEPALI : NORWEGIAN : hallo ORIYA : PASHTO : PERSIAN : POLISH : witaj PORTUGUESE : Olá PUNJABI : ROMANIAN : salut RUSSIAN : привет SANSKRIT : SERBIAN : здраво SINDHI : SINHALESE : SLOVAK : ahoj SLOVENIAN : zdravo SPANISH : hola SWAHILI : SWEDISH : hej TAJIK : TAMIL : TAGALOG : hello TELUGU : THAI : สวัสดี TIBETAN : TURKISH : merhaba UKRAINIAN : привет URDU : UZBEK : UIGHUR : VIETNAMESE : xin chào
続いてソースです。
google.language.Languagesで登録されている言語分for-in文でまわしているところがポイントです。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("language", "1"); function show() { var r = document.getElementById('r'); for (var lang in google.language.Languages) { if(lang == "ENGLISH" || lang == "UNKNOWN") continue; r.innerHTML += lang + '<br>' google.language.translate("hello", "en", google.language.Languages[lang], function(result){ r.innerHTML += result.translation + '<br>'; }); } } google.setOnLoadCallback(show); </script> </head> <body> <div id="r"></div> </body> </html>
修正したプログラムは以下です。2009.2.15追記
<html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("language", "1"); google.setOnLoadCallback(function(){ var showResult = document.getElementById('r'); for (var lang in google.language.Languages) { if(lang == "ENGLISH" || lang == "UNKNOWN") continue; (function(l){ google.language.translate("hello", "en", google.language.Languages[l], function(result){ showResult.innerHTML += l + " : " + result.translation + '<br>'; }); })(lang); } }); </script> </head> <body> <div id="r"></div> </body> </html>
変数スコープを解決するために無名関数で囲んでいるところがポイントです!2009.2.15追記