2013-01-10 20 views
1

這是場景:如何高效地翻譯網站內容與PHP,保持SEO友好?

我有一個網站,我會翻譯並最終應用一個好的SEO。 哪種方法最適合翻譯Google,Bing,Yandex和其他搜索引擎的內容(菜單鏈接,約10篇文章,alt標籤,標題標籤,meta標籤,html lang等)?

我的第一個想法是使用一個翻譯php函數,它由我自己製作的數組組成(我已經擁有了它的原型),它接受內容並以用戶的語言顯示它。

這是正確的道路嗎?這裏的問題是,我想確保有一個動態系統,允許我在未來添加一種新語言。

也許MySql是正確的選擇?

該網站不使用cms,我自己用php做的,儘管如果需要的話我依靠MySql沒問題。

預先感謝您:)

回答

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> 

當然,你需要注意事項和更多​​的領域,但多數民衆贊成在一般的想法。

+0

謝謝,最後我用你的方法:) – user1967184

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文檔中輸入文本:

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

然後,您將壓縮的PO文件中的翻譯保留下來 - 它非常高效(可能比使用原生PHP文件更快),但它在自然語言的細微差別方面確實有一些缺點。例如,如果您有字段標籤「標題」<?= _("Title"); ?>,則所有_("Title")實例都將以相同的方式進行翻譯。

這意味着您不能將「標題」用作人物標題的表單標籤和書名;例如,在德語中,您可能想要爲一個「標題」使用Anrede,另一個使用標題

雖然真正使用gettext你可能會需要運行自己的服務器 - 當你改變PO文件,它可以要求一個Apache重新啓動:\

至於搜索引擎他們閱讀的輸出從你的代碼中獲得,所以它並沒有真正改變你用來執行翻譯的方法,但理想情況下你可能希望保持URL RESTful,所以無論你是包含PHP字典,調用數據庫還是使用gettext(或改變你的思想從一個到另一個),你將能夠將語言映射到類似http://www.mysite.com/en_gb/widgets的URL,所以你可以改變該程序如何工作而無需更改網址。