世界の言語でこんにちは

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追記