mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-13 10:56:38 +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\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)
|
||||||
|
|||||||
Reference in New Issue
Block a user