Il s'agit d'un port Laravel du package Twig Intl Extension.
Le package peut être utilisé dans n'importe quelle application basée sur Laravel pour gérer rapidement l'internationalisation en fournissant des fonctions d'assistance dans les modèles Blade ou la base de code Laravel.
Utiliser le compositeur :
composer require bakame/laravel-intl-formatter
Afin de modifier la configuration par défaut, vous devez publier la configuration du package dans le répertoire de configuration de votre application :
php artisan vendor:publish --provider= " BakameLaravelIntl " --tag=config
Le fichier de configuration sera publié dans config/bakame-intl-formatter.php
dans le répertoire de votre application.
Veuillez vous référer au fichier de configuration pour un aperçu des options disponibles.
Une fois installé, le package fournit les fonctions d'assistance globales suivantes :
Renvoie le nom du pays en fonction de son code à deux ou cinq lettres ;
country name: {{ country_name ( $country , $locale ) } }
echo view ( $ templatePath , [ ' country ' => ' FR ' , ' locale ' => ' NL ' ])-> render ();
// country name: Frankrijk
Renvoie le nom de la devise en fonction de son code à trois lettres ;
currency name: {{ currency_name ( $currency , $locale ) } }
echo view ( $ templatePath , [ ' currency ' => ' JPY ' , ' locale ' => ' PT ' ])-> render ();
// currency name: Iene japonês
Renvoie le symbole monétaire étant donné son code à trois lettres ;
currency symbol: {{ currency_symbol ( $currency , $locale ) } }
echo view ( $ templatePath , [ ' currency ' => ' JPY ' , ' locale ' => ' PT ' ])-> render ();
// currency symbol: JP¥
Renvoie le symbole monétaire étant donné son code à trois lettres ;
language name: {{ language_name ( $language , $locale ) } }
echo view ( $ templatePath , [ ' language ' => ' it ' , ' locale ' => ' nl ' ])-> render ();
// language name: Italiaans
Renvoie le symbole monétaire étant donné son code à trois lettres ;
locale name: {{ locale_name ( $data , $locale ) } }
echo view ( $ templatePath , [ ' data ' => ' sw ' , ' locale ' => ' nl ' ])-> render ();
// locale name: Swahili
Renvoie le nom du fuseau horaire en fonction de son identifiant ;
timezone name: {{ locale_name ( $data , $locale ) } }
echo view ( $ templatePath , [ ' timezone ' => ' Asia/Tokyo ' , ' locale ' => ' es ' ])-> render ();
// timezone name: hora de Japón (Tokio)
Renvoie les identifiants de fuseau horaire du code de pays donné ;
country timezones: {{ implde ( " , " , country_timezones ( $country )) } }
$ content = view ( $ templatePath , [ ' country ' => ' CD ' , ' locale ' => ' es ' ])-> render ();
echo $ content , PHP_EOL ; // country timezones: Africa/Kinshasa, Africa/Lubumbashi
Formate un nombre en tant que devise ;
format currency: {{ format_currency ( $amount , $currency , $attrs , $locale ) } }
$ templateData = [
' amount ' => 100.356 ,
' currency ' => ' USD ' ,
' locale ' => ' ES ' ,
' attrs ' => [
' fraction_digit ' => 1 ,
' rounding_mode ' => ' floor ' ,
]
];
echo view ( $ templatePath , $ templateData )-> render ();
// format currency: 100,3 US$
Formate un nombre ;
format number: {{ format_number ( $number , $locale , $attrs ) } }
$ templateData = [
' number ' => 100.356 ,
' locale ' => ' nl ' ,
' style ' => ' spellout ' ,
' type ' => ' double ' ,
' attrs ' => [
' fraction_digit ' => 1 ,
' rounding_mode ' => ' floor ' ,
]
];
echo view ( $ templatePath , $ templateData )-> render ();
// format number: honderd komma drie
Formate une date et une heure ;
format datetime: {{ format_datetime ( $date , $locale , $timezone , $dateFormat , $timeFormat , $pattern , $calendar ) } }
$ templateData = [
' date ' => ' yesterday ' ,
' dateFormat ' => ' full ' ,
' timeFormat ' => ' full ' ,
' pattern ' => '' ,
' timezone ' => ' Africa/Lubumbashi ' ,
' calendar ' => ' gregorian ' ,
' locale ' => ' sw ' ,
];
echo view ( $ templatePath , $ templateData )-> render ();
// format datetime: Alhamisi, 2 Juni 2022 00:00:00 Saa za Afrika ya Kati
Formate la partie date d'un datetime ;
format date: {{ format_date ( $date , $locale , $timezone , $dateFormat , $pattern , $calendar ) } }
$ templateData = [
' date ' => ' yesterday ' ,
' dateFormat ' => ' long ' ,
' pattern ' => '' ,
' timezone ' => ' Africa/Lubumbashi ' ,
' calendar ' => ' gregorian ' ,
' locale ' => ' sw ' ,
];
echo view ( $ templatePath , $ templateData )-> render ();
// format date: 2 Juni 2022
Formate la partie heure d'un datetime ;
format time: {{ format_time ( $date , $locale , $timezone , $timeFormat , $pattern , $calendar ) } }
$ templateData = [
' date ' => ' yesterday ' ,
' dateFormat ' => ' full ' ,
' pattern ' => '' ,
' timezone ' => ' Africa/Lubumbashi ' ,
' calendar ' => ' gregorian ' ,
' locale ' => ' sw ' ,
];
echo view ( $ templatePath , $ templateData )-> render ();
// format time: 00:00:00 Saa za Afrika ya Kati
Chaque fonction utilise les mêmes arguments dans le même ordre que les filtres/fonctions du package Twig Extra.
Si aucun locale
n'est spécifié dans les appels de fonction, la fonction utilisera le résultat de IlluminateSupportFacadesApp::currentLocale()
comme valeur de paramètres régionaux à utiliser.
En PHP8+, vous pouvez utiliser des paramètres nommés pour améliorer l'utilisation des fonctions car elles ont tendance à avoir beaucoup d'arguments :
En PHP7.4
<?php
echo format_datetime ( ' 2019-08-07 23:39:12 ' , ' fr ' , null , medium', ' medium ' , '' , ' gregorian ' , ' fr ' );
En PHP8+
<?php
echo format_datetime (date: ' 2019-08-07 23:39:12 ' , locale: ' fr ' );
Les contributions sont les bienvenues et seront entièrement créditées. Veuillez consulter CONTRIBUTION et CODE DE CONDUITE pour plus de détails.
La bibliothèque :
Pour exécuter les tests, exécutez la commande suivante à partir du dossier du projet.
$ composer test
Si vous découvrez des problèmes liés à la sécurité, veuillez envoyer un e-mail à [email protected] au lieu d'utiliser le suivi des problèmes.
Les fonctions des assistants du package sont fortement inspirées des travaux antérieurs réalisés par Fabien Potencier sur Twig Intl Extension.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.