Acesso mais Simples aos Dados do Componente Intl no Symfony 4.3
O projeto ICU (“International Components for Unicode”) é um conjunto amplamente utilizado de bibliotecas para fornecer suporte à globalização para aplicações. Como parte de sua missão, eles fornecem dados localizados comumente necessários em projetos (por exemplo, o nome de todos os países em todos os idiomas, o nome e os dados básicos de todas as moedas em todos os idiomas, etc.)
O componente Intl fornece os métodos necessários para acessar os dados localizados:
use Symfony\Component\Intl\Intl;
\Locale::setDefault('en');
$languages = Intl::getLanguageBundle()->getLanguageNames();
// => ['ab' => 'Abkhazian', ...]
$language = Intl::getLanguageBundle()->getLanguageName('de');
// => 'German'
$countries = Intl::getRegionBundle()->getCountryNames();
// => ['AF' => 'Afghanistan', ...]
$country = Intl::getRegionBundle()->getCountryName('GB');
// => 'United Kingdom'
$currency = Intl::getCurrencyBundle()->getCurrencyName('INR');
// => 'Indian Rupee'
$symbol = Intl::getCurrencyBundle()->getCurrencySymbol('INR');
// => '₹'
$fractionDigits = Intl::getCurrencyBundle()->getFractionDigits('INR');
// => 2
Embora funcione muito bem, no Symfony 4.3 ele foi melhorado para facilitar ainda mais e simplificar a estrutura de classes subjacente. O novo código é mais conciso e fácil de ler:
use Symfony\Component\Intl\Currencies;
use Symfony\Component\Intl\Languages;
use Symfony\Component\Intl\Regions;
\Locale::setDefault('en');
$languages = Languages::getNames();
// => ['ab' => 'Abkhazian', ...]
$language = Languages::getName('de');
// => 'German'
$countries = Regions::getNames();
// => ['AF' => 'Afghanistan', ...]
$country = Regions::getName('GB');
// => 'United Kingdom'
$currency = Currencies::getName('INR');
// => 'Indian Rupee'
$symbol = Currencies::getSymbol('INR');
// => '₹'
$fractionDigits = Currencies::getFractionDigits('INR');
// => 2
Tradução de: New in Symfony 4.3: Simpler access to Intl data