-3

私は、html と php が混在する php サイトを持っています。元:

<html>
hello <?=$username?>

テキストをそのままにしておくには、事実が必要です。リソース文字列を作成し、次のように置き換えるような従来のソリューションは必要ありません。

<html>
<?=echo $helloString?> <?=$username?>

実際、実行時にすべてのテキスト リソースを置き換える一種の「オートスクリプト」です。だから私は既存のサイトを維持し、最初にいくつかのスクリプトを追加するだけです.

<? include("translation_module.php?")?>
<html>
hello <?=$username?>

この translation_module.php は、"hello" を "bonjour" に置き換えます。

それを達成するための手がかりはありますか?

文法、通貨、複数形の問題は気にしません。

  • 私はそれがグーグル翻訳のように動作するはずだと思います. .)

ありがとう

4

3 に答える 3

5

理論的には、このような単純なケースでは可能かもしれませんが、実際には機能しません。注入された変数を含み、まだ翻訳する必要がある文字列はどうですか? 例えば:

You have <?= $inboxCount?> messages in your inbox

これは、たとえば「メッセージ」が数字の前に表示されなければならないなど、文法で義務付けられている言語に翻訳することはできません。また、これは単純でありふれた例にすぎないことに注意してください。i18n の作業にある程度の時間を費やしたことのある人なら誰でも、適切な解決策が必要な場合は、すべての文字列互いに独立して外部化する必要があると言うでしょう。

于 2012-10-22T11:55:25.550 に答える
0

文法的にはうまくいきません。一部の文は、翻訳者を介してメイン言語に適切に翻訳するのが複雑すぎるため、@Jon が述べているように、文法では異なる値を配置する必要がある場合があります。

私がお勧めするのは、メイン コンテンツを複数の言語で記述または翻訳し、ユーザーが言語を指定すると、サイトにメイン コンテンツをジャンプさせることです。あなたがフォーラムを持っているとしたら、誰もが (たとえば 3 つの言語で) 投稿することを望んでいるとは思えません。

グラマーのために、if else ステートメントにも関係することがいくつかあります。

于 2012-10-22T12:01:51.710 に答える
-2

これは、somesオブジェクトを使用して実現できます。

<?
class LocalizationFR{

     public function getHelloMessage(){
          return "bonjour";
     }
}

class LocalizationEN{

     public function  getHelloMessage(){
              return "Hello";
     }
}

class Localization{

     public function setHelloMessage(){
          array_push('messages', array('locale' => 'fr', 'message' => LocalizationFR::getHelloMessage()));
          array_push('messages', array('locale' => 'en', 'message' => LocalizationEN::getHelloMessage()));
     }

     public static function getHelloMessage($locale){
          return $this->messages[$locale];
     }

    }

そして、あなたのコードでは、

<?php echo Localization::getHelloMessage('fr'); ?>

右 ?

于 2012-10-22T12:06:07.313 に答える