Bei der Recherche zu einem Vortrag über die Globalisierungs- und Lokalisierung-Problematik (I18N) ist mir eine leichte Designschwäche in einer der zentralen Java APIs zum Thema aufgefallen. ResourceBundle läd die Bundles. Findet der Algorithmus kein lokalisiertes Bundle, sucht er ein Standard-Bundle ohne Sprach- und Landeserweiterung. Es werden dann die dort gefundenen Einträge verwendet, sollte sich in den vorher geladenen Dateien kein Eintrag finden. Wenn Englisch die Defaultsprache ist, kann dies dazu führen, dass eine Arabisch lokalisierte Software plötzlich englische Bezeichnungen zeigt. Unschön, zumal hier LTR und RTL-Sprachen gemischt werden.
Lösungsvorschlag: Auf ein default Bundle verzichten. Dann rauscht das System in einen Fehler. In der Test-Phase muss dieser Fehler auffallen und die fehlende Lokalisierung muss nachgepflegt werden.
