NetRunner: Java Mastery Guide 1.0 Help

Internacionalização (i18n)

Conceitos Básicos

Locale

// Criando Locales Locale brLocale = new Locale("pt", "BR"); Locale usLocale = Locale.US; Locale currentLocale = Locale.getDefault(); // Definindo Locale padrão Locale.setDefault(brLocale);

ResourceBundle

// Arquivo: messages_pt_BR.properties // mensagem=Olá, {0}! // Arquivo: messages_en_US.properties // message=Hello, {0}! ResourceBundle bundle = ResourceBundle.getBundle("messages", brLocale); String msg = bundle.getString("mensagem");

Textos e Mensagens

Properties Files

# messages_pt_BR.properties welcome=Bem-vindo error.notfound=Não encontrado app.title=Minha Aplicação # messages_en_US.properties welcome=Welcome error.notfound=Not found app.title=My Application

Uso em Código

public class I18nDemo { private ResourceBundle messages; public void setLocale(Locale locale) { messages = ResourceBundle.getBundle("messages", locale); } public String getMessage(String key) { return messages.getString(key); } }

Boas Práticas

Organização

  • Separar textos em arquivos properties

  • Usar chaves hierárquicas

  • Manter consistência entre traduções

  • Documentar contexto das mensagens

Dicas de Implementação

// Uso de MessageFormat String pattern = messages.getString("welcome.user"); MessageFormat formatter = new MessageFormat(pattern); String result = formatter.format(new Object[]{"João"}); // Fallback para locale padrão try { String msg = messages.getString("key"); } catch (MissingResourceException e) { msg = defaultMessages.getString("key"); }

Frameworks e Ferramentas

Spring Framework

@Configuration public class I18nConfig { @Bean public MessageSource messageSource() { ResourceBundleMessageSource source = new ResourceBundleMessageSource(); source.setBasenames("messages"); source.setDefaultEncoding("UTF-8"); return source; } }

Ferramentas de Gestão

  • POEditor

  • Crowdin

  • Lokalise

  • Trados

Testes

Testando Internacionalização

@Test public void testMessageInDifferentLocales() { ResourceBundle ptBR = ResourceBundle.getBundle("messages", new Locale("pt", "BR")); ResourceBundle enUS = ResourceBundle.getBundle("messages", Locale.US); assertEquals("Olá", ptBR.getString("greeting")); assertEquals("Hello", enUS.getString("greeting")); }

Próximos Passos

26 June 2025