2009-05-05 9 views
8

Estoy buscando una forma culturalmente sensible de insertar correctamente un sustantivo en una oración mientras se usa el artículo apropiado (a/an). Podría usar String.Format, o posiblemente algo más, si la forma adecuada de hacerlo existe en otro lugar.Artículo apropiado (a/an) en String.Format

Por ejemplo:

Base frase: "Usted está mirando una/un {0}"

Esto debería dar formato a: "Usted está mirando una zanahoria" o "Usted está mirando una huevo."

Actualmente estoy haciendo esto al verificar manualmente el primer carácter de la palabra que se va a insertar y luego insertar manualmente "a" o "an". Pero me preocupa que esto me limite cuando la aplicación está traducida a otros idiomas.

¿Existe una mejor práctica para abordar este problema?

RESOLUCIÓN: Parece que el problema es complicado hasta el punto de que no existe una utilidad o un marco para resolver este problema en la forma en que redacté originalmente. Parece que la mejor solución (en mi situación) es almacenar el artículo en la base de datos junto con el sustantivo para que los traductores puedan tener el nivel de control que necesitan. ¡Gracias por todas las sugerencias!

+5

Una cosa a tener en cuenta; incluso la solución de "primera letra" no es perfecta. El uso de "an" ocurre cuando la siguiente palabra comienza con un sonido vocal, por lo que el término correcto es (por ejemplo) "un herbívoro", a pesar del hecho de que "herbívoro" comienza con una "h". –

Respuesta

4

Además del problema observado por lc (una hora, un sombrero) las reglas de la gramática en diferentes idiomas varían ampliamente. Por ejemplo, muchos idiomas latinos cambian los artículos de nombres basados ​​en el 'género' y 'número' del nombre, que a veces se puede deducir de los últimos caracteres de la palabra, pero tiene el mismo problema que el inglés ... hay muchas excepciones

Si está hablando de localizar una interfaz, almacenaría el artículo con el nombre del elemento de interfaz en cada idioma. Si está procesando la entrada del usuario, no veo una manera fácil de hacerlo.

9

El problema es incluso en Inglés, un an-vs-no está determinado por la letra inicial , pero el sonido a partir . Puede hacer una buena suposición en inglés según la letra de inicio, pero hay algunas excepciones (por ejemplo, "hora", "usuario").

Lo mejor que se puede hacer es tener acceso a la pronunciación de una palabra para poder elegir.

Al margen de eso, lo mejor que puede hacer es tener una lista de excepciones comunes, luego adivine el resto.


De Wikipedia:

La elección de "un" o "uno" es determinado por las reglas fonéticas en lugar que por convención ortografía. "An" es empleado en el habla para eliminar el parada glótica incómoda (pausa silenciosa momentánea ) que de lo contrario se requiere entre "a" y una palabra siguiente, p. "una radiografía" ... Los siguientes párrafos son reglas ortográficas para "an" que se pueden usar si no se comprende la regla fonética .

0

Hay una biblioteca llamada .NET inflector que se utiliza para la pluralización/singularización que podría reutilizarse o ampliarse de la misma manera para tal cosa. Lo que está buscando aquí es una regla general que luego puede modificar con excepciones ... por ejemplo, palabras que comienzan con combinaciones de letras que generalmente se pronuncian como vocales. Aunque esto no es [estrictamente hablando] culturalmente sensible, debe comenzar por lo menos en inglés.

2

Otros lenguajes tienen problemas similares pero en contextos diferentes, por ejemplo, dependiendo del género de los objetos o el número real de objetos (y algunos idiomas no solo diferencian entre uno y dos objetos, sino que la gramática es diferente para uno, dos o más de dos objetos en ruso).

Para usar un ejemplo de la lengua alemana:

El equivalente de "Usted está mirando a (n) X" sería:

"Du siehst ein X"
o "Du siehst Eine X"
o 'Du siehst einen X'

dependiendo del género del objeto X. Y el sexo de un objeto es algo que no se puede adivinar, que está vinculada al nombre del objeto sólo se basa en datos históricos tradicion.

Por lo tanto, no hay una manera simple de implementar tales distinciones en la mayoría de los idiomas. Mi consejo sería usar siempre formulaciones que funcionen en todos los casos, p.

"Usted está mirando a un objeto de tipo X"
o "Usted está mirando a (n) X"
o "Usted está mirando un X"

1

¿Cómo es esta sensibilidad cultural? Lo que está tratando de hacer solo tiene sentido en inglés. Otros idiomas pueden requerir cambios completamente diferentes a la oración. Algunos pueden modificar el nombre, algunos pueden cambiar la estructura de la oración, algunos pueden reordenar las palabras, etc.

Lo que está tratando de hacer se rompe cuando se localiza en otros idiomas. No hay una manera automática de resolver esto.

Como un ejemplo simple, considere lo que sucede cuando intenta escribir "el {algo}" En inglés, simplemente prefija con la palabra "the" y todo está bien. En francés, lo prefijas con le, la o les, dependiendo del género y si es plural o no. En danés, en su lugar, agrega un sufijo 'en' o 'et'. Entonces, cuando la tabla de palabras se traduce como "bord", "la tabla" se convierte en "bordet". Y "silla" (stol) se convierte en "robado".

La única forma significativa de evitar esto es dar al traductor el control de la sentencia completa. No suponga que puede simplemente insertar algunas palabras que dependen de la cultura aquí y allá.

Por lo tanto, en la práctica, la mejor solución puede ser aceptar que su aplicación no pueda ser localizada trivialmente. Quizás pueda asegurarse de que sea posible para algunos idiomas clave, y aparte de eso, ignore el problema. Luego, si necesita traducir la aplicación al lenguaje X en algún momento en el futuro, trabaje con el traductor para realizar los cambios necesarios en el código de la aplicación.

Alternativamente, tendría que darse por vencido por completo al tratar de construir frases usted mismo. La única forma de asegurarse de que una oración sea correcta es pedirle a un traductor que escriba la sentencia completa. Y, por supuesto, eso causa problemas cuando quiere poder intercambiar palabras individuales.

+0

Bueno, tendría sentido en sueco. Y dado que uno nunca puede saber si tiene sentido en * cualquier * idioma, no es un enfoque completamente ridículo. Pero estoy de acuerdo en que la traducción debe ser por frase, no por un sustantivo. Algunos idiomas ni siquiera tienen sustantivos, ¿verdad? – bzlm

+0

Soy bastante consciente de que este enfoque se limita al inglés (y como otros han señalado, ni siquiera resuelve todos los escenarios en inglés). Es por eso que abrí esta pregunta – DivisionByZorro

+0

Es un enfoque ridículo si espera que * funcione *. Pidió un enfoque sensible a la cultura, y en ese contexto, es ridículo. En un contexto más limitado de "funciona en inglés, y me alegra que pueda traducirlo a, digamos, alemán, español y ruso también", puede funcionar, pero ya no respeta la cultura * en general * – jalf

3

En los días de old text adventure computer games, una forma de resolver esto era hacer que "a", "an", "the" etc. parte del nombre real de la cosa. Cuando en estos juegos ves "un buzón", no hay inteligencia artificial para determinar la "a". El nombre del objeto es "un buzón". En algunos juegos podría decir "abre un buzón", que suena tonto, y en otros podría decir "abre el buzón", lo que significa que había otro nombre del objeto ingresado, para ser utilizado en diferentes contextos gramaticales. Te sugiero que vayas por esta ruta en lugar de por la ruta en la que estás ahora.