The most important application written in Squeak to ``internationalize'' is the SqueakToys system. The SqueakToys already have a mechanism for switching the language in the tiles. A language representable in MacRoman or Latin-1 character set can be used for the tiles in the SqueakToys, once the mapping from the default English keyword to the language is supplied.
Once the multilingualization, or handling the extended character sets, is done, this is also true for the languages that require more than MacRoman or Latin-1 characters. After we have added the capability to handle the multi octet characters, to make the basics of the SqueakToys work in Japanese was not a hard task.
However, there are a lot of details to be implemented. Firstly, the
``template'' for adding new languages,
method, doesn't
contain all necessary mapping for strings used in the application.
The template method tends to be be left out from the update for the
tile system. Secondly, for kids who don't understand English, the
strings other than on tiles must be translated. Such strings include
buttons in the navigator bar and the paint tool and the menu items and
sub-items in the red halo of Morphs. We ended up with translating
about 1500 entries to make the Japanese version of SqueakToys ready
for Japanese kids.
To enable the translation for the menu items that were not
originally the scope of SqueakToys vocabulary translation mechanism,
we modified certain call sites for menu creation,
creation, and alike. At a such call site, the translation mapping
dictionary is searched by the original English word as the key and the
resulting value is passed to the menu or StringMorph creation method.
The other possible approach to translate the menu is the ``callee'' side translation approach: namely, the menu creation method translates the passed arguments internally depending on a setting or something. We will consider the upside and downside of those approaches.