2010-03-11 14 views
60

lectura sobre Kohana templates y vio algo que nunca he visto antes:PHP: ¿Qué hace __ ('Some text')?

$this->template->title = __('Welcome To Acme Widgets'); 

¿Qué significa __('Text')? ¿Qué es? ¿Qué hace?

+1

Extraño ... descargué Kohana y no puedo encontrar ninguna referencia a dicha función en el código fuente. –

+0

@Alvaro Quizás haya descargado la versión 2.x. Intenta encontrar la versión 3. – alex

Respuesta

38

En Kohana (versión 3) la función se define en system/base.php y es una función de conveniencia para ayudar (como las otras respuestas han mencionado) la internacionalización. Proporciona una cadena (con, opcionalmente, algunos marcadores de posición para sustituir valores en el texto terminado) que luego se interpreta y, si es necesario, se devuelve una traducción.

Contrariamente a las suposiciones en otras respuestas, esto no utiliza gettext.

Un ejemplo muy básico sería (esta cadena en particular ya está traducido al Inglés, Francés y Español en Kohana):

// 1. In your bootstrap.php somewhere below the Kohana::init line 
I18n::lang('fr'); 

// 2. In a view 
echo __("Hello, world!"); // Bonjour, monde! 
+1

A partir del 3.2, se movió a la clase [Kohana_I18n] (https://github.com/ kohana/core/blob/3.2/master/classes/kohana/i18n.php) – timborden

+4

También se usa en CakePHP. – givanse

5

significa que alguien creó una función llamada __ (Eso es dos subrayados lado de la otra.)

Mi conjetura es que se define en alguna parte de la documentación Kohana.

+6

Él preguntó qué significa. Eso me implica que no sabe que es llamada de función. YMMV. – jmucchiello

+1

@Adriano No estoy de acuerdo, la pregunta al menos parece suponer que esto es algo * otro * que una función. Al igual que $ en jQuery, este es un nombre de función extraño que puede confundirse como algo más. –

+2

+1, no del todo inútil y estoy de acuerdo con Tim Lytle. Solo me molestaría si esto fuera aceptado sobre las otras * respuestas * más finas. – alex

6

Es string gettext (string $message): http://php.net/manual/en/function.gettext.php

Devuelve una cadena traducida si uno es que se encuentra en la tabla de traducción, o el mensaje enviado si no lo encuentra.

El __() es solo un alias para ello. Así __("some text") es equivalente a gettext("some text")

edición: En realidad, si se trata de dos guiones que no se gettext(). El alias de gettext() es un guión bajo.

Segunda edición: Parece que __() podría ser otro alias de gettext(). Con un significado ligeramente diferente de _(). Vea aquí: http://groups.google.com/group/cake-php/browse_thread/thread/9f501e31a4d4130d?pli=1

Tercera y última edición: Aquí hay un artículo que lo explica con más detalle. Parece que no se trata de una función integrada, sino más bien de algo que comúnmente se agrega en muchos marcos. Es esencialmente un alias de gettext - realiza la misma función. Sin embargo, no es un alias directo (no creo). Se implementa en y es específico del marco. Busca y devuelve una localización o traducción de la cadena que se le da. Para más información, ver este post blog: http://www.eatmybusiness.com/food/2007/04/13/what-on-earth-does-a-double-underscore-then-parenthesis-mean-in-php-__/7/

+1

¿No es solo * one * '_', no dos? –

+0

No lo sabía. Pero la pregunta pregunta sobre la función "dos guiones bajos". – jmucchiello

+0

@ T.J. Crowder Sí, mi primera búsqueda reveló ese artículo y no me di cuenta de que era solo uno y no dos. Sin embargo, en una segunda búsqueda parece que básicamente es lo mismo. Recién implementado específico para el marco. –

Cuestiones relacionadas