2013-01-14 2 views
10

저는 현지화에 대해 조금 걱정할 필요가있는 제품에 대해 작업합니다. 다음 이름을 복사지역화 된 문자열을 관리하는 더 좋은 방법이 있습니까?

  1. 검색 resources.resx 파일을 발견하는 경우
  2. (수백 개의 항목이있다) : 현재이 내가 지역화 된 문자열을 사용 (또는 추가)해야하는 경우에 대한 워크 플로우이다. (ResourceMgr는 ResourceManager에 그냥 정적 필드입니다) 모든 문자열에 대한

이 3 단계 과정은 실제 고통 그렇지 않으면, 새 문자열을 추가 한 다음 이름

  • 복사, ResourceFactory.ResourceMgr.GetString("MY_MAGIC_STRING")를 사용합니다. 이 과정을 더 쉽게 만들 수있는 패턴이나 방법이 있습니까?

  • +1

    동일한 문자열을 다시 사용하는 것에주의하십시오. 문맥에 따라 다른 언어로 다르게 번역되어야하는 구/문장/단어가 있습니다. 예 : 문장의 주제에 따라 슬라브어로 동사를 활용. – svick

    +0

    @svick 물론. 우리는 일반적으로 (특히 String.Format 스타일 문자열을 사용하여) 모든 것을 함께 유지하려고 노력하며 변경해야 할 부분이있을 때 번역자에게 알려주십시오 – Earlz

    +0

    깨끗한 코드일까요? 아니면 더 빨리 실행하게할까요? – Paparazzi

    답변

    5

    각 개별 문자열에 액세스 할 수있는 자동 생성 파일을 사용하는 것이 훨씬 쉽습니다. RESX 파일의 "맞춤 도구"를 PublicResXFileCodeGenerator으로 설정하십시오.

    using MyProject.Resources; 
    ... 
    localizedText = Resources.SomeReasonableName; 
    

    사이드 노트 :

    코드는 같을 것이다

    • 당신에게 선택의 적절한 수를 나타내는 인텔리의 추가 혜택이 자동으로 생성되는 ID를 함께 여러 RESX 파일을 가지고.
    • 번역 처리 방법에 따라 RESX 파일의 중복 된 텍스트에 대해 걱정할 필요가 없습니다 (단, 확인/문자열 종류 취소 제외). 번역 할 때 복제 된 문자열을 다루는 것이 더 쉬울 수도 있습니다.
    +0

    하지만 3 단계가 약간 더 나아질 것이므로 개선하지는 않습니까? – svick

    +1

    @svick, 귀하의 전화. "약간 컴파일 타임 대 런타임 체크". 또한 문자열이 기능별로 파일로 구성되어있는 경우 합리적인 수의 선택으로 하나의 파일에 모든 정보가 표시되므로 인텔리 센스를 얻게됩니다. 그러나 적어도 런타임보다는 컴파일 시간 오류가 발생합니다. –

    0

    당신에게 몇 가지 아이디어를 줄 수도이 자바 솔루션이있다 : http://rodionmoiseev.github.com/c10n/

    아이디어는 인터페이스 메서드에 주석을 사용하여, 소스 코드 자체에 저장 번역이다가. 그런 다음 특수 유틸리티를 사용하여 인터페이스 메소드를 호출 할 때 지역화 된 문자열 값을 반환하는 프록시 (인터페이스를 동적으로 구현하는 클래스)를 동적으로 만들 수 있습니다.

    이렇게하면 MyMagicString() 메서드가 호출됩니다.이 메서드는 맞춤법/형식 안전성을 제공하고보다 리팩터링 할 수 있도록합니다.

    +0

    링크가 포함 된 답변 게시는 그다지 유용하지 않습니다. 도서관에서하는 일에 대한 간단한 설명을 추가 할 수 있습니까? – svick

    +0

    이것이 일어날 것임을 알았습니다. S 이제 좀 더 분명해지기를 바랍니다. – rodion