import gradio as gr # Mapping English to various ancient-style Unicode characters HIEROGLYPHS = { 'a': '𓀀', 'b': '𓃀', 'c': '𓎡', 'd': '𓂧', 'e': '𓇋', 'f': '𓆑', 'g': '𓎼', 'h': '𓉔', 'i': '𓇋', 'j': '𓆓', 'k': '𓎡', 'l': '𓃭', 'm': '𓅓', 'n': '𓈖', 'o': '𓂝', 'p': '𓊪', 'q': '𓏘', 'r': '𓂋', 's': '𓋴', 't': '𓏏', 'u': '𓅱', 'v': '𓆑', 'w': '𓅱', 'x': '𓎡𓋴', 'y': '𓇋', 'z': '𓊃', ' ': ' ' } RUNES = { 'a': 'ᚨ', 'b': 'ᛒ', 'c': 'ᚲ', 'd': 'ᛞ', 'e': 'ᛖ', 'f': 'ᚠ', 'g': 'ᚷ', 'h': 'ᚺ', 'i': 'ᛁ', 'j': 'ᛃ', 'k': 'ᚲ', 'l': 'ᛚ', 'm': 'ᛗ', 'n': 'ᚾ', 'o': 'ᛟ', 'p': 'ᛈ', 'q': 'ᚲᚹ', 'r': 'ᚱ', 's': 'ᛊ', 't': 'ᛏ', 'u': 'ᚢ', 'v': 'ᚹ', 'w': 'ᚹ', 'x': 'ᚲᛊ', 'y': 'ᛃ', 'z': 'ᛉ', ' ': ' ᛫ ' } CUNEIFORM = { 'a': '𒀀', 'b': '𒁀', 'c': '𒄀', 'd': '𒁲', 'e': '𒂊', 'f': '𒄫', 'g': '𒂵', 'h': '𒄩', 'i': '𒄿', 'j': '𒋛', 'k': '𒆠', 'l': '𒇷', 'm': '𒈠', 'n': '𒈾', 'o': '𒌋', 'p': '𒉺', 'q': '𒆪', 'r': '𒊏', 's': '𒊓', 't': '𒋗', 'u': '𒌑', 'v': '𒁀', 'w': '𒉿', 'x': '𒄭', 'y': '𒅀', 'z': '𒍣', ' ': ' ' } SCRIPTS = { "Egyptian Hieroglyphs 𓂀": HIEROGLYPHS, "Elder Futhark Runes ᚠ": RUNES, "Sumerian Cuneiform 𒀀": CUNEIFORM, } SCRIPT_INFO = { "Egyptian Hieroglyphs 𓂀": "Egyptian hieroglyphs were used from ~3200 BCE to 400 CE. They are one of the earliest writing systems, combining logographic and alphabetic elements.", "Elder Futhark Runes ᚠ": "Elder Futhark runes were used by Germanic peoples from the 2nd to 8th centuries CE. Each rune had a name and magical significance.", "Sumerian Cuneiform 𒀀": "Cuneiform is one of the earliest writing systems, developed in Sumer around 3400 BCE. It was written on clay tablets with a reed stylus.", } def translate(text, script_name): if not text: return "", "" script = SCRIPTS[script_name] translated = [] for char in text.lower(): translated.append(script.get(char, char)) result = ''.join(translated) # Build character breakdown breakdown = "### Character Breakdown\n\n" breakdown += "| Latin | Ancient | \n|---|---|\n" seen = set() for char in text.lower(): if char not in seen and char in script: seen.add(char) breakdown += f"| {char.upper()} | {script[char]} |\n" info = f"### About {script_name}\n\n{SCRIPT_INFO[script_name]}" return result, f"{info}\n\n{breakdown}" demo = gr.Interface( fn=translate, inputs=[ gr.Textbox(label="Enter English Text", lines=3, placeholder="Type something like 'Hello World'..."), gr.Radio(list(SCRIPTS.keys()), value="Egyptian Hieroglyphs 𓂀", label="Choose Ancient Script"), ], outputs=[ gr.Textbox(label="Ancient Translation", lines=3), gr.Markdown(label="Details"), ], title="📜 Ancient Script Translator", description="Convert modern English into ancient writing systems.", theme=gr.themes.Soft(), ) if __name__ == "__main__": demo.launch()