mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-05 15:07:11 +00:00
IntlExtension > Handle MissingResourceException
This commit is contained in:
committed by
Fabien Potencier
parent
a086a3704d
commit
2df6814c27
@@ -13,6 +13,7 @@ namespace Twig\Extra\Intl;
|
||||
|
||||
use Symfony\Component\Intl\Countries;
|
||||
use Symfony\Component\Intl\Currencies;
|
||||
use Symfony\Component\Intl\Exception\MissingResourceException;
|
||||
use Symfony\Component\Intl\Languages;
|
||||
use Symfony\Component\Intl\Locales;
|
||||
use Symfony\Component\Intl\Timezones;
|
||||
@@ -156,37 +157,65 @@ final class IntlExtension extends AbstractExtension
|
||||
|
||||
public function getCountryName(string $country, string $locale = null): string
|
||||
{
|
||||
return Countries::getName($country, $locale);
|
||||
try {
|
||||
return Countries::getName($country, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $country;
|
||||
}
|
||||
}
|
||||
|
||||
public function getCurrencyName(string $currency, string $locale = null): string
|
||||
{
|
||||
return Currencies::getName($currency, $locale);
|
||||
try {
|
||||
return Currencies::getName($currency, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $currency;
|
||||
}
|
||||
}
|
||||
|
||||
public function getCurrencySymbol(string $currency, string $locale = null): string
|
||||
{
|
||||
return Currencies::getSymbol($currency, $locale);
|
||||
try {
|
||||
return Currencies::getSymbol($currency, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $currency;
|
||||
}
|
||||
}
|
||||
|
||||
public function getLanguageName(string $language, string $locale = null): string
|
||||
{
|
||||
return Languages::getName($language, $locale);
|
||||
try {
|
||||
return Languages::getName($language, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $language;
|
||||
}
|
||||
}
|
||||
|
||||
public function getLocaleName(string $data, string $locale = null): string
|
||||
{
|
||||
return Locales::getName($data, $locale);
|
||||
try {
|
||||
return Locales::getName($data, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
public function getTimezoneName(string $timezone, string $locale = null): string
|
||||
{
|
||||
return Timezones::getName($timezone, $locale);
|
||||
try {
|
||||
return Timezones::getName($timezone, $locale);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return $timezone;
|
||||
}
|
||||
}
|
||||
|
||||
public function getCountryTimezones(string $country): array
|
||||
{
|
||||
return Timezones::forCountryCode($country);
|
||||
try {
|
||||
return Timezones::forCountryCode($country);
|
||||
} catch (MissingResourceException $exception) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public function formatCurrency($amount, string $currency, array $attrs = [], string $locale = null): string
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
--TEST--
|
||||
"country_name" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|country_name }}
|
||||
{{ 'FR'|country_name }}
|
||||
{{ 'US'|country_name }}
|
||||
{{ 'US'|country_name('fr') }}
|
||||
@@ -8,6 +9,7 @@
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
France
|
||||
United States
|
||||
États-Unis
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
--TEST--
|
||||
"country_timezones" function
|
||||
--TEMPLATE--
|
||||
{{ country_timezones('UNKNOWN')|length }}
|
||||
{{ country_timezones('FR')|join(', ') }}
|
||||
{{ country_timezones('US')|join(', ') }}
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
0
|
||||
Europe/Paris
|
||||
America/Adak, America/Anchorage, America/Boise, America/Chicago, America/Denver, America/Detroit, America/Indiana/Knox, America/Indiana/Marengo, America/Indiana/Petersburg, America/Indiana/Tell_City, America/Indiana/Vevay, America/Indiana/Vincennes, America/Indiana/Winamac, America/Indianapolis, America/Juneau, America/Kentucky/Monticello, America/Los_Angeles, America/Louisville, America/Menominee, America/Metlakatla, America/New_York, America/Nome, America/North_Dakota/Beulah, America/North_Dakota/Center, America/North_Dakota/New_Salem, America/Phoenix, America/Sitka, America/Yakutat, Pacific/Honolulu
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
--TEST--
|
||||
"currency_name" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|currency_name }}
|
||||
{{ 'EUR'|currency_name }}
|
||||
{{ 'JPY'|currency_name }}
|
||||
{{ 'EUR'|currency_name('fr') }}
|
||||
@@ -8,6 +9,7 @@
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
Euro
|
||||
Japanese Yen
|
||||
euro
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
--TEST--
|
||||
"currency_symbol" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|currency_symbol }}
|
||||
{{ 'EUR'|currency_symbol }}
|
||||
{{ 'JPY'|currency_symbol }}
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
€
|
||||
¥
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
--TEST--
|
||||
"language_name" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|language_name }}
|
||||
{{ 'de'|language_name }}
|
||||
{{ 'fr'|language_name }}
|
||||
{{ 'de'|language_name('fr') }}
|
||||
@@ -9,6 +10,7 @@
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
German
|
||||
French
|
||||
allemand
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
--TEST--
|
||||
"locale_name" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|locale_name }}
|
||||
{{ 'de'|locale_name }}
|
||||
{{ 'fr'|locale_name }}
|
||||
{{ 'de'|locale_name('fr') }}
|
||||
@@ -9,6 +10,7 @@
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
German
|
||||
French
|
||||
allemand
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
--TEST--
|
||||
"timezone_name" filter
|
||||
--TEMPLATE--
|
||||
{{ 'UNKNOWN'|timezone_name }}
|
||||
{{ 'Europe/Paris'|timezone_name }}
|
||||
{{ 'America/Los_Angeles'|timezone_name }}
|
||||
{{ 'America/Los_Angeles'|timezone_name('fr') }}
|
||||
--DATA--
|
||||
return [];
|
||||
--EXPECT--
|
||||
UNKNOWN
|
||||
Central European Time (Paris)
|
||||
Pacific Time (Los Angeles)
|
||||
heure du Pacifique nord-américain (Los Angeles)
|
||||
|
||||
Reference in New Issue
Block a user