La clase ResourceBundle

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

Introducción

Las aplicaciones localizadas suelen necesitar manipular datos que deben ser personalizados según una configuración local específica, por ejemplo: mensajes, etiquetas, strings de formato. ICU permite definir recursos que la aplicación podrá cargar con una configuración local una vez para todas: todos los accesos posteriores se realizarán mediante una interfaz única no dependiente de la configuración local considerada.

Esta clase permite el acceso a los archivos de datos de ICU. Estos archivos representan arrays binarios que ICU utiliza para almacenar los datos localizados.

Los bundles de recursos ICU soportan recursos simples y complejos. Los recursos complejos son contenedores que pueden ser indexados numéricamente o literalmente (como los arrays PHP). Los recursos simples, en cambio, pueden ser de tipo string, integer, binario o array numérico.

ResourceBundle soporta el acceso directo a los datos mediante la sintaxis de arrays así como la iteración gracias a foreach. Estas posibilidades también existen mediante los métodos. El resultado será un valor PHP para los recursos simples, o un objeto ResourceBundle para los recursos complejos. Los recursos son de solo lectura.

Sinopsis de la Clase

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

Historial de cambios

Versión Descripción
8.0.0 La clase ResourceBundle ahora implementa IteratorAggregate. Anteriormente, solo Traversable estaba implementada.
7.4.0 La clase ResourceBundle ahora implementa Countable.

Tabla de contenidos

add a note

User Contributed Notes 1 note

up
2
maiseralves at gmail dot com
14 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" 
 */
?>
To Top