在用Drupal 7搭建新網站時,根據具體情況可以添加多語言及手機版,我記錄在博文《Drupal的多語言系列網站搭建和設置》中。
在對更早使用Drupal 6已經搭建起來的網站進行擴充添加多語言及手機版的時候,過程也類似,隻是稍微有些不同,下面我也記錄一下過程:
初期準備:
- 模塊:如果是系列網站,可以做一個統一的模塊,包含各站通用的block等,并且指定此模塊的翻譯文件,便于以後的翻譯更新;
- 翻譯:48種語言的翻譯文件統一做,覆蓋系列網站所需要的各種單詞、短語、句子,用l10n_update來導入、更新;
- 目錄:sites目錄下添加手機版站點目錄及settings.php文件,可以修改電腦版的settings.php,其中自行判斷網址來确定是否啟用nokia mobile皮膚,然後手機版目錄就隻需要軟鍊接到電腦版目錄;
- 模塊:設置模塊,關閉不需要的模塊,下載和安裝需要的模塊,特别是多語言支持所用的i18n及部分子模塊(最初是多數都打開,後來改為隻有需要的幾個打開)、l10n_update翻譯自動更新模塊、nokia mobile皮膚等,添加48種語言(一個站添加後,其它站複制其數據庫的languages表),都可以通過drush來進行設置;
- 緩存:可以關閉boost cache功能,以免添加50種語言後生成的緩存文件過多過大;
修改設置:
- 翻譯:可以将各個站不同的分類詞等翻譯做成一個po文件,目前主要是中文地名,導入翻譯庫,以後可以考慮每個站增加一個專門的模塊,對應專門的幾十種語言地名翻譯文件;
- 名稱:修改content type, content fields, vocabulary taxonomy裡面的name,将以前中英文雙語改為英文,以便翻譯能夠有效;
- 菜單:修改菜單設置,Home、Contact Us可以去掉,其它的盡量用views生成的,少用專門做的page;
- 查詢:修改views,将views名稱、标題、顯示字段的label都由中英文雙語改為英文,每行顯示數量、每頁顯示數量更加具體情況進行調整,以便手機版顯示清晰,header, footer根據需要來進行修改;
修改程序:
- 模闆:修改顯示模闆,可以将contemplate從數據庫轉移到磁盤文件的形式,在sites/xxx下創建contemplates目錄,放置node-typename-body.tpl.php,更改後便于保存曆史版本,注意手機版可以通過軟連接指向同一個模闆文件,在文件中再進行判斷、處理,改用磁盤文件方式後,電腦版、手機版都需要在後台管理頁面中刷新,以便contemplate更改生效;
- 首頁:修改首頁,去掉首頁網址别名,增加misson顯示,修改site information中的首頁鍊接為node/xxx,去掉Mission和Footer message内容;
- 區塊:修改block設置,電腦版、手機版中都顯示語言切換、電腦/手機切換,以前的header, footer改用統一模塊中的header, footer,對分類頁頂部、底部的block根據具體情況進行修改或替換,檢查電腦版、手機版的各種頁面顯示,根據需要來調整順序、是否需要添加頂部/底部廣告等;
網站地圖:
- 添加:檢查xml sitemap的設置,首頁更新周期從weekly改為monthly,最早的default改為en,然後添加其它的48種語言,這個添加的過程手工太慢,可以直接用phpMyAdmin修改數據庫中的xmlsitemap_sitemap表,用INSERT INTO `xmlsitemap_sitemap` (`smid`, `context`, `updated`, `links`, `chunks`, `max_filesize`) VALUES ('LZa-7jhy2SBG0FuW3jja03SHjgSZ8QIoG3AnsQoOmy8', 'a:1:{s:8:"language";s:2:"af";}', 0, 0, 0, 0),('LKmx_ZVMy7dOYfDz0RjgPeF1gGWia54MlPtIrVIOgjA', 'a:1:{s:8:"language";s:2:"cy";}', 0, 0, 0, 0);這樣的語句批量添加;
- 生成:用drush xmlsitemap-regenerate或者drush xmlsitemap-rebuild來重新生成49種語言的站點地圖;
- 提交:用程序調用google webmaster tools api提交站點地圖到webmaster tools中去,有電腦版、手機版共98個。
後續收尾:
- 跳轉:根據需要來修改.htaccess文件,實現自動判斷用戶終端類型,手持終端自動跳轉到手機版本;
- 鍊接:修改以前的博客文章(jamesqi.com)、各相關網站(youbianku.com)、各系列網站(postcodebase.com,mingluji.com,bizdirlib.com)的相關頁面,添加到多語言手機版的鍊接。
從上面的步驟來看,這個過程還是相當複雜的,做起來需要費不少時間,重點是做各種檢查:首頁、分類頁、views頁、内頁、菜單,電腦版、手機版,多種語言,頁面顯示内容、源代碼keywords/description、microdata等,這還隻是做多語言、手機版的擴展,更深入的各個站數據分析、優化排列導航等可以留待今後再進行,真是改進無止境啊!
评论3
英文以外的48種語言xmlsitemap添加代碼
在MySQL中直接執行以下代碼,以便快速添加:
INSERT INTO `xmlsitemap_sitemap` (`smid`, `context`, `updated`, `links`, `chunks`, `max_filesize`) VALUES ('LZa-7jhy2SBG0FuW3jja03SHjgSZ8QIoG3AnsQoOmy8', 'a:1:{s:8:"language";s:2:"af";}', 0, 0, 0, 0), ('R4VND5L097ddYE6wDXaN5Jl7CqlrRkI227laTrqdQzI', 'a:1:{s:8:"language";s:2:"sq";}', 0, 0, 0, 0), ('3QWhCTe7KQ0ZR-MqzkhYgq7PkekhXoahRK0-ktC9198', 'a:1:{s:8:"language";s:2:"ar";}', 0, 0, 0, 0), ('rEA7Ume326CMKb7huj3-iZNj8dgxwytUE_QKafGPoS8', 'a:1:{s:8:"language";s:2:"hy";}', 0, 0, 0, 0), ('_FuRjiXoiaiYVERsV6LaopM3QXdVIco8fTq4juua7dA', 'a:1:{s:8:"language";s:2:"az";}', 0, 0, 0, 0), ('Ws6Pk8Ccl-kGwmsqzRfJRYC5u0_rI4DDI11AQdPNhTY', 'a:1:{s:8:"language";s:2:"bg";}', 0, 0, 0, 0), ('aNkRiCzjfJQdg8nBocBcXhm1bm6WLTXsKRTh-yDHMc8', 'a:1:{s:8:"language";s:2:"ca";}', 0, 0, 0, 0), ('3QuYVMoAVDdMUmwuEdFhwSFxLtcBNDrxIy91p4VzGdY', 'a:1:{s:8:"language";s:7:"zh-hans";}', 0, 0, 0, 0), ('gNQigJ8V6aUMKO8U3wkd4y04rttp_RCe6uGO4kXyQnU', 'a:1:{s:8:"language";s:7:"zh-hant";}', 0, 0, 0, 0), ('igVpPQY_QVAMYlftsuIhWLnR9NOb52mZ9URjmMzBHqk', 'a:1:{s:8:"language";s:2:"hr";}', 0, 0, 0, 0), ('JqsSZ0ACA-VztmE3q054r5qUF8LYCLshZpXn9ZWOgYo', 'a:1:{s:8:"language";s:2:"cs";}', 0, 0, 0, 0), ('87mlCzCcgPXzQvm2qE3Is2lMA7b3UyFAJgnINaSi04Y', 'a:1:{s:8:"language";s:2:"da";}', 0, 0, 0, 0), ('VYOTF4bQdgrfTJyQddsbQTYCd13NBvx-ifXqmOhuH9w', 'a:1:{s:8:"language";s:2:"nl";}', 0, 0, 0, 0), ('I9T_cIxer-FMIaMXxRrx5-bnxgj16Z55dELZHsSb0SQ', 'a:1:{s:8:"language";s:2:"eo";}', 0, 0, 0, 0), ('4Cb0X8hFMUkO3ED6IxmWAWSWup0KInr0U1kPzHui9xY', 'a:1:{s:8:"language";s:2:"et";}', 0, 0, 0, 0), ('PYgq5vYzAuvYMcuKajN7voJEvUlYuPXv7goZjmMJ8Fk', 'a:1:{s:8:"language";s:2:"fi";}', 0, 0, 0, 0), ('2e9ZfIfLFCC0V-PbcDKUTb1Wk22XgjzJ6f-b16CFlPE', 'a:1:{s:8:"language";s:2:"fr";}', 0, 0, 0, 0), ('V6W10nlwnkf_N8uu4GwUpZ_dbf-e66z8IcMdkWyzUQM', 'a:1:{s:8:"language";s:2:"gl";}', 0, 0, 0, 0), ('FY_-EiR_oa31k2g2U3tQi1FdUv4LT0KDDxOamtSjyi8', 'a:1:{s:8:"language";s:2:"ka";}', 0, 0, 0, 0), ('oWx2Pl033k1XFmYJFOs7sO0G3JasH0cjDbduvDwKuwo', 'a:1:{s:8:"language";s:2:"de";}', 0, 0, 0, 0), ('XYbrhwAOg0sH5tuc45W4YgKnq1SObpmzxm9kN1Dy3QI', 'a:1:{s:8:"language";s:2:"el";}', 0, 0, 0, 0), ('Q-DnbT83L1sy4kAX_nYRCyT4AJOTpg30-XEPI1hmyNg', 'a:1:{s:8:"language";s:2:"hu";}', 0, 0, 0, 0), ('QLefgmOMHyi_NiinQJa9AKCQNccFfPrNIdRGIqQJXXo', 'a:1:{s:8:"language";s:2:"is";}', 0, 0, 0, 0), ('G11UQ93ugnrx9ZOPe8RHDN4OJ7uYSZCYtF9EOrlEQlA', 'a:1:{s:8:"language";s:2:"ga";}', 0, 0, 0, 0), ('o1lnqD7hynYmesOfRQVh_UIPswJqoj5Mjjb0krTsxBI', 'a:1:{s:8:"language";s:2:"it";}', 0, 0, 0, 0), ('4vXFu1xAuZ1nftmnnfowGaQ0yrARIcSvgyG5T7cqg04', 'a:1:{s:8:"language";s:2:"ja";}', 0, 0, 0, 0), ('zqY91BRIiHW3IzuCP7ygvlayDVv_LsCV3gx5oYyZM0c', 'a:1:{s:8:"language";s:2:"ko";}', 0, 0, 0, 0), ('2KhpMoaeN8AdO8hifieREj7vkzINMolX97tRzkIQ3BQ', 'a:1:{s:8:"language";s:2:"lv";}', 0, 0, 0, 0), ('kkE2MTArkFb4S-r2Nve1rlFEv86OTmedrSd0DhgfCtE', 'a:1:{s:8:"language";s:2:"lt";}', 0, 0, 0, 0), ('qaKz2M8Q1Hx-usBG6hz7uJXmOAF1PVvM3WmgLsQE62Y', 'a:1:{s:8:"language";s:2:"mk";}', 0, 0, 0, 0), ('ehIYDa6eZtWBG9ofuU3JJwe7ePsWdnOwkygkE_8UlIk', 'a:1:{s:8:"language";s:2:"ms";}', 0, 0, 0, 0), ('caOAq7WZXTCbDsMfG81QIbCf0bkLMDWBxOrYdWgeMMU', 'a:1:{s:8:"language";s:2:"mt";}', 0, 0, 0, 0), ('JujatUJ6eea9-3GLZFmBcT7CgN2qXYl-odpyftFpjYI', 'a:1:{s:8:"language";s:2:"fa";}', 0, 0, 0, 0), ('h_Rziqj_J13oB-imJ4qIG8ksKWXWZ_Hynp5POSsd07k', 'a:1:{s:8:"language";s:2:"pl";}', 0, 0, 0, 0), ('cJKZwij0C3MEWV1FN_hbRiNhXls614wbansVqEAuRc4', 'a:1:{s:8:"language";s:5:"pt-pt";}', 0, 0, 0, 0), ('GI3xOGu1J_C9ymceu4SPSzs6JE8tv61AEnpI3lzXVW0', 'a:1:{s:8:"language";s:2:"ro";}', 0, 0, 0, 0), ('_KyYVoP1pMRSEJD8cDQst9Nj-h1vo7ZVPnvdm5RCdy4', 'a:1:{s:8:"language";s:2:"ru";}', 0, 0, 0, 0), ('s0XnmLCtZcWgnQ7ZFew1Fhtbt9EQ38Ddg7J87BGJ2ys', 'a:1:{s:8:"language";s:2:"sr";}', 0, 0, 0, 0), ('40Vfh2LHqOFN8RF3OKzRCh_w_cwudpGkr0xa3V2yFqY', 'a:1:{s:8:"language";s:2:"sk";}', 0, 0, 0, 0), ('x6B8OtrKWrEaGY6P503gk4XvAlmc1lRjZsZKbrZZp2Y', 'a:1:{s:8:"language";s:2:"sl";}', 0, 0, 0, 0), ('t9UQ7FvqR0wMQMnd5n2XukH0kM9liAM9wOhfSLRl2qw', 'a:1:{s:8:"language";s:2:"es";}', 0, 0, 0, 0), ('7p_cwXvUFez4aPn5SewMmsgoJ2J6qRNN2mgf8hEe3mU', 'a:1:{s:8:"language";s:2:"sw";}', 0, 0, 0, 0), ('t16K-LvlM4dINVHfcxC__57flE1iMIVnUezIVBDDZfE', 'a:1:{s:8:"language";s:2:"sv";}', 0, 0, 0, 0), ('5x3-O5uUfArK1LK8i29anopPRkWTuhyFnzYWdcyBrso', 'a:1:{s:8:"language";s:2:"th";}', 0, 0, 0, 0), ('4t2LDT2-5kkWXwt0FTm6JNAFOdzcz7Fs55mzMuovLmc', 'a:1:{s:8:"language";s:2:"tr";}', 0, 0, 0, 0), ('T43qaxwUQWS5cOCpwG2tGLGOF5UzykA0K-mCFL6oRhs', 'a:1:{s:8:"language";s:2:"uk";}', 0, 0, 0, 0), ('uIMIDC5eEaw7jcWdnI3wjc67eo8miZwUihIKzFid2oA', 'a:1:{s:8:"language";s:2:"vi";}', 0, 0, 0, 0), ('LKmx_ZVMy7dOYfDz0RjgPeF1gGWia54MlPtIrVIOgjA', 'a:1:{s:8:"language";s:2:"cy";}', 0, 0, 0, 0); 另外一個bel中有的暫不加: ('Cnvxov87lqV5zVrYi_CjzUuzdaJJjXuMgGom6z2VYXo', 'a:1:{s:8:"language";s:2:"nb";}', 0, 0, 0, 0),
插入languages表來添加48種語言
不用上面的MySQL插入表辦法,而是在Drush中運行PHP的辦法如下:
避免Nokia Mobile過濾Javascript的問題
最近在進行多語言擴展的時候,手機版的語言選擇Language Switcher Drop Down是有的,但卻不跳轉,檢查了很長時間,其實2年前就有類似這樣的問題,當時是修改sites/all/themes/nokia_mobile/template.php來去掉判斷的,這次再這樣設置就可以了,唉白白又浪費了N多個小時!