【问题标题】:multilaguage site - web page translation [closed]多语种网站 - 网页翻译 [关闭]
【发布时间】:2013-03-13 08:25:18
【问题描述】:

在我开始之前,我想提一下,我知道有很多关于多语言功能的答案,但我只是没有找到我希望从我的小搜索中找到的答案。

我有一个页面(例如 about.php),其中所有内容都是 html,有许多标题标签、p 标签、列表项等。内容是“静态的”,这意味着它不是来自数据库,我想通过单击链接(英文或法文)对其进行翻译。

我遵循了一些教程和示例并提出了与this 示例非常相似的内容,但我关心的是页面的内容。我想说的是: 假设我的页面结构如下所示:

<html>
<body>
<ul>
<li><a href="index.php"><?php echo $lang['HOME']; ?></a></li>
<li><a href="about.php"><?php echo $lang['ABOUT']; ?></a></li>
<li><a href="?lang=fre">french</a></li>
</ul>
<h1><?php echo $lang['HEADING']; ?></h1>
<p><?php echo $lang['PARAGR']; ?></p>
<p><?php echo $lang['ANOTHER_PAR']; ?></p>
</body>
</html>

导航菜单的值可以很容易地存储在 $lang 数组中并每次回显特定的值,但这也是最好(或更有效)的方法和页面内容吗?我是否必须在 $lang 中放入我所有的标题、段落和列表等,或者这可以通过更好的方式轻松完成?如果某些段落里面的文字太多怎么办?等等

希望这有意义。

P.S 我也在考虑制作两个不同的文件,比如 about_eng.php 和 about_fre.php,我分别拥有英语和法语的所有 html 内容,并使用一个简单的 if 语句来检查每次选择哪种语言和包含正确的文件

【问题讨论】:

  • 我相信第一种方法更好。在第二种方法中,您需要保持对这两个文件的更改,这需要额外的工作。你不应该担心文本,因为 php 可以很好地处理它。希望这会有所帮助:)
  • 我认为在这两种情况下所做的任何更改都将花费多余的精力,因为在第一种情况下,必须在英语版本和法语版本中进行更改。但是,第一种方法也是最佳实践吗???
  • 我使用 Array 方法翻译了我的页面。它工作正常。但还有其他方法。你听说过Gettext吗? en.wikipedia.org/wiki/Gettext
  • 在第一种方法中,您将要做的不是冗余。文本,您必须根据语言进行更新。我的意思是,如果您决定将来更改 html,则必须在所有页面上进行冗余。此外,使用任何语言翻译器都无济于事,因为人类语言是上下文相关的,并且准确地映射它仍在开发中。
  • 好的,所以我想我将不得不继续第一个。还有其他一些更好/更受欢迎的方法吗?因为这看起来还是有点“痛苦”。 @Adam Brown:我从未使用过它,但我觉得它与 google-translate 的作用相同,我对得到的结果并不满意。

标签: php internationalization translation multilingual


【解决方案1】:

我认为将特定语言的数据保存在声明 $lang 数组的不同 php 文件中是一个好方法。这将避免用语言重新输入所有内容,这意味着更少的冗余。 所以我同意贾斯帕尔的观点。对于输入 $lang['XXX'] 您可以轻松地将 php 转换为这个(可能是一个愚蠢的解决方案,但它会起作用):

function displayMyPage() {
global $lang;     // do not forget the other globals you need in the page...
$l = $lang;       // localize $lang as $l... 
?>  
<html>
<body>
<ul>
<li><a href="index.php"><?php echo $l['HOME']; ?></a></li>
<li><a href="about.php"><?php echo $l['ABOUT']; ?></a></li>
<li><a href="?lang=fre">french</a></li>
</ul>
<h1><?php echo $l['HEADING']; ?></h1>
<p><?php echo $l['PARAGR']; ?></p>
<p><?php echo $l['ANOTHER_PAR']; ?></p>
</body>
</html>
<?php
}
?>

【讨论】:

  • 如果任务是输入尽可能少的符号,我的翻译看起来像 = t('home'); ?> =) 我为每种语言创建了一个带有关联数组的语言文件,'home' 是关键,大文本翻译放入数据库
猜你喜欢
  • 2014-05-10
  • 2013-04-07
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 2012-03-08
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多