Source code for cltk.phonology.ang.transliteration

"""
Transliteration module for Old English

Anglo-Saxon or Anglo-Frisian runes <-> Latin alphabet
"""

import logging

from cltk.core.exceptions import UnimplementedAlgorithmError
from cltk.phonology.ang.transcription import L_Transliteration, R_Transliteration

LOG = logging.getLogger(__name__)
LOG.addHandler(logging.NullHandler())


[docs]class Transliterate: """ Class that provides a transliteration method from Anglo-Saxon or Anglo-Frisian runic alphabet to Latin alphabet and vice versa. """ def __init__(self): pass
[docs] @staticmethod def transliterate(text, mode="Latin"): """ Transliterates Anglo-Saxon runes into lat and vice versa. Sources: http://www.arild-hauge.com/eanglor.htm https://en.wikipedia.org/wiki/Anglo-Saxon_runes :param text: str: The text to be transcribed :param mode: Specifies transliteration mode, options: Latin (default): Transliterates Anglo-Saxon runes into the lat alphabet, using the Dickins system Anglo-Saxon/Anglo-Frisian : Transliterates Latin text into Anglo-Saxon runes Examples: >>> Transliterate().transliterate("Hƿæt Ƿe Gardena in geardagum", "Anglo-Saxon") 'ᚻᚹᚫᛏ ᚹᛖ ᚷᚪᚱᛞᛖᚾᚪ ᛁᚾ ᚷᛠᚱᛞᚪᚷᚢᛗ' >>> Transliterate().transliterate("ᚩᚠᛏ ᛋᚳᚣᛚᛞ ᛋᚳᛖᚠᛁᛝ ᛋᚳᛠᚦᛖᚾᚪ ᚦᚱᛠᛏᚢᛗ", "Latin") 'oft scyld scefin sceathena threatum' """ if mode == "Latin": return Transliterate.__transliterate_helper(text, L_Transliteration) elif mode in ["Anglo-Saxon", "Anglo-Frisian"]: return Transliterate.__transliterate_helper(text, R_Transliteration) else: LOG.error("The specified mode is currently not supported") raise UnimplementedAlgorithmError( "The specified mode is currently not supported" )
@staticmethod def __transliterate_helper(text, dicts): text = text.lower() for w, val in zip(dicts.keys(), dicts.values()): text = text.replace(w, val) return text