标签: intl

为什么Normalizer :: normallize(PHP)不起作用?

我正在尝试使用'áéíóú'等字符对字符串进行规范化,以简化搜索.

在回答这个问题之后,我应该用这个Normalizer课来做.

问题是该normalize功能什么都不做.例如,该代码:

<?php echo 'Pérez, NFC: ' . normalizer_normalize('Pérez', Normalizer::NFC) 
    . ' NFD: ' .normalizer_normalize('Pérez', Normalizer::NFD)
    . ' NFKC: ' .normalizer_normalize('Pérez', Normalizer::NFKC) 
    . ' NFKD: ' .normalizer_normalize('Pérez', Normalizer::NFKD)?>
<br/>
<?php echo 'aáàä, êëéè,' 
    . ' FORM_C: ' . normalizer_normalize('aáàä, êëéè', Normalizer::FORM_C )
    . ' FORM_D: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_D)
    . ' FORM_KC: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KC)
    . ' FORM_KD: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KD)?>
Run Code Online (Sandbox Code Playgroud)

说明:

Pérez, NFC: Pérez NFD: Pe?rez NFKC: Pérez NFKD: Pe?rez …
Run Code Online (Sandbox Code Playgroud)

php normalization intl

5
推荐指数
2
解决办法
5887
查看次数

如何从PHP Intl(ICU库)获取默认货币

我使用PHP,并想知道如何通过Internationalization扩展(ICU库的Wrapper)获取区域设置的默认货币?

下面是一个解释,内容和原因的脚本.我需要一些东西来代替这个getCurrCode()功能.

$accepted_currencies = array('USD','EUR');
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if( ! empty($locale)){
    Locale::setDefault($locale);
    $currency = getCurrCode();
    if( ! in_array($currency, $accepted_currencies)){
        $currency = 'USD';
    }
}else{
    Locale::setDefault('en_US');
}

$fmt = new NumberFormatter( $locale, NumberFormatter::CURRENCY );
$price = $fmt->formatCurrency(1234567.891234567890000, $currency);
Run Code Online (Sandbox Code Playgroud)

我知道,我可以使用,setlocale(LC_MONETARY, $locale);但这意味着我必须将所有语言环境安装到Linux上,并处理Linux发行版的变化.那么首先使用Intl会有什么意义呢?

php locale currency icu intl

4
推荐指数
1
解决办法
3653
查看次数

PHP Spoofchecker类

我正在阅读PHP手册,并在intl扩展文档页面中遇到了这个Spoofchecker.类中的方法,它们的参数以及类本身都是公平的,所以我想知道它的目的是什么.

php localization internationalization intl

4
推荐指数
1
解决办法
383
查看次数

如何在树枝中隐藏本地化货币过滤器的小数部分

我正在使用过滤器localizedcurrency在多语言网站中设置价格格式。由于这是房屋价格,因此我不需要小数部分。

除了使用replace过滤器之外,我无法找到隐藏方法。我想知道是否有更好的方法,因为使用replace它将意味着我必须替换英语中的点和法语中的逗号等等。

我也不能使用某种形式的substr,因为美元符号可以在值之前或之后。

我尝试将int而不是float传递给过滤器,但是它默认为 .00

谢谢!

php intl symfony twig

4
推荐指数
1
解决办法
909
查看次数

Windows上的Posix和intl扩展

当我安装Symfony2沙箱并尝试通过check.php检查要求时,我遇到了2个问题.我的服务器没有posix和intl扩展名.我在Windows 7 32bit上使用WampServer 2.1e(32位),所以我的apache和php版本是:Apache 2.2.17 VC6 ThreadSafe Php 5.3.5

我试图从http://windows.php.net/downloads/releases/php-5.3.5-Win32-VC6-x86.zip应用intl扩展, 但我在apache日志中有奇怪的错误:"找不到扩展名在c:/ wamp/..."我确定该扩展名在正确的目录中并在php.ini中启用.

随着posix扩展,我有更大的问题.我在Windows平台上根本找不到它.在php的文档中,据说它应该默认启用,但事实并非如此.

php windows posix intl

3
推荐指数
1
解决办法
8378
查看次数

在哪里可以找到 PHP 音译器 (Intl) 的 ID 或规则列表?

Transliterator::listIDs() 将列出 ID,但显然它不是一个完整的列表。

此页面示例中,ID 如下所示:

Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,因为 ID 应该是唯一的。这看起来更像是一条规则,但如果我将它传递给createFromRules方法,它就不起作用:)

无论如何,我正在尝试从字符串中删除任何标点符号,但破折号 ( -) 或特定列表中的字符除外。

