TigerZF
🌐Español

43.2. Uso de Zend_Locale

Zend_Locale también proporciona información localizada sobre las locales para cada locale, incluyendo nombres localizados de otras locales, días de la semana, nombres de meses, etc.

43.2.1. Copiar, clonar y serializar objetos locale

Utilice la clonación de objetos para duplicar un objeto locale de forma exacta y eficiente. La mayoría de los métodos que dependen de la locale también aceptan representaciones en cadena de las locales, como el resultado de $locale->toString().

Ejemplo 43.12. clone

$locale = new Zend_Locale('ar');

// Save the $locale object as a serialization
$serializedLocale = $locale->serialize();
// re-create the original object
$localeObject = unserialize($serializedLocale);

// Obtain a string identification of the locale
$stringLocale = $locale->toString();

// Make a cloned copy of the $local object
$copiedLocale = clone $locale;

print "copied: ", $copiedLocale->toString();

// PHP automatically calls toString() via __toString()
print "copied: ", $copiedLocale;

43.2.2. Igualdad

Zend_Locale también proporciona una función de conveniencia para comparar dos locales. Todas las clases que dependen de la locale deberían proporcionar una comprobación de igualdad similar.

Ejemplo 43.13. Comprobar si dos locales son iguales

$locale = new Zend_Locale();
$mylocale = new Zend_Locale('en_US');

// Check if locales are equal
if ($locale->equals($mylocale)) {
    print "Locales are equal";
}

43.2.3. Locales por defecto

