翻译php网站,无需资源扩展

时间:2012-10-22 11:52:20

标签: php

我有一个混合html和php的php网站。 例如:

<html>
hello <?=$username?>

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

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

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

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

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

实现这一目标的任何线索?

我不关心语法,货币,多元问题。

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

由于

3 个答案:

答案 0 :(得分:5)

从理论上讲,这可能适用于这种简单的案例,但它在实践中并不适用。包含注入变量但仍需要翻译的字符串呢?例如:

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

这不能翻译成语法强制要求的任何语言。 “消息”必须出现在号码之前。请记住,这只是一个简单的非常简单的例子;任何花费任何时间使用i18n的人都会告诉你,如果你想要一个合适的解决方案,你必须将所有字符串独立于外部

答案 1 :(得分:0)

语法明智,它无法发挥作用,因为某些作品只是通过翻译以主要语言正确翻译而变得复杂,并且如@Jon所述,语法有时要求将值放在不同的位置。

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

由于语法的原因,你迁移的一些东西也与if else语句有关。

答案 2 :(得分:-2)

你可以通过使用一些对象来实现这一点。

<?
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'); ?>

对吗?