https://github.com/senseexception/intlbundle
Improved and simple Intl implementations for Symfony
https://github.com/senseexception/intlbundle
Last synced: about 1 year ago
JSON representation
Improved and simple Intl implementations for Symfony
- Host: GitHub
- URL: https://github.com/senseexception/intlbundle
- Owner: SenseException
- License: mit
- Created: 2022-01-29T16:16:17.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-02-21T19:45:30.000Z (over 1 year ago)
- Last Synced: 2025-04-09T20:06:25.382Z (about 1 year ago)
- Language: PHP
- Size: 142 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IntlBundle
Improved and simple Intl implementations for Symfony.
[](https://packagist.org/packages/senseexception/intl-bundle)
[](https://packagist.org/packages/senseexception/intl-bundle)
[](https://github.com/SenseException/IntlBundle/actions/workflows/tests.yml)
[](https://github.com/SenseException/IntlBundle/actions/workflows/static-analysis.yml)
[](https://packagist.org/packages/senseexception/intl-bundle)
## Installation
You can install it with [Composer](https://getcomposer.org/).
```
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:
``` php
return [
// ...
Budgegeria\Bundle\IntlBundle\BudgegeriaIntlBundle::class => ['all' => true],
// ...
];
```
## Configuration
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:
``` yaml
budgegeria_intl:
locale: 'de_DE'
currency: 'EUR'
```
## Usage
### Formatter
The [formatter](https://senseexception.github.io/intl-format/#predefined-formats) can be used in two different ways:
With a filter and a function
#### Filters
Internationalization text formatting:
``` twig
{{ "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 #}
```
#### Functions
Internationalization text formatting:
``` twig
{{ 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:
``` twig
{{ currency_symbol() }}
{# € #}
```
### Sorter
Example for configuring a sorter:
``` yaml
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.
``` php
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.
``` yaml
budgegeria_intl:
locale: 'de_DE'
```
#### Available Configurations
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](https://senseexception.github.io/intl-sort/sorter-builder.html).