Improved and simple Intl implementations for Symfony.
You can install it with Composer.
composer require senseexception/intl-bundle
If the composer installation with symfony/flex didn't already register the bundle, you need to register it into your bundles.php manually:
return [
// ...
Budgegeria\Bundle\IntlBundle\BudgegeriaIntlBundle::class => ['all' => true],
// ...
];
By default a configuration doesn't need to be added if the needed locale is en_US
and USD
the currency. For any other
locale or currency you can add the following configuration to your project and configure the needed locale and currency
values:
budgegeria_intl:
locale: 'de_DE'
currency: 'EUR'
The formatter can be used in two different ways: With a filter and a function
Internationalization text formatting:
{{ "This is the %ordinal time that the number %integer appears"|intl_format(4, 6000) }}
{# This is the 4th time that the number 6.000 appears #}
Internationalization text formatting:
{{ intl_format("This is the %ordinal time that the number %integer appears", 4, 6000) }}
{# This is the 4th time that the number 6.000 appears #}
Currency symbol of configured locale:
{{ currency_symbol() }}
{# € #}
Example for configuring a sorter:
budgegeria_intl:
locale: 'de_DE'
currency: 'EUR'
sorter:
sorter_wo_locale:
order_by_desc: ~
my_sorter:
order_by_desc: ~
locale: 'de_DE'
my_sorter
and sorter_wo_locale
are free choosable keys that will be used to create new service ids
budgegeria_intl_bundle.sorter.my_sorter
and budgegeria_intl_bundle.sorter.sorter_wo_locale
which
can be used as dependencies.
class Foo
{
/**
* Injecting services "budgegeria_intl_bundle.sorter.my_sorter" or
* "budgegeria_intl_bundle.sorter.sorter_wo_locale"
*/
public function __construct(private Budgegeria\IntlSort\Sorter\Sorter $sorter)
{
}
public function bar(): void
{
$sortedArray = $this->sorter->sort(['a', 'y', 'ä']);
}
}
If a local is omitted like in budgegeria_intl_bundle.sorter.sorter_wo_locale
,
it uses the default locale set in the bundles configuration.
budgegeria_intl:
locale: 'de_DE'
Available are the method names of the Budgegeria\IntlSort\Sorter\Sorter
class as underscore values.
- enable_french_collation
- disable_french_collation
- lower_case_first
- upper_case_first
- remove_case_first
- enable_normalization_mode
- disable_normalization_mode
- enable_numeric_collation
- disable_numeric_collation
- enable_case_level
- disable_case_level
- non_ignorable_alternate_handling
- shifted_alternate_handling
- primary_strength
- secondary_strength
- tertiary_strength
- quaternary_strength
- identical_strength
- keep_keys
- omit_keys
- order_by_asc
- order_by_desc
- order_by_keys
- order_by_values
- null_first
- null_last
- remove_null_position
It's possible that you're using an older version of Intl-Sort where methods didn't existed yet. Read more about the methods in the Sorter documentation.