您在這裡

URL Alias 在多語言站設定問題

adrianmak's 的頭像
adrianmak 在 2008-09-05 (週五) 14:53 發表

其實在多語言drupal 站,而且會用url alias
在node content 給url alias 時,是否需要prefix 一個語言字串 ??

比如, 有個content page
node/4 , About us
node/5 關與我們

在加url alias是否要這樣 ?
About us -> en/about_us
關與我們 -> cht/about_us

就如你所說的一樣。

在我使用 Drupal 6 預設的 Locale 這個模組來說,的確是可以自定不同語言的 prefix。

ex,

node/5 -> 中文(預設的語言)
en/node/6 -> 英文(如果你有寫英文版的話)

然後你當然也可以給他們如下的 url alias

node/about_us
en/node/about_us

-- Drake

我在使用i18n的過程中發現一個問題,當打開了某語言並非首頁的某篇文章時,選「語言轉換」中的其他語言不能正確轉換。如正在閱讀並非首頁的某篇英語文章en/node/40,若點選「語言轉換」中的正體中文,這時看到的導航條是正體中文,文章卻仍為原英語的文章,因我並沒有zh-hant/node/40的文章對應,必須再點取「首頁」後才能轉到正體中文。

另外不知是不是i18n的問題,當某種語言有兩篇以上的文章時,該語言首頁上的同一篇文章就會重複出現。如總共有5篇不同內容的英語文章,首頁上的同一篇英語文章就會重複出現5次。

請問應如何解決?

D5 和 D6 的 i18n 對於 URL Alias 的處理方式不同. 請看下圖, 黃色標記的部份, 在 D5 不存在, 因此我可以作如下設定:
node/4 -> en/about_us
node/5 -> zh-hant/about_us
事實上, 我的 D5 網站就是這樣設定的跑了快一年了.

但是 D6 的 URL Alias 不一樣了, 而且我覺得怪怪的, 如下圖, 我那時的 URL 是 drupal6. dnsalias.org/en/admin/build/path/edit/1.
當我切換到 zh-hant 的時候, 黃色的部份也會跟著變成 zh-hant. 也就是說, 如果我設定的 language 是 All languages 的話,
"http://drupal6. dnsalias.org/en/node-1-story" 和 "http://drupal6. dnsalias.org/zh-hant/node-1-story" 都可以作用的.
(我貼的圖是 Chinese, Traditional, 因此在我這張圖的設定, "http://drupal6. dnsalias.org/en/node-1-story" 是會出現 page not found)

目前我是覺得在 D6 要做到 en/about_us 和 zh-hant/about_us 同時能使用應該是沒有辦法的 :(
可以參考我另外寫的這篇 http://drupaltaiwan.org/forum/20081109/2763

i18n D6

測試了一下, 可以不用一個一個改, 只是我是直接改 database, 如果想參考我的方式, 請先備份 ...

1. 執行下列 SQL
UPDATE `dr_url_alias`
SET language = 'zh-hant'
WHERE dst like 'zh-hant%'

2. 執行下列 SQL
UPDATE `dr_url_alias`
SET language = 'en'
WHERE dst like 'en%'

3. 把整個 url_alisa 的資料 export 出來, 用 SQL insert 的格式
4. 用 ultraedit 之類的編輯器, 把 'zh-hant/ 和 'en/ 換成 '
5. 執行下列 SQL
truncate table dr_url_alias
6. 執行步驟 4 修改後的 SQL

大功告成, 所有 URL alias 都對了. 不好意思, 連續貼了好幾篇文.