Класс ResourceBundle

(PHP >= 5.3.2, PECL intl >= 2.0.0)

Введение

Локализованные програмные продукты часто нуждаются в наборах данных подготовленных в зависимости от текущей локали, например: сообщения, метки, шаблоны форматирования. Механизм ресурсов ICU позволяет задать наборы ресурсов, которые приложение может загрузить в зависимости от текущей локали и использовать унифицированным, не зависяцим от локами, образом.

Этот класс реализует доступ к файлам ресурсов ICU. Эти файлы являются бинарными массивами данных, которые ICU использует для хранения локализованных данных.

Пакет ресурсов ICU может содержать простые и сложные ресурсы. Сложные ресурсы - это контейнеры, которые могут быть индексированы как числами так и строками (аналогично массивам PHP). Простые ресурсы могут быть следующих типов: строки, целые, бинарные поля данных и целочисленные массивы.

ResourceBundleподдерживает прямой доступ к данным через синтаксис доступа к массивам и итерироваться через foreach, так же как и доступ через методы. В результате будет получено значение PHP для простых ресурсов и объекты ResourceBundle для сложных. Все ресурсы доступны только для чтения.

Обзор классов

ResourceBundle {
/* Методы */
public __construct ( string $locale , string $bundlename [, bool $fallback ] )
public int count ( void )
public static ResourceBundle create ( string $locale , string $bundlename [, bool $fallback ] )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public mixed get ( string|int $index [, bool $fallback = TRUE ] )
public array getLocales ( string $bundlename )
}

Содержание

add a note add a note

User Contributed Notes 1 note

up
3
maiseralves at gmail dot com
6 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