Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.baeldung.resourcebundle;

import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

public class ExampleControl extends ResourceBundle.Control {

@Override
public List<Locale> getCandidateLocales(String s, Locale locale) {
return Arrays.asList(new Locale("pl", "PL"));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.baeldung.resourcebundle;

import java.util.ListResourceBundle;

public class ExampleResource extends ListResourceBundle {

@Override
protected Object[][] getContents() {
return new Object[][] {
{ "greeting", "hello" }
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.baeldung.resourcebundle;

import java.util.ListResourceBundle;

public class ExampleResource_pl extends ListResourceBundle {

@Override
protected Object[][] getContents() {
return new Object[][] {
{ "greeting", "cześć" },
{ "language", "polish" },
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.baeldung.resourcebundle;

import java.math.BigDecimal;
import java.util.ListResourceBundle;

public class ExampleResource_pl_PL extends ListResourceBundle {

@Override
protected Object[][] getContents() {
return new Object[][] {
{ "currency", "polish zloty" },
{ "toUsdRate", new BigDecimal("3.401") },
{ "cities", new String[] { "Warsaw", "Cracow" } }
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Buttons
cancelButton=cancel
continueButton continue

! Labels
helloLabel:hello
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deleteButton=delete
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
backButton=cofnij
helloLabel=cze\u015b\u0107
helloLabelNoEncoding=cześć
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.baeldung.resourcebundle;

import org.junit.Test;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Locale;
import java.util.ResourceBundle;

import static org.junit.Assert.*;

public class ExampleResourceUnitTest {

@Test
public void whenGetBundleExampleResourceForLocalePlPl_thenItShouldInheritPropertiesGreetingAndLanguage() {
Locale plLocale = new Locale("pl", "PL");

ResourceBundle exampleBundle = ResourceBundle.getBundle("com.baeldung.resourcebundle.ExampleResource", plLocale);

assertTrue(exampleBundle.keySet()
.containsAll(Arrays.asList("toUsdRate", "cities", "greeting", "currency", "language")));
assertEquals(exampleBundle.getString("greeting"), "cześć");
assertEquals(exampleBundle.getObject("toUsdRate"), new BigDecimal("3.401"));
assertArrayEquals(exampleBundle.getStringArray("cities"), new String[] { "Warsaw", "Cracow" });
}

@Test
public void whenGetBundleExampleResourceForLocaleUs_thenItShouldContainOnlyGreeting() {
Locale usLocale = Locale.US;

ResourceBundle exampleBundle = ResourceBundle.getBundle("com.baeldung.resourcebundle.ExampleResource", usLocale);

assertFalse(exampleBundle.keySet()
.containsAll(Arrays.asList("toUsdRate", "cities", "currency", "language")));
assertTrue(exampleBundle.keySet()
.containsAll(Arrays.asList("greeting")));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.baeldung.resourcebundle;

import org.junit.Test;

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

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class PropertyResourceUnitTest {

@Test
public void givenLocaleUsAsDefualt_whenGetBundleForLocalePlPl_thenItShouldContain3ButtonsAnd1Label() {
Locale.setDefault(Locale.US);

ResourceBundle bundle = ResourceBundle.getBundle("resourcebundle.resource", new Locale("pl", "PL"));

assertTrue(bundle.keySet()
.containsAll(Arrays.asList("backButton", "helloLabel", "cancelButton", "continueButton", "helloLabelNoEncoding")));
}

@Test
public void givenLocaleUsAsDefualt_whenGetBundleForLocaleFrFr_thenItShouldContainKeys1To3AndKey4() {
Locale.setDefault(Locale.US);

ResourceBundle bundle = ResourceBundle.getBundle("resourcebundle.resource", new Locale("fr", "FR"));

assertTrue(bundle.keySet()
.containsAll(Arrays.asList("deleteButton", "helloLabel", "cancelButton", "continueButton")));
}

@Test
public void givenLocaleChinaAsDefualt_whenGetBundleForLocaleFrFr_thenItShouldOnlyContainKeys1To3() {
Locale.setDefault(Locale.CHINA);

ResourceBundle bundle = ResourceBundle.getBundle("resourcebundle.resource", new Locale("fr", "FR"));

assertTrue(bundle.keySet()
.containsAll(Arrays.asList("continueButton", "helloLabel", "cancelButton")));
}

@Test
public void givenLocaleChinaAsDefualt_whenGetBundleForLocaleFrFrAndExampleControl_thenItShouldOnlyContainKey5() {
Locale.setDefault(Locale.CHINA);

ResourceBundle bundle = ResourceBundle.getBundle("resourcebundle.resource", new Locale("fr", "FR"), new ExampleControl());

assertTrue(bundle.keySet()
.containsAll(Arrays.asList("backButton", "helloLabel")));
}

@Test
public void givenValuesDifferentlyEncoded_whenGetBundleForLocalePlPl_thenItShouldContain3ButtonsAnd1Label() {
ResourceBundle bundle = ResourceBundle.getBundle("resourcebundle.resource", new Locale("pl", "PL"));

assertEquals(bundle.getString("helloLabel"), "cześć");
assertEquals(bundle.getString("helloLabelNoEncoding"), "czeÅ\u009BÄ\u0087");
}

}