問題は、あなたが..あなたが今fr
バージョンを作ることができますが、あなたが見ているように、これがある意味、言語の名前を変更することにより、固定することができないアイテムのfr-CA
バージョンを作成しているあります3つの可能なバージョンになりました。
ひとつは、言語をSitecoreだけにして、リンクをどのように提供して処理するかを変更することです。
おそらく、自分のメソッドをSitecoreのhttpRequestBegin
パイプラインに追加する必要があります。これは、LanguageResolver
のエントリに従います。 RawUrl
を解析し、Sitecore.Context.Langauge' to French if the first element in it matched
/fr/`を設定することができます。
非常に迅速&汚い例:
public class MyLanguageResolver : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
string languageText = WebUtil.ExtractLanguageName(args.Context.Request.RawUrl);
if(languageText == "fr")
{
Sitecore.Context.Language = LanguageManager.GetLanguage("fr-CA");
}
}
}
おそらく、また、彼らはサイトコアによって解決されたときに、あなたのURLをフォーマットするweb.configファイルの<linkManager>
セクションにLinkProvider
を上書きする必要があります。
もう一つの非常に迅速な&汚い例:
public class MyLinkProvider : LinkProvider
{
public override string GetItemUrl(Sitecore.Data.Items.Item item, UrlOptions options)
{
var url = base.GetItemUrl(item, options);
url = url.Replace("/fr-CA/", "/fr/");
return url;
}
}
もう一つの方法は、(それがスクリプトを介して実行する必要がありますよう、もう少し長いったらしい)へfr-CA
バージョンからデータをコピーすることですfr
のバージョンを確認し、各アイテムのfr-CAバージョンを削除します。あなたのコンテンツ項目に言語を更新するための別の方法を
private void CopyLanguage(ID id, Language sourceLanguage, Language destinationLanguage)
{
var master = Database.GetDatabase("master");
var sourceLanguageItem = master.GetItem(id, sourceLanguage);
var destinationLanguageItem = master.GetItem(id, destinationLanguage);
using (new SecurityDisabler())
{
destinationLanguageItem.Editing.BeginEdit();
//for each field in source, create in destination if it does not exist
foreach (Field sf in sourceLanguageItem.Fields)
{
if (sf.Name.Contains("_")) continue;
destinationLanguageItem.Fields[sf.Name].Value = sf.Value;
}
destinationLanguageItem.Editing.AcceptChanges();
////Remove the source language version
ItemManager.RemoveVersions(sourceLanguageItem,sourceLanguage, SecurityCheck.Disable);
}
}
をやろうとしているものも含む
ラフヘルパーメソッドは次のとおりです。
- 輸出FR-CA言語へa
.xml
ファイル(コントロールパネルの使用)
- .xmlファイルでは、allとタグをおよびで置き換えます。
- masterデータベースのfr-CA言語をfrに変更します。
- 。([コントロールパネル]から)xmlファイル
- ファイル名を指定して実行クリーンアップデータベースタスク
また、あなたはUnversionedFieldsとVersionedFieldsテーブル内のすべてのレコードのためのFRとFR-CAの言語を変更するSQLスクリプトを作成することができます。
これ以上の情報や例が必要な場合は、お知らせください。 :)
ありがとう!私は詳細を本当に感謝します。私は上記のように 'fr-CA'を残し、自分の言語リゾルバとリンクマネージャを作成しました。さまざまな言語と言語のパラメータを扱うのは少し難解でしたが、うまく機能しました。 –