Umbraco多言語化の方法

Umbracoを複数の言語で運用していくやり方です。”Multi Language”、"language switcher"、"マルチ言語"なんかで検索したのですが、これといった記事がなく、本投稿では試行錯誤してできた方法を紹介します。

※他のやり方がわかったら、逐次アップデートします。

環境:Umbraco7.4.2

既存のコンテンツをまるっとコピー

仮にRootに”ホーム”というコンテンツがあり、サブコンテンツがいくつか入っていたとします。

まず"ホーム"を選択状態で右クリックをします。すると”Copy”という選択肢がでてくるので、選びます。
multilang

表示されたページで”Contents”を選択し、”Relate to Original”, ”Include Decendants”にチェックをいれて、Copyを押します。
multilang2.com

すると”ホーム(1)”という新たなコンテンツが表示されます。先ほど”Include Decendants”にチェックを入れたので、サブコンテンツもしっかり入っています。
multilang2.com

この状態だとまだユーザー側画面に反映されていないので、Publishを行います。”ホーム(1)”を右クリックし、Publishを押します。
multilang4

サブコンテンツも含めて一括でPublishしたいので、” Publish ホーム (1) and all its subpages ” と、”Include unpublished child pages” にチェックを入れて、Publishボタンを押します。
multilang5

Publishしても管理画面上の文字が薄くて、Publishされていないように見えますが、ブラウザをリフレッシュすると文字が濃くなり、Publishされていることが分かります。
multilang6

URLをきめる

追加した言語のURLを決めます。仮に英語ページをexample.com/en/ にするとします。

対象のコンテンツを右クリックし、”Culture and hostname”をクリックします。
multilang7

Cultureでen-usを選びます。(事前に管理画面のsettingからLanguageで英語と日本語を追加しておきます)
さらにDomainはexample.com/enのように記入します。
multilang8

言語切り替えリンクを作成

これで元ダネはできたので、言語を切り替えるリンクをつくります。

ヘッダー部分に作るのが常套だと思います。

Templateでヘッダーを生成している部分に追加します。

変数を作成します。
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using System.Text.RegularExpressions
@{
Layout = null;
var home = @CurrentPage.Site();
     ここに追加
}
[crayon]
var contentURL = Regex.Replace(@CurrentPage.url,"en/","");
[/crayon]

HTMLタグはこんな感じで。
[crayon]
Japanese
English
[/crayon]

© 2025 みる米技術部 Powered by AFFINGER5