senseexception / intl-bundle
Improved and simple Intl implementations for Symfony
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.1
- ext-intl: *
- senseexception/intl-format: ^2.3
- senseexception/intl-sort: ^2.0
- symfony/config: ^5.4 || ^6.0 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.0 || ^7.0
- symfony/http-foundation: ^5.4 || ^6.0 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.0 || ^7.0
- symfony/twig-bundle: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- doctrine/coding-standard: ^12.0
- infection/infection: ^0.27
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^9.6
- psalm/plugin-phpunit: ^0.18.4
- squizlabs/php_codesniffer: ^3.7
- vimeo/psalm: ^5.15
README
Improved and simple Intl implementations for Symfony.
Installation
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], // ... ];
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:
budgegeria_intl: locale: 'de_DE' currency: 'EUR'
Usage
Formatter
The formatter can be used in two different ways: With a filter and a function
Filters
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 #}
Functions
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() }}
{# € #}
Sorter
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 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.