2010-08-03 4 views
5

He codificado un contenedor gettext que hace que todo el proceso de l10n sea un poco más simple, pero de alguna manera no puedo hacer que PoEdit identifique y analice correctamente las llamadas a la función en plural. Esto es lo que originalmente tenía:¿Cómo hacer que PoEdit analice correctamente la implementación personalizada de "ngettext"?

_e(array('%d house', '%d houses'), 5); 

Pero eso no funciona en absoluto, PoEdit recoge nada en absoluto. También probé:

_e('%d house', '%d houses', 5); 

Este PoEdit tiempo atrapa el %d house pero no la forma plural de %d houses, sin embargo si trato exactamente lo mismo pero con un ngettext() llaman funciona perfectamente, tanto las formas singular y plural se identifican:

ngettext('%d house', '%d house', 5); 

he correctamente (?) que se añade la palabra clave _e a la configuración del proyecto, pero no recoge las variaciones plurales. También me he dado cuenta de que PoEdit solo tiene _, gettext y gettext_noop como keyworks predeterminados para recoger, no hay referencia alguna a las funciones ngettext, dngettext o dcngettext pero aún puede recoger correctamente las llamadas ngettext ... Esto hace Me pregunto si PoEdit ha codificado la palabra clave ngettext, eso sería muy triste.

De todos modos, ¿hay alguna forma de hacer que PoEdit (o cualquier otra aplicación similar) analice correctamente las funciones personalizadas?

+0

¿Tiene por lo menos Poedit 1.3.0? –

+0

@Alexandre: Poedit 1.4.6 (Windows). –

+0

Encontré este enlace (http://www.devcomments.com/Zend_Translate-plural-forms-and-poedit-at188420.htm) Parece que no es posible. ¿Hay alguna alternativa? –

Respuesta

0

Aquí hay otra solución, es muy fácil de configurar. Simplemente siga los pasos a continuación:

Menú: Catálogo -> Configuración abrirá el cuadro de diálogo Configuración. En la pestaña Información del proyecto, encontrará "Formas Plurales" en la parte inferior. Simplemente copia & pega la siguiente línea en este campo:

nplurals=2; plural=n != 1; 

que solucionará el problema perfectamente. Ni siquiera tuve que volver a explorar las fuentes; las líneas correctas aparecen automáticamente en el PoEditer.

+1

No creo que hayas entendido mi pregunta. –

3

En realidad, debe hacer las dos cosas anteriores.

  • Definir la palabra clave como '_e: 1,2' Y
  • Añadir la forma plural nplurals = 2; plural = n! = 1;

a los ajustes del catálogo

+1

Las formas plurales varían según el idioma y aún no están relacionadas con el problema. –

+0

ngettext solo admite dos formas plurales de todos modos, ¿cuál es su punto? – Deckard

+1

En realidad, no. Vea el primer (y único) ejemplo en http://php.net/manual/en/function.ngettext.php: "1 okno", "2 okna" y "5 oken". –

Cuestiones relacionadas