PHP 5.5.17 is available

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 )
public array getLocales ( string $bundlename )
}

目次

add a note add a note

User Contributed Notes 1 note

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