2008-10-31 1 views
1

현지화에 대한 정보가 필요합니다. C# 2.0에서 .net 2.0을 사용하여 대부분의 현지화 관련 문제를 처리합니다. 그러나 특정 화면에서 현재 문화권에 해당하는 알파벳을 화면에 수동으로 그려야합니다.현지화 : 문화 정보를 스크립트 이름 또는 유니 코드 문자 범위에 매핑하는 방법은 무엇입니까?

이것은 Microsoft Outlook의 주소록 화면 (주소록보기 또는 연락처 아래 세부 주소 카드보기)과 유사하므로 오른쪽 끝에 각 알파벳 당 하나씩 버튼 열이 있어야합니다.

나는 그것을 에뮬레이트하려고하는데, 사용자에게 스크립트를 선택하라고하고 싶지는 않습니다. 현재 문화권이 중국인이라면 중국어 알파벳을 그려야합니다. 사용자가 문화 정보를 영어로 변경할 때 (그리고 그가 응용 프로그램을 다시 시작할 때) 대신 영어 알파벳을 그려야합니다. 이 쿼리로 내가 어디로 가고 있는지 이해할 수 있기를 바랍니다.

현재 사용자의 문화권을 확인할 수 있습니다 (Application.CurrentCulture 또는 System.Globalization.CultureInfo.CurrentCulture가 문화 관련 정보를 제공함). 또한 알파벳을 렌더링하는 모든 스크립트가 있습니다. 그러나 문제는 문화권 정보를 스크립트 이름에 매핑하는 방법을 모르겠다는 것입니다.

즉, 문화권에 해당하는 스크립트 이름을 결정하는 방법이 있습니까? 아니면 문화에 해당하는 유니 코드 문자 값의 범위를 결정할 수 있습니까? 둘 중 하나를 사용하면 버튼의 알파벳을 올바르게 렌더링 할 수 있습니다.

이에 관한 제안이나 안내는 진심으로 감사드립니다. 내 접근법에 근본적으로 잘못된 점이 있거나 달성하고자하는 점이 있다면, 그 점도 지적하십시오. 시간 내 줘서 고마워.

추신 : 가장 쉬운 해결책은 사용자 환경 설정의 일부로 스크립트 이름을 구성하거나 사용자가 선택할 수있는 언어 목록을 표시하는 것입니다 (Outlook 2007의 연락처). 그러나 저는 사용자가 아무 것도하지 않고도 문화에 해당하는 알파벳을 렌더링 할 수 있는지 여부를 확인하려고합니다.

답변

1

네이티브 코드에는 로캘에 필요한 스크립트를 보여주는 GetLocaleInfoEx() (Vista &)에 대한 LOCALE_SSCRIPTS가 있습니다. 현재로서는 .Net과 비슷한 개념이 없습니다.

+0

아래에있는 내 답변을 확인하시기 바랍니다 (일자 14 11 월-08) – Proto

0

중국어에는 수천 개의 문자가 있으므로 문자 세트에 모든 문자를 표시하는 것은 불가능할 수 있습니다. 중국어에는 '알파벳'이라는 기본 개념이 없으며 중국어는 일본어처럼 음절이 있다고 생각하지 않습니다.

한자를 나타 내기 위해 병음 (중국어로 된 로마자 표기)을 사용하면 색인을 생성하는 데 도움이 될 수 있습니다. 나는 이것이 당신의 질문에 대답하지 않는다는 것을 알고 있습니다,하지만 그것이 도움이되기를 바랍니다.

0

나는 mikiemacman과 완전히 동의한다. 또한, 주어진 laguage 반드시 스크립트의 모든 문자를 사용하지 않습니다.

어쨌든, 내가 생각할 수있는 가장 가까운 것은 CultureInfo.TextInfo.ANSICodePage -> 소수의 ANSI code pages입니다. 각 ANSI 코드 페이지에 대한 스크립트를 나열하는 테이블 (또는 switch() 문)을 만들 수 있습니다.

0

프로토! 훨씬 더 정확한 해결책이 있습니다. 그것은 P/Invoke해야 할 수도 있습니다 hance에 관리되지 않는.

GetLocaleInfoW(MAKELCID(wLangId, SORT_DEFAULT), LOCALE_FONTSIGNATURE, wcBuf, MAXWCBUF); 

이렇게하면 LOCALESIGNATURE 구조가됩니다. anwer는 lsUsb 필드에 있습니다. 유니 코드 하위 집합 bitfield. 쥐!이 구조의 MS 페이지는 비어 있습니다. 그러나 MSDN 복사본에서 찾아보십시오. 여기에 문서화되어 있습니다 : 어떤 스크립트가 지원되는지를 나타내는 전체 플래그 세트. 그리고 네, 타밀어 깃발이 있어요 ;-)

HTH.

편집 : 죄송합니다. Shawne의 대답을 보지 못했습니다. 와우! 사내 전문가의 답변! ;-) 어쨌든, 당신은 여전히 ​​비스타 이전 호환 답변에 관심이있을 수 있습니다.

+0

의견에 대한 – Proto

0

매혹적인 주제. 귀하의 질문에 대답하지는 못하지만, Omniglot은 좋은 자료입니다.

정답은 복잡 할 수 있으며 해결하려는 정확한 문제에 따라 다릅니다. Outlook에서와 같이 전화 번호부 섹션을 구분하기 위해 특정 언어로만 사용되는 문자 만 표시한다고 가정 할 때 문제의 몇 가지는 다음과 같습니다.

  • 여러 스크립트/언어에 걸친 연락처 이름입니다.
  • 2 글자 (예 : 세르비아어의 'Lj'). 하나의 음소로, 2 개의 유니 코드 기호가 있지만 항상 단일 문자로 취급됩니다. '전화 번호부에는'L '과 별도의 섹션이 있습니다.
  • 목록에 글자가 너무 많음 (예 : 중국어)
  • 정통성이없는 주문 (예 : 태국어 - 전화 번호부는 모음을 제외하고 자음으로 구분됩니다.)
  • 대문자/소문자 구분 (아마도 터키어를 지원하는 언어는 대소 문자 하나만 입력하면됩니다. 터키어는 '나'로 구분됩니다.)
+0

감사합니다 아래에있는 내 대답을 확인하고 몇 가지 예를 제공하는 것이 나를 dbkk 문제에 대해 열심히 생각하게하십시오. 예, 처음에 예상했던 것보다 더 많은 시간을 할애해야 할 수도 있습니다. – Proto