問題タブ [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-libraries とそれぞれのソフト リンクがすべて次の場所にあることを確認しました/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 はありません。 の 1 つだけです/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 ライブラリのドキュメント(NumberFormatter の実装に使用されるライブラリ) を見ると、次のものが有望に見えました。
¤ (\u00A4) : プレフィックスまたはサフィックス : 通貨記号なし、通貨記号に置き換え。2 倍の場合は、国際通貨記号に置き換えられます。3 倍になっている場合は、通貨の複数形の名前に置き換えられます。たとえば、「US ドル」やアメリカの「US ドル」などです。パターンに存在する場合、小数点記号の代わりに通貨の小数点記号が使用されます。
でもこれは:
「-¤123」と出力するだけなので、喜びはありません。
編集 3:答えが見つかったと思います。以下を参照してください。
php - intl拡張子:php_intl.dllのインストール
私はそれを見つけphp_intl.dll
てインストールしようとしています。
誰かヒントはありますか?
php - PHP PECL 拡張機能 intl で、スウェーデンの序数の結果が文字化けする
PECL intl モジュールを使用して、PHP プロジェクトで日付と数字をローカライズしています。私が使用している他のすべての言語 (40) では、序数のローカライズは正常に機能します。ただし、スウェーデン語では、奇妙な出力が得られます。序数を生成するために使用されるテンプレート定数のようです。
と
どちらもまた1:e%digits-ordinal-neutre:0: 1:a
はのようなものに対して返され1st
ます1er
。
バグ以外の私の唯一の推測は、関連付けられた動詞の性別などの追加の引数が欠落していることです。
php - ロケールに基づいて通貨 ISO 4217 コードを取得する
HTTP Accept-Language ヘッダーを解析するLocale::acceptFromHttp
と、このロケール識別子に基づいてユーザーの優先通貨を取得する簡単で信頼できる方法はありますか? 「en-US」の「USD」のように。
PHP intl 拡張機能を使用してこれを行う方法があればいいのにと思いますが、これまでのところ、マニュアルで私の答えを見つけることができませんでした。Zend Framework が Zend_Currency でこれを実行できることを確認しましたが、私の特定のソフトウェアには大きすぎます。
これを達成する他のライブラリや方法はありますか? 多くのロケール識別子がなければならないので、単純なswitch
ものは少しやり過ぎです。
php - デフォルトのMacOSXLeopardバンドルPHP構成でのPHPPeclIntl拡張機能のインストール/有効化
PHP環境にPHPPeclIntl拡張機能をインストールまたは有効にするにはどうすればよいですか?
Mac OS XSnowLeopardにバンドルされている標準のPHP構成があります。ソースからlibicuをインストールすると$pecl install intl
、次のエラーが発生します。
どんな助けでも本当にありがたいです!
php - Windows の Posix および intl 拡張機能
Symfony2 サンドボックスをインストールし、check.php で要件を確認しようとすると、2 つの問題が発生しました。私のサーバーには posix および intl 拡張機能がありません。Windows 7 32ビットで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 ログに奇妙なエラーがあります:「拡張機能が見つかりません」 in c:/wamp/..." 拡張子が正しいディレクトリにあり、php.ini で有効になっていると確信しています。
posix 拡張を使用すると、より大きな問題が発生します。Windowsプラットフォームではまったく見つかりません。php のドキュメントでは、デフォルトで有効にする必要があると言われていますが、そうではありません。
php - OS X 10.6.6 への intl のインストール: 無効なライブラリ (おそらく PHP ライブラリではない) intl.so
OS X 10.6.6 の新規インストールに、同梱されている PHP バージョン (v5.3.3) を使用して、PHP 拡張機能 intl をインストールしようとしています。
拡張機能には ICU が必要であることはわかっているので、homebrew でインストールしました。インストールされている ICU のバージョンは 4.4.1 で、に保存されてい/usr/local/Cellar/icu4c/4.4.1
ます。
intl 拡張機能をインストールするために、次の 2 つの方法を試しました。
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: エラー: 'static' の重複 make: * [collator/collator_class.lo] エラー1 エラー: `make' が失敗しました
直接ビルド
現在のバージョンの 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' in Unknown on line 0
なぜこれが起こっているのか分かりません。拡張機能が PHP v5.3.5 からインストールされ、私は v5.3.3 を使用しているためだと推測していますが、2 つのバグ修正リリースで互換性が失われるとは考えられません。
何か案は?
更新 2011 年 3 月 16 日:
解決策を見つけました!configure でフラグを明示的に設定する-m64
と (gcc に 64 ビット コードを生成するように指示します)、拡張機能が正しく読み込まれます。
CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure
php - gettext() は Intl ライブラリで同等ですか?
i18n と l10n を実行する方法を探しています。
私はgettext
以前に使用したことがあり、それは良かったです.異なる言語で .mo ファイルを作成するだけで、翻訳する必要があるものはすべてこの表記法になります:
現在、PHP に組み込まれている Intl ライブラリがあることは知っていますgettext()
。
php.net でIntlに関する情報をすべて読んだ後、ロケールの処理、文字列の比較、数値の書式設定などの優れた機能がいくつかあることがわかりました。
私が理解できないのは、Intl ライブラリを使用して通常の文字列から文字列への変換を処理する方法です。何か案は?
php - Mac10.6-PHPintlをインストールできません
次のコマンドを使用して、Mac 10.6"SnowLeopard"にPHPintl拡張機能をインストールしようとしています。
sudo pecl install intl
...しかし、次のエラーが発生します:
PHP5.3.4のバンドルApacheサーバーを使用しています。
誰かがintl拡張機能をインストールする方法を知っていますか?