//-------------------------------------------------------------------- // Copyright (c) 1999-2000, International Business Machines // Corporation and others. All Rights Reserved. //-------------------------------------------------------------------- // THIS IS A MACHINE-GENERATED FILE // Tool: src\com\ibm\tools\translit\dumpICUrules.bat // Source: src\com\ibm\text\resources/TransliterationRule_Latin_Greek.java // Date: Fri May 19 15:50:22 2000 //-------------------------------------------------------------------- // Latin-Greek lgreek { Rule { // ============================================== // Modern Greek Transliteration Rules // // This transliterates modern Greek characters, but using rules // that are traditional for Ancient Greek, and // thus more resemble Greek words that have become part // of English. It differs from the official Greek // transliteration, which is more phonetic (since // most modern Greek vowels, for example, have // degenerated simply to sound like "ee"). // // There are only a few tricky parts. // 1. eta and omega don't map directly to Latin vowels, // so we use a macron on e and o, and some // other combinations if they are accented. // 2. The accented, diaeresis i and y are substituted too. // 3. Some letters use digraphs, like "ph". While typical, // they need some special handling. // 4. A gamma before a gamma or a few other letters is // transliterated as an "n", as in "Anglo" // 5. An ypsilon after a vowel is a "u", as in // "Mouseio". Otherwise it is a "y" as in "Physikon" // 6. The construction of the rules is made simpler by making sure // that most rules for lowercase letters exactly correspond to the // rules for uppercase letters, *except* for the case of the letters // in the rule itself. That way, after modifying the uppercase rules, // you can just copy, paste, and "set to lowercase" to get // the rules for lowercase letters! // ============================================== // ============================================== // Variables, used to make the rules more comprehensible // and for conditionals. // ============================================== "$quote='\"';" // Latin Letters "$E_MACRON=\u0112;" "$e_macron=\u0113;" "$O_MACRON=\u014C;" "$o_macron=\u014D;" "$Y_UMLAUT=\u0178;" "$y_umlaut=\u00FF;" //! // with real accents. //! + "$E_MACRON_ACUTE=\u0112\u0301;" //! + "$e_macron_acute=\u0113\u0301;" //! + "$O_MACRON_ACUTE=\u014C\u0301;" //! + "$o_macron_acute=\u014D\u0301;" //! + "$y_umlaut_acute=\u00FF\u0301;" //! + "$u00ef_acute=\u00ef\u0301;" //! + "$u00fc_acute=\u00fc\u0301;" //! // // single letter equivalents "$E_MACRON_ACUTE=\u00CA;" "$e_macron_acute=\u00EA;" "$O_MACRON_ACUTE=\u00D4;" "$o_macron_acute=\u00F4;" "$y_umlaut_acute=\u0177;" "$u00ef_acute=\u00EE;" "$u00fc_acute=\u00FB;" // Greek Letters "$ALPHA=\u0391;" "$BETA=\u0392;" "$GAMMA=\u0393;" "$DELTA=\u0394;" "$EPSILON=\u0395;" "$ZETA=\u0396;" "$ETA=\u0397;" "$THETA=\u0398;" "$IOTA=\u0399;" "$KAPPA=\u039A;" "$LAMBDA=\u039B;" "$MU=\u039C;" "$NU=\u039D;" "$XI=\u039E;" "$OMICRON=\u039F;" "$PI=\u03A0;" "$RHO=\u03A1;" "$SIGMA=\u03A3;" "$TAU=\u03A4;" "$YPSILON=\u03A5;" "$PHI=\u03A6;" "$CHI=\u03A7;" "$PSI=\u03A8;" "$OMEGA=\u03A9;" "$ALPHA2=\u0386;" "$EPSILON2=\u0388;" "$ETA2=\u0389;" "$IOTA2=\u038A;" "$OMICRON2=\u038C;" "$YPSILON2=\u038E;" "$OMEGA2=\u038F;" "$IOTA_DIAERESIS=\u03AA;" "$YPSILON_DIAERESIS=\u03AB;" "$alpha=\u03B1;" "$beta=\u03B2;" "$gamma=\u03B3;" "$delta=\u03B4;" "$epsilon=\u03B5;" "$zeta=\u03B6;" "$eta=\u03B7;" "$theta=\u03B8;" "$iota=\u03B9;" "$kappa=\u03BA;" "$lambda=\u03BB;" "$mu=\u03BC;" "$nu=\u03BD;" "$xi=\u03BE;" "$omicron=\u03BF;" "$pi=\u03C0;" "$rho=\u03C1;" "$sigma=\u03C3;" "$tau=\u03C4;" "$ypsilon=\u03C5;" "$phi=\u03C6;" "$chi=\u03C7;" "$psi=\u03C8;" "$omega=\u03C9;" //forms "$alpha2=\u03AC;" "$epsilon2=\u03AD;" "$eta2=\u03AE;" "$iota2=\u03AF;" "$omicron2=\u03CC;" "$ypsilon2=\u03CD;" "$omega2=\u03CE;" "$iota_diaeresis=\u03CA;" "$ypsilon_diaeresis=\u03CB;" "$iota_diaeresis2=\u0390;" "$ypsilon_diaeresis2=\u03B0;" "$sigma2=\u03C2;" // Variables for conditional mappings // Use lowercase for all variable names, to allow cut/paste below. "$letter=[~[:Lu:][:Ll:]];" "$lower=[[:Ll:]];" "$softener=[eiyEIY];" "$vowel=[aeiouAEIOU" "$ALPHA$EPSILON$ETA$IOTA$OMICRON$YPSILON$OMEGA" "$ALPHA2$EPSILON2$ETA2$IOTA2$OMICRON2$YPSILON2$OMEGA2" "$IOTA_DIAERESIS$YPSILON_DIAERESIS" "$alpha$epsilon$eta$iota$omicron$ypsilon$omega" "$alpha2$epsilon2$eta2$iota2$omicron2$ypsilon2$omega2" "$iota_diaeresis$ypsilon_diaeresis" "$iota_diaeresis2$ypsilon_diaeresis2" "];" "$n_gamma=[GKXCgkxc];" "$gamma_n=[$GAMMA$KAPPA$CHI$XI$gamma$kappa$chi$xi];" "$pp=[Pp];" // ============================================== // Rules // ============================================== // The following are special titlecases, and should // not be copied when duplicating the lowercase // ============================================== "Th <> $THETA}$lower;" "Ph <> $PHI}$lower;" "Ch <> $CHI}$lower;" //masked: + "Ps<$PHI}$lower;" // Because there is no uppercase forms for final sigma, // we had to move all the sigma rules up here. // Remember to insert ' to preserve round trip, for double letters // don't need to do this for the digraphs with h, // since it is not created when mapping back from greek // use special form for s "''S <> $pp{$SIGMA;" // handle PS "S <> $SIGMA;" // The following are a bit tricky. 's' takes two forms in greek // final or non final. // We use ~s to represent the abnormal form: final before letter // or non-final before non-letter. // We use 's to separate p and s (otherwise ps is one letter) // so, we break out the following forms: "''s < $pp{$sigma}$letter;" "s < $sigma}$letter;" "'~'s < $sigma;" "'~'s < $sigma2}$letter;" "''s < $pp{$sigma2;" "s < $sigma2;" "'~'s }$letter>$sigma2;" "'~'s > $sigma;" "''s }$letter>$sigma;" "''s > $sigma2;" "s }$letter>$sigma;" "s > $sigma2;" // because there are no uppercase forms, had to move these up too. "i$quote'`'>$iota_diaeresis2;" "y$quote'`'>$ypsilon_diaeresis2;" "$u00ef_acute<>$iota_diaeresis2;" "$u00fc_acute<>$vowel{$ypsilon_diaeresis2;" "$y_umlaut_acute<>$ypsilon_diaeresis2;" // ============================================== // Uppercase Forms. // To make lowercase forms, just copy and lowercase below // ============================================== // Typing variants, in case the keyboard doesn't have accents "'A`'>$ALPHA2;" "'E`'>$EPSILON2;" "'EE`'>$ETA2;" "EE>$ETA;" "'I`'>$IOTA2;" "'O`'>$OMICRON2;" "'OO`'>$OMEGA2;" "OO>$OMEGA;" "I$quote>$IOTA_DIAERESIS;" "Y$quote>$YPSILON_DIAERESIS;" // Basic Letters "A<>$ALPHA;" "\u00c1<>$ALPHA2;" "B<>$BETA;" "N }$n_gamma<>$GAMMA}$gamma_n;" "G<>$GAMMA;" "D<>$DELTA;" "''E <> [Ee]{$EPSILON;" // handle EE "E<>$EPSILON;" "\u00c9<>$EPSILON2;" "Z<>$ZETA;" "$E_MACRON_ACUTE<>$ETA2;" "$E_MACRON<>$ETA;" "TH<>$THETA;" "I<>$IOTA;" "\u00cd<>$IOTA2;" "\u00cf<>$IOTA_DIAERESIS;" "K<>$KAPPA;" "L<>$LAMBDA;" "M<>$MU;" "N'' <> $NU}$gamma_n;" "N<>$NU;" "X<>$XI;" "''O <> [Oo]{ $OMICRON;" // handle OO "O<>$OMICRON;" "\u00d3<>$OMICRON2;" "PH<>$PHI;" // needs ordering before P "PS<>$PSI;" // needs ordering before P "P<>$PI;" "R<>$RHO;" "T<>$TAU;" "U <> $vowel{$YPSILON;" "\u00da <> $vowel{$YPSILON2;" "\u00dc <> $vowel{$YPSILON_DIAERESIS;" "Y<>$YPSILON;" "\u00dd<>$YPSILON2;" "$Y_UMLAUT<>$YPSILON_DIAERESIS;" "CH<>$CHI;" "$O_MACRON_ACUTE<>$OMEGA2;" "$O_MACRON<>$OMEGA;" // Extra English Letters. Mapped for completeness "C}$softener>|S;" "C>|K;" "F>|PH;" "H>|CH;" "J>|I;" "Q>|K;" "V>|U;" "W>|U;" // ============================================== // Lowercase Forms. Just copy above and lowercase // ============================================== // typing variants, in case the keyboard doesn't have accents "'a`'>$alpha2;" "'e`'>$epsilon2;" "'ee`'>$eta2;" "ee>$eta;" "'i`'>$iota2;" "'o`'>$omicron2;" "'oo`'>$omega2;" "oo>$omega;" "i$quote>$iota_diaeresis;" "y$quote>$ypsilon_diaeresis;" // basic letters "a<>$alpha;" "\u00e1<>$alpha2;" "b<>$beta;" "n }$n_gamma<>$gamma}$gamma_n;" "g<>$gamma;" "d<>$delta;" "''e <> [Ee]{$epsilon;" // handle EE "e<>$epsilon;" "\u00e9<>$epsilon2;" "z<>$zeta;" "$e_macron_acute<>$eta2;" "$e_macron<>$eta;" "th<>$theta;" "i<>$iota;" "\u00ed<>$iota2;" "\u00ef<>$iota_diaeresis;" "k<>$kappa;" "l<>$lambda;" "m<>$mu;" "n'' <> $nu}$gamma_n;" "n<>$nu;" "x<>$xi;" "''o <> [Oo]{ $omicron;" // handle OO "o<>$omicron;" "\u00f3<>$omicron2;" "ph<>$phi;" // needs ordering before p "ps<>$psi;" // needs ordering before p "p<>$pi;" "r<>$rho;" "t<>$tau;" "u <> $vowel{$ypsilon;" "\u00fa <> $vowel{$ypsilon2;" "\u00fc <> $vowel{$ypsilon_diaeresis;" "y<>$ypsilon;" "\u00fd<>$ypsilon2;" "$y_umlaut<>$ypsilon_diaeresis;" "ch<>$chi;" "$o_macron_acute<>$omega2;" "$o_macron<>$omega;" // extra english letters. mapped for completeness "c}$softener>|s;" "c>|k;" "f>|ph;" "h>|ch;" "j>|i;" "q>|k;" "v>|u;" "w>|u;" // ==================================== // Normal final rule: remove ' // ==================================== //+ "''>;" } }