2012-03-02 9 views
7

Mam klawiatury ekranu dotykowego w mojej aplikacji WPF i chciałbym umożliwić użytkownikom pisać w języku chińskim.Jak przekonwertować ciąg pinyin na chiński w C#

Widziałem, że w systemie Windows jest edytor IME, który umożliwia pisanie po chińsku z Pinyin. Działa świetnie, ale chciałbym dostosować go do mojej aplikacji WPF. (Zwłaszcza lista kandydacka). Nie znalazłem żadnej dokumentacji na ten temat.

Pomysł polega na tym, że użytkownik napisze w Pinyin za pomocą wirtualnej klawiatury i pojawi się lista wyboru z chińskimi ideogramami obok pola tekstowego.

Czy masz jakieś rady, aby to osiągnąć? Może jest biblioteka (nie od Microsoftu), która może to zrobić iw tym przypadku nie będę używać IME od MS?

+0

Jeśli Jest wprowadzania dotykowego bazie wouldn” • czy lepiej pozwolić im wprowadzać znaki przez "pisanie" na ekranie, zamiast używać konwersji pinyin? – Szabolcs

+0

Ekran dotykowy nie jest tak naprawdę reaktywny i nie będzie łatwo pisać w małych polach tekstowych. Jest to aplikacja medyczna, więc lekarz ma możliwość stworzenia nowych pacjentów i po znalezieniu ich po imieniu, nazwisku itp. Dlatego nie może wdrożyć twojego rozwiązania. –

+0

Zatem powodem, dla którego chcesz dostosować listę kandydatów, jest automatyczne uzupełnianie nazwy pacjenta? Większość programów, jakie znam, realizuje to poprzez umożliwienie wpisania pinyin (bezpośrednio, nie poprzez systemowy edytor IME) i na tej podstawie autouzupełniania.Ten problem jest dużo łatwiejszy niż wdrożenie ogólnego i efektywnego IME --- ogólny IME musi obsłużyć wszystkie postacie i musi sugerować najbardziej prawdopodobne dopasowania Najnowszy MS pinyin IME nawet automatycznie aktualizuje z Internetu najnowsze statystyki w celu poprawy prognoz, i uczy się także od użytkownika. – Szabolcs

Odpowiedz

3

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=7D1DF9CE-4AEE-467F-996E-BEC826C5DAA2

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=15251

Microsoft w rzeczywistości ma dobre komponenty/biblioteki dla tego, ale są one ukryte tutaj w Visual Studio Międzynarodowego Feature Pack.

Pamiętaj, że potrzebujesz 1.0 SR 1, który zapewnia podstawowe biblioteki, a 2.0 dodaje wiele kontrolek WinForm lub WPF.

(Aktualizacja w dniu paź 26, 2017. Wiele faceci opublikowane pakiety Nuget na NuGet.org na podstawie kodu Microsoftu, więc może również sprawdzić te pakiety na zewnątrz.)

+0

Dziękuję Lex Li, Pobrałem pakiet wcześniej, ale nie widziałem nic o tym, jak przekonwertować łańcuch pinyin na chińskie ideogramy. Z której funkcji mam korzystać? –

+0

Powinienem był wyjaśnić, że potrzebujesz zarówno 1.0 SR 1, jak i 2.0. CHSPinyinConv.msi w wersji 1.0 SR1 to konwersja Pinyin. ChineseChar.GetChars (string pinyin) może być twoim punktem wyjścia. –

+1

Myślę, że lepiej jest wspomnieć o całej przestrzeni nazw, która jest "Microsoft.International.Converters.PinYinConverter". Ponadto, łatwiej dostać się przez NuGet dzisiaj: https://www.nuget.org/packages/Microsoft.International.Converters.PinYinConverter/ –

2

Nie jestem pewien, czy dostępne są pakiety OS (Open Source). Jednak teoretycznie nie jest trudno zbudować taką bibliotekę. W języku chińskim istnieje około 1300 pojedynczych dźwięków: początkowy + końcowy + dźwięki. Każdy dźwięk ma grupę chińskich znaków, różne liczby od 1 do 130 znaków.

Można zdefiniować tablicę wszystkich Pinyin brzmi:

string[] pinyins = new string[] { 
    "a:c1c2c3...",  // pinyin 1 a: character1 character2... 
    ... 
    "zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character... 
}; 

Powyższa tablica jest bazą dla mapowania Pinyin Chiński (chińskie znaki i dźwięki są Pinyin unicode strings). Następnie dla każdego dźwięku wejściowego Pinyin, wykaz znaków uzyskuje się poprzez funkcję tak:

string getCharacters(string aPinyin) { 
    string characters = null; 
    foreach(string item in pinyins) { 
     string[] temp = item.split(':'); 
     if (temp[0].Equals(aPinyin)) { 
      charaters = temp[1]; 
      break; 
     } 
    } 
    return characters; 
} 

pisałem JavaScipt dawno temu, gdzie zdefiniowane relacje między Pinyin i chińskich znaków. W moim blogu: Get Pinyin From Chinese Characters skrypt można znaleźć, przeglądając kody źródłowe lub Sprawdzaj element w menu kontekstowym. W moim blogu skrypt służy do konwersji języka chińskiego na język pinyin, ale związek może być używany jako odniesienie.

enter image description here

Aby dodać funkcję inteligentnej Pinyin - wyświetla listę słów do Pinyin, można to zrobić poprzez zdefiniowanie wszystkich powszechnie używanych słów w podobny schemat: pinyin: słowa.

+0

Witaj David, dziękuję za odpowiedź. Czy sądzisz, że użytkownicy będą mogli napisać wszystko, co chcą z tym słownikiem? Mam na myśli podstawowe rzeczy, takie jak ich nazwisko, imię, komentarze na temat badania lekarskiego. –

Powiązane problemy