言語切り替えメニュー

翻訳処理をgettextエミュレーションに切り替えた環境で、言語切り替えのメニューを指示すると、言語の選択肢が表示されるまでに、私のそれなりに早いPCでも一瞬待たされる気がします。
調べてみると、LocaleID>>displayName で、'' という特別なキーワードをその言語の翻訳辞書で翻訳させて、言語の表示名を決めていることがわかりました。つまり、インストールされているすべて言語のMOをまとめて読み込んでいることになります。英語以外に5言語がインストールされているとすると、言語の選択肢が表示されるまでに、実際のXOであれば3秒弱待たされると予想されます。
またインストールされている言語の数が増えるとそれに比例して時間がかかることになり、よろしくありません。
たかが言語メニューを表示するために翻訳辞書を全部ロードするのはいやですから、言語の表示名情報は一回読んだらどこか別のファイルなどにキャッシュしておくみたいなことをしたほうがいいのではないかと思います。
この に表示名を入れておくことは、翻訳者向けのFAQネタですね。

ところで、日本語フォントは標準ではインストールされておらず、日本語に切り替えた際にはじめてダウンロードして読み込むようになっています。ここで2つ疑問があります。

  • 日本語フォントがロードされていないのに、言語選択メニューではちゃんと「Japanese (日本語)」と漢字で表示できるのは、どうなっているのでしょうか?
  • 実際の現場に配布されたXOでも、日本語に切り替えると squeakland からフォントをダウンロードしようとするのでしょうか?

このあたりの仕組みは、現在は日本語だけで使われているのですが、いずれマイナーな言語圏に展開されてくると、より一般化されそうな気がします。