Skip to content

v4.0.0

Latest
Compare
Choose a tag to compare
@olvlvl olvlvl released this 01 Jul 21:14

New Requirements

Requires PHP 7.1+

New features

None

Backward Incompatible Changes

  • Numbers symbols are now represented by a Symbols instance instead of an array. Methods using numeric symbols have been updated. The currency symbol is no longer added to the numeric symbols, it is now a separated parameter.

     <?php
    
     /* @var ICanBoogie\CLDR\CurrencyFormatter $formatter */
     /* @var array $symbols */
    
     $formatter->format($number, $pattern, $symbols);
     <?php
    
     /* @var ICanBoogie\CLDR\CurrencyFormatter $formatter */
     /* @var ICanBoogie\CLDR\Numbers\Symbols $symbols */
     /* @var string $currencySymbol */
    
     $formatter->format($number, $pattern, $symbols, $currencySymbol);
  • List patterns are now represented by a ListPattern instance instead of an array. Methods using a list pattern have been updated.

     <?php
    
     /* @var ICanBoogie\CLDR\ListFormatter $formatter */
     /* @var array $list_pattern */
    
     $formatter->format([ 1, 2, 3 ], list_pattern);
     <?php
    
     /* @var ICanBoogie\CLDR\ListFormatter $formatter */
     /* @var ICanBoogie\CLDR\Locale\ListPattern $list_pattern */
    
     $formatter->format([ 1, 2, 3 ], list_pattern);
  • Removed NumberPattern:$format, it was never used.

  • Removed the localized() method on entities that don't naturally require access to the repository: NumberFormatter and ListFormatter. You can use $repository->locales['fr']->localize($formatter) to get a localized formatter, or the number_formatter and list_formater properties of the Locale object.

  • The fluent interface of units is now more on par with the rest of the API.

     <?php
    
     echo $units->duration_hour(23);
     echo $units->duration_hour(23, $units::LENGTH_SHORT);
     echo $units->volume_liter->per_unit(12.345, $units->duration_hour);
     echo $units->volume_liter->per_unit(12.345, $units->duration_hour, $units::LENGTH_SHORT);
     <?php
    
     echo $units->duration_hour(23);
     echo $units->duration_hour(23)->as_short;
     echo $units->volume_liter(12.345)->per($units->duration_hour);
     echo $units->volume_liter(12.345)->per($units->duration_hour)->as_short;

Deprecated Features

  • The localized currency formatter no longer supports a $symbols parameter. If you need to customize how a currency is formatted, create your own Symbols instance and use it with a non-localized formatter e.g. $repository->format_currency().

  • The localized list formatter no longer accepts a list pattern or a type, only a type. If you need to customize how a list is formatted, create you own ListPattern instance and use it with a non-localized formatter e.g. $repository->format_list().

Other Changes

  • Compatible with PHP 8.1+
  • Targets CLDR v36
  • Improved type annotations, including generics.