Java i18n – Internationalisatie in Java

Internationalisatie in Java of Java i18n is een zeer belangrijke functie. Java biedt internationalisatie (i18n) ondersteuning via resourcebundels.

Internationalisatie in Java

Om uw applicatie te laten werken met verschillende landinstellingen, moeten we een eigenschappenbestand specifiek voor de landinstelling maken. De bestandsnamen volgen het patroon van de bundelnaam met taalcode en landcode, bijvoorbeeld ApplicationMessages_en_US.properties. Zodra de eigenschapsbestanden voor specifieke landinstellingen gereed zijn, hoeft u alleen de resourcebundel met de juiste Locale te initialiseren. Java biedt twee klassen java.util.ResourceBundle en java.util.Locale die hiervoor worden gebruikt. ResourceBundle leest het eigenschappenbestand specifiek voor de landinstelling en u kunt de landinstellingsspecifieke waarde voor een sleutel ophalen. Dit is zeer nuttig voor het maken van uw webapplicatieteksten landinstellingsspecifiek, u kunt de landinstellingsinformatie uit het HTTP-verzoek halen en de dynamische pagina genereren met die landinstellingsresourcebundelbestanden. U kunt ook de optie bieden aan de gebruiker om de landinstelling te kiezen en de labels dynamisch bij te werken.

Voorbeeld van Java i18n

Voor het Java i18n-voorbeeld heb ik het project gemaakt met de onderstaande structuur. Hier is de Java-code voor de klasse JavaInternationalizationExample.

package com.journaldev.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

public class JavaInternationalizationExample {

    public static void main(String[] args) {
        // standaard landinstelling
        ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
        // ResourceBundle verkrijgen met reeds gedefinieerde landinstellingen
        ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
        // ResourceBundle verkrijgen wanneer de landinstelling moet worden gemaakt
        ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
        
        // laten we wat berichten afdrukken
        printMessages(bundle);
        printMessages(bundleFR);
        printMessages(bundleSWE);
        
    }

    private static void printMessages(ResourceBundle bundle) {
        System.out.println(bundle.getString("CountryName"));
        System.out.println(bundle.getString("CurrencyCode"));
    }

}

Hier is de bundelnaam ApplicationMessages en ik heb 2 taalspecifieke resource-bundels en één standaard resource-bundel. ApplicationMessages.properties

CountryName=USA
CurrencyCode=USD

ApplicationMessages_fr_FR.properties

CountryName=France
CurrencyCode=Euro

ApplicationMessages_sv_SE.properties

CountryName=Sweden
CurrencyCode=Kr

Let op het gebruik van de Locale-klasse; er zijn al enkele landinstellingen gedefinieerd, maar we kunnen altijd een nieuwe landinstelling maken door taalcode en landcode door te geven aan de constructor. Wanneer ik het bovenstaande programma uitvoer, is hier de uitvoer.

USA
USD
France
Euro
Sweden
Kr

Dat is alles voor dit snelle Java i18n-voorbeeld. Internationalisatie in Java is zeer nuttig in webapplicaties om pagina’s in een taalspecifieke lokale taal te presenteren.

Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java