senseexception / intl-bundle
Improved and simple Intl implementations for Symfony
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/senseexception/intl-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.