紙殼CMS可視化建站系統搭建多語言網站

紙殼CMS是可視化建站系統,現已經從架構上支持多語言。可是多語言功能默認是沒有開啓的。您能夠從設置中開啓多語言,或者隨時關閉它,您能夠隨時進行切換。html

開啓多語言

若是您沒有在系統設置中看到多語言設置菜單,首先先確認一下您的登陸角色是否有多語言設置的權限:前端

添加權限後就能夠看到多語言設置的菜單了git

 

勾選是否啓用?選項來啓用多語言功能:github

 

設置說明

  • 多語言模式
    • 單域名模式,即全部的語言都使用同一個域名訪問,不一樣的語言使用不一樣的"Culture Code"來區分。如 ~/cn, ~/tw ~/us 等
    • 獨立域名模式,在這種模式下,不一樣語言能夠使用不一樣的域名來訪問,這須要站點綁定多個域名,並在多語言中設置域名和語言的關係。在獨立域名模式下,管理員依然能夠在登陸後臺的狀況下,使用「單域名模式」來訪問頁面內容,這樣方便在同一個域名下添加不一樣語言的內容。
  • 無內容時使用默認語言,若是啓用這項設置,即表示,當用戶在訪問一個不存在的語言的頁面時,會給用戶呈現默認語言下的頁面內容。例如,若是隻建立了中文頁面 ~/cn/zkeacms,那當用戶訪問了~/us/zkeacms時,將不會看到404,而是~/cn/zkeacms下的頁面內容。
  • 默認語言,即系統的默認語言,登錄後端時系統使用的就是默認語言,用戶在建立內容時,也優先建立默認語言的內容。在獨立域名模式下,當用戶訪問的地址不帶有"Culture Code"時,自動跳轉到對應的默認語言頁面。

    例如將默認語言設成英語時,後端界面會變成英文:
    後端

設置語種

紙殼CMS不限制語種,即您能夠自由的添加、刪除想要的語種。紙殼CMS中,默認初始化了34種語言,並啓用了其中比較經常使用的17種。您能夠在「多語言菜單」設置它 [/admin/Culture],例如如下是中文的設置:架構

其中,狀態即表示是否啓用該語言。域名,即在獨立域名模式下,用於綁定該域名使用這個語言顯示。app

編輯多語言內容

在啓用了多語言設置之後,就能夠開始添加多語言內容了,以頁面爲例,在頁面的屬性頁面,您能夠看到已啓用的語言選項:工具

若是您在建立、編輯內容時,但願將當前語言內容複製到其它語言下,那麼保存內容前勾選對應的語言便可:spa

 

在編輯內容時,點擊語言旗幟便可建立該語言內容,並自動將默認語言的內容帶出來。.net

刪除語言內容

您能夠刪除除了默認語言之外的其它全部語言的內容,切換到對應的語言,點擊工具欄上的刪除便可。若是您刪除默認語言,那麼將會同時刪除其它全部語言的內容。

切換頁面語言

若是您的頁面已經建立了多語言,在頁面的設計頁面,可隨時切換來編輯:

支持多語言內容的模塊

對於呈現給前端用戶的全部須要多語言的模塊都支持,例如:

  • 頁面
  • 導航
  • 文章
  • 產品
  • 自定義表單
  • 自定義內容

通用翻譯

在紙殼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

Githubhttps://github.com/SeriaWei/ZKEACMS.Core

Demo:

相關文章
相關標籤/搜索