記錄在此備查。
- 界面多語言化
- 內置變量多語言化
- 內容多語言化
- 術語表多語言化
- CCK多語言化
- 菜單多語言化
- 區塊多語言化
界面多語言化
1.啓用 Locale 模塊並導入中文語言包
2.訪問configuration-->Regional and language --> Languages,列出所有語言。點後面的"Edit"按鈕,進入編輯語言界面,將“路徑前綴(Path prefix language code)”設置爲 "en",點擊“保存語言”;
3.在"Languages"頁面,點右上角"Detection and selection"面板,在每一列"Determine the language from the URL (Path prefix or domain)"後面打勾,即使用URL決定語言,點擊後面的"設置"爲"Path prefix"(路徑前綴)
4.進入"Structure-->Blocks",選擇"Language switcher (User interface text)",放到合適的區域,比如sidebar等,我在這裏使用了一個自定義函數"render_menu_block($fmodule_name, $fblock_name)"把這個切換語言塊放到了頁面最頂端。
注意:(1)如果在第2步中將默認語言設置爲“簡體中文”,但未在第3步中爲英文語言設置路徑前綴,則不能正確執行語言切換
(2)若沒有正確配置第4步的操作,“語言轉換”區塊將不會顯示
5.刷新網站,在頁面頂端出現語言切換鏈接,點擊“簡體中文”和“English”的鏈接,試試語言的切換,發現就可以切換了。
相信大家也發現了,在切換語言時,儘管界面語言都進行了中英文的切換,但是像“網站標題”這樣存儲在數據庫裏面的配置項,卻沒能被翻譯過來。Locale 能夠做到界面內容的翻譯已經很不錯,至於網站變量的多語言化,以及術語表、內容、CCK、菜單、區塊等元素的多語言化,就交給接下來要介紹的 i18n 模塊來做吧。
內置變量多語言化
上一節我們已經使用 Drupal 核心的 Locale 模塊爲 Drupal 站點啓用了多語言的功能,並且對 Drupal 界面進行了翻譯。不過還遺留了一點點小問題,就是 Drupal 的站點標題沒有翻譯過來。
Drupal 中的一些文本和配置存儲在數據庫的variables表中。比如“站點名稱”和“站點口號”這樣的配置文本,Drupal 核心的 Locale 模塊不能實現這些配置變量的多語言化。因此創建一個更徹底的多語言站點,還需要用到 Internationalization(i18n)模塊,i18n 模塊提供了 Drupal 變量多語言化的功能。
要實現對 Drupal 變量的多語言化操作,需要知道要翻譯的變量的名稱,這一步可以通過搜索 Drupal 數據庫的 variables 表來實現。
當你確定要對哪些變量進行多語言化操作時,你只需要按照以下格式,將變量添加到 settings.php 文件中即可。以下添加了 Drupal 站點的一些常見變量:
1,啓用international (i18n)模塊,還需要啓動依賴模塊Variable
連接:https://drupal.org/project/i18n
https://drupal.org/project/variable
2,修改settings,添加變量
/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n is enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
// Contact form information
'contact_form_information',
// For theme variables, read more below
'theme_settings',
'theme_garland_settings',
);
當啓用了 i18n 模塊,並且向 settings.php 配置文件中添加了以上代碼之後,可以在 管理 > 站點設置 > 語言 > Multilingual system > Variables(admin/settings/languages/i18n/variables)頁面中,看到可以實現多語言化的變量名稱及翻譯狀態。
3,進入configuration --> site information,在不同的語言下修改內容,保存,即可看到不同語言下的文字。
(注:responsive模式下的"top option text"需要在apperance --> settings --> responsive --> responsive menu,更改top option text)
爲內容創建不同語言的翻譯版本
1,啓用Content translation模塊
2,"structure --> content type",選擇一個內容類型點擊"Edit",選擇下面的"Publishing options" --> "Multilingual support",選擇第三項"Enabled, with translation",即允許當前內容類型使用多語言
3,創建一個文檔(在創建頁面選擇一種語言)
4,發佈後點擊"Translate"翻譯該文檔,即可爲當前文檔實現多語言。
菜單與主鏈接/次鏈接多語言化
只使用 Drupal 核心所提供的功能,還不能菜單項的多語言化/翻譯。不過使用 i18n 模塊包中提供的 Menu translation 模塊,可能很好的實現菜單、主鏈接/次鏈接的多語言化功能。
i18n 模塊包中的 Menu translation 模塊,提供了以下特性:
- 允許創建菜單時爲菜單設置語言項(如中文、英文等等),設置了語言的菜單項只會在與當前使用語言一致時纔會顯示;
- 可以爲未設置語言項的菜單內容進行多語言化。實現可通過 Drupal 的翻譯頁面對菜單項進行翻譯;
創建可翻譯的多語言化菜單
- 啓用模塊:啓用 i18n 模塊的 Menu translation 模塊;
- 訪問 管理 > 站點構建 > 菜單 > 主鏈接(Primary links) > 增加菜單項(admin/build/menu-customize/primary-links/add)
- 創建可翻譯菜單項:根據以下信息填寫菜單創建表單後,點擊“保存”
路徑:<front>
菜單鏈接標題:首頁
語言:所有語言
說明:將語言設置爲所有語言的菜單項,會在所有語言界面下顯示,可嘗試在中英文界面之前進行切換,都能菜單項“首頁”,不過在英文界面下也還是顯示中文 - 搜索翻譯項:訪問 管理 > 站點構建 > 翻譯 > 搜索(admin/build/translate/search),按照以下信息填寫表單後,點擊“搜索”
字符串包括:首頁
將搜索限制在:菜單 - 從搜索結果中找到要翻譯的菜單項目,點擊後面的“編輯”鏈接
- 翻譯菜單項:在翻譯界面中,填寫翻譯內容,Home。然後點擊保存翻譯;
- 現在再在中英文之間進行切換,就可以看到,在中文界面下,主鏈接顯示菜單項“首頁”,在英文界面下,主鏈接顯示菜單項“Home”
創建只在指定語言環境下顯示的菜單
- 訪問 管理 > 站點構建 > 菜單 > 主鏈接(Primary links) > 增加菜單項(admin/build/menu-customize/primary-links/add)
- 創建可翻譯菜單項:根據以下信息填寫菜單創建表單後,點擊“保存”
路徑:node
菜單鏈接標題:內容
語言:Chinese Simplified (簡體中文)
說明:在這裏爲菜單語言項,該菜單只有在與當前語言環境一致時,纔會顯示出來。 - 重複第2步,使用以下信息創建一個英語菜單項路徑:node
菜單鏈接標題:Node
語言:English (英語) - 現在再在中英文之間進行切換,就可以看到,在中文界面下,會顯示語言設置爲 Chinese Simplified (簡體中文)的菜單項“內容”,在英文界面下,則會顯示語言設置爲 English (英文)的菜單項“Node”
使用多語言化變量設置不同的主鏈接/次鏈接
訪問 管理 > 站點構建 > 菜單 > 設置(admin/build/menu/settings)頁面,可以看到“主導航菜單來源”及“次級菜單來源”都被標識爲“多語言化變量(This is a multilingual variable)”,這說明這兩項值,在不同的語言環境下,可以設置不同的值,並被數據庫分開保存。(更多關於多語言化變量請參考《站點變量(Variables)多語言化》)
在中文語言下,爲主鏈接/次鏈接選擇恰當的中文鏈接,在英文語言下,爲主鏈接/次鏈接選擇恰當的英文鏈接,從而實現在不同語言下,使用不同語言的菜單項,以此來實現 Drupal 網站中菜單的多語言化。
創建支持多語言化的區塊
爲 Drupal 創建多語言化支持的區塊,需要 i18n 模塊包中的 Block Translation 提供相應的支持。有兩種方式可以實現區塊的多語言化,一種是對區塊(Blocks)中的字段進行翻譯,另一種是爲每一種語言創建一個對應的區塊。本文將介紹這兩種區塊多語言化的方法。
準備工作:
- 下載 i18n 模塊包,下載地址:http://drupal.org/project/i18n
- 模塊管理頁面:訪問 管理 > 站點構建 > 模塊(admin/build/modules)頁面
- 啓用模塊:啓用 Internationalization 模塊、String Translation 模塊 和 Block Translation 模塊,並點擊“保存設置”
創建基於字段翻譯的多語言化區塊
- 創建區塊:訪問 管理 > 站點構建 > 區塊 > 添加區塊(admin/build/blocks/add)
- 設置區塊語言:在添加區塊頁面的 Multilingual settings 中,將語言設置爲 Chinese Simplified(簡體中文)
- 添加中文區塊:在添加區塊頁面,填寫以下中文信息,然後點擊“保存區塊”
區塊描述:多語言化測試區塊(描述)
區塊標題:多語言化測試區塊
區塊內容:這是一個用於測試區塊多語言化的區塊 :D
注意:實際操作時,請根據你的需要爲區塊填寫合適的描述、標題和內容等信息 - 分配區塊:在區塊管理頁面(admin/build/blocks),找到剛創建的“多語言化測試區塊(描述)”,將其分配到指定的區塊,如左邊欄,點擊“保存區塊”
- 搜索區塊中的字段:訪問 管理 > 站點構建 > 翻譯 > 搜索(admin/build/translate/search),在頁面的搜索框中搜索第3步中填寫的信息,如"多語言化測試區塊",將得到如下搜索結果
- 說明:基於字段的翻譯好像不能對區塊描述進行翻譯,不過對區塊標題和內容的多語言化翻譯都是支持的。如果希望區塊描述也能夠被多語言化,可以參考第二種區塊多語言化的方法
- 翻譯區塊中的字段:點擊“編輯”進入字段翻譯頁面,填寫翻譯內容後點擊“保存翻譯”
- 重複第5,6步,完成區塊內容的翻譯
- 查看效果:在默認中文語言界面下,創建的區塊顯示如下圖:
切換到英文語言界面下,創建的區塊顯示如下圖:
爲不同的語言創建對應的多語言區塊
- 創建區塊:訪問 管理 > 站點構建 > 區塊 > 添加區塊(admin/build/blocks/add)
- 設置區塊語言:在添加區塊頁面的 Multilingual settings 中,將語言設置爲 All languages (Translatable)
- 添加區塊:在添加區塊頁面,填寫以下信息後,點擊“保存區塊”
區塊描述:多語言化測試區塊(描述)
區塊標題:多語言化測試區塊
區塊內容:這是一個用於測試區塊多語言化的區塊 :D
注意:實際操作時,請根據你的需要爲區塊填寫合適的描述、標題和內容等信息 - 添加其它語言區塊(如英語):重複第2步,將語言設置爲 English(英語),重複第3步,填寫以下英文信息,然後點擊“保存區塊”
區塊描述:Multilingual Test Block(Brief)
區塊標題:Multilingual Test Block
區塊內容:This is a multilingual test block, :D - 分配區塊:在區塊管理頁面(admin/build/blocks),找到剛創建的“多語言化測試區塊(描述)”和“Multilingual Test Block(Brief)”,將其分配到指定的區塊,如左邊欄,點擊“保存區塊”
- 查看效果:i18n 提供的 language section 機制會自動判斷多語言項目(如區塊)與當前語言的關係,只有與當前語言相同的內容纔會顯示出來。因此當網站界面語言爲中文時,站點左邊欄將會顯示“多語言化測試區塊”,當網站界面語言爲英語時,則會顯示 "Multilingual Test Block"
原始引用地址:http://lugir.com/book/export/html/432