你知道这可能吗?或者是否有一些文档可以更好地解释音译器的语法?

php transliteration intl

3
推荐指数
1
解决办法
2870
查看次数

PHP7.2 缺少国际扩展

我正在尝试运行使用locale_accept_from_httpintl 扩展中的函数的php 应用程序。我的 php 版本是7.2,我收到一个错误:Call to undefined function locale_accept_from_http();

我在尝试:

1.安装扩展sudo apt-get install php-intl。错误是:

无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的是不稳定的发行版,则某些必需的包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:

以下软件包具有未满足的依赖项: php-intl : 依赖项:php7.1-intl 但不会安装 E: 无法纠正问题,您持有损坏的软件包。

2. 在 php.ini 中启用 intl 扩展。 我收到警告:

PHP 警告:PHP 启动:无法加载动态库“intl”

使用此扩展的正确方法是什么php7.2

php intl php-7.2

3
推荐指数
1
解决办法
2万
查看次数

国际化 Flutter by intl

我学会了颤振。我使用 intl 依赖构建了一个国际化的应用程序(按照这个

  1. 我很好地运行了第一个命令(没有错误消息):
flutter packages pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart
Run Code Online (Sandbox Code Playgroud)

生成了3个文件:

在此处输入图片说明

  1. 我需要在运行下一个命令之前创建intl_{locale}.arb 文件

  2. 下一个命令:

颤振包 pub 运行 intl_translation:generate_from_arb \ --output-dir=lib/l10n --no-use-deferred-loading \ lib/main.dart lib/l10n/intl_*.arb

尽管生成了相应的消息 (messages_en.dart) 文件,但它始终返回消息:

No @@locale or _locale field found in intl_en, assuming 'en' based on the file name.
No @@locale or _locale field found in intl_messages, assuming 'messages' based on the file name.
Run Code Online (Sandbox Code Playgroud)

如何在没有消息的情况下运行第二个命令,因为我认为它们是意外消息?

intl dart flutter

3
推荐指数
2
解决办法
3675
查看次数

生成 1 个错误。make: *** [php_intl.lo] 错误 1 ​​错误: `make' 失败

我在我的 macbook pro 上安装了 php 7.3.4,并且我正在尝试启用作曲家需要的 php 扩展(intl)。我在 php.ini 中启用了扩展 intl,但收到一条错误消息,指出找不到它 - 所以我假设这意味着我需要安装它。我在网上找到了有关如何安装扩展的教程(底部的链接),然后我按照这个进行操作。在我运行的阶段sudo pecl install intl,我收到一个错误;make: *** [php_intl.lo] 错误 1 ​​错误: `make' 失败

有没有人有办法解决吗?

Jamess-MBP:~ work$ sudo pecl install intl
Password: .........
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/local/lib/php/pecl/20180731/intl (dlopen(/usr/local/lib/php/pecl/20180731/intl, 9): image not found), /usr/local/lib/php/pecl/20180731/intl.so (dlopen(/usr/local/lib/php/pecl/20180731/intl.so, 9): image not found)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/local/lib/php/pecl/20180731/intl (dlopen(/usr/local/lib/php/pecl/20180731/intl, 9): image not found), /usr/local/lib/php/pecl/20180731/intl.so (dlopen(/usr/local/lib/php/pecl/20180731/intl.so, …
Run Code Online (Sandbox Code Playgroud)

macos homebrew pecl intl

3
推荐指数
1
解决办法
7512
查看次数

Flutter intl生成文件,null安全问题

我的项目当前的flutter版本是2.2.3,我的intl库的版本是0.17.0。当我向任何语言文件添加新值时,生成的文件中的 messages_all 和 l10n 文件中都会插入空安全语法。 代码片段:

MessageLookupByLibrary? _findExact(String localeName) {
  switch (localeName) {
    case 'ar':
      return messages_ar.messages;
    case 'de':
      return messages_de.messages;
    case 'en':
      return messages_en.messages;
    case 'fr':
      return messages_fr.messages;
    case 'ru':
      return messages_ru.messages;
    case 'tr':
      return messages_tr.messages;
    default:
      return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

MessageLookByLibrary?

当我编辑语言文件时:

flutter pub global run intl_utils:generate
INFO: No @@locale or _locale field found in intl_ar, assuming 'ar' based on the file name.
INFO: No @@locale or _locale field found in intl_de, assuming 'de' based on the file …
Run Code Online (Sandbox Code Playgroud)

mobile localization intl dart flutter

3
推荐指数
1
解决办法
2030
查看次数