首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PECL扩展intl给出了瑞典序数的乱码结果

PHP PECL扩展intl给出了瑞典序数的乱码结果
EN

Stack Overflow用户
提问于 2010-10-22 04:52:34
回答 1查看 472关注 0票数 3

我使用PECL intl模块来本地化PHP项目中的日期和数字。在我正在使用的所有其他语言中(40),本地化序数可以很好地工作。然而,在瑞典语中,我得到了奇怪的输出。它似乎是用于生成序数的模板常量。

代码语言:javascript
复制
$fnf = new NumberFormatter('sv_FI', NumberFormatter::ORDINAL);
echo $fnf->format(1);

代码语言:javascript
复制
$snf = new NumberFormatter('sv_SE', NumberFormatter::ORDINAL);
echo $snf->format(1);

两者都返回1:e%digits-ordinal-neutre:0: 1:a,而不是像1st1er这样的东西。

除了bug之外,我唯一的猜测是我遗漏了一些额外的参数,比如关联动词的性别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-01 11:41:40

如果输出基于规则的数字格式化程序规则$fnf->getPattern()

代码语言:javascript
复制
%digits-ordinal-masculine:
    0: =#,##0==%%dord-mascabbrev=;
    -x: −>%digits-ordinal-masculine>;
%%dord-mascabbrev:
    0: :e%digits-ordinal-neutre:0: =%digits-ordinal-feminine=;
%digits-ordinal-reale:
    0: =%digits-ordinal-feminine=;
%digits-ordinal-feminine:
    0: =#,##0==%%dord-femabbrev=;
    -x: −>%digits-ordinal-feminine>;
%%dord-femabbrev:
    0: :e;
    1: :a;
    2: :a;
    3: :e;
    20: >%%dord-femabbrev>;
    100: >%%dord-femabbrev>;
%digits-ordinal:
    0: =%digits-ordinal-masculine=;

您可以看到,私有规则集dord-mascabbrev只有一个规则提供该值:

代码语言:javascript
复制
:e%digits-ordinal-neutre:0: 1:a

然后在1之后输出,就像你在问题中描述的那样。

这不是PECL INTL中的错误,但底层规则格式错误,它是ICU库(that rule there)的一部分。大约三年前,sv数字格式化规则修复了缺少分号的问题,看起来像是漏掉了一行。

这些规则从Unicode Consortium的CLDR (Common Locale Data Repository,通用区域设置数据存储库)进入ICU。我打开了一个bug report there,因为除非在CLDR中修复它,然后放入ICU,否则它不能与PHP INTL扩展一起工作。

另一种方法可能是手动修补ICU库(版本4.8),然后根据修补后的库构建PECL包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3991814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档