senseexception/intl-bundle

Improved and simple Intl implementations for Symfony

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 3

Forks: 0

Open Issues: 0

Type:symfony-bundle

1.1.0 2023-10-23 22:09 UTC

This package is auto-updated.

Last update: 2024-03-02 21:09:39 UTC


README

Improved and simple Intl implementations for Symfony.

Latest Stable Version PHP from Packagist Tests Static Analysis License

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.