2013-04-01 34 views
1

我正在處理我自己的處理雙語網站的方式。我的方法應該允許適當的搜索引擎索引,並將所有內容保留在一個頁面上,而無需外部文件對我的多語言網站的方法的意見

一個功能將處理其內容顯示:

<? 
    function l($en, $fr){ 
     echo ($_GET['lang'] === 'fr') ? $fr : $en ; 
    } 
?> 

然後相應的文本將根據在URL語言顯示(?/郎=烯)

<h1><? l('welcome!', 'bienvenue!') ?></h1> 

用於圖像,這是我的解決方案:

<img src="<? l('hi-en.png', 'hi-fr.png')?>" width="100" height="20"> 

任何人都可以名稱缺點,如果使用此方法?爲包含所有語言內容的頁面提供單個函數處理語言是不尋常的?

+0

我剛剛讀到框架[Kohana](http://kohanaframework.org/)如何利用[i18n](http://blog.mixu.net/2010/11/11/kohana-3-i18n -tutorial /),可以幫助你 – kero

回答

1

使用單例或全局函數(如l函數)的一般想法非常普遍。你絕對是在正確的軌道上!

你的方法確實有一些缺點,但:

  • 如果出現在代碼中的許多地方相同的文字或圖片,你需要保持在每地方翻譯。
  • 更新或更正翻譯需要通過代碼涉水,這對於缺乏經驗的編碼人員或非編碼人員(例如,如果您有翻譯人員幫助您)非常困難。
  • 如果你曾經添加過一種新語言,你將不得不修改每個源文件,這將是非常痛苦的。這可能不太可能,但如果它曾經發生過,那麼你寧願與自己交叉。

更典型的解決方案是位於一個單獨的文件翻譯,無論是作爲一個簡單的哈希或像XML結構化數據格式,然後你l功能只是看起來像l('welcome');該參數是一個關鍵字,l將從單獨的文件中查找給定語言的正確翻譯。