使用Drupal創建多語言站點

記錄在此備查。

  • 界面多語言化
  • 內置變量多語言化
  • 內容多語言化
  • 術語表多語言化
  • 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 的翻譯頁面對菜單項進行翻譯;

創建可翻譯的多語言化菜單

  1. 啓用模塊:啓用 i18n 模塊的 Menu translation 模塊;
  2. 訪問 管理 > 站點構建 > 菜單 > 主鏈接(Primary links) > 增加菜單項(admin/build/menu-customize/primary-links/add)
  3. 創建可翻譯菜單項:根據以下信息填寫菜單創建表單後,點擊“保存”
    路徑:<front>
    菜單鏈接標題:首頁
    語言:所有語言
    說明:將語言設置爲所有語言的菜單項,會在所有語言界面下顯示,可嘗試在中英文界面之前進行切換,都能菜單項“首頁”,不過在英文界面下也還是顯示中文
  4. 搜索翻譯項:訪問 管理 > 站點構建 > 翻譯 > 搜索(admin/build/translate/search),按照以下信息填寫表單後,點擊“搜索”
    字符串包括:首頁
    將搜索限制在:菜單
  5. 從搜索結果中找到要翻譯的菜單項目,點擊後面的“編輯”鏈接
  6. 翻譯菜單項:在翻譯界面中,填寫翻譯內容,Home。然後點擊保存翻譯;
  7. 現在再在中英文之間進行切換,就可以看到,在中文界面下,主鏈接顯示菜單項“首頁”,在英文界面下,主鏈接顯示菜單項“Home”

創建只在指定語言環境下顯示的菜單

  1. 訪問 管理 > 站點構建 > 菜單 > 主鏈接(Primary links) > 增加菜單項(admin/build/menu-customize/primary-links/add)
  2. 創建可翻譯菜單項:根據以下信息填寫菜單創建表單後,點擊“保存”
    路徑:node
    菜單鏈接標題:內容
    語言:Chinese Simplified (簡體中文)
    說明:在這裏爲菜單語言項,該菜單只有在與當前語言環境一致時,纔會顯示出來。
  3. 重複第2步,使用以下信息創建一個英語菜單項路徑:node
    菜單鏈接標題:Node
    語言:English (英語)
  4. 現在再在中英文之間進行切換,就可以看到,在中文界面下,會顯示語言設置爲 Chinese Simplified (簡體中文)的菜單項“內容”,在英文界面下,則會顯示語言設置爲 English (英文)的菜單項“Node”

使用多語言化變量設置不同的主鏈接/次鏈接

  訪問 管理 > 站點構建 > 菜單 > 設置(admin/build/menu/settings)頁面,可以看到“主導航菜單來源”及“次級菜單來源”都被標識爲“多語言化變量(This is a multilingual variable)”,這說明這兩項值,在不同的語言環境下,可以設置不同的值,並被數據庫分開保存。(更多關於多語言化變量請參考《站點變量(Variables)多語言化》)

  在中文語言下,爲主鏈接/次鏈接選擇恰當的中文鏈接,在英文語言下,爲主鏈接/次鏈接選擇恰當的英文鏈接,從而實現在不同語言下,使用不同語言的菜單項,以此來實現 Drupal 網站中菜單的多語言化。

 

 

 

創建支持多語言化的區塊

 

爲 Drupal 創建多語言化支持的區塊,需要 i18n 模塊包中的 Block Translation 提供相應的支持。有兩種方式可以實現區塊的多語言化,一種是對區塊(Blocks)中的字段進行翻譯,另一種是爲每一種語言創建一個對應的區塊。本文將介紹這兩種區塊多語言化的方法。

準備工作:

  1. 下載 i18n 模塊包,下載地址:http://drupal.org/project/i18n
  2. 模塊管理頁面:訪問 管理 > 站點構建 > 模塊(admin/build/modules)頁面
  3. 啓用模塊:啓用 Internationalization 模塊、String Translation 模塊 和 Block Translation 模塊,並點擊“保存設置”

創建基於字段翻譯的多語言化區塊

  1. 創建區塊:訪問 管理 > 站點構建 > 區塊 > 添加區塊(admin/build/blocks/add)
  2. 設置區塊語言:在添加區塊頁面的 Multilingual settings 中,將語言設置爲 Chinese Simplified(簡體中文)
  3. 添加中文區塊:在添加區塊頁面,填寫以下中文信息,然後點擊“保存區塊”
    區塊描述:多語言化測試區塊(描述)
    區塊標題:多語言化測試區塊
    區塊內容:這是一個用於測試區塊多語言化的區塊 :D
    注意:實際操作時,請根據你的需要爲區塊填寫合適的描述、標題和內容等信息
  4. 分配區塊:在區塊管理頁面(admin/build/blocks),找到剛創建的“多語言化測試區塊(描述)”,將其分配到指定的區塊,如左邊欄,點擊“保存區塊”
  5. 搜索區塊中的字段:訪問 管理 > 站點構建 > 翻譯 > 搜索(admin/build/translate/search),在頁面的搜索框中搜索第3步中填寫的信息,如"多語言化測試區塊",將得到如下搜索結果
  1. 說明:基於字段的翻譯好像不能對區塊描述進行翻譯,不過對區塊標題和內容的多語言化翻譯都是支持的。如果希望區塊描述也能夠被多語言化,可以參考第二種區塊多語言化的方法
  2. 翻譯區塊中的字段:點擊“編輯”進入字段翻譯頁面,填寫翻譯內容後點擊“保存翻譯”
  1. 重複第5,6步,完成區塊內容的翻譯
  2. 查看效果:在默認中文語言界面下,創建的區塊顯示如下圖:
    區塊多語言化-中文
    切換到英文語言界面下,創建的區塊顯示如下圖:
    區塊多語言化-英文

爲不同的語言創建對應的多語言區塊

  1. 創建區塊:訪問 管理 > 站點構建 > 區塊 > 添加區塊(admin/build/blocks/add)
  2. 設置區塊語言:在添加區塊頁面的 Multilingual settings 中,將語言設置爲 All languages (Translatable)
  3. 添加區塊:在添加區塊頁面,填寫以下信息後,點擊“保存區塊”
    區塊描述:多語言化測試區塊(描述)
    區塊標題:多語言化測試區塊
    區塊內容:這是一個用於測試區塊多語言化的區塊 :D
    注意:實際操作時,請根據你的需要爲區塊填寫合適的描述、標題和內容等信息
  4. 添加其它語言區塊(如英語):重複第2步,將語言設置爲 English(英語),重複第3步,填寫以下英文信息,然後點擊“保存區塊”
    區塊描述:Multilingual Test Block(Brief)
    區塊標題:Multilingual Test Block
    區塊內容:This is a multilingual test block, :D
  5. 分配區塊:在區塊管理頁面(admin/build/blocks),找到剛創建的“多語言化測試區塊(描述)”和“Multilingual Test Block(Brief)”,將其分配到指定的區塊,如左邊欄,點擊“保存區塊”
  6. 查看效果:i18n 提供的 language section 機制會自動判斷多語言項目(如區塊)與當前語言的關係,只有與當前語言相同的內容纔會顯示出來。因此當網站界面語言爲中文時,站點左邊欄將會顯示“多語言化測試區塊”,當網站界面語言爲英語時,則會顯示 "Multilingual Test Block"

原始引用地址:http://lugir.com/book/export/html/432

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章