问题标签 [intl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 intl-support 安装 PHP 5.3.0 时遇到问题
目前我正在尝试在一些 Linux 测试服务器上安装 PHP 5.3.0。由于我们急切地等待 ext/intl,我们想看看它提供的功能。我configure
使用以下参数成功运行
ICU 4.2 位于/usr/local/icu
PHP 5.2.9 编译完美(没有 int 和 icu 选项)。但是当我编译 PHP 5.3.0 源代码时,我会收到很多类似的错误消息
我很确定这与找不到共享库有关。环境
没有帮助。
谁能指出我的一些解决方案?我相当一无所知-而且我在这些事情上也不是真正的专家...
编辑:
我刚刚重新检查并确保各种 icu 库和各自的软链接都位于/usr/local/icu/lib
:
make check
运行大量测试 - 所有测试都成功:
编辑:VolkerK 问题的答案
我从源代码安装了 ICU 4.2,正如我在构建过程上方所写的那样,单元测试和安装都很好。
编辑关于 VolkerK 的评论:
不,没有涉及编译器的切换——我一个接一个地直接运行了两个构建过程。objdump /usr/local/icu/lib/libicuuc.so.42.0.1
也不起作用,但我设法跑了
不知道这些信息是否有帮助。
编辑 VolkerK 的edit1 和 edit2:
我认为有问题 - 系统上确实有另一个 icu 版本;至少在部分(例如,没有其他 icu-config;只有一个 in /usr/local/icu/bin
)。
gcc -lpthread -lm -L/usr/local/icu/lib -licui18n -licuuc -licudata -lpthread -lm -licuio -print-file-name=libicuuc.so
返回
而gcc -lpthread -lm -L/usr/local/icu/lib -licui18n -licuuc -licudata -lpthread -lm -licuio -print-file-name=libicuuc.so.42
返回
所以问题似乎是,如何让新的 lib-path 进入构建过程?顺便说一句,我从你的回答中学到了很多——谢谢大家。
我还尝试编译您的简单测试程序 - 它也因相同的未定义引用错误而失败,很可能是由于 PHP 无法编译的相同原因。
如何摆脱对 lib-path 中旧 icu-library 的引用,或者如何优先考虑新的 icu-library-path?
php - 如何让 NumberFormatter 打印带有减号的负货币值?
我正在使用 PHP NumberFormatter类来打印货币值。
例如:
这工作正常,并按预期分别返回"$123.00
“、"R$123.00
”、 “。"£123.00
但是负数被打印为“会计风格”,用括号括起来,而不是前导减号“-”。
例如:
退货"($456.00)"
,而我想要"-$456.00"
。当然有一种简单的方法可以做到这一点?
我可以通过覆盖前缀和后缀来删除括号,如下所示:
但后来我没有得到货币符号,例如"-456.00"
。
在设置 NEGATIVE_PREFIX 属性时,我需要使用货币符号的转义码吗?
编辑:如果这给了我想要的结果,我很乐意设置不同的语言环境。
编辑 2:查看Intl library 文档(这是用于实现 NumberFormatter 的库),以下内容看起来很有希望:
¤ (\u00A4) : 前缀或后缀 : 无货币符号,由货币符号代替。如果加倍,则替换为国际货币符号。如果是三倍,则替换为货币复数名称,例如美国的“美元”或“美元”。如果存在于模式中,则使用货币小数分隔符而不是小数分隔符。
但是这个:
只打印“-¤123”,所以没有乐趣。
编辑3:我想我找到了答案,见下文。
php - 国际扩展:安装 php_intl.dll
我正在尝试找到php_intl.dll
并安装它。
有没有人有任何提示?
php - PHP PECL 扩展 intl 给出瑞典序数的乱码结果
我正在使用 PECL intl 模块来本地化 PHP 项目中的日期和数字。在我使用的所有其他语言 (40) 中,本地化序数效果很好。然而,在瑞典语中,我得到了奇怪的输出。它似乎是用于生成序数的模板常量。
和
两者都返回1:e%digits-ordinal-neutre:0: 1:a
与类似的东西1st
or 1er
。
除了错误之外,我唯一的猜测是我缺少一些额外的参数,例如相关动词的性别。
php - 根据区域设置获取货币 ISO 4217 代码
比如说,如果我解析 HTTP Accept-Language 标头,Locale::acceptFromHttp
是否有一种简单可靠的方法可以根据此语言环境标识符获取用户的首选货币?就像“en-US”的“USD”。
我希望有一种方法可以使用 PHP intl 扩展来做到这一点,但到目前为止无法在手册中找到我的答案。我看到 Zend Framework 可以用 Zend_Currency 做到这一点,但它对于我的特定软件来说太臃肿了。
任何其他库或实现这一目标的方法?由于必须有很多语言环境标识符,所以简单switch
的有点过分了。
php - 在默认的 Mac OS X Leopard 捆绑 PHP 配置上安装/启用 PHP Pecl Intl 扩展
如何在我的 PHP 环境中安装或启用 PHP Pecl Intl 扩展?
我有一个与 Mac OS X Snow Leopard 捆绑在一起的库存 PHP 配置。从源代码安装 libicu$pecl install intl
会导致以下错误:
非常感谢任何帮助!
php - Posix and intl extension on windows
When I installed Symfony2 sandbox and try to check requirements by check.php I had 2 problems. My server don't have posix and intl extensions. I'm using WampServer 2.1e (32 bits) on Windows 7 32bit so my versions of apache and php are: Apache 2.2.17 VC6 ThreadSafe Php 5.3.5
I was trying to apply intl extension from http://windows.php.net/downloads/releases/php-5.3.5-Win32-VC6-x86.zip but i have weird error in apache log: "Can't find extension in c:/wamp/..." I'm sure that extension is in correct directory and enabled in php.ini.
With posix extension I have bigger problem. I can't find it at all on windows platform. In documentation of php it is said that it should be enabled by default, but it isn't.
php - 在 OS X 10.6.6 上安装 intl:无效库(可能不是 PHP 库)intl.so
我正在尝试使用随附的 PHP 版本(v5.3.3)在我全新安装的 OS X 10.6.6 上安装 PHP 扩展 intl。
我知道扩展需要 ICU,所以我用自制软件安装了它。我安装的 ICU 版本是 4.4.1,存储在/usr/local/Cellar/icu4c/4.4.1
.
我尝试了两种不同的方法来安装 intl 扩展:
pecl 安装
pecl 向我询问 ICU 前缀,即/usr/local/Cellar/icu4c/4.4.1
. configure
运行没有问题,但make
中止:
/private/var/tmp/apache_mod_php/apache_mod_php-53~1/Build/tmp/pear/temp/intl/collator/collator_class.c:107:错误:重复“静态”制作:* [collator/collator_class.lo] 错误1 错误:“制作”失败
直接构建
我下载了当前版本的 PHP (v5.3.5),然后ext/intl
通过运行安装了 intl 扩展:
这似乎奏效了;我在 PHP 扩展目录中有一个扩展,但没有收到任何错误消息。
该文件告诉我:Mach-O 64-bit bundle x86_64
但是,当我在 中加载扩展时php.ini
,我收到了以下消息:
PHP 警告:PHP 启动:无效库(可能不是 PHP 库)'/usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so' 在第 0 行的未知
我不知道为什么会这样。我猜这是因为扩展是从 PHP v5.3.5 安装的并且我使用的是 v5.3.3,但我无法想象 2 个错误修复版本会破坏兼容性。
有任何想法吗?
2011-03-16 更新:
我找到了解决办法!当我在 configure 中明确设置-m64
标志(告诉 gcc 生成 64 位代码)时,扩展会正确加载:
CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure
php - 国际库中的gettext()等价物?
我正在寻找一种方法来做 i18n 和 l10n。
我以前用过gettext
,很好:我只需创建不同语言的 .mo 文件,需要翻译的所有内容都使用这种表示法:
我知道现在 PHP 中内置了 Intl 库,并且有人告诉我应该使用它而不是gettext()
.
在阅读了 php.net上有关 Intl的所有内容后,我发现它具有一些不错的功能,例如语言环境处理、字符串比较、数字格式化等。
我不知道如何使用 Intl 库处理常规字符串到字符串的转换。有任何想法吗?
php - Mac 10.6 - 无法安装 PHP intl
我正在尝试使用以下命令在 Mac 10.6“Snow Leopard”上安装 PHP intl 扩展:
须藤pecl安装国际
...但出现以下错误:
我正在使用带有 PHP 5.3.4 的捆绑 Apache 服务器。
有谁知道如何安装 intl 扩展?