【问题标题】:ResourceBundle returns NULL without any errors being raisedResourceBundle 返回 NULL 而不会引发任何错误
【发布时间】:2011-09-09 13:26:27
【问题描述】:

对于国际化数据,最好使用 PHP 的“intl”扩展中的 \ResourceBundle 类。

我让扩展程序运行(PHP 5.3.4;Windows)并使用 ICU Data Library Customizer* 创建了一个 .dat 文件,但我没有从资源包类中得到预期的结果。

现在我这样做

$bundle   = '/var/www/libs/icudt48l.dat';
$resource = new \ResourceBundle('en_US', $bundle, true);
var_dump($resource, is_file($bundle)); //--> NULL, TRUE

问题是$resource 返回 NULL 而没有引发任何错误。怎么回事?

*(只检查了最后两个数据部分 - 始终包含基本数据 - 我将其导出为 ICU4C)

【问题讨论】:

  • 您可以考虑直接读取 CLDR 数据,因为这是 ICU 数据的来源——不应依赖 ICU4C 数据的内部格式。请问,你们定制的目的是什么?最好根据 intl 扩展来实现您的组件,或者建议对 intl 或 ICU 进行更改。

标签: php resourcebundle icu intl


【解决方案1】:
<?php
$b = '/var/www/libs/icudt48l';
$r = new \ResourceBundle('en_US', $b, true);
var_dump($r instanceof \ResourceBundle); //-> TRUE

应保留 .dat 扩展名以使其正常工作

【讨论】:

    【解决方案2】:

    试试$resource = resourcebundle_create('en_US',$bundle,true);

    【讨论】:

    • 没有成功,试过了; resourcebundle_create();新资源包();资源包::create();全部返回 NULL...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2023-03-08
    • 1970-01-01
    • 2020-12-13
    • 2012-11-19
    • 2019-03-21
    • 2019-08-19
    相关资源
    最近更新 更多