goldendict-ng/greektranslit.cc

844 lines
19 KiB
C++
Raw Normal View History

/* This file is (c) 2010 Jennie Petoumenou <epetoumenou@gmail.com>
* Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */
#include "greektranslit.hh"
#include "transliteration.hh"
#include <QCoreApplication>
namespace GreekTranslit {
class GreekTable: public Transliteration::Table
{
public:
GreekTable();
};
GreekTable::GreekTable()
{
// Utf8
//I. LATIN -> MODERN & CLASSICAL GREEK (COMMON CHARACTERS)
ins("a", "α");
ins("b", "β");
ins("v", "β");
ins("g", "γ");
ins("d", "δ");
ins("e", "ε");
ins("z", "ζ");
ins("h", "η");
ins("q", "θ");
ins("8", "θ");
ins("i", "ι");
ins("k", "κ");
ins("l", "λ");
ins("m", "μ");
ins("n", "ν");
ins("c", "ξ");
ins("3", "ξ");
ins("ks", "ξ");
ins("o", "ο");
ins("p", "π");
ins("r", "ρ");
ins("s", "σ");
ins("s1", "σ");
ins("j", "ς");
ins("s2", "ς");
ins("s\\n", "ς");
ins("t", "τ");
ins("u", "υ");
ins("f", "φ");
ins("x", "χ");
ins("y", "ψ");
ins("ps", "ψ");
ins("w", "ω");
ins("A", "Α");
ins("B", "Β");
ins("V", "Β");
ins("G", "Γ");
ins("D", "Δ");
ins("E", "Ε");
ins("Z", "Ζ");
ins("H", "Η");
ins("Q", "Θ");
ins("I", "Ι");
ins("K", "Κ");
ins("L", "Λ");
ins("M", "Μ");
ins("N", "Ν");
ins("C", "Ξ");
ins("KS", "Ξ");
ins("Ks", "Ξ");
ins("O", "Ο");
ins("P", "Π");
ins("R", "Τ");
ins("S", "Σ");
ins("S1", "Σ");
ins("J", "Σ");
ins("S2", "Σ");
ins("S\\n", "Σ");
ins("T", "Τ");
ins("U", "Υ");
ins("F", "Φ");
ins("X", "Χ");
ins("Y", "Ψ");
ins("PS", "Ψ");
ins("Ps", "Ψ");
ins("W", "Ω");
//II. LATIN -> MODERN GREEK (DIACRITICS)
ins("'a", "ά");
ins("'e", "έ");
ins("'h", "ή");
ins("'i", "ί");
ins("\"i", "ϊ");
ins("\"'i", "ΐ");
ins("'\"i", "ΐ");
ins("'o", "ό");
ins("'u", "ύ");
ins("\"u", "ϋ");
ins("\"'u", "ΰ");
ins("'\"u", "ΰ");
ins("'w", "ώ");
ins("'A", "Ά");
ins("'E", "Έ");
ins("'H", "Ή");
ins("'I", "Ί");
ins("\"I", "Ϊ");
ins("'O", "Ό");
ins("'U", "Ύ");
ins("\"U", "Ϋ");
ins("'W", "Ώ");
//IV. LATIN -> CLASSICAL GREEK (DIACRITICS - BETA CODE)
// Adapted from beta2unicode.py by James Tauber <http://jtauber.com/>
//ORDER: Breathing - Accent
//uppercase (asterisk & capitals)
//oceia - bareia
ins("*)A", "");
ins("*(A", "");
ins("*\\A", "");
ins("*/A", "");
ins("*)\\A", "");
ins("*(\\A", "");
ins("*)/A", "");
ins("*(/A", "");
ins("*)E", "");
ins("*(E", "");
ins("*\\E", "");
ins("*/E", "");
ins("*)\\E", "");
ins("*(\\E", "");
ins("*)/E", "");
ins("*(/E", "");
ins("*)H", "");
ins("*(H", "");
ins("*\\H", "");
ins("*/H", "");
ins("*)\\H", "");
ins("*(\\H", "");
ins("*)/H", "");
ins("*(/H", "");
ins("*)I", "");
ins("*(I", "");
ins("*\\I", "");
ins("*/I", "");
ins("*)\\I", "");
ins("*(\\I", "");
ins("*)/I", "");
ins("*(/I", "");
ins("*)O", "");
ins("*(O", "");
ins("*\\O", "");
ins("*/O", "");
ins("*)\\O", "");
ins("*(\\O", "");
ins("*)/O", "");
ins("*(/O", "");
ins("*(R", "");
ins("*(U", "");
ins("*\\U", "");
ins("*/U", "");
ins("*(\\U", "");
ins("*(/U", "");
ins("*)W", "");
ins("*(W", "");
ins("*\\W", "");
ins("*/W", "");
ins("*)\\W", "");
ins("*(\\W", "");
ins("*)/W", "");
ins("*(/W", "");
//perispwmenh
ins("*)=A", "");
ins("*(=A", "");
ins("*)=H", "");
ins("*(=H", "");
ins("*)=I", "");
ins("*(=I", "Ἷ");
ins("*(=U", "");
ins("*)=W", "");
ins("*(=W", "");
//upogegrammenh
ins("*A|", "");
ins("*)A|", "");
ins("*(A|", "");
ins("*)/A|", "");
ins("*(/A|", "");
ins("*)=A|", "");
ins("*(=A|", "");
ins("*H|", "");
ins("*)H|", "");
ins("*(H|", "");
ins("*)/H|", "");
ins("*(/H|", "");
ins("*)=H|", "");
ins("*(=H|", "");
ins("*W|", "");
ins("*)W|", "");
ins("*(W|", "");
ins("*)/W|", "");
ins("*(/W|", "");
ins("*)=W|", "");
ins("*(=W|", "");
ins("*|A", "");
ins("*)|A", "");
ins("*(|A", "");
ins("*)/|A", "");
ins("*(/|A", "");
ins("*)=|A", "");
ins("*(=|A", "");
ins("*|H", "");
ins("*)|H", "");
ins("*(|H", "");
ins("*)/|H", "");
ins("*(/|H", "");
ins("*)=|H", "");
ins("*(=|H", "");
ins("*|W", "");
ins("*)|W", "");
ins("*(|W", "");
ins("*)/|W", "");
ins("*(/|W", "");
ins("*)=|W", "");
ins("*(=|W", "");
//diairesis
ins("*+I", "Ϊ");
ins("*+U", "Ϋ");
//uppercase (asterisk & small letters)
//oceia - bareia
ins("*)a", "");
ins("*(a", "");
ins("*\\a", "");
ins("*/a", "");
ins("*)\\a", "");
ins("*(\\a", "");
ins("*)/a", "");
ins("*(/a", "");
ins("*)e", "");
ins("*(e", "");
ins("*\\e", "");
ins("*/e", "");
ins("*)\\e", "");
ins("*(\\e", "");
ins("*)/e", "");
ins("*(/e", "");
ins("*)h", "");
ins("*(h", "");
ins("*\\h", "");
ins("*/h", "");
ins("*)\\h", "");
ins("*(\\h", "");
ins("*)/h", "");
ins("*(/h", "");
ins("*)i", "");
ins("*(i", "");
ins("*\\i", "");
ins("*/i", "");
ins("*)\\i", "");
ins("*(\\i", "");
ins("*)/i", "");
ins("*(/i", "");
ins("*)o", "");
ins("*(o", "");
ins("*\\o", "");
ins("*/o", "");
ins("*)\\o", "");
ins("*(\\o", "");
ins("*)/o", "");
ins("*(/o", "");
ins("*(r", "");
ins("*(u", "");
ins("*\\u", "");
ins("*/u", "");
ins("*(\\u", "");
ins("*(/u", "");
ins("*)w", "");
ins("*(w", "");
ins("*\\w", "");
ins("*/w", "");
ins("*)\\w", "");
ins("*(\\w", "");
ins("*)/w", "");
ins("*(/w", "");
//perispwmenh
ins("*)=a", "");
ins("*(=a", "");
ins("*)=h", "");
ins("*(=h", "");
ins("*)=i", "");
ins("*(=i", "Ἷ");
ins("*(=u", "");
ins("*)=w", "");
ins("*(=w", "");
//upogegrammenh
ins("*a|", "");
ins("*)a|", "");
ins("*(a|", "");
ins("*)/a|", "");
ins("*(/a|", "");
ins("*)=a|", "");
ins("*(=a|", "");
ins("*h|", "");
ins("*)h|", "");
ins("*(h|", "");
ins("*)/h|", "");
ins("*(/h|", "");
ins("*)=h|", "");
ins("*(=h|", "");
ins("*w|", "");
ins("*)w|", "");
ins("*(w|", "");
ins("*)/w|", "");
ins("*(/w|", "");
ins("*)=w|", "");
ins("*(=w|", "");
ins("*|a", "");
ins("*)|a", "");
ins("*(|a", "");
ins("*)/|a", "");
ins("*(/|a", "");
ins("*)=|a", "");
ins("*(=|a", "");
ins("*|h", "");
ins("*)|h", "");
ins("*(|h", "");
ins("*)/|h", "");
ins("*(/|h", "");
ins("*)=|h", "");
ins("*(=|h", "");
ins("*|w", "");
ins("*)|w", "");
ins("*(|w", "");
ins("*)/|w", "");
ins("*(/|w", "");
ins("*)=|w", "");
ins("*(=|w", "");
//diairesis
ins("*+i", "Ϊ");
ins("*+u", "Ϋ");
//uppercase (capitals)
//oceia - bareia
ins("A)", "");
ins("A(", "");
ins("A\\", "");
ins("A/", "");
ins("A)\\", "");
ins("A(\\", "");
ins("A)/", "");
ins("A(/", "");
ins("E)", "");
ins("E(", "");
ins("E\\", "");
ins("E/", "");
ins("E)\\", "");
ins("E(\\", "");
ins("E)/", "");
ins("E(/", "");
ins("H)", "");
ins("H(", "");
ins("H\\", "");
ins("H/", "");
ins("H)\\", "");
ins("H(\\", "");
ins("H)/", "");
ins("H(/", "");
ins("I)", "");
ins("I(", "");
ins("I\\", "");
ins("I/", "");
ins("I)\\", "");
ins("I(\\", "");
ins("I)/", "");
ins("I(/", "");
ins("O)", "");
ins("O(", "");
ins("O\\", "");
ins("O/", "");
ins("O)\\", "");
ins("O(\\", "");
ins("O)/", "");
ins("O(/", "");
ins("R(", "");
ins("U)", "");
ins("U(", "");
ins("U\\", "");
ins("U/", "");
ins("U)\\", "");
ins("U(\\", "");
ins("U)/", "");
ins("U(/", "");
ins("W)", "");
ins("W(", "");
ins("W\\", "");
ins("W/", "");
ins("W)\\", "");
ins("W(\\", "");
ins("W)/", "");
ins("W(/", "");
//perispwmenh
ins("A=", "");
ins("A)=", "");
ins("A(=", "");
ins("H=", "");
ins("H)=", "");
ins("H(=", "");
ins("I=", "");
ins("I)=", "");
ins("I(=", "Ἷ");
ins("U=", "");
ins("U)=", "");
ins("U(=", "");
ins("W=", "");
ins("W)=", "");
ins("W(=", "");
//upogegrammenh
ins("A|", "");
ins("A)|", "");
ins("A(|", "");
ins("A/|", "");
ins("A)/|", "");
ins("A(/|", "");
ins("A=|", "");
ins("A)=|", "");
ins("A(=|", "");
ins("H|", "");
ins("H)|", "");
ins("H(|", "");
ins("H/|", "");
ins("H)/|", "");
ins("H(/|", "");
ins("H=|", "");
ins("H)=|", "");
ins("H(=|", "");
ins("W|", "");
ins("W)|", "");
ins("W(|", "");
ins("W/|", "");
ins("W)/|", "");
ins("W(/|", "");
ins("W=|", "");
ins("W)=|", "");
ins("W(=|", "");
//diairesis
ins("I+", "Ϊ");
ins("I+\\", "");
ins("I+/", "");
ins("U+", "Ϋ");
ins("U+\\", "");
ins("U+/", "");
//lowercase (small letters)
//oceia - bareia
ins("a)", "");
ins("a(", "");
ins("a\\", "");
ins("a/", "");
ins("a)\\", "");
ins("a(\\", "");
ins("a)/", "");
ins("a(/", "");
ins("e)", "");
ins("e(", "");
ins("e\\", "");
ins("e/", "");
ins("e)\\", "");
ins("e(\\", "");
ins("e)/", "");
ins("e(/", "");
ins("h)", "");
ins("h(", "");
ins("h\\", "");
ins("h/", "");
ins("h)\\", "");
ins("h(\\", "");
ins("h)/", "");
ins("h(/", "");
ins("i)", "");
ins("i(", "");
ins("i\\", "");
ins("i/", "");
ins("i)\\", "");
ins("i(\\", "");
ins("i)/", "");
ins("i(/", "");
ins("o)", "");
ins("o(", "");
ins("o\\", "");
ins("o/", "");
ins("o)\\", "");
ins("o(\\", "");
ins("o)/", "");
ins("o(/", "");
ins("r(", "");
ins("u)", "");
ins("u(", "");
ins("u\\", "");
ins("u/", "");
ins("u)\\", "");
ins("u(\\", "");
ins("u)/", "");
ins("u(/", "");
ins("w)", "");
ins("w(", "");
ins("w\\", "");
ins("w/", "");
ins("w)\\", "");
ins("w(\\", "");
ins("w)/", "");
ins("w(/", "");
//perispwmenh
ins("a=", "");
ins("a)=", "");
ins("a(=", "");
ins("h=", "");
ins("h)=", "");
ins("h(=", "");
ins("i=", "");
ins("i)=", "");
ins("i(=", "");
ins("u=", "");
ins("u)=", "");
ins("u(=", "");
ins("w=", "");
ins("w)=", "");
ins("w(=", "");
//upogegrammenh
ins("a|", "");
ins("a)|", "");
ins("a(|", "");
ins("a/|", "");
ins("a)/|", "");
ins("a(/|", "");
ins("a=|", "");
ins("a)=|", "");
ins("a(=|", "");
ins("h|", "");
ins("h)|", "");
ins("h(|", "");
ins("h/|", "");
ins("h)/|", "");
ins("h(/|", "");
ins("h=|", "");
ins("h)=|", "");
ins("h(=|", "");
ins("w|", "");
ins("w)|", "");
ins("w(|", "");
ins("w/|", "");
ins("w)/|", "");
ins("w(/|", "");
ins("w=|", "");
ins("w)=|", "");
ins("w(=|", "");
//diairesis
ins("i+", "ϊ");
ins("i+\\", "");
ins("i+/", "");
ins("u+", "ϋ");
ins("u+\\", "");
ins("u+/", "");
//ORDER: ACCENT - BREATHING (UNOFFICIAL)
//uppercase (capitals)
//oceia - bareia
ins("A\\)", "");
ins("A\\(", "");
ins("A/)", "");
ins("A/(", "");
ins("E\\)", "");
ins("E\\(", "");
ins("E/)", "");
ins("E/(", "");
ins("H\\)", "");
ins("H\\(", "");
ins("H/)", "");
ins("H/(", "");
ins("I\\)", "");
ins("I\\(", "");
ins("I/)", "");
ins("I/(", "");
ins("O\\)", "");
ins("O\\(", "");
ins("O/)", "");
ins("O/(", "");
ins("U\\(", "");
ins("U/(", "");
ins("W\\)", "");
ins("W\\(", "");
ins("W/)", "");
ins("W/(", "");
//perispwmenh
ins("A=)", "");
ins("A=(", "");
ins("H=)", "");
ins("H=(", "");
ins("I=)", "");
ins("I=(", "Ἷ");
ins("U=(", "");
ins("W=)", "");
ins("W=(", "");
//upogegrammenh
ins("A/)|", "");
ins("A/(|", "");
ins("A=)|", "");
ins("A=(|", "");
ins("H/)|", "");
ins("H/(|", "");
ins("H=)|", "");
ins("H=(|", "");
ins("W/)|", "");
ins("W/(|", "");
ins("W=)|", "");
ins("W=(|", "");
//lowercase (small letters)
//oceia - bareia
ins("a\\)", "");
ins("a\\(", "");
ins("a/)", "");
ins("a/(", "");
ins("e\\)", "");
ins("e\\(", "");
ins("e/)", "");
ins("e/(", "");
ins("h\\)", "");
ins("h\\(", "");
ins("h/)", "");
ins("h/(", "");
ins("i\\)", "");
ins("i\\(", "");
ins("i/)", "");
ins("i/(", "");
ins("o\\)", "");
ins("o\\(", "");
ins("o/)", "");
ins("o/(", "");
ins("u\\)", "");
ins("u\\(", "");
ins("u/)", "");
ins("u/(", "");
ins("w\\)", "");
ins("w\\(", "");
ins("w/)", "");
ins("w/(", "");
//perispwmenh
ins("a=)", "");
ins("a=(", "");
ins("h=)", "");
ins("h=(", "");
ins("i=)", "");
ins("i=(", "");
ins("u=)", "");
ins("u=(", "");
ins("w=)", "");
ins("w=(", "");
//upogegrammenh
ins("a/)|", "");
ins("a/(|", "");
ins("a=)|", "");
ins("a=(|", "");
ins("h/)|", "");
ins("h/(|", "");
ins("h=)|", "");
ins("h=(|", "");
ins("w/)|", "");
ins("w/(|", "");
ins("w=)|", "");
ins("w=(|", "");
//diairesis
ins("i\\+", "");
ins("i/+", "");
ins("u\\+", "");
ins("u/+", "");
//IΙI. MODERN GREEK <-> CLASSICAL GREEK
//convert tonos to oceia
ins("ά", "");
ins("έ", "");
ins("ή", "");
ins("ί", "");
ins("ΐ", "");
ins("ό", "");
ins("ύ", "");
ins("ΰ", "");
ins("ώ", "");
ins("Ά", "");
ins("Έ", "");
ins("Ή", "");
ins("Ί", "");
ins("Ό", "");
ins("Ύ", "");
ins("Ώ", "");
//convert oceia to tonos
ins("", "ά");
ins("", "έ");
ins("", "ή");
ins("", "ί");
ins("", "ΐ");
ins("", "ό");
ins("", "ύ");
ins("", "ΰ");
ins("", "ώ");
ins("", "Ά");
ins("", "Έ");
ins("", "Ή");
ins("", "Ί");
ins("", "Ό");
ins("", "Ύ");
ins("", "Ώ");
}
sptr< Dictionary::Class > makeDictionary() THROW_SPEC( std::exception )
{
static GreekTable t;
return new Transliteration::TransliterationDictionary( "baa9e37a1aa69cdb5daca14a48ffe5ae",
QCoreApplication::translate( "GreekTranslit", "Greek Transliteration" ).toUtf8().data(),
QIcon( ":/flags/gr.png" ), t );
}
}