Dónde colocar cadenas de teclas i18n en Java
Al hacer la internacionalización en Java, asigna una clave de cadena a cada mensaje. ¿Cuál es la mejor práctica sobre dónde colocar esas teclas de cadena? El objetivo es permitir una fácil refactorización (p. Ej., Cambios de nombre de clave), código limpio y legible, separación de preocupaciones pero aún no duplicación de claves / mensajes, incluso si se llama desde diferentes partes del código.
//bad way, strings directly in code
messages.getString("hello_key");
-
// better way, use String constants
public static final String HELLO_KEY = "hello_key";
...
messages.getString(HELLO_KEY);
-
// other (better?) way, put all keys in one huge central class
public class AllMessageKeys {
public static final String HELLO_KEY = "hello_key";
...
}
public class Foo {
...
messages.getString(AllMessageKeys.HELLO_KEY);
}
-
// other (better?) way, put all keys in neighbor class
public class FooMessageKeys {
public static final String HELLO_KEY = "hello_key";
}
public class Foo {
...
messages.getString(FooMessageKeys.HELLO_KEY);
}
¿Alguna otra propuesta? ¿Cuál es el mejor? Estoy en Eclipse IDE, si eso aclara la parte de refactorización.
Clarificación: en los ejemplos anteriores, "mensajes" es del tipo ResourceBundle.