문제는 당신이보고있는 같은 언어 이름을 변경하여 고정 할 수없는 항목의 fr-CA
버전은 ... 당신이 지금하는 fr
버전을 만들 수 있지만 만든되며,이가 의미
감사합니다, 타렉 이제 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");
}
}
}
당신은 아마 또한이 Sitecore에 의해 해결 될 때 URL을 서식을의 Web.config의 <linkManager>
섹션에서 LinkProvider
를 오버라이드 (override) 할 것입니다.
또 다른 매우 빠른 & 더러운 예 :
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'를 떠나 자신의 언어 해석자와 링크 관리자를 만들었습니다. 다른 언어와 언어 매개 변수를 다루기에는 약간 까다 롭지 만 작동하도록했습니다. –