Gotowa biblioteka zamieniająca nie-ASCII na ASCII

0

cześć.
mam do zrobienia pewną rzecz do pracy i nie chce mi się samemu z tym bawić. może znacie jakieś gotowe rozwiązanie?
szukam gotowej biblioteki zamieniającej tekst pisany w jakimś języku na ascii. nie chodzi mi o trywialne "usuwanie polskich ogonków", w grę wchodzą różne języki, również zapisywane cyrylicą.

np.:
[POL]
żółć -> zolc
[GER]
gemäß -> gemass
[RUS]
русский язык -> russkiy yazyk

jakby ktoś znał jakąś pomocną bibliotekę, to wielkie dzięki ;)

1

2 minuty przeszukiwania google wypluły taki wynik:
http://site.icu-project.org/
Pisali, że transliterację obsługuje, jakąś tam wzmiankę o usuwaniu akcentów też widziałem.

1

W ogólnym przypadku ciężko będzie. Usunięcie znaków diakrytycznych będzie dość łatwe, ot choćby przez WinAPI:

// zapisać plik jako Unicode, kompilować VC++, wymaga Visty lub nowszego.
#include <windows.h>
int main()
{
   wchar_t instr[] = L"zażółć gęślą jaźń áíúéóý äïüëöÿ âîûêô āīūēō çşķţņ";
   wchar_t bufstr[512];
   char outstr[512];
   int lenKD, i, idx;

   MessageBoxW(0,instr,L"input string",MB_OK);
   lenKD = NormalizeString(NormalizationKD,instr,-1,bufstr,512);
   idx = 0;
   for (i = 0; i<lenKD; i++)
     if (bufstr[i]<256)
        outstr[idx++] = (char)bufstr[i];
   outstr[idx] = '\0';
   MessageBoxA(0,outstr,"output string",MB_OK);
}

ale co zrobisz z 朝鮮民主主義人民共和國? bez potężnego słownika nie ruszysz. na dodatek istnieje więcej niż jedna konwencja romanizacji rosyjskiego, greckiego czy arabskiego, żeby wymienić prostsze przypadki.
Musisz z góry określić jakie języki chcesz obsłużyć, i pogodzić się z tym, że chodzisz po bardzo grząskim gruncie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1