Nuevo en Symfony 4.3: Acceso más simple a los datos de internacionalización
El proyecto ICU ("International Components for Unicode") es un conjunto de librerías para la internacionalización de aplicaciones de software. Entre sus proyectos está la traducción de cierta información básica que utilizan muchas aplicaciones. Por ejemplo, el proyecto ICU proporciona el nombre de todos los países traducidos a todos los idiomas, el nombre e información básica de todas las divisas del mundo, etc.
El componente Intl de Symfony proporciona métodos para acceder fácilmente a esa información:
use Symfony\Component\Intl\Intl; \Locale::setDefault('es'); $languages = Intl::getLanguageBundle()->getLanguageNames(); // => ['ab' => 'abjasio', ..., 'sq' => 'albanés', 'de' => 'alemán', ..., 'zu' => 'zulú'] $language = Intl::getLanguageBundle()->getLanguageName('de'); // => 'alemán' $countries = Intl::getRegionBundle()->getCountryNames(); // => ['AF' => 'Afganistán', 'AL' => 'Albania', 'DE' => 'Alemania', ...] $country = Intl::getRegionBundle()->getCountryName('GB'); // => 'Reino Unido' $currency = Intl::getCurrencyBundle()->getCurrencyName('INR'); // => 'rupia india' $symbol = Intl::getCurrencyBundle()->getCurrencySymbol('INR'); // => '₹' $fractionDigits = Intl::getCurrencyBundle()->getFractionDigits('INR'); // => 2
Aunque todo esto funciona bien, en Symfony 4.3 hemos decidido ir un poco más allá y simplificar al máximo el acceso a esta información. Así que tu código ahora será más conciso y fácil de leer:
use Symfony\Component\Intl\Currencies; use Symfony\Component\Intl\Languages; use Symfony\Component\Intl\Regions; \Locale::setDefault('es'); $languages = Languages::getNames(); // => ['ab' => 'abjasio', ..., 'sq' => 'albanés', 'de' => 'alemán', ..., 'zu' => 'zulú'] $language = Languages::getName('de'); // => 'alemán' $countries = Countries::getNames(); // => ['AF' => 'Afganistán', 'AL' => 'Albania', 'DE' => 'Alemania', ...] $country = Countries::getName('GB'); // => 'Reino Unido' $currency = Currencies::getName('INR'); // => 'rupia india' $symbol = Currencies::getSymbol('INR'); // => '₹' $fractionDigits = Currencies::getFractionDigits('INR'); // => 2
Además, también hemos añadido métodos exists()
en todas las clases para que
puedas comprobar si es válido el código de país, idioma, divisa, etc.
$isValidLanguage = Languages::exists($languageCode); $isValidScript = Scripts::exists($scriptCode); $isValidRegion = Regions::exists($regionCode); $isValidLocale = Locales::exists($localeCode); $isValidCurrency = Currencies::exists($currencyCode);
Esta funcionalidad fue contribuida por Roland Franssen en el pull request #28846.
Fuente: New in Symfony 4.3: Simpler access to Intl data
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.