2011-12-27 7 views
6

En apoyo de la internacionalización del software, muchos lenguajes de programación y plataformas admiten un medio para obtener recursos localizados para ser utilizados en la UI que se muestra al usuario (por ejemplo, la clase java.util.ResourceBundle de Java). A menudo, si los recursos para la configuración regional preferida del usuario no están disponibles, entonces existe un mecanismo alternativo o un proceso de resolución de la configuración regional que intentará localizar los recursos de coincidencia más cercanos de los conjuntos de recursos disponibles. Por ejemplo, si los recursos para en-US no están disponibles, entonces comúnmente el sistema intenta encontrar recursos para en.¿Hay un algoritmo estándar para la resolución de la configuración regional?

El proceso de resolución de la configuración regional parece casi el mismo para las soluciones de paquete de recursos de muchas lenguas y plataformas. ¿Están siguiendo algún algoritmo de resolución de localización estándar o, si no, existe tal estándar?

+1

Ellos (los profesionales i18n que diseñan tales funciones) siguen las mejores prácticas. Las mejores prácticas serán más o menos obvias cuando sepa algo sobre territorios (~ países) e idiomas. El mecanismo de caída fácil descrito por Tom formaba parte de Java hasta la versión 6. Ahora con Java 7 y BCP 47 es mucho más complicado: consulte los idiomas chinos, por ejemplo (zh-SG & zh-CN => zh-Hans, zh- TW, zh-HK, zh-MO => zh-Hant). Por cierto. Tenga en cuenta que estoy usando etiquetas de idiomas ... –

Respuesta

1

No conozco un estándar per se.

Sin embargo, el algoritmo que se utiliza es una consecuencia trivial del hecho de que las configuraciones regionales son jerárquicas. Hay una configuración de raíz (nocional) sin nombre. Debajo de esto están los locales de solo idioma (en, fr, etc.). Debajo de ellos hay locales nacionales (en_GB, en_US, etc.). Debajo de ellos están, opcionalmente, las configuraciones regionales variantes (en_GB_Yorkshire, en_GB_cockney, etc., para ejemplos realistas, vea Noruega).

La forma más natural de encontrar un recurso apropiado es comenzar con la configuración local más baja y más específica posible, y caminar por el árbol hasta que encuentre algo. Por lo tanto, comenzando con en_US_TX, ingresas a en_US, luego a, luego a la raíz.

+0

La mayoría de las veces, los recursos serán provistos por el escritor de la aplicación de manera que haya una jerarquía, pero podría ser que una aplicación proporcione recursos para 'de' (el valor predeterminado) y' en-GB'. Si la configuración regional del usuario es 'en-US', entonces una resolución estrictamente jerárquica daría como resultado' de'. Sería preferible en este caso moverse de lado en la jerarquía. Además, quizás si los recursos para un idioma no están disponibles, el emparejamiento más cercano debería ser un idioma similar (por ejemplo, no hay recursos para que el ucraniano pueda devolver los recursos rusos en lugar de los recursos en inglés predeterminados). –

+1

En ese caso, una resolución estrictamente jerárquica daría como resultado que no se encuentre nada. Ni de no en_GB coincide con en_US. Tus sugerencias de movimientos hacia los lados me parecen una mala idea: debes apoyar una configuración regional correctamente o no. Por lo tanto, es importante dejar que los usuarios elijan su ubicación: los ucranianos pueden elegir el ruso si es lo mejor que pueden obtener, pero no se les debe poner como el mejor para el ucraniano. –

+0

¿Cómo reutilizar el código de resolución de locación de JDK 7 dada una localidad en cuestión y algunas localidades conocidas existentes? – curious1

2

Aparentemente RFC 4647, Coincidencia de etiquetas de idioma, que describe la sintaxis de "rangos de idioma" para especificar la lista de idiomas preferidos del usuario, así como los mecanismos de "filtrado" y "búsqueda" para comparar y concordar rangos de idioma a las etiquetas de lenguaje RFC 4646. RFC 4647 describe estos mecanismos como:

El filtrado produce un conjunto (potencialmente vacío) de etiquetas de idioma, mientras que la búsqueda produce una sola etiqueta de idioma.

Cuestiones relacionadas