티스토리 뷰

SharePoint 2010-Sandboxed 솔루션에서의 Localization

 

이번 글에서는 Sandboxed 솔루션에서의 지역화에 대한 내용을 알아보도록 하겠습니다.

이를 통해 SharePoint Online에도 적용할 수 있습니다. 보다 자세한 사항은 아래 링크를 참조할 수 있습니다.

http://msdn.microsoft.com/en-us/library/gg615453.aspx

http://msdn.microsoft.com/en-us/library/gg615457.aspx

 

l  리소스 파일 추가

SharePoint 프로젝트를 생성하고 기본 리소스 파일을 추가하는 방법은 아래와 같습니다.

해당 SharePoint 프로젝트의 속성에서 리소스 페이지를 선택하고 기본 리소스 파일을 추가하면 Resources.resx 파일이 생성되며 이름과 값을 구성하면 됩니다. 그리고 또 다른 LCID 리소스 파일을 생성해서 활용할 수 있습니다.

 

  

l  패키지에 리소스 어셈블리 추가

리소스 파일을 추가한다고 해서 리소스 어셈블리가 적용되는 것은 아니라 패키지 디자이너에서 기존 어셈블리를 추가해서 설정해야 합니다. 먼저 프로젝트를 빌드합니다. 패키지 디자이너에서 고급을 클릭하고 기존 어셈블리를 추가합니다. 위치는 LCID(, ko-KR) 경로를 지정해야 합니다.

 

 

l  코드에서 리소스 사용

코드에서 리소스를 사용해보도록 하겠습니다. Sandboxed 솔루션에서는 App_GlobalResource, 14\Root 폴더에 적용할 수 없어 코드를 통해 접근할 수 있는데 아래 코드로 간단히 액세스 가능합니다.

디자인의 컨트롤은 Label, DataGrid가 들어가 있습니다. 아래처럼 코드를 적용할 수 있습니다.

protected override void OnInit(EventArgs e)

{

base.OnInit(e);

InitializeControl();

       

       lblListTitle.Text = Properties.Resources.lblListTitile;

gridListItems.Columns[0].HeaderText = Properties.Resources.TitleHeader;

gridListItems.Columns[1].HeaderText = Properties.Resources.AuthorHeader;

 

 

l  Feature, 기능에 리소스 적용

기능에도 리소스를 적용 가능합니다. 기능에 리소스를 추가하려면 Feature를 오른쪽 클릭하여 리소스 추가를 클릭하면 됩니다.

 

Feature의 제목과 설명에 적용하려면 아래와 같이 적용하면 됩니다.

 

 

l  웹 파트 속성에 리소스 적용

웹 파트의 속성의 DisplayName에 적용하려면 아래와 같이 구성 가능합니다.

[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),

        LocalizedWebDisplayName("Property1Name")]

        public string Property1

        {

            get

            {

                return _property1;

            }

            set

            {

                _property1 = value;

            }

        }

 

물론 별도의 attribute 클래스를 생성해야 합니다.

public class LocalizedWebDisplayName : WebDisplayNameAttribute

    {

        public LocalizedWebDisplayName(string resId)

        {

            base.DisplayNameValue = FetchLocalizedString(resId);

        }

 

        string FetchLocalizedString(string resourceID)

        {

ResourceManager rm = Resources.ResourceManager;

            return rm.GetString(resourceID);

        }

    }

 

l  웹 파트의 제목과 설명에 리소스 적용

웹 파트의 제목과 설명에 대한 부분은 코드(코드에서 리소스 사용) .webpart 파일에 적용할 수 있는데 SharePoint Online에서는 테스트가 원활하지 않았으니 차후 적용시 테스트를 좀 더 해야 할 것 같습니다.

아래는 .webpart 파일에 대한 내용입니다.

<properties>

        <property name="Title" type="string">$Resources:WPTitle</property>

        <property name="Description" type="string">Localized Web Part Description</property>

      </properties>

 

l  웹 페이지 같은 경우 jQuery를 통해서 적용이 가능합니다. 이는 추후에 별도로 다루어 볼 예정입니다.

 

Localization만 해도 다루어야 할 부분이 많다고 생각합니다. 언어별 솔루션에 대한 Localization이 필요한 내용이라면 미리 리소스에 대한 내용을 코드, 기능, 웹 파트 속성, jQuery 등에 적용을 고려해야 할 것 같습니다.

 

댓글