PHP 8.6.0 Beta 1 is available for testing

Класс 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 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
}

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

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

Содержание

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

up
3
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" 
 */
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /