ZRCola/lib/libZRCola/src/language.cpp
Simon Rozman 47d3884af3 Update Copyright and build year
Signed-off-by: Simon Rozman <simon@rozman.si>
2022-01-07 11:38:32 +01:00

69 lines
3.0 KiB
C++

/*
SPDX-License-Identifier: GPL-3.0-or-later
Copyright © 2015-2022 Amebis
*/
#include "pch.h"
#ifdef _WIN32
void ZRCola::LangConvert(_In_ LANGID lang_win, _Inout_ ZRCola::langid_t &lang)
{
switch (PRIMARYLANGID(lang_win)) {
case LANG_BELARUSIAN : lang = "bel"; break;
case LANG_CZECH : lang = "cze"; break;
case LANG_DANISH : lang = "dan"; break;
case LANG_GERMAN : lang = "deu"; break;
case LANG_ENGLISH : lang = "eng"; break;
case LANG_ESTONIAN : lang = "est"; break;
case LANG_FRENCH : lang = "fra"; break;
case LANG_IRISH : lang = "gle"; break;
case LANG_HUNGARIAN : lang = "hun"; break;
case LANG_LATVIAN : lang = "lav"; break;
case LANG_LITHUANIAN : lang = "lit"; break;
case LANG_MACEDONIAN : lang = "mkd"; break;
case LANG_MALTESE : lang = "mlt"; break;
case LANG_NORWEGIAN : lang = "nor"; break;
case LANG_POLISH : lang = "pol"; break;
case LANG_PORTUGUESE : lang = "por"; break;
case LANG_ROMANIAN : lang = "rum"; break;
case LANG_RUSSIAN : lang = "rus"; break;
case LANG_SLOVAK : lang = "slk"; break;
case LANG_SLOVENIAN : lang = "slv"; break;
case LANG_SPANISH : lang = "spa"; break;
case LANG_ALBANIAN : lang = "sqi"; break;
case LANG_SWEDISH : lang = "swe"; break;
case LANG_TURKISH : lang = "tur"; break;
case LANG_UKRAINIAN : lang = "ukr"; break;
case LANG_CROATIAN : // LANG_BOSNIAN, and LANG_SERBIAN
switch (SUBLANGID(lang_win)) {
case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN : lang = "bos"; break;
case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC : lang = "boz"; break;
case SUBLANG_CROATIAN_CROATIA :
case SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN : lang = "hrv"; break;
case SUBLANG_SERBIAN_LATIN :
case SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN :
case SUBLANG_SERBIAN_MONTENEGRO_LATIN :
case SUBLANG_SERBIAN_SERBIA_LATIN : lang = "srp"; break;
case SUBLANG_SERBIAN_CYRILLIC :
case SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC :
case SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC :
case SUBLANG_SERBIAN_SERBIA_CYRILLIC : lang = "srz"; break;
}
break;
}
}
#endif
bool ZRCola::langchar_db::IsLocalCharacter(_In_ const wchar_t *chr, _In_ const wchar_t *chr_end, _In_ ZRCola::langid_t lang) const
{
size_t n = chr_end - chr;
assert(n <= 0xffff);
std::unique_ptr<langchar> lc((langchar*)new char[sizeof(langchar) + sizeof(wchar_t)*n]);
lc->langchar::langchar(lang, chr, n);
indexChr::size_type start;
return idxChr.find(*lc, start);
}