您在這裡

選單翻譯問題

ckflare's 的頭像
ckflare 在 2012-09-10 (週一) 14:25 發表

請教各位先進,我在安裝i18n後,對node的翻譯模式已熟悉,就是在原始node外(假設是中文)再新建另一語言node(假設是英文),其實是一體兩面,但是對於menu和block的翻譯模式一直弄不懂!

我本來把node的模式套過來想,也就是一體兩面的想法,一個menu link應該對應一個node後,然後判斷語系,再選擇出現中文還是英文,不過實際測試下好像不是如此!

問題:
原來menu link下(連接中文node),點擊翻譯後只能翻譯編輯連結的標題在切換文英文語系後,menu會顯示英文標題,但點擊後卻連到中文node。

設置block時也是,在切換文英文語系下,標題顯示也是英文,但內容還是原來的中文。

這樣是不就是要獨立建兩套menu和block才能達成不同語言連到不同node的功能?還請各位先進指教!

我推測 ckflare 的問題應該是沒有替原來中文的 node 1 建立翻譯的 node 2,而只是在英文介面中編輯 node 1 的選單項目翻譯,所以連結自然還是連到 node 1.
即便 D7 裡頭可以使用一個 menu 搞定兩種語系的選項,也是得先完成必要的節點翻譯工作。

參考 Using Drupal 第八章 +1

tky

感謝兩位的回覆!我其實是有利用node1的翻譯建立node2,也就是我說得一體兩面,但是node1和node2都分別可以產生menu link,我的想法是如果只有一套menu下應該只有一組menu link,然後在藉由語言判定是連node1或是node2呢?

還是說我在node2不要產生menu link?

gloomcheng,tky你好,我依序裝了上述模組後,還是有點疑問,附圖1的紅框是不是就是您所謂的一組menu,但是針對不同語言,還是要建分開的menu link(綠框)?

而在Translation sets(附圖2)若有出現綠框內的OOO/XXX,就代表此兩個翻譯是連結在一起的?也就是menu的翻譯有被正確設定?

小弟的疑惑煩請二位指教!

1. yes
2. 這個功能我沒試過,不過看來是如你所言。總之,就是選單項目也可以設語系,只要設好對應的語系,就可以在切換語系後看到對應的項目。

以我的經驗,使用 i18n 應該就足夠了,

以你首頁頁面連結為例,架構像是這樣

Node 1
- lang => zh-hant
- title => 首頁
- body => 中文內容文字

Node 2
- lang => en
- title => Homepage
- body => English content

兩者在 node/[nid]/translate 已經正確互相對應,
各自帶有已翻譯的選單標題

第二步很重要:
在編輯選單 (Edit Menu) 有一個地方可以設定多語系時所採取的顯示規則 (以主選單為例: admin/structure/menu/manage/main-menu/edit )
設定為第二項: Translate and Localize. Menu items with language will allow translations. Menu items without language will be localized. (參考下圖)

Multilingual option

這樣會有兩個狀況來判斷是否顯示該選單連結

1. Localized 跟著 node 一起設定好的連結,

你會在編輯選單項目(Menu item)的時候會看到語言已鎖定 (admin/structure/menu/item/[id]/edit),
然後有以下說明:
This menu item belongs to a node, so it will have the same language as the node and cannot be localized.
表示這個選單項目的語系會跟著 Node

2. Translate 屬於自行新增或是配合 Views 頁面使用的連結

在編輯選單項目(Menu item)時,看到語系可選擇 1) 語言中性 undefined 2) 英文 en 3) 中文 zh-hant
因此可指定顯示的時機,配合當時所選的語言界面,中性就會兩者都顯示

非常謝謝各位的圖文教學,讓在下對翻譯的使用更上手,不過這裡這裡還有一個問題,就是翻譯區塊的處理,我有上網看一些關於處理區塊翻譯的文章,有人是建兩個區塊,然後針對不同語言顯示。但我比較偏好建一個區塊,然後針對其翻譯,這樣比較好管理,但是要翻譯卻只能針對標題翻譯,卻不能對內容翻譯?附圖"內容"的地方呈現灰色,無法點選編輯,這讓我很困擾!請教該如何解決?

自訂區塊的內容畢竟不是 node,要做到你想要的「單一自訂區塊有多語內容」恐怕非常困難。
不過如果你的區塊內容是用 views 產生的話,就可以設定 filter,隨介面語系撈出不同語言的內容。

tky

區塊我在 6.x 使用過內容的翻譯,得要到翻譯界面去處理,長期管理很麻煩,因此建議還是分開。

views 的區塊可以用 tky 的方法。

如果是自定新增的區塊,可以配合 Context 模組使用,讓區塊依照邏輯條件顯示。