현지화:문화 정보를 스크립트 이름이나 유니코드 문자 범위에 매핑하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/252662

문제

현지화에 대한 정보가 필요합니다.저는 대부분의 지역화 관련 문제를 처리하는 C# 2.0과 함께 .net 2.0을 사용하고 있습니다.하지만 특정 화면에서는 현재 문화에 해당하는 알파벳을 화면에 수동으로 그려야 합니다.

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

나는 그것을 에뮬레이트하려고 노력하고 있지만 사용자에게 스크립트를 선택하도록 요청하고 싶지 않습니다.요즘 문화가 중국어라면, 한자를 그려보고 싶어요.사용자가 문화 정보를 영어로 변경할 때(그리고 애플리케이션을 다시 시작할 때) 대신 영어 알파벳을 그리고 싶습니다.이 쿼리가 어디로 가는지 이해하시기 바랍니다.

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

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

이에 관한 제안이나 지침을 진심으로 감사드립니다.내 접근 방식(또는 내가 달성하려는 목표)에 근본적으로 잘못된 점이 있는 경우에도 그 점을 지적해 주세요.시간 내 줘서 고마워.

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

도움이 되었습니까?

해결책

기본 코드에는 getLocaleInfoex () (Vista & chove) 용 Locale_sscripts가 있으며 로케일에 대해 어떤 스크립트가 예상되는지 보여줍니다. 현재 .NET에 대한 비슷한 개념은 없습니다.

다른 팁

중국인은 수천 명의 캐릭터를 가지고 있으므로 캐릭터 세트의 모든 캐릭터를 보여줄 수는 없습니다. 중국어에는 '알파벳'이라는 기본 개념이 없으며, 중국인이 일본인처럼 음절을 가지고 있다고 생각하지 않습니다.

Pinyin (로마 알파벳으로 작성된 중국어)은 한자를 나타내는 데 사용될 수 있으며,이를 색인화하는 데 도움이 될 수 있습니다. 나는 이것이 당신의 질문에 대답하지 않는다는 것을 알고 있지만 도움이되기를 바랍니다.

나는 Mikiemacman에 전적으로 동의합니다. 또한, 주어진 Laguage가 스크립트의 모든 문자를 반드시 사용하지는 않습니다.

어쨌든, 내가 생각할 수있는 가장 가까운 것은 cultureinfo.textinfo.ansicodepage-> 소수만이 있습니다. ANSI 코드 페이지. 각 ANSI CodePage에 대한 스크립트를 나열하는 테이블 (또는 switch () 문, 무엇이든)를 만들 수 있습니다.

프로토, 잠깐만요!훨씬 더 정확한 해결책이 있습니다.관리되지 않는 경우 P/Invoke를 수행해야 할 수도 있습니다.

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

이것은 당신에게 지역 서명 구조.답변은 lsUsb 필드에 있습니다.유니코드 하위 집합 비트 필드.쥐!이 구조의 MS 페이지가 비어 있습니다.그러나 MSDN 사본에서 찾아보십시오.거기에 완전히 문서화되어 있습니다.어떤 스크립트가 지원되는지 설명하는 전체 플래그 세트입니다.그리고 네, 타밀어를 위한 깃발도 있어요 ;-)

HTH.

편집하다:이런!Shawne의 답변을 보지 못했습니다.우와!사내 전문가의 답변!;-) 어쨌든 Pre-Vista 호환 답변에 여전히 관심이 있을 수 있습니다.

매혹적인 주제. 질문에 대답하지는 않지만 옴니 글롯 좋은 자원입니다.

정답은 복잡 할 수 있으며 해결하는 정확한 문제에 따라 다릅니다. 목표가 특정 언어로 사용 된 문자만을 보여주는 목표를 보여주는 경우 (전망에서와 같이) 전화 번호부 섹션에 사용되는 문자만을 가정하면 다음과 같은 문제는 다음과 같습니다.

  • 여러 스크립트/언어에 걸친 연락처 이름이있는 사람들.
  • 2- 글리프 문자 (예 : 세르비아어의 'lj'). 유니 코드 기호가 2 개 있지만 항상 단일 문자로 취급되는 하나의 음소입니다. '전화 번호부에 고유 한 섹션이있을 것입니다 ('l '과 별개).
  • 목록에 너무 많은 글리프 (예 : 중국어)
  • 비 정통 주문 (예 : 타이 - 전화 번호부는 모음을 무시하고 자음으로 만 분리됩니다).
  • 대문자 / 소문자 구별 (아마도 당신은 아마도 그것을 지원하는 언어의 경우에만 하나만 원할 것입니다. 이는 터키어 'I'라는 사소한 방식으로 분류됩니다).
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top