1

这是场景:

我有一个网站,我会翻译并最终在上面应用一个好的 SEO。哪种方法最适合翻译内容(菜单链接、大约 10 篇文章、alt 标签、标题标签、元标签、html lang 等),同时被 Google、Bing、Yandex 和其他搜索引擎轻松索引?

我的第一个想法是使用一个翻译 php 函数,该函数由我自己制作的数组组成(我已经有了它的原型),它获取内容并以用户的语言显示它。

这是正确的道路吗?这里的问题是我想确保有一个动态系统,允许我将来添加一种新语言。

也许 MySql 是正确的选择?

该网站不使用 cms,我自己使用 php 制作了它,但如果需要,我可以毫无问题地依赖 MySql。

先感谢您 :)

4

2 回答 2

4

您基本上有 3 种选择,每种选择各有利弊:

1:正如 Dainis Abols 建议的那样,将其放入数据库中-取决于您的服务器的设置方式,这可能是最慢、最繁重的系统路线(尽管这都是相对的,除非您获得数百万查看一个小时)。

2:使用PHP库文件;我倾向于将库文件用于字段标签(名字、姓氏等)等小型单个项目,并将 CMS 管理的 HTML 等较大的内容存储在数据库中……这减少了数据库调用,但为您加载的每个字典增加了一点开销变成脚本<?php $this->page->dictionary->product = Dictionary::load("product"); ?>之类的东西。

3:最后,我个人认为值得看看 PHP 的gettext实现,尽管您需要像poedit这样的东西来维护 PO(压缩翻译文件)。这使您能够非常快速地维护翻译,因为您只需将文本包装在一个简单的下划线函数中即可在 PHP 文档中输入文本:

例如<?= _("Hello World"); ?>

然后,您可以在压缩的 PO 文件中维护翻译 - 它非常高效(可能比使用原生 PHP 文件更快)但是在自然语言的细微差别方面确实存在一些缺点。

例如,如果您有一个字段标签“标题” <?= _("Title"); ?>,那么所有的实例都_("Title")将以相同的方式翻译。

这意味着您不能将“Title”既用作人名的表单标签又用作书名;例如,在德语中,您可能希望将Anrede用于一个“标题”,将Titel用于另一个。

虽然,要真正使用gettext您可能需要运行自己的服务器 - 当您更改 PO 文件时可能需要重新启动 Apache:\

至于搜索引擎,它们会从您的代码中读取输出,因此您使用哪种方法执行翻译并没有太大区别,但理想情况下,您可能希望保持 URL RESTful,因此无论您是否包含 PHP 字典,调用数据库或使用 gettext (或稍后将您的想法从一种更改为另一种),您将能够使用类似的方式将语言映射到 URL,http://www.mysite.com/en_gb/widgets这样您就可以在不更改 URL 的情况下更改程序的工作方式

于 2013-01-10T16:22:29.577 回答
1

将所有文本存储在 db 中,并为语言应用另一个字段:

+----+---------+---------+
| id | text_en | text_de |
+----+---------+---------+
|  1 | English | Deutch  |
+----+---------+---------+

现在,当用户切换语言时,只需使用该语言的字段:

$lang = 'en';
$query = "SELECT text_".$lang." FROM texts WHERE id = 1";

类似的东西。因此,您所有的客户端文本都将始终存储在数据库中。所以你的输出会是这样的:

<div id="header"><?=get_db_text_for_id(1)?></div>

当然,您需要预防措施和更多领域,但这是一般的想法。

于 2013-01-10T15:55:07.080 回答