紙殼CMS是可視化建站系統,現已經從架構上支持多語言。但是多語言功能預設是沒有開啟的。您可以從設置中開啟多語言,或者隨時關閉它,您可以隨時進行切換。 ...
紙殼CMS是可視化建站系統,現已經從架構上支持多語言。但是多語言功能預設是沒有開啟的。您可以從設置中開啟多語言,或者隨時關閉它,您可以隨時進行切換。
開啟多語言
如果您沒有在系統設置中看到多語言設置菜單,首先先確認一下您的登錄角色是否有多語言設置的許可權:
添加許可權後就可以看到多語言設置的菜單了
勾選是否啟用?選項來啟用多語言功能:
設置說明
- 多語言模式
- 單功能變數名稱模式,即所有的語言都使用同一個功能變數名稱訪問,不同的語言使用不同的"Culture Code"來區分。如 ~/cn, ~/tw ~/us 等
- 獨立功能變數名稱模式,在這種模式下,不同語言可以使用不同的功能變數名稱來訪問,這需要站點綁定多個功能變數名稱,併在多語言中設置功能變數名稱和語言的關係。在獨立功能變數名稱模式下,管理員依然可以在登錄後臺的情況下,使用“單功能變數名稱模式”來訪問頁面內容,這樣方便在同一個功能變數名稱下添加不同語言的內容。
- 無內容時使用預設語言,如果啟用這項設置,即表示,當用戶在訪問一個不存在的語言的頁面時,會給用戶呈現預設語言下的頁面內容。例如,如果只創建了中文頁面 ~/cn/zkeacms,那當用戶訪問了~/us/zkeacms時,將不會看到404,而是~/cn/zkeacms下的頁面內容。
- 預設語言,即系統的預設語言,登陸後端時系統使用的就是預設語言,用戶在創建內容時,也優先創建預設語言的內容。在獨立功能變數名稱模式下,當用戶訪問的地址不帶有"Culture Code"時,自動跳轉到對應的預設語言頁面。
例如將預設語言設成英語時,後端界面會變成英文:
設置語種
紙殼CMS不限制語種,即您可以自由的添加、刪除想要的語種。紙殼CMS中,預設初始化了34種語言,並啟用了其中比較常用的17種。您可以在“多語言菜單”設置它 [/admin/Culture]
,例如以下是中文的設置:
其中,狀態即表示是否啟用該語言。功能變數名稱,即在獨立功能變數名稱模式下,用於綁定該功能變數名稱使用這個語言顯示。
編輯多語言內容
在啟用了多語言設置以後,就可以開始添加多語言內容了,以頁面為例,在頁面的屬性頁面,您可以看到已啟用的語言選項:
如果您在創建、編輯內容時,希望將當前語言內容複製到其它語言下,那麼保存內容前勾選對應的語言即可:
在編輯內容時,點擊語言旗幟即可創建該語言內容,並自動將預設語言的內容帶出來。
刪除語言內容
您可以刪除除了預設語言以外的其它所有語言的內容,切換到對應的語言,點擊工具欄上的刪除即可。如果您刪除預設語言,那麼將會同時刪除其它所有語言的內容。
切換頁面語言
如果您的頁面已經創建了多語言,在頁面的設計頁面,可隨時切換來編輯:
支持多語言內容的模塊
對於呈現給前端用戶的所有需要多語言的模塊都支持,例如:
- 頁面
- 導航
- 文章
- 產品
- 自定義表單
- 自定義內容
通用翻譯
在紙殼CMS中,有些不支持多語言內容的,可以使用通用翻譯功能(系統設置》翻譯)來進行多語言翻譯,例如後端的菜單:
在Razor視圖中,可以直接使用@L("文章管理")
來獲取多語言內容,如果是在其它代碼中,可以使用ILocalize.Get("")
來獲取翻譯內容。
Razor:
<div class="panel panel-default"> <div class="panel-heading"> @L("新建") </div> <div class="panel-body"> @using (Html.BeginForm()) { @Html.EditorForModel() <div class="toolBar"> @if (Authorizer.Authorize(PermissionKeys.ManageApplicationSetting)) { <input type="submit" class="btn btn-primary" value="@L("保存")" data-value="@ActionType.Create" /> } <input type="button" class="btn btn-default cancel" value="@L("取消")" /> </div> } </div> </div>
代碼(Controller,Service...)中:
private readonly ILocalize _localize; public ArticleService(IApplicationContext applicationContext, ILocalize localize, CMSDbContext dbContext) : base(applicationContext, dbContext) { _localize.Get("Url已存在"); }
這樣程式在運行的時候,會跟據實際的多語言設置來返回翻譯內容,如果沒有對應的翻譯,則會直接返回原值。
原文地址:http://www.zkea.net/codesnippet/detail/zkeacms-multi-language.html
Github:https://github.com/SeriaWei/ZKEACMS.Core