-3

我有一个混合了 html 和 php 的 php 站点。前任:

<html>
hello <?=$username?>

事实上,我需要保留文本。我不想要一个经典的解决方案,例如创建资源字符串并替换它们,例如:

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

实际上是一种“自动脚本”,它将在运行时替换所有文本资源。所以我保留现有的网站,并在开始时添加一些脚本。

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

并且这个 translation_module.php 会将“hello”替换为“bonjour”。

有什么线索可以实现吗?

我不关心语法、货币、复数问题。

  • 我猜它应该像谷歌翻译一样工作:它应该自己执行,然后翻译然后输出文本,最后打印输出结果(当然我不知道它是如何做到的,它如何处理 $GET、$POST、$SESSION 变量.. .)

谢谢

4

3 回答 3

5

从理论上讲,对于这种简单的情况,这可能是可能的,但在实践中却行不通。包含注入变量但仍需要翻译的字符串呢?例如:

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

这不能被翻译成语法要求例如“消息”必须出现在数字之前的任何语言。请记住,这只是一个简单的顶级示例;任何花费大量时间使用 i18n 的人都会告诉您,如果您想要一个适当的解决方案,您必须将所有字符串外部化,彼此独立

于 2012-10-22T11:55:25.550 回答
0

语法方面,它不起作用,因为某些句子很复杂,无法通过翻译器正确翻译成主要语言,正如@Jon 所说,语法有时要求放置不同的值。

我建议你做的是,你用多种语言编写或翻译你的主要内容,当用户指定一种语言时,你的网站就会跳过,主要内容是明智的。我怀疑你是否有一个论坛,你希望每个人都用(例如)三种语言发表他们的帖子。

由于语法的原因,有些事情你可能也与 if else 语句有关。

于 2012-10-22T12:01:51.710 回答
-2

您可以通过使用 somes Objects 来实现这一点。

<?
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 回答