수색…


비고

ASP.NET 페이지의 스마트 국제화

이 방법의 장점은 .resx 파일에서 값을 조회하는 코드로 컨트롤러 및 다른 클래스를 복잡하게 만들 필요가 없다는 것입니다. HttpModule 은 .po 파일의 변환을 찾아 구분 된 텍스트를 바꾸기 위해 찾습니다. [. [delplex]는 구성 가능합니다. 변환이 있으면 HttpModule 이 변환을 대체합니다. 변환이 없으면 대괄호를 제거하고 원래의 번역되지 않은 텍스트로 페이지를 렌더링합니다.

.po 파일은 응용 프로그램에 대한 번역을 제공하기위한 표준 형식이므로 편집 할 수있는 여러 응용 프로그램이 있습니다. .po 파일을 기술적이지 않은 사용자에게 보내기 쉽게 번역을 추가 할 수 있습니다.

기본 구성 및 설정

  1. MVC 프로젝트에 I18N 너겟 패키지 를 추가하십시오.
  2. web.config에서 <httpModules> 또는 <modules> 섹션에 i18n.LocalizingModule 을 추가하십시오.
<!-- IIS 6 -->
<httpModules>
  <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</httpModules>

<!-- IIS 7 -->
<system.webServer> 
  <modules>
    <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
  </modules>
</system.webServer>
  1. "locale"이라는 폴더를 사이트의 루트에 추가하십시오. 지원하려는 각 문화권의 하위 폴더를 만듭니다. 예 : /locale/fr/ .
  2. 각 문화권 별 폴더에서 messages.po 라는 텍스트 파일을 만듭니다.
  3. 테스트를 위해 messages.po 파일에 다음 텍스트 줄을 입력하십시오.
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. 번역 할 텍스트를 반환하는 컨트롤러를 프로젝트에 추가하십시오.
using System.Web.Mvc;

namespace I18nDemo.Controllers
{
    public class DefaultController : Controller
    {
        public ActionResult Index()
        {
            // Text inside [[[triple brackets]]] must precisely match
            // the msgid in your .po file.
            return Content("[[[Hello, world!]]]");
        }
    }
}
  1. MVC 응용 프로그램을 실행하고 컨트롤러 동작에 해당하는 경로 (예 : http : // localhost : [yourportnumber] / default)를 찾습니다 .
    URL이 기본 문화권을 반영하도록 변경되었는지 확인하십시오 (예 :
    http : // localhost : [사용자 포트 번호] / en / default .
  2. 교체 /en/ URL에와 /fr/ (또는 당신이 선택한 어떤 문화.) 이제 텍스트의 번역 된 버전을 표시해야하는 페이지입니다.
  3. 브라우저의 언어 설정을 변경하여 대체 문화권을 선호하고 /default 다시 /default 하십시오. 대체 문화권을 반영하도록 URL이 변경되고 번역 된 텍스트가 표시되는지 확인하십시오.
  4. web.config에서 사용자가 locale 폴더를 찾을 수 없도록 처리기를 추가합니다.
<!-- IIS 6 -->
<system.web>
  <httpHandlers>
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
  </httpHandlers>
</system.web>

<!-- IIS 7 -->
<system.webServer>
  <handlers>
    <remove name="BlockViewHandler"/>
   <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
  </handlers>
</system.webServer>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow