Pregunta

Hace un rato estaba leyendo el W3C artículo sobre"Re-uso de Cadenas en el Guión de Contenido'que contiene algunos consejos útiles en la internacionalización, pero que me parece en desacuerdo con el DRY (Don't Repeat Yourself) principio de la eliminación de código repetitivo.

Para tomar su ejemplo, podemos tener algunas código como este...

print "The printer is ";
if (printer.working) {
    print "on.\n";
} else {
    print "off.\n";
}

print "The stapler is ";
if (stapler.working) {
    print "on.\n";
} else {
    print "off.\n";
}

Mi instinto sería la eliminación de la repetición más o menos la siguiente...

report-state(printer, "printer");
report-state(stapler, "stapler");

function report-state(name, object) {
    print "The "+name+" is ";
    if (object.working) {
        print "on\n";
    } else {
        print "off\n";
    }
}

...pero al hacerlo causaría una dificultad en el código si necesitamos localizar al español porque la palabra 'en' es aparentemente diferente en los dos casos.

Así que, supongo que mi pregunta es, ¿cómo tienen otros desarrolladores se acercó a equilibrar el principio SECO con la internacionalización de su código?

Parte de mí quiere argumentar que la internacionalización es uno de esos programación extrema "usted no va a necesitar de ti"las situaciones.En el lado del tirón sin embargo, la refactorización con el principio SECO en mente, se supone que el balance de este por lo que es fácil de implementar funcionalidad que se requiere, no más difícil, como lo hace aquí.

¿Fue útil?

Solución

Me gustaría probar a mantener completar frases en el idioma de recursos.Como usted dijo que usted podría necesitar diferentes palabras en diferentes contextos.Pero un problema más grande es que el orden de las frases pueden ser diferentes en idiomas diferentes.Así que la construcción de cadenas de palabras puede causar problemas.

Sólo la tienda

The printer is on
The printer is off
The stapler is on
The stapler is off

en el recurso de idioma para cada idioma.La repetición aquí es menos de un mantenimiento dolor de cabeza de tratar de averiguar donde todas las palabras van a surgir en su aplicación.

Otros consejos

100% de acuerdo con Mendelt.

No es sólo un problema de mantenimiento, pero también puede ser una lingüística.En todas las lenguas latinas como el género, número y caso de la asignatura de afectar a otros elementos.Ejemplo de rumano

  The printer is on: Imprimanta este pornită // feminine
  The printer is off: Imprimanta este oprită
  The stapler is on: Perforatorul este pornit // masculine
  The stapler is off: Perforatorul este oprit

Ver también http://www.mihai-nita.net/article.php?artID=20060430a

Estoy de acuerdo con Mendelt Siebenga cuando él dice que usted debe mantener toda oraciones o frases en el idioma de los archivos de recursos.Las diferencias en la gramática siempre le impiden hacer sola palabra de reemplazo a través de los idiomas.Esto todavía se llevan menos código repetitivo de su primer ejemplo, ya que sólo necesita para comprobar el tipo de objeto y su estado, a continuación, imprimir el mensaje apropiado de los recursos lingüísticos.

Tratamos de no crear cadenas de mensaje por el programa de manipulación debido a la loc.el equipo no puede verlos.

La loc.equipo realmente prefiero por separado, pero casi duplicar mensajes.Sin embargo, se aceptará con parámetros de los mensajes.

E. g., "La %(aparato)% es %(on_or_off)%."

Los parámetros se pueden romper, pero al menos es más evidente para el loc equipo cuando se va a trabajar y cuando no.

Supongo que depende del nivel de idioma de la calidad que se pretenden alcanzar.

Tratando de minimizar la repetición de código que se ocupa de las cadenas de idioma, se le acaba de exponerse a otra capa de la lógica de la sintaxis y estructuras de los diferentes idiomas.Habría una enorme cantidad de trabajo involucrado en la producción de código que aún conserva la estructura original de la lengua al tiempo que reduce la repetición.

Usted tendría que decidir cual era el método más adecuado para un problema en particular;El código que se repite, o el código que intenta ser un Jack de todos los Oficios y acomoda para un sinnúmero de reglas de la lengua (sin duda una pesadilla de mantenimiento).

Por supuesto, usted puede golpear el medio terreno y minimizar el código repitition pero renunciar satisfactoria gramaticales de la elocuencia.Tomemos el ejemplo de Ultima Online - cuando fue localizado, una cadena que antes de leer "Un montón de 329 monedas de oro" se convirtió en algo así como "Un montón de monedas de oro:329".No mucho, pero bastante razonable solución que se presta fácilmente a la localización.

Me gustaría sugerir el uso de un CMS en lugar de codificar en su textuales valores para cubrir la localización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top