El método getDefault() devuelve un array de locales relevantes utilizando información del navegador del usuario (si está disponible), información del entorno del servidor anfitrión y la configuración de Zend Framework. Al igual que con el constructor de Zend_Locale, el primer parámetro selecciona una preferencia de qué información considerar primero (BROWSER, ENVIRONMENT o FRAMEWORK. El segundo parámetro alterna entre devolver todas las locales coincidentes o solo la primera o la mejor coincidencia. Los componentes que dependen de la locale normalmente usan solo la primera locale. Se incluye una valoración de calidad, cuando está disponible.

Ejemplo 43.14. Obtener las locales por defecto

$locale = new Zend_Locale();

// Return all default locales
$found = $locale->getDefault();
print_r($found);

// Return only browser locales
$found2 = $locale->getDefault(Zend_Locale::BROWSER,TRUE);
print_r($found2);

Para obtener solamente las locales por defecto relevantes para BROWSER, ENVIRONMENT o FRAMEWORK, utilice el método correspondiente:

  • getEnvironment()

  • getBrowser()

  • getLocale()

43.2.4. Establecer una nueva locale

Se puede establecer una nueva locale con la función setLocale(). Esta función toma una cadena de locale como parámetro. Si no se proporciona ninguna locale, se selecciona automáticamente una locale.

Ejemplo 43.15. setLocale

$locale = new Zend_Locale();

// Actual locale
print $locale->toString();

// new locale
$locale->setLocale('aa_DJ');
print $locale->toString();

43.2.5. Obtener el idioma y la región

Utilice getLanguage() para obtener una cadena que contiene el código de idioma de dos caracteres a partir del identificador de locale en forma de cadena. Utilice getRegion() para obtener una cadena que contiene el código de región de dos caracteres a partir del identificador de locale en forma de cadena.

Ejemplo 43.16. getLanguage y getRegion

$locale = new Zend_Locale();

// if locale is 'de_AT' then 'de' will be returned as language
print $locale->getLanguage();

// if locale is 'de_AT' then 'AT' will be returned as region
print $locale->getRegion();

43.2.6. Obtener la locale a partir de un territorio

Cuando solo dispone del territorio o país, también es posible obtener una locale a partir de esa información. Puede buscar manualmente si existe una locale para ese territorio utilizando getLocaleToTerritory(). Este método devuelve una locale para el territorio dado o NULL cuando no se ha encontrado ninguna locale.

Ejemplo 43.17. getLocaleToTerritory

$locale = Zend_Locale::getLocaleToTerritory('US');
// returns 'en_US'

[Note] Territorios en mayúsculas

Cuando sepa que está utilizando un territorio, debería escribirlo en mayúsculas. De lo contrario, podría obtener, a sus ojos, una locale falsa al usar otros métodos. Por ejemplo: cuando indica "om", entonces getLocaleToTerritory() le devuelve "ar_OM", ya que sabe que se refiere a un territorio. Pero todos los demás métodos devolverán "om", ya que también es un idioma.

Así que cuando sepa que la cadena dada es un territorio, use getLocaleToTerritory() usted mismo antes de crear una locale, o escriba la entrada en mayúsculas.

43.2.7. Obtención de cadenas localizadas

getTranslationList() le da acceso a información localizada de varios tipos. Esta información es útil si desea mostrar datos localizados a un cliente sin necesidad de traducirlos. Ya están disponibles para su uso.

La lista de información solicitada siempre se devuelve como un array con nombre. Si desea proporcionar más de un valor para un tipo explícito del cual desea recibir valores, tiene que proporcionar un array en lugar de varios valores.

Ejemplo 43.18. getTranslationList

$list = Zend_Locale::getTranslationList('language', 'de_AT');

print_r ($list);
// example key -> value pairs...
// [de] -> Deutsch
// [en] -> Englisch

// use one of the returned key as value for the getTranslation() method
// of another language
print Zend_Locale::getTranslation('de', 'language', 'zh');
// returns the translation for the language 'de' in chinese

Puede recibir esta información para todos los idiomas. Pero no toda la información está completamente disponible para todos los idiomas. Algunos de estos tipos también están disponibles a través de una función propia por simplicidad. Consulte esta lista para obtener información detallada.

Tabla 43.1. Detalles de getTranslationList($type = null, $locale = null, $value = null)

Tipo Descripción
Language Devuelve una lista localizada de todos los idiomas. La parte del idioma de la locale se devuelve como clave y la traducción como valor
Script Devuelve una lista localizada de todos los scripts. El script se devuelve como clave y la traducción como valor
Territory Devuelve una lista localizada de todos los territorios. Esto incluye países, continentes y territorios. Para obtener solo territorios y continentes, use '1' como valor. Para obtener solo países, use '2' como valor. La parte del país de la locale se usa como clave cuando corresponde. En caso contrario se usa el código ISO oficial de ese territorio. El territorio traducido se devuelve como valor. Si omite el valor obtendrá una lista con ambos.
Variant Devuelve una lista localizada de variantes conocidas de scripts. La variante se devuelve como clave y la traducción como valor
Key Devuelve una lista localizada de claves conocidas. Estas claves son valores genéricos usados en la traducción. Normalmente son calendario, colación y moneda. La clave se devuelve como clave del array y la traducción como valor
Type Devuelve una lista localizada de tipos conocidos de claves. Estas son variantes de tipos de representaciones de calendario y tipos de colaciones. Si usa 'collation' como valor obtendrá todos los tipos de colaciones devueltos. Si usa 'calendar' como valor obtendrá todos los tipos de calendarios devueltos. Si omite el valor obtendrá una lista con ambos devueltos. El tipo se usa como clave y la traducción como valor
Layout Devuelve una lista de reglas que describen cómo formatear partes especiales de texto
Characters Devuelve una lista de caracteres permitidos dentro de esta locale
Delimiters Devuelve una lista de caracteres de comillas permitidos para esta locale
Measurement Devuelve una lista de valores de medición conocidos. Esta lista está obsoleta
Months Devuelve una lista de todas las representaciones de meses dentro de esta locale. Hay varias representaciones diferentes que se devuelven todas como sub array. Si omite el valor obtendrá una lista de todos los meses del calendario 'gregorian' devuelta. Puede proporcionar cualquier calendario conocido como valor para obtener una lista de meses de ese calendario. Use Zend_Date por simplicidad
Month Devuelve una lista localizada de todos los nombres de meses para esta locale. Si omite el valor obtendrá el nombre completo normalmente usado del calendario gregoriano de los meses donde cada número de mes se usa como clave y el mes traducido se devuelve como valor. Puede obtener los meses para diferentes calendarios y formatos si proporciona un array como valor. La primera entrada del array debe ser el calendario, la segunda el contexto usado y la tercera el ancho a devolver. Use Zend_Date por simplicidad
Days Devuelve una lista de todas las representaciones de días dentro de esta locale. Hay varias representaciones diferentes que se devuelven todas como sub array. Si omite el valor obtendrá una lista de todos los días del calendario 'gregorian' devuelta. Puede proporcionar cualquier calendario conocido como valor para obtener una lista de días de ese calendario. Use Zend_Date por simplicidad
Day Devuelve una lista localizada de todos los nombres de días para esta locale. Si omite el valor obtendrá el nombre completo normalmente usado del calendario gregoriano de los días donde la abreviatura inglesa del día se usa como clave y el día traducido se devuelve como valor. Puede obtener los días para diferentes calendarios y formatos si proporciona un array como valor. La primera entrada del array debe ser el calendario, la segunda el contexto usado y la tercera el ancho a devolver. Use Zend_Date por simplicidad
Week Devuelve una lista de valores usados para los cálculos correctos de semana dentro de una locale. Use Zend_Date por simplicidad
Quarters Devuelve una lista de todas las representaciones de trimestres dentro de esta locale. Hay varias representaciones diferentes que se devuelven todas como sub array. Si omite el valor obtendrá una lista de todos los trimestres del calendario 'gregorian' devuelta. Puede proporcionar cualquier calendario conocido como valor para obtener una lista de trimestres de ese calendario devuelta
Quarter Devuelve una lista localizada de todos los nombres de trimestres para esta locale. Si omite el valor obtendrá el nombre completo normalmente usado del calendario gregoriano de los trimestres donde cada número de trimestre se usa como clave y el trimestre traducido se devuelve como valor. Puede obtener los trimestres para diferentes calendarios y formatos si proporciona un array como valor. La primera entrada del array debe ser el calendario, la segunda el contexto usado y la tercera el ancho a devolver
Eras Devuelve una lista de todas las representaciones de eras dentro de esta locale. Si omite el valor obtendrá una lista de todas las eras del calendario 'gregorian' devuelta. Puede proporcionar cualquier calendario conocido como valor para obtener una lista de eras de ese calendario devuelta
Era Devuelve una lista localizada de todos los nombres de eras para esta locale. Si omite el valor obtendrá el nombre completo normalmente usado del calendario gregoriano de las eras donde cada número de era se usa como clave y la era traducida se devuelve como valor. Puede obtener las eras para diferentes calendarios y formatos si proporciona un array como valor. La primera entrada del array debe ser el calendario y la segunda el ancho a devolver
Date Devuelve una lista localizada de todos los formatos de fecha para esta locale. El nombre del formato de fecha se usa como clave y el formato en sí como valor. Si omite el valor obtendrá los formatos de fecha del calendario gregoriano devueltos. Puede obtener los formatos de fecha para diferentes calendarios si proporciona el calendario deseado como cadena. Use Zend_Date por simplicidad
Time Devuelve una lista localizada de todos los formatos de hora para esta locale. El nombre del formato de hora se usa como clave y el formato en sí como valor. Si omite el valor obtendrá los formatos de hora del calendario gregoriano devueltos. Puede obtener los formatos de hora para diferentes calendarios si proporciona el calendario deseado como cadena. Use Zend_Date por simplicidad
DateTime Devuelve una lista localizada de todos los formatos de fecha y hora conocidos para esta locale. El nombre del formato de fecha y hora se usa como clave y el formato en sí como valor. Si omite el valor obtendrá los formatos de fecha y hora del calendario gregoriano devueltos. Puede obtener los formatos de fecha y hora para diferentes calendarios si proporciona el calendario deseado como cadena. Use Zend_Date por simplicidad
DateItem Devuelve una lista de formatos por defecto para los elementos de fecha u hora dados
DateInterval Devuelve una lista de formatos de fecha u hora que se usan cuando desea mostrar intervalos. La lista es un array multidimensional donde la primera dimensión es el formato de intervalo, y la segunda dimensión es el token con la mayor diferencia.
Field Devuelve una lista localizada de campos de fecha que se pueden usar para mostrar calendarios o cadenas de fecha como 'month' o 'year' en el idioma deseado. Si omite el valor obtendrá esta lista para el calendario gregoriano devuelta. Puede obtener la lista para diferentes calendarios si proporciona el calendario deseado como cadena
Relative Devuelve una lista localizada de fechas relativas que se pueden usar para mostrar fechas relativas textuales como 'yesterday' o 'tomorrow' en el idioma deseado. Si omite el valor obtendrá esta lista para el calendario gregoriano devuelta. Puede obtener la lista para diferentes calendarios si proporciona el calendario deseado como cadena
Symbols Devuelve una lista localizada de caracteres usados para representaciones de números
NameToCurrency Devuelve una lista localizada de nombres de monedas. La moneda se usa como clave y el nombre traducido como valor. Use Zend_Currency por simplicidad
CurrencyToName Devuelve una lista de monedas para nombres localizados. El nombre traducido se usa como clave y la moneda como valor. Use Zend_Currency por simplicidad
CurrencySymbol Devuelve una lista de símbolos de moneda localizados conocidos para las monedas. La moneda se usa como clave y el símbolo como valor. Use Zend_Currency por simplicidad
Question Devuelve una lista de cadenas localizadas para aceptación ('yes') y negación ('no'). Use el método getQuestion de Zend_Locale por simplicidad
CurrencyFraction Devuelve una lista de fracciones para valores de moneda. La moneda se usa como clave y la fracción como valor entero. Use Zend_Currency por simplicidad
CurrencyRounding Devuelve una lista de cómo redondear cada moneda. La moneda se usa como clave y el redondeo como valor entero. Use Zend_Currency por simplicidad
CurrencyToRegion Devuelve una lista de monedas que se sabe se usan dentro de una región. El valor ISO3166 ('region') se usa como clave del array y el valor ISO4217 ('currency') como valor del array. Use Zend_Currency por simplicidad
RegionToCurrency Devuelve una lista de regiones donde se usa una moneda. El valor ISO4217 ('currency') se usa como clave del array y el valor ISO3166 ('region') como valor del array. Cuando una moneda se usa en varias regiones, estas regiones se separan con un espacio en blanco. Use Zend_Currency por simplicidad
RegionToTerritory Devuelve una lista de territorios con los países o subterritorios incluidos dentro de ese territorio. El código de territorio ISO ('territory') se usa como clave del array y el valor ISO3166 ('region') como valor del array. Cuando un territorio contiene varias regiones, estas regiones se separan con un espacio en blanco
TerritoryToRegion Devuelve una lista de regiones y los territorios donde se encuentran ubicadas estas regiones. El código ISO3166 ('region') se usa como clave del array y el código de territorio ISO ('territory') como valor del array. Cuando una región está ubicada en varios territorios, estos territorios se separan con un espacio en blanco
ScriptToLanguage Devuelve una lista de scripts que se usan dentro de un idioma. El código de idioma se usa como clave del array y el código de script como valor del array. Cuando un idioma contiene varios scripts, estos scripts se separan con un espacio en blanco
LanguageToScript Devuelve una lista de idiomas que usan un script. El código de script se usa como clave del array y el código de idioma como valor del array. Cuando un script se usa en varios idiomas, estos idiomas se separan con un espacio en blanco
TerritoryToLanguage Devuelve una lista de idiomas y los países donde se hablan. El idioma se usa como clave del array y el código de país como valor del array. Cuando un idioma se habla en varios países, estos países se separan con un espacio en blanco
LanguageToTerritory Devuelve una lista de países y los idiomas que se hablan dentro de ellos. El código de país se usa como clave del array y el código de idioma como valor del array. Cuando se hablan varios idiomas dentro de un territorio, entonces estos idiomas se separan con un espacio en blanco
TimezoneToWindows Devuelve una lista de zonas horarias de windows y la zona horaria ISO relacionada. La zona horaria de windows se usa como clave del array y la zona horaria ISO como valor del array
WindowsToTimezone Devuelve una lista de zonas horarias ISO y la zona horaria de windows relacionada. La zona horaria ISO se usa como clave del array y la zona horaria de windows como valor del array
TerritoryToTimezone Devuelve una lista de regiones o territorios y la zona horaria ISO relacionada. La zona horaria ISO se usa como clave del array y el código de territorio como valor del array
TimezoneToTerritory Devuelve una lista de zonas horarias y el código de región o territorio relacionado. El código de región o territorio se usa como clave del array y la zona horaria ISO como valor del array
CityToTimezone Devuelve una lista localizada de ciudades que se pueden usar como traducción para una zona horaria relacionada. No para todas las zonas horarias existe una traducción, pero para un usuario, la ciudad real escrita en su idioma es más precisa que el nombre ISO de esa zona horaria. La zona horaria ISO se usa como clave del array y la ciudad traducida como valor del array
TimezoneToCity Devuelve una lista de zonas horarias para nombres de ciudad localizados. La ciudad localizada se usa como clave del array y el nombre de zona horaria ISO como valor del array
PhoneToTerritory Devuelve una lista de códigos telefónicos que se sabe se usan dentro de un territorio. El territorio (región) se usa como clave del array y el código telefónico como valor del array
TerritoryToPhone Devuelve una lista de territorios donde se usa un código telefónico. El código telefónico se usa como clave del array y el territorio (región) como valor del array. Cuando un código telefónico se usa en varios territorios, estos territorios se separan con un espacio en blanco
NumericToTerritory Devuelve una lista de códigos numéricos de 3 dígitos para territorios. El territorio (región) se usa como clave del array y el código numérico de 3 dígitos como valor del array
TerritoryToNumeric Devuelve una lista de territorios con su código numérico de 3 dígitos. El código numérico de 3 dígitos se usa como clave del array y el territorio (región) como valor del array
Alpha3ToTerritory Devuelve una lista de códigos de caracteres de 3 signos para territorios. El territorio (región) se usa como clave del array y el código de caracteres de 3 signos como valor del array
TerritoryToAlpha3 Devuelve una lista de territorios con su código de caracteres de 3 signos. El código de caracteres de 3 signos se usa como clave del array y el territorio (región) como valor del array
PostalToTerritory Devuelve una lista de territorios con una expresión regular para códigos postales que están incluidos dentro de ese territorio. El código de territorio ISO ('territory') se usa como clave del array y la expresión regular como valor del array.
NumberingSystem Devuelve una lista de scripts con la notación de dígitos usada dentro del script
FallbackToChar Devuelve una lista de caracteres de sustitución para caracteres unicode usados con frecuencia. Esto se puede usar para reemplazar "©" por "(C)", por ejemplo
CharToFallback Devuelve una lista de caracteres unicode para caracteres de sustitución usados con frecuencia. Esto se puede usar para reemplazar "(C)" por "©", por ejemplo
LocaleUpgrade Devuelve una lista de dependencias de locale que se pueden usar para actualizar un idioma a una locale completamente cualificada
Unit Devuelve una lista de unidades de calendario localizadas. Esto se puede usar para traducir automáticamente las cadenas "day", "month", etc.

Si necesita un único valor traducido, puede usar el método getTranslation(). Siempre devuelve una cadena, pero acepta algunos tipos diferentes que el método getTranslationList(). El valor también es el mismo que antes, con una diferencia. Debe indicar el detalle que desea que se devuelva como valor adicional.

[Note] Nota

Dado que casi siempre debe indicar un valor como detalle, este parámetro debe darse como primer parámetro. Esto difiere del método getTranslationList().

Consulte la siguiente tabla para obtener información detallada:

Tabla 43.2. Detalles de getTranslation($value = null, $type = null, $locale = null)

Tipo Descripción
Language Devuelve una traducción para un idioma. Para seleccionar la traducción deseada debe proporcionar el código de idioma como valor
Script Devuelve una traducción para un script. Para seleccionar la traducción deseada debe proporcionar el código de script como valor
Territory o Country Devuelve una traducción para un territorio. Esto puede incluir países, continentes y territorios. Para seleccionar la variante deseada debe proporcionar el código de territorio como valor
Variant Devuelve una traducción para una variante de script. Para seleccionar la variante deseada debe proporcionar el código de variante como valor
Key Devuelve una traducción para claves conocidas. Estas claves son valores genéricos usados en la traducción. Normalmente son calendario, colación y moneda. Para seleccionar la clave deseada debe proporcionar el código de clave como valor
DefaultCalendar Devuelve el calendario por defecto para la locale dada. Para la mayoría de las locales será 'gregorian'. Use Zend_Date por simplicidad
MonthContext Devuelve el contexto por defecto para los meses usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
DefaultMonth Devuelve el formato por defecto para los meses usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Month Devuelve una traducción para un mes. Debe proporcionar el número del mes como valor entero. Debe estar entre 1 y 12. Si desea recibir datos para otros calendarios, contextos o formatos, entonces debe proporcionar un array en lugar de un entero con los valores esperados. El array debe verse así: array( 'calendar', 'context', 'format', 'month number'). Si solo proporciona un entero, entonces los valores por defecto son el calendario 'gregorian', el contexto 'format' y el formato 'wide'. Use Zend_Date por simplicidad
DayContext Devuelve el contexto por defecto para los días usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
DefaultDay Devuelve el formato por defecto para los días usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Day Devuelve una traducción para un día. Debe proporcionar la abreviatura inglesa del día como valor de cadena ('sun', 'mon', etc.). Si desea recibir datos para otros calendarios, contextos o formatos, entonces debe proporcionar un array en lugar de un entero con los valores esperados. El array debe verse así: array('calendar', 'context', 'format', 'day abbreviation'). Si solo proporciona una cadena, entonces los valores por defecto son el calendario 'gregorian', el contexto 'format' y el formato 'wide'. Use Zend_Date por simplicidad
Quarter Devuelve una traducción para un trimestre. Debe proporcionar el número del trimestre como entero y debe estar entre 1 y 4. Si desea recibir datos para otros calendarios, contextos o formatos, entonces debe proporcionar un array en lugar de un entero con los valores esperados. El array debe verse así: array('calendar', 'context', 'format', 'quarter number'). Si solo proporciona una cadena, entonces los valores por defecto son el calendario 'gregorian', el contexto 'format' y el formato 'wide'
Am Devuelve la traducción de 'AM' en la locale esperada. Si desea recibir datos para otros calendarios, proporcione una cadena con el calendario esperado. Si omite el valor entonces se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Pm Devuelve la traducción de 'PM' en la locale esperada. Si desea recibir datos para otros calendarios, proporcione una cadena con el calendario esperado. Si omite el valor entonces se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Era Devuelve una traducción para una era dentro de una locale. Debe proporcionar el número de era como cadena o entero. Si desea recibir datos para otros calendarios o formatos, entonces debe proporcionar un array en lugar del número de era con los valores esperados. El array debe verse así: array('calendar', 'format', 'era number'). Si solo proporciona una cadena, entonces los valores por defecto son el calendario 'gregorian' y el formato 'abbr'
DefaultDate Devuelve el formato de fecha por defecto usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Date Devuelve el formato de fecha para un calendario o formato dado dentro de una locale. Si omite el valor entonces se usará el calendario 'gregorian' con el formato 'medium'. Si proporciona una cadena, se usará el calendario 'gregorian' con el formato dado. O también puede proporcionar un array que deberá verse así: array('calendar', 'format'). Use Zend_Date por simplicidad
DefaultTime Devuelve el formato de hora por defecto usado dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
Time Devuelve el formato de hora para un calendario o formato dado dentro de una locale. Si omite el valor entonces se usará el calendario 'gregorian' con el formato 'medium'. Si proporciona una cadena, se usará el calendario 'gregorian' con el formato dado. O también puede proporcionar un array que deberá verse así: array('calendar', 'format'). Use Zend_Date por simplicidad
DateTime Devuelve el formato de fecha y hora para la locale dada, el cual indica cómo mostrar fecha y hora en la misma cadena dentro del calendario dado. Si omite el valor se usará el calendario 'gregorian'. Use Zend_Date por simplicidad
DateItem Devuelve el formato por defecto para un elemento de fecha u hora dado
DateInterval Devuelve el formato de intervalo para un formato de fecha u hora dado. El primer valor es el formato de calendario, normalmente 'gregorian'. El segundo valor es el formato de intervalo y el tercer valor el token con la mayor diferencia. Por ejemplo: array('gregorian', 'yMMMM', 'y') devuelve el formato de intervalo para el formato de fecha 'yMMMM' donde 'y' tiene la mayor diferencia.
Field Devuelve un campo de fecha traducido que se puede usar para mostrar calendarios o cadenas de fecha como 'month' o 'year' en el idioma deseado. Debe proporcionar el campo que debe devolverse como cadena. En este caso se usará el calendario 'gregorian'. Puede obtener el campo para otros formatos de calendario si proporciona un array que debe verse así: array('calendar', 'date field')
Relative Devuelve una fecha traducida relativa al día de hoy, que puede incluir cadenas de fecha como 'yesterday' o 'tomorrow' en el idioma deseado. Debe proporcionar el número de días relativos a mañana para recibir la cadena esperada. Ayer sería '-1', mañana '1', y así sucesivamente. Esto usará el calendario 'gregorian'. Si desea obtener fechas relativas para otros calendarios, deberá proporcionar un array que deberá verse así: array('calendar', 'relative days'). Use Zend_Date por simplicidad
DecimalNumber Devuelve el formato para números decimales dentro de una locale dada. Use Zend_Locale_Format por simplicidad
ScientificNumber Devuelve el formato para números científicos dentro de una locale dada
PercentNumber Devuelve el formato para números de porcentaje dentro de una locale dada
CurrencyNumber Devuelve el formato para mostrar números de moneda dentro de una locale dada. Use Zend_Currency por simplicidad
NameToCurrency Devuelve el nombre traducido para una moneda dada. La moneda debe proporcionarse en formato ISO, que es por ejemplo 'EUR' para la moneda 'euro'. Use Zend_Currency por simplicidad
CurrencyToName Devuelve una moneda para un nombre localizado dado. Use Zend_Currency por simplicidad
CurrencySymbol Devuelve el símbolo usado para una moneda dentro de una locale dada. No para todas las monedas existe un símbolo. Use Zend_Currency por simplicidad
Question Devuelve una cadena localizada para aceptación ('yes') y negación ('no'). Debe proporcionar 'yes' o 'no' como valor para recibir la cadena esperada. Use el método getQuestion de Zend_Locale por simplicidad
CurrencyFraction Devuelve la fracción a usar para una moneda dada. Debe proporcionar la moneda como valor ISO. Use Zend_Currency por simplicidad
CurrencyRounding Devuelve cómo redondear una moneda dada. Debe proporcionar la moneda como valor ISO. Si omite la moneda entonces se devolverá el redondeo 'DEFAULT'. Use Zend_Currency por simplicidad
CurrencyToRegion Devuelve la moneda para una región dada. El código de región debe proporcionarse como cadena ISO3166, por ejemplo 'AT' para austria. Use Zend_Currency por simplicidad
RegionToCurrency Devuelve las regiones donde se usa una moneda. La moneda debe proporcionarse como código ISO4217, por ejemplo 'EUR' para euro. Cuando una moneda se usa en múltiples regiones, estas regiones se separan con un carácter de espacio en blanco. Use Zend_Currency por simplicidad
RegionToTerritory Devuelve las regiones para un territorio dado. El territorio debe proporcionarse como cadena ISO4217, por ejemplo '001' para world. Las regiones dentro de este territorio se separan con un carácter de espacio en blanco
TerritoryToRegion Devuelve los territorios donde se ubica una región dada. La región debe proporcionarse en cadena ISO3166, por ejemplo 'AT' para austria. Cuando una región está ubicada en múltiples territorios, entonces estos territorios se separan con un carácter de espacio en blanco
ScriptToLanguage Devuelve los scripts que se usan dentro de un idioma dado. El idioma debe proporcionarse como código de idioma ISO, por ejemplo 'en' para inglés. Cuando se usan múltiples scripts dentro de un idioma, estos scripts se separan con un carácter de espacio en blanco
LanguageToScript Devuelve los idiomas que se usan dentro de un script dado. El script debe proporcionarse como código de script ISO, por ejemplo 'Latn' para latín. Cuando un script se usa en múltiples idiomas, estos idiomas se separan con un carácter de espacio en blanco
TerritoryToLanguage Devuelve el territorio donde se usa un idioma dado. El idioma debe proporcionarse como código de idioma ISO, por ejemplo 'en' para inglés. Cuando el idioma dado se habla dentro de múltiples territorios, entonces estos territorios se separan con un carácter de espacio en blanco
LanguageToTerritory Devuelve el idioma que se habla dentro de un territorio dado. El territorio debe proporcionarse como código ISO3166, por ejemplo 'IT' para italia. Cuando se hablan múltiples idiomas dentro del territorio dado, entonces estos idiomas se separan con un carácter de espacio en blanco
TimezoneToWindows Devuelve una zona horaria ISO para una zona horaria de windows dada
WindowsToTimezone Devuelve una zona horaria de windows para una zona horaria ISO dada
TerritoryToTimezone Devuelve el territorio para una zona horaria ISO dada
TimezoneToTerritory Devuelve la zona horaria ISO para un territorio dado
CityToTimezone Devuelve la ciudad localizada para una zona horaria ISO dada. No para todas las zonas horarias existe una traducción de ciudad
TimezoneToCity Devuelve la zona horaria ISO para un nombre de ciudad localizado dado. No para todas las ciudades existe una zona horaria
PhoneToTerritory Devuelve el código telefónico para un territorio (región) dado. El código de territorio debe proporcionarse como cadena ISO3166, por ejemplo 'AT' para austria
TerritoryToPhone Devuelve el territorio (región) donde se usa un código telefónico. El código telefónico debe proporcionarse como código entero simple, por ejemplo '43' para +43. Cuando un código telefónico se usa en múltiples territorios (regiones), estos territorios se separan con un carácter de espacio en blanco
NumericToTerritory Devuelve el código numérico de 3 dígitos para un territorio (región) dado. El código de territorio debe proporcionarse como cadena ISO3166 por ejemplo 'AT' para austria
TerritoryToNumeric Devuelve el territorio (región) para un código numérico de 3 dígitos. El código numérico de 3 dígitos debe proporcionarse como código entero simple, por ejemplo '43'
Alpha3ToTerritory Devuelve el código de caracteres de 3 signos para un territorio (región) dado. El código de territorio debe proporcionarse como cadena ISO3166 por ejemplo 'AT' para austria
TerritoryToAlpha3 Devuelve el territorio (región) para un código de caracteres de 3 signos
PostalToTerritory Devuelve una expresión regular para códigos postales para un territorio dado. El territorio debe proporcionarse como cadena ISO4217, por ejemplo '001' para world
NumberingSystem Devuelve los scripts con la notación de dígitos usada dentro de este script
FallbackToChar Devuelve un carácter de sustitución para un carácter unicode usado con frecuencia. Esto se puede usar para reemplazar "©" por "(C)", por ejemplo
CharToFallback Devuelve un carácter unicode para un carácter de sustitución usado con frecuencia. Esto se puede usar para reemplazar "(C)" por "©", por ejemplo
LocaleUpgrade Devuelve dependencias de locale para un idioma dado, que se pueden usar para actualizar este idioma a una locale completamente cualificada
Unit Devuelve una unidad de calendario localizada. Esto se puede usar para traducir automáticamente las cadenas "day", "month", etc. El primer parámetro debe ser el tipo, y el segundo parámetro debe ser el conteo

[Note] Nota

Con Zend Framework 1.5 se han renombrado varios tipos antiguos. Esto se ha hecho debido a varios tipos nuevos, algunos errores ortográficos y para aumentar la usabilidad. Consulte esta tabla para ver una lista de los tipos antiguos a nuevos:

Tabla 43.3. Diferencias entre Zend Framework 1.0 y 1.5

Tipo antiguo Tipo nuevo
Country Territory (con valor '2')
Calendar Type (con valor 'calendar')
Month_Short Month (con array('gregorian', 'format', 'abbreviated')
Month_Narrow Month (con array('gregorian', 'stand-alone', 'narrow')
Month_Complete Months
Day_Short Day (con array('gregorian', 'format', 'abbreviated')
Day_Narrow Day (con array('gregorian', 'stand-alone', 'narrow')
DateFormat Date
TimeFormat Time
Timezones CityToTimezone
Currency NameToCurrency
Currency_Sign CurrencySymbol
Currency_Detail CurrencyToRegion
Territory_Detail TerritoryToRegion
Language_Detail LanguageToTerritory

El siguiente ejemplo demuestra cómo obtener los nombres de las cosas en diferentes idiomas.

Ejemplo 43.19. getTranslationList

// prints the names of all countries in German language
print_r(Zend_Locale::getTranslationList('country', 'de'));

El siguiente ejemplo muestra cómo encontrar el nombre de un idioma en otro idioma, cuando no se conoce el código de país iso de dos letras.

Ejemplo 43.20. Convertir el nombre de un país en un idioma a otro

$code2name = Zend_Locale::getLanguageTranslationList('en_US');
$name2code = array_flip($code2name);
$frenchCode = $name2code['French'];
echo Zend_Locale::getLanguageTranslation($frenchCode, 'de_AT');
// output is the German name of the French language

Para generar una lista de todos los idiomas conocidos por Zend_Locale, con cada nombre de idioma mostrado en su propio idioma, pruebe el siguiente ejemplo en una página web. De forma similar, getCountryTranslationList() y getCountryTranslation() podrían usarse para crear una tabla que asocie los nombres de las regiones en su idioma nativo con los nombres de las regiones mostrados en otro idioma. Use un bloque try .. catch para manejar excepciones que ocurren al usar una locale que no existe. No todos los idiomas son también locales. En el ejemplo siguiente se ignoran las excepciones para evitar una terminación anticipada.

Ejemplo 43.21. Todos los idiomas escritos en su propio idioma

$list = Zend_Locale::getLanguageTranslationList('auto');

foreach($list as $language => $content) {
    try {
        $output = Zend_Locale::getLanguageTranslation($language, $language);
        if (is_string($output)) {
            print "\n<br>[".$language."] ".$output;
        }
    } catch (Exception $e) {
        continue;
    }
}

43.2.8. Obtención de traducciones para "sí" y "no"

Con frecuencia, los programas necesitan solicitar una respuesta de "sí" o "no" al usuario. Use getQuestion() para obtener un array que contiene la(s) palabra(s) correcta(s) o cadenas de expresión regular a usar para preguntar al usuario en una $locale particular (por defecto la locale del objeto actual). El array devuelto contendrá la siguiente información:

  • yes and no: Una representación genérica en cadena para las respuestas de sí y no. Contendrá la primera y más genérica respuesta de yesarray y noarray.

    yesarray and noarray: Un array con todas las respuestas conocidas de sí y no. Varios idiomas tienen más de dos respuestas. En general, es la cadena completa y su abreviatura.

    yesexpr and noexpr: Una expresión regular generada que le permite manejar la respuesta del usuario y buscar sí o no.

Toda esta información está, por supuesto, localizada y depende de la locale establecida. Vea el siguiente ejemplo para la información que puede recibir:

Ejemplo 43.22. getQuestion()

$locale = new Zend_Locale();
// Question strings
print_r($locale->getQuestion('de'));

- - - Output - - -

Array
(
    [yes] => ja
    [no] => nein
    [yesarray] => Array
        (
            [0] => ja
            [1] => j
        )

    [noarray] => Array
        (
            [0] => nein
            [1] => n
        )

    [yesexpr] => ^([jJ][aA]?)|([jJ]?)
    [noexpr] => ^([nN]([eE][iI][nN])?)|([nN]?)
)

[Note] Nota

Hasta la 1.0.3 yesabbr de los datos de locale subyacentes también estaba disponible. Desde la 1.5 esta información ya no está disponible de forma independiente, pero encontrará la información dentro de yesarray.

43.2.9. Obtener una lista de todas las locales conocidas

A veces querrá obtener una lista de todas las locales conocidas. Esto se puede usar para varias tareas, como la creación de un cuadro de selección. Para este propósito puede usar el método estático getLocaleList(), que devolverá una lista de todas las locales conocidas.

Ejemplo 43.23. getLocaleList()

$localelist = Zend_Locale::getLocaleList();

[Note] Nota

Tenga en cuenta que las locales se devuelven como clave del array que recibirá. El valor siempre es un booleano TRUE.

43.2.10. Detección de locales

Cuando desee detectar si una entrada dada, independientemente de su origen, es una locale, debe usar el método estático isLocale(). El primer parámetro de este método es la cadena que desea comprobar.

Ejemplo 43.24. Detección simple de locale

$input = 'to_RU';
if (Zend_Locale::isLocale($input)) {
    print "'{$input}' is a locale";
} else {
    print "Sorry... the given input is no locale";
}

Como puede ver, la salida de este método siempre es un booleano. Solo hay una razón por la que podría obtener una excepción al llamar a este método. Cuando su sistema no proporciona ninguna locale y Zend Framework no puede detectarla automáticamente. Normalmente esto indica que hay un problema con su sistema operativo en combinación con el setlocale() de PHP.

También debe tener en cuenta que cualquier cadena de locale dada se degradará automáticamente si la parte de región no existe para esta locale. En nuestro ejemplo anterior, el idioma 'to' no existe en la región 'RU', pero aun así obtendrá TRUE como resultado, ya que Zend_Locale puede trabajar con la entrada dada.

Aun así, a veces es útil evitar esta degradación automática, y aquí es donde entra en juego el segundo parámetro de isLocale(). El parámetro strict por defecto es FALSE y se puede usar para evitar la degradación cuando se establece en TRUE.

Ejemplo 43.25. Detección estricta de locale

$input = 'to_RU';
if (Zend_Locale::isLocale($input, true)) {
    print "'{$input}' is a locale";
} else {
    print "Sorry... the given input is no locale";
}

Ahora que puede detectar si una cadena dada es una locale, podría agregar un comportamiento consciente de la locale a sus propias clases. Pero pronto notará que esto siempre lleva a las mismas 15 líneas de código. Algo como el siguiente ejemplo:

Ejemplo 43.26. Implementar un comportamiento consciente de la locale

if ($locale === null) {
    $locale = new Zend_Locale();
}

if (!Zend_Locale::isLocale($locale, true, false)) {
    if (!Zend_Locale::isLocale($locale, false, false)) {
        throw new Zend_Locale_Exception(
            "The locale '$locale' is no known locale");
    }

    $locale = new Zend_Locale($locale);
}

if ($locale instanceof Zend_Locale) {
    $locale = $locale->toString();
}

Con Zend Framework 1.8 agregamos un método estático findLocale() que devuelve una cadena de locale con la que puede trabajar. Procesa las siguientes tareas:

  • Detecta si una cadena dada es una locale

  • Degrada la locale si no existe en la región dada

  • Actualiza la locale cuando se detecta como una región sin idioma

  • Devuelve una locale establecida previamente a nivel de aplicación si no se proporciona ninguna entrada

  • Detecta la locale del navegador cuando las detecciones anteriores fallaron

  • Detecta la locale del entorno cuando las detecciones anteriores fallaron

  • Detecta la locale del framework cuando las detecciones anteriores fallaron

  • Siempre devuelve una cadena que representa la locale encontrada.

El siguiente ejemplo muestra cómo estas comprobaciones y el código anterior se pueden simplificar con una única llamada:

Ejemplo 43.27. Comportamiento consciente de la locale como en Zend Framework 1.8

$locale = Zend_Locale::findLocale($inputstring);