[Java] Locale perikelen

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Ik ben bezig een applicatie te internationaliseren. Ik gebruik het locale-mechanisme van de JDK om taalafhankelijke teksten weer te geven. Hieronder even een stukje code dat illustreert waar het misgaat:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Locale;

public class Test {

    public static void main(String[] args) {
        System.out.println(
            new Locale("ja").getDisplayLanguage(new Locale("fr"))
        ); // dit moet opleveren: japonais
        
        System.out.println(
            new Locale("ja").getDisplayLanguage(Locale.ENGLISH)
        ); // dit moet opleveren: Japanese
        
        System.out.println(
            new Locale("ja").getDisplayLanguage(new Locale("nl"))
        ); // dit moet opleveren: Japans
    }
}


Bovenstaande code genereert de volgende output bij executie:
japonais
Japanese
Japanese
Op de laatste regel had natuurlijk "Japans" moeten staan. Blijkbaar heeft de JDK standaard geen Nederlandse definitie voor Japanse taal en wordt de Engelse variant gebruikt. Dit staat ook zo omschreven in de JavaDoc. Maar hoe hier nu mee om te gaan?
Uitgezocht:
  • Ik had bedacht dat de locale definities waarschijnlijk ergens als properties in de JDK moeten staan. Het enige relevante wat ik kon vinden was in JAVA_HOME/jre/lib/ext/localedata.jar. Deze jar bevat sun.text.resources.* klassen. Deze zijn intern voor de JDK en zijn ook niet gedocumenteerd door Sun.
  • De Locale-klasse heeft geen methoden om een lokale definitie (op basis van properties) te instantieren.
Iemand een suggestie?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


Verwijderd

Als ik naar de source kijk van Java, en dan naar de Locale-info voor Nederlands, dan zie ik in de array met talen en landen alleen Nederlands, Nederland en België en dus geen Japan. Als ik naar hetzelfde bestand voor bijvoorbeeld Frans kijk, dan staat daar wel een franstalige variant voor Japan.
Dus jou probleem is niet op te lossen zijn, zonder de Locale-info voor Nederlands aan te passen.