- Revision
- 1239
- Author
- mauro
- Date
- 2009-09-10 09:18:51 -0500 (Thu, 10 Sep 2009)
Log Message
Added UTF-8 resource bundle to ensure compatibility with accent-based languages.
Modified Paths
- trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/i18n/I18nKeywordsBehaviour.java
- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/I18nKeyWords.java
- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_es.properties
- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_pt.properties
Added Paths
Diff
Modified: trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/i18n/I18nKeywordsBehaviour.java (1238 => 1239)
--- trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/i18n/I18nKeywordsBehaviour.java 2009-09-10 11:53:20 UTC (rev 1238) +++ trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/i18n/I18nKeywordsBehaviour.java 2009-09-10 14:18:51 UTC (rev 1239) @@ -1,61 +1,72 @@ package org.jbehave.scenario.i18n; +import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; +import java.io.UnsupportedEncodingException; +import java.util.List; import java.util.Locale; import org.jbehave.scenario.definition.KeyWords; import org.junit.Test; - public class I18nKeywordsBehaviour { @Test - public void keywordsInEnglishAsDefault(){ - KeyWords keywords = new I18nKeyWords(); - assertEquals("Scenario:", keywords.scenario()); - assertEquals("GivenScenarios:", keywords.givenScenarios()); - assertEquals("Examples:", keywords.examplesTable()); - assertEquals("Given", keywords.given()); - assertEquals("When", keywords.when()); - assertEquals("Then", keywords.then()); - assertEquals("And", keywords.and()); + public void keywordsInEnglishAsDefault() { + ensureKeywordsAre(null, asList("Scenario:", "GivenScenarios:", + "Examples:", "Example:", "Given", "When", "Then", "And", + "PENDING", "NOT PERFORMED", "FAILED")); } @Test - public void keywordsInItalian(){ - KeyWords keywords = new I18nKeyWords(new Locale("it")); - assertEquals("Scenario:", keywords.scenario()); - assertEquals("Dati gli scenari:", keywords.givenScenarios()); - assertEquals("Esempi:", keywords.examplesTable()); - assertEquals("Dato che", keywords.given()); - assertEquals("Quando", keywords.when()); - assertEquals("Allora", keywords.then()); - assertEquals("E", keywords.and()); + public void keywordsInItalian() { + ensureKeywordsAre(new Locale("it"), asList("Scenario:", + "Dati gli scenari:", "Esempi:", "Esempio:", "Dato che", + "Quando", "Allora", "E", "PENDENTE", "NON ESEGUITO", "FALLITO")); } @Test - public void keywordsInSpanish(){ - KeyWords keywords = new I18nKeyWords(new Locale("es")); - assertEquals("Escenario:", keywords.scenario()); - assertEquals("Dados los escenarios:", keywords.givenScenarios()); - assertEquals("Ejemplos:", keywords.examplesTable()); - assertEquals("Dado que", keywords.given()); - assertEquals("Cuando", keywords.when()); - assertEquals("Entonces", keywords.then()); - assertEquals("Y", keywords.and()); - } + public void keywordsInSpanish() { + ensureKeywordsAre(new Locale("es"), asList("Escenario:", + "Dados los escenarios:", "Ejemplos:", "Ejemplo:", "Dado que", + "Cuando", "Entonces", "Y", "PENDIENTE", "NO REALIZADO", + "FRACASADO")); + } @Test - public void keywordsInPortuguese(){ - KeyWords keywords = new I18nKeyWords(new Locale("pt")); - assertEquals("Cenrio:", keywords.scenario()); - assertEquals("Dados os cenrios:", keywords.givenScenarios()); - assertEquals("Exemplos:", keywords.examplesTable()); - assertEquals("Dado que", keywords.given()); - assertEquals("Quando", keywords.when()); - assertEquals("Ento", keywords.then()); - assertEquals("E", keywords.and()); + public void keywordsInPortuguese() { + ensureKeywordsAre(new Locale("pt"), asList("Cenrio:", + "Dados os cenrios:", "Exemplos:", "Exemplo:", "Dado que", + "Quando", "Ento", "E", "PENDENTE", "NÌO EXECUTADO", "FALHADO")); } - + + private void ensureKeywordsAre(Locale locale, List<String> expected) { + KeyWords keywords = (locale == null ? new I18nKeyWords() + : new I18nKeyWords(locale)); + assertUtf8Equals(expected.get(0), keywords.scenario()); + assertUtf8Equals(expected.get(1), keywords.givenScenarios()); + assertUtf8Equals(expected.get(2), keywords.examplesTable()); + assertUtf8Equals(expected.get(3), keywords.examplesTableRow()); + assertUtf8Equals(expected.get(4), keywords.given()); + assertUtf8Equals(expected.get(5), keywords.when()); + assertUtf8Equals(expected.get(6), keywords.then()); + assertUtf8Equals(expected.get(7), keywords.and()); + assertUtf8Equals(expected.get(8), keywords.pending()); + assertUtf8Equals(expected.get(9), keywords.notPerformed()); + assertUtf8Equals(expected.get(10), keywords.failed()); + } + + private void assertUtf8Equals(String expected, String actual) { + assertEquals(utf8(expected), actual); + } + + private String utf8(String value) { + try { + return new String(value.getBytes("ISO-8859-1"), "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + }
Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/I18nKeyWords.java (1238 => 1239)
--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/I18nKeyWords.java 2009-09-10 11:53:20 UTC (rev 1238) +++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/I18nKeyWords.java 2009-09-10 14:18:51 UTC (rev 1239) @@ -1,7 +1,5 @@ package org.jbehave.scenario.i18n; -import static java.util.ResourceBundle.getBundle; - import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -43,7 +41,7 @@ private static ResourceBundle lookupBunde(String bundleName, Locale locale) { try { - return getBundle(bundleName.trim(), locale); + return UTF8ResourceBundle.getBundle(bundleName.trim(), locale); } catch (MissingResourceException e) { return EMPTY_BUNDLE; }
Added: trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/UTF8ResourceBundle.java (0 => 1239)
--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/UTF8ResourceBundle.java (rev 0) +++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/UTF8ResourceBundle.java 2009-09-10 14:18:51 UTC (rev 1239) @@ -0,0 +1,62 @@ +package org.jbehave.scenario.i18n; + +import java.io.UnsupportedEncodingException; +import java.util.Enumeration; +import java.util.Locale; +import java.util.PropertyResourceBundle; +import java.util.ResourceBundle; + +public class UTF8ResourceBundle { + + public static ResourceBundle getBundle(String baseName) { + return utf8ResourceBundle(ResourceBundle.getBundle(baseName)); + } + + public static ResourceBundle getBundle(String baseName, Locale locale) { + return utf8ResourceBundle(ResourceBundle.getBundle(baseName, + locale)); + } + + private static ResourceBundle utf8ResourceBundle( + ResourceBundle bundle) { + if (!(bundle instanceof PropertyResourceBundle)) + return bundle; + + return new UTF8ResourceBundleDecorator((PropertyResourceBundle) bundle); + } + + private static class UTF8ResourceBundleDecorator extends ResourceBundle { + + private static final String ISO_8859_1 = "ISO-8859-1"; + private static final String UTF_8 = "UTF-8"; + + private final PropertyResourceBundle delegate; + + private UTF8ResourceBundleDecorator(PropertyResourceBundle bundle) { + this.delegate = bundle; + } + + public Enumeration<String> getKeys() { + return delegate.getKeys(); + } + + protected Object handleGetObject(String key) { + String value = (String) delegate.handleGetObject(key); + try { + return new String(value.getBytes(ISO_8859_1), UTF_8); + } catch (UnsupportedEncodingException e) { + throw new InvalidEncodingExcepion(value, e); + } + } + } + + @SuppressWarnings("serial") + private static final class InvalidEncodingExcepion extends RuntimeException { + + public InvalidEncodingExcepion(String value, + UnsupportedEncodingException cause) { + super(value, cause); + } + + } +}
Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_es.properties (1238 => 1239)
--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_es.properties 2009-09-10 11:53:20 UTC (rev 1238) +++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_es.properties 2009-09-10 14:18:51 UTC (rev 1239) @@ -6,6 +6,6 @@ When=Cuando Then=Entonces And=Y -Pending=PENDING -NotPerformed=NOT PERFORMED -Failed=FAILED +Pending=PENDIENTE +NotPerformed=NO REALIZADO +Failed=FRACASADO
Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_pt.properties (1238 => 1239)
--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_pt.properties 2009-09-10 11:53:20 UTC (rev 1238) +++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/i18n/keywords_pt.properties 2009-09-10 14:18:51 UTC (rev 1239) @@ -1,11 +1,11 @@ -Scenario=Cen\u00E1rio: -GivenScenarios=Dados os cen\u00E1rios: +Scenario=Cenário: +GivenScenarios=Dados os cenários: ExamplesTable=Exemplos: ExamplesTableRow=Exemplo: Given=Dado que When=Quando -Then=Ent\u00E3o +Then=Então And=E -Pending=PENDING -NotPerformed=NON PERFORMED -Failed=FAILED +Pending=PENDENTE +NotPerformed=NÃO EXECUTADO +Failed=FALHADO
To unsubscribe from this list please visit:
