- Given a java application supporting different languages like French,German, Korean, Japanese, English etc.
- We will localize strings for each language in different property files.
- e.g. String pertaining to English language will be kept in one property file
- Similarly, String of french language will be kept in french property file.
- We will load property file depending upon language and country code.
- e.g. We will load french property file for language=french & country=france
- We will use Locale & ResourceBundle class to provide localization or Internationalization support for our application.
1. Project structure of project to support multiple languages is as follows:
- Create property file containing string for specific language & country code.
- e.g. Name of property file for language=English & country=USA will be <NAME>_en_us.properties
- Name of property file will be messages_en_US.properties
- Similarly, create properties for rest of languages & countries.
2. Internationalize/ Localize java application (ResourceBundle /example)
package org.learn; import java.util.Locale; import java.util.ResourceBundle; public class DemoMultilingual { public static void main(String[] args) { ResourceBundle rd = ResourceBundle.getBundle("messages"); //Display properties for language = english & Country = USA loadPropertiesByCountryAndLanguage("en","us"); //Display properties for language = german & Country = germany loadPropertiesByCountryAndLanguage("de","DE"); //Display properties for language = french & Country = france loadPropertiesByCountryAndLanguage("fr","FR"); //Display properties for language = hindi & Country = india loadPropertiesByCountryAndLanguage("hi","in"); } private static void loadPropertiesByCountryAndLanguage(String languageCode, String countryCode) { Locale locale = new Locale(languageCode,countryCode); ResourceBundle rd = ResourceBundle.getBundle("messages",locale); String propDescription = rd.getString("description"); String propLanguage = rd.getString("Language"); String propCountry = rd.getString("Country"); System.out.printf("Loading properties for CountryCode=%s,LanguageCode=%s", countryCode,languageCode); System.out.println(); System.out.printf("Description=%s, Language=%s, Country=%s", propDescription,propLanguage,propCountry); System.out.println(); System.out.println(); } }
3. OP: Internationalize/ Localize java application (ResourceBundle /example)
Loading properties for CountryCode=us,LanguageCode=en Description=Localized strings for english language, Language=English, Country=USA Loading properties for CountryCode=DE,LanguageCode=de Description=Localized strings for german language, Language=German, Country=Germany Loading properties for CountryCode=FR,LanguageCode=fr Description=Localized strings for french language, Language=French, Country=France Loading properties for CountryCode=in,LanguageCode=hi Description=Localized strings for hindi language, Language=Hindi, Country=India
Download code-Internationalize/localize/multilingual java (example)