問題タブ [php-gettext]
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.
gettext - php gettext と poedit - コンストラクターを使用する場合と使用しない場合のどちらが高速でしょうか
いくつかの属性とそのオプションをクラス Attributes に保存します。
db ではなくコードで保持する理由は別の話です。poedit は動的な翻訳を読み取れないため、問題が発生しています。2 つのオプションがあります。
a) すべての配列値を 1 つのダンプ ファイルに入れます。このファイルは、poedit パーサーによってのみ使用されます。
このようにして、次の方法でビュー内の翻訳を呼び出すことができます。
b) コンストラクターを使用して、そこから gettext を呼び出すことができます。
このようにして、次の方法でビュー内の翻訳を呼び出すことができます。
今私の質問に:
このような属性が約 10 個あり、平均して 40 個のオプションがあるとします。したがって、これはすべて合わせて 400 個の配列ペアになります。このようにコンストラクトを使用すると、アプリケーションが遅くなりますか? これは、コンストラクターを呼び出すたびに、この属性値がビューに表示されていなくても、すべての配列値に対して gettext が呼び出されることを意味するためです。コンストラクターを使用しない場合、実際に使用される単一の属性値に対してのみ gettext が呼び出されます。
abテストをしましたが、違いがなかったので驚きました。しかし、私の感覚では、この方法でコンストラクターを呼び出すと速度が低下すると言うので、何かが欠けているのではないかと心配しています。
php - Gettext() による PHP Web アプリケーションの国際化;
私は現在、フランス語と英語で利用できるようにする必要がある PHP Web アプリを開発しています。調べてみると、Gettext() 機能が最高のパフォーマンスを提供することがわかりました。
コマンドで .pot ファイルを生成しました
.pot ファイルの生成に成功しました。PoEdit を使用して messages.po ファイルを生成し、messages.mo を作成しました。
ここに私のサーバーファイルがあります:
そして、私はこのようにphpファイルにロケールを設定します:
しかし、翻訳ではなくラベルのみが表示されます...「fr_FR.UTF-8」の代わりに「fr_FR」とあらゆる種類の文字列を入れてみましたが、機能しません。
何か不足していますか?私のサーバーは、Apacheとphp5を備えたUbuntu 12.04サーバーです
php - php-gettextは本番サーバーでは機能しません。(Ubuntu)
PHPのgettextに問題があります。私は2つのサーバーを持っています。1つはWindows(vs.phpを使用)でローカル(vs.phpを使用)で動作し、もう1つはAmazon EC2(Ubuntu 12.04更新)で、これは本番サーバーであり、このサーバーでは同じコードはありません。 tが見つかりました。
これは私のコードです:
これでgettextを初期化します。
私のプロジェクトのすべてのファイルはUTF-8(スペイン語)でコード化されており、.moと.poはpoeditで生成されています。
apacheサービスをリロードしようとしましたが、機能しませんでした。
何か案が?
php - Apacheを再起動したりドメインを変更したりせずにphpのgettextキャッシュをクリアするには?
これは、 php マニュアルからの小さなコード スニペットです。
ファイルで定義されているように出力されdomain.mo
ますが、問題はApacheが実行されている限り、gettext()
常にキャッシュされた結果を返すことです。
Helloの翻訳を您好inに変更しても、你好domain.mo
が出力されます。
ただし、とのdomain
引数を新しい名前に変更することで、これを修正できます。からまでのように。しかし、これは、ファイルを更新するたびに php ファイルを編集するのは本当に苦痛です。bindtextdomain()
textdomain()
"domain"
"domain2"
.mo
いくつかのフォルダを削除したり、いくつかのphp関数を呼び出して仕事をするなど、これを行うためのより良い方法はありますか? この目的のために小さなスクリプトを書くことができるように。
php - PHPでテキストファイルから文字列を見つける.
私は別の行を書いたテキストファイルを持っています。各行には、セミコロンで区切られた異なる文字列値が含まれています。. 行から最初と 2 番目の文字列を取得しようとしていますが、方法がわかりません。解決策はありますか?
PHP - 現在、行全体を印刷しています。
テキストファイル
php - ロケールをインストールせずにPHPGettextを使用する
私はオープンソースプロジェクトを国際化するためのオプションを検討してきました。
誰もが推奨しているように見えるGettextを使用するには、ロケールを「システムにインストール」する必要があるようです。私の状況を正確に反映しているPHPマニュアルのこのメモを参照してください。このSOの質問は、同じ問題についても尋ねます。エンドユーザーがシステムに適切なロケールをインストールしているとは信じられないため、これはオープンソースプロジェクトには適していません。その上、翻訳した文字列(IMO)を使用するためだけにロケールをインストールしなければならないのは非常に奇妙です。
時々gettextを優先してZend_Translateも推奨されますが、私はZendフレームワークを使用していないので、それが私にとってのオプションではないと思います。Zendフレームワークから分割できると言う人もいますが、どうすればよいかわかりません。誰かが私が選ぶのに必要なファイル(私はZendフレームワークのtarballをダウンロードしました)を教えてくれれば、私はZend_Translateを使用することにオープンになります。
配列。それが私が今していることですが、それは理想的ではありません。理由は次のとおりです。
- 現在のページでほとんど使用されない場合、すべての翻訳を定義するために多くのメモリを消費します。
- 配列内のキーを複製することに問題があります。これはすでに1000行のコード長になっており、まだほとんど何も追加していません...
- これは、プログラマー以外の人が実際に翻訳できないことを意味しますが、POeditは誰もが使用することを期待している標準です。
.mo
GettextまたはZend_Translateなしでファイルを読み取ることはできますか、それともGettextを使用する必要がありますか?もしそうなら、私が上でリンクした質問のように、どうすればすべてのロケールを機能させることができますか?
編集:私は今Zend_Translateを使用する用意があります。必要なファイルを見つける必要があります(1つのファイルにまとめることができれば素晴らしいと思います)-プロジェクトにZendFramework全体を含めたくありません。
更新:大きなオープンソースプロジェクトがi18nをどのように処理するかを知りたいと思いました。
- Moodleは配列を使用します。
- Drupalは、データベースフォールバックを使用して配列を使用しているようです。また
setlocale('C')
、一般的なロケールを取得し、setlocale
混乱全体を回避するために実行されます。 - Wordpressはi18nに独自の関数のヒープを使用しますが、その下ではgettextを使用します。
したがって、私が見る限り、これら3つのランダムなプロジェクトのいずれもZend_Translateを使用せず、gettextを直接使用しません。
ロケールを使用しC
、言語の名前をテキストドメイン名に保存して、そこから移動することをお勧めします。
だから、これが私が持っている限りです:
しかし、適切なファイルを作成するためにpoedit、msgfmtなどを使用したにもかかわらず、私はまだ英語の文字列を取得しています。また、Apacheを再起動してみました。
php-gettext - 内部で gettext といくつかの複雑な変数を使用して翻訳するにはどうすればよいですか
Gettext を使用してサイトを翻訳していますが、最近、翻訳チームにいくつかの問題が見つかりました。
次のような文字列があります...
やあボブ今晩あなたは* 3 つ*赤*風船*を獲得します
そして、私たちはこのようなものを手に入れます...
問題は、私たちの翻訳チームが変数の順序を知らないことです...そして、彼らがその「エンコード」文字列を正しく翻訳することは非常に困難です。
この複雑な文字列をどのように処理できますか?