Класс ResourceBundle

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

Введение

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

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

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

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

Обзор класса

class ResourceBundle implements IteratorAggregate, Countable {
/* Методы */
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
}

Список изменений

Версия Описание
8.0.0 Класс ResourceBundle теперь реализует интерфейс IteratorAggregate. Ранее был реализован интерфейс Traversable.
7.4.0 Класс ResourceBundle теперь реализует интерфейс Countable.

Содержание

Добавить

Примечания пользователей 1 note

up
1
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