php - MySQL 通过 PHP 查询将 HTML 页面翻译成不同的语言。是好是坏?

标签 php html mysql

我目前正在开发一个网站,该网站在我加入该项目时就已创建。我注意到他们使用服务器上的MySQL数据库来执行网页翻译。 HTML 页面非常简单(带有可选数据、标题、复选框等的框)。该站点是特定设备的控制面板;没有什么花哨。 HTML 中到处都有这种类型的代码来进行翻译:

    <?php translate("string to translate"); ?>

MySQL 查询中的 translate() 函数和 PHP session 包含用户语言信息。

目前,该站点可容纳大约 400 个用户(绝不会同时)。恐怕这不是一个可扩展的解决方案,一旦网站有了相当大的流量,它就会运行得很糟糕。

我的假设不好吗?我应该为每种语言使用不同的 HTML 文件(就像大多数网站,IMO)吗?

谢谢!

最佳答案

您的解决方案似乎难以扩展,并且从某种意义上说不是最佳的,因为您获得的查询数量的增长速度明显快于用户数量的增长速度。

“我应该为每种语言使用不同的 HTML 文件(就像大多数网站,IMO)”,不,不要为每种语言编写 HTML,这是一种老式的方法,现在所有网站的用户模板 -一个带有可翻译变量而不是文本的 HTML。

我的建议是使用现有的框架之一,例如 Zend 或 Symfony,它们具有开箱即用的高效翻译机制。您的所有翻译都将保存在单一语言文件中,例如 en_US.po 或 lt_LT.po,您可以使用 Poedit 软件对其进行编辑。

如果您不想使用框架并想要一个更简单的解决方案 - 为每种语言创建一个包含文本变量的 php 文件,例如

en_US.php

$translation['page_title'] = 'My cool company title';
$translation['menu_title'] = 'Navigation';

lt_LT.php

$translation['page_title'] = 'Mano kompanija'; // Lithuanian translation
$translation['menu_title'] = 'Navigacija';     // Lithuanian translation

然后在加载 HTML 之前包含必要的文件并在模板中使用这些变量:

index.php

<?php

// Very simple approach to insert the necessary translation file, could be optimized/tuned
if ($_GET['language'] == 'en_US'){
    require 'en_us.php'
}
else if ($_GET['language'] == 'lt_LT'){
    require 'lt_LT.php'
}

?>

<html>
    <title><?= $translation['page_title']; ?></title>
    <body>
    <menu><?= $translation['menu_title']; ?></menu>
    </body>
</html>

希望这有帮助。如果您有任何疑问,请告诉我。

关于php - MySQL 通过 PHP 查询将 HTML 页面翻译成不同的语言。是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315444/

相关文章:

php - RP游戏的经验值跳跃和练级

javascript - onclick 在第一次点击时不起作用

mysql - 将数据从 MySQL 表传输到不同的表

php - 可以使用正则表达式通过 php 表单将可以输入 MySQL 数据库的单词列入黑名单

php - mysql_real_escape_string 与 Zend

php - Doctrine multiple OneToMany/ManyToOne 双向完整性约束违反

php - 从 PHP 响应返回数据?

javascript - JQuery Datatable 在获取时恢复为默认值

html - 使用 HTML Agility 剥离 HTML 标签但保留内部文本?

mysql - 纯mysql如何统计多行的列值?