La classe ResourceBundle

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

Introduction

Les applications localisĂ©es ont souvent besoin de manipuler des donnĂ©es devant ĂȘtre personnalisĂ©es en fonction d'une locale considĂ©rĂ©e, p. ex. : messages, libellĂ©s, chaĂźnes de formatage. ICU permet de dĂ©finir des ressources que l'application pourra charger avec une locale une fois pour toutes : tous les accĂšs ultĂ©rieurs se feront au moyen d'une interface unique non dĂ©pendante de la locale considĂ©rĂ©e.

Cette classe permet l'accÚs aux fichiers de données de ICU. Ces fichiers représentent des tableaux binaires que ICU utilise pour stocker les données localisées.

Les bundles de ressources ICU supportent les ressources simples et complexes. Les ressources complexes sont des conteneurs qui peuvent ĂȘtre indexĂ©s numĂ©riquement ou littĂ©ralement (comme les tableaux PHP). Les ressources simples, elles, peuvent ĂȘtre de type chaĂźne, entier, binaire ou tableau numĂ©rique.

ResourceBundle supporte l'accÚs direct aux données via la syntaxe des tableaux ainsi que l'itération grùce à foreach. Ces possibilités existent aussi via les méthodes. Le résultat sera une valeur PHP pour les ressources simples, ou un objet ResourceBundle pour les ressources complexes. Les ressources sont en lecture seule.

Synopsis de la classe

class ResourceBundle implements IteratorAggregate, Countable {
/* Méthodes */
public function __construct(?string $locale, ?string $bundle, bool $fallback = true)
public function count(): int
public static function create(?string $locale, ?string $bundle, bool $fallback = true): ?ResourceBundle
public function get(string|int $index, bool $fallback = true): ResourceBundle|array|string|int|null
public function getErrorCode(): int
public function getErrorMessage(): string
public static function getLocales(string $bundle): array|false
}

Historique

Version Description
8.0.0 La classe ResourceBundle implémente désormais IteratorAggregate. Auparavant, seule Traversable était implémentée.
7.4.0 La classe ResourceBundle implémente désormais Countable.

Sommaire

add a note

User Contributed Notes 1 note

up
2
maiseralves at gmail dot com ¶
15 years ago
<?php
/*
 * Struct of a Resource Bundle file
 * file root.txt
 * root:table {
 *       usage:string { "Usage: genrb [Options] files" }
 *       version:int { 122 }
 *       errorcodes:array {
 *           :string { "Invalid argument" }
 *           :string { "File not found" }
 *        }
 *   } 
 * use: $genrb root.txt to generate resource bundle file (root.res) 
 */

//recursive function to list a resource bundle file structure using a ResourceBundle Object ( ) reference 
function t($rb) {
    foreach($rb as $k => $v) {
        if(is_object($v)) {
            print_r($v);
            var_dump($k);
            t($v);
        } else {
            var_dump($k . " " . $v);
        }
    }
}
//open root.res from folder locale
$rb = new ResourceBundle('root', "./locale");

t($rb);//call the function

/* The output from root table is
 *   |- string(34) "usage Usage: genrb [Options] files" 
 *   |- string(11) "version 122" 
 *   |- ResourceBundle Object ( ) string(10) "errorcodes" 
 *         |- string(18) "0 Invalid argument" 
 *         |- string(16) "1 File not found" 
 */
?>