IntlExtension > Handle MissingResourceException

This commit is contained in:
Ruud Kamphuis
2020-02-05 11:10:21 +01:00
committed by Fabien Potencier
parent a086a3704d
commit 2df6814c27
8 changed files with 50 additions and 7 deletions
+36 -7
View File
@@ -13,6 +13,7 @@ namespace Twig\Extra\Intl;
use Symfony\Component\Intl\Countries; use Symfony\Component\Intl\Countries;
use Symfony\Component\Intl\Currencies; use Symfony\Component\Intl\Currencies;
use Symfony\Component\Intl\Exception\MissingResourceException;
use Symfony\Component\Intl\Languages; use Symfony\Component\Intl\Languages;
use Symfony\Component\Intl\Locales; use Symfony\Component\Intl\Locales;
use Symfony\Component\Intl\Timezones; use Symfony\Component\Intl\Timezones;
@@ -156,37 +157,65 @@ final class IntlExtension extends AbstractExtension
public function getCountryName(string $country, string $locale = null): string 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 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 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 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 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 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 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 public function formatCurrency($amount, string $currency, array $attrs = [], string $locale = null): string
@@ -1,6 +1,7 @@
--TEST-- --TEST--
"country_name" filter "country_name" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|country_name }}
{{ 'FR'|country_name }} {{ 'FR'|country_name }}
{{ 'US'|country_name }} {{ 'US'|country_name }}
{{ 'US'|country_name('fr') }} {{ 'US'|country_name('fr') }}
@@ -8,6 +9,7 @@
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
France France
United States United States
États-Unis États-Unis
@@ -1,10 +1,12 @@
--TEST-- --TEST--
"country_timezones" function "country_timezones" function
--TEMPLATE-- --TEMPLATE--
{{ country_timezones('UNKNOWN')|length }}
{{ country_timezones('FR')|join(', ') }} {{ country_timezones('FR')|join(', ') }}
{{ country_timezones('US')|join(', ') }} {{ country_timezones('US')|join(', ') }}
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
0
Europe/Paris 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 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-- --TEST--
"currency_name" filter "currency_name" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|currency_name }}
{{ 'EUR'|currency_name }} {{ 'EUR'|currency_name }}
{{ 'JPY'|currency_name }} {{ 'JPY'|currency_name }}
{{ 'EUR'|currency_name('fr') }} {{ 'EUR'|currency_name('fr') }}
@@ -8,6 +9,7 @@
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
Euro Euro
Japanese Yen Japanese Yen
euro euro
@@ -1,10 +1,12 @@
--TEST-- --TEST--
"currency_symbol" filter "currency_symbol" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|currency_symbol }}
{{ 'EUR'|currency_symbol }} {{ 'EUR'|currency_symbol }}
{{ 'JPY'|currency_symbol }} {{ 'JPY'|currency_symbol }}
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
¥ ¥
@@ -1,6 +1,7 @@
--TEST-- --TEST--
"language_name" filter "language_name" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|language_name }}
{{ 'de'|language_name }} {{ 'de'|language_name }}
{{ 'fr'|language_name }} {{ 'fr'|language_name }}
{{ 'de'|language_name('fr') }} {{ 'de'|language_name('fr') }}
@@ -9,6 +10,7 @@
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
German German
French French
allemand allemand
@@ -1,6 +1,7 @@
--TEST-- --TEST--
"locale_name" filter "locale_name" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|locale_name }}
{{ 'de'|locale_name }} {{ 'de'|locale_name }}
{{ 'fr'|locale_name }} {{ 'fr'|locale_name }}
{{ 'de'|locale_name('fr') }} {{ 'de'|locale_name('fr') }}
@@ -9,6 +10,7 @@
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
German German
French French
allemand allemand
@@ -1,12 +1,14 @@
--TEST-- --TEST--
"timezone_name" filter "timezone_name" filter
--TEMPLATE-- --TEMPLATE--
{{ 'UNKNOWN'|timezone_name }}
{{ 'Europe/Paris'|timezone_name }} {{ 'Europe/Paris'|timezone_name }}
{{ 'America/Los_Angeles'|timezone_name }} {{ 'America/Los_Angeles'|timezone_name }}
{{ 'America/Los_Angeles'|timezone_name('fr') }} {{ 'America/Los_Angeles'|timezone_name('fr') }}
--DATA-- --DATA--
return []; return [];
--EXPECT-- --EXPECT--
UNKNOWN
Central European Time (Paris) Central European Time (Paris)
Pacific Time (Los Angeles) Pacific Time (Los Angeles)
heure du Pacifique nord-américain (Los Angeles) heure du Pacifique nord-américain (Los Angeles)