如何使用PHP高效翻译网站内容,保持SEO友好?

时间:2013-01-10 15:48:55

标签: php seo translate

这是情景:

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

我的第一个想法是使用一个翻译php函数,该函数由我自己创建的数组组成(我已经有了一个prototyope),它接收内容并以用户的语言显示它。

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

也许MySql是正确的选择?

该网站不使用cms,我自己用php制作,但如果我需要,我可以依赖MySql。

提前谢谢你:)

2 个答案:

答案 0 :(得分:4)

你基本上有3个选择,每个选择都有利弊:

1:正如Dainis Abols建议的那样,将其放入数据库中 - 取决于您的服务器设置方式,这可能是最慢,最系统繁重的路径(尽管它是相对的,但不太可能除非你每小时获得数百万的观看次数,否则会有所不同。

2:使用PHP库文件;我倾向于将库文件用于小的单个项目,如字段标签(forename,surname等),并在数据库中存储较大的内容,如CMS管理的HTML ...这减少了数据库调用,但为您加载的每个字典增加了一小部分开销进入一个脚本<?php $this->page->dictionary->product = Dictionary::load("product"); ?>

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

e.g。 <?= _("Hello World"); ?>

然后,您可以在压缩的PO文件中维护翻译 - 它非常有效(可能比使用本机PHP文件更快)但是当涉及到自然语言的细微差别时,它确实存在一些缺点。

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

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

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

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

答案 1 :(得分:1)

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

+----+---------+---------+
| 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>

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