from docx.shared import Inches, Cm, Pt from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL default_script={"hi": "Devanagari", "en": "Latin","ur":"Arabic" ,"ar": "Arabic", "kn": "Kannada", 'ta':'Tamil', 'bg': 'Cyrillic', 'bn':'Bengali', 'te':'Telugu','ml':'Malayalam', 'ru':'Cyrillic', 'sr':'Cyrillic', 'uk':'Cyrillic', 'hr': 'Cyrillic', 'ga': 'Latin', 'sq': "Latin",'mr':'Devanagari', 'fa':'Arabic', 'tr': 'Latin', 'hu': 'Latin', 'it': "Latin", 'ro':'Latin', 'pa':'Gurmukhi','gu':'Gujarati','or':'Odia','zh-CN':'Hanji', 'zh-TW':'Hanji', 'ne':'Devanagri','fr':'Latin','es':'Latin','id':'Latin', 'el':'Latin','ja':'Kana','jv':'Javanese','ko':'Hangul','be':'Cyrillic','uz':'Cyrillic','sd':'Arabic','af':'Latin', 'de':'Latin','is':'Latin','ig':'Latin','la':'Latin','pt':'Latin','my':'Burmese','th':'Thai','su':'Sundanese','lo':'Lao', 'am':'amharic','si':'sinhala','az':'Cyrillic','kk':'Cyrillic','mk':'Cyrillic','bs':'Cyrillic','ps':'Arabic','mg':'Latin', 'ms':'Latin','yo':'Arabic','cs':'Latin','da':'Latin','nl':'Latin','tl':'Latin','no':'Latin','sl':'Latin','sv':'Latin', 'vi':'Latin','cy':'Latin','he':'Hebrew','hy':'Armenian','km':'Khmer','ka':'Georgian','mn':'Mongolian','ku':'Latin', 'ky':'Cyrillic','tk':'Latin','fi':'Latin','ht':'Latin','haw':'Latin','lt':'Latin','lb':'Latin','mt':'Latin','pl':'Latin', 'eo':'Latin','tt':'Cyrillic','ug':'Arabic','ha':'Latin','so':'Latin','sw':'Latin','yi':'Latin','eu':'Latin','ca':'Latin', 'ceb':'Latin','co':'Latin','et':'Latin','fy':'Latin','gl':'Latin','hmn':'Latin','rw':'Latin','lv':'Latin', 'mi':'Latin','sm':'Latin','gd':'Latin','st':'Latin','sn':'Latin','sk':'Latin','xh':'Latin','zu':'Latin'} languages = {'hi': 'Hindi', 'en': 'English','te':'Telugu', 'ur': 'Urdu','ar':'Arabic', 'kn':'Kannada', 'ta': 'Tamil', 'bg': 'Bulgarian', 'bn': 'Bengali', 'ml': 'Malayalam', 'ru': 'Russian', 'sr': 'Serbian', 'uk': 'Ukranian', 'hr': 'Croatian', 'ga': 'Irish','sq': 'Albanian', 'mr': 'Marathi', 'fa':'Persian','tr':'Turkish','hu':'Hungarian','it':'Italian','ro':'Romanian','pa':'Punjabi','gu':'Gujrati', 'or':'Odia','zh':'Chienese','ne':'Nepali','fr':'French','es':'Spanish','id':'Indonesian','el':'Greek','ja':'Japanese', 'jv':'Javanese','ko':'Korean','be':'Belarusian','uz':'Uzbek','sd':'Sindhi','af':'Afrikaans','de':'German','is':'Icelandic', 'ig':'Igbo','la':'Latin','pt':'Portugese','my':'Mayanmar','th':'Thai','su':'Sundanese','lo':'Lao','am':'amharic','si':'sinhala', 'az':'azerbaijani ','kk':'Kazak','mk':'Macedonian','bs':'Bosnian','ps':'Pashto','mg':'Malagasy','ms':'Malay','yo':'Yoruba', 'cs':'Czech','da':'Danish','nl':'Dutch','tl':'Tagalog','no':'Norwegian','sl':'Slovenian','sv':' Swedish','vi':'Vietnamese','cy':'Welsh', 'he':'Hebrew','hy':'Armenian','km':'Khmer','ka':'Georgian','mn':'Mongolian','ku':'Kurdish','ky':'Kyrgyz','tk':'Turkmen', 'fi':'Finnish','ht':'Haitian Creole','haw':'Hawaiian','lt':'Lithuanian','lb':'Luxembourgish','mt':'Maltese','pl':'Polish', 'eo':'Esperanto','tt':'Tatar','ug':'Uyghur','ha':'Hausa','so':'Somali','sw':'Swahili','yi':'Yiddish','eu':'Basque','ca':'Catalan', 'ceb':'Cebuano','co':'Corsican','et':'Estonian','fy':'Frisian','gl':'Galician','hmn':'Hmong','rw':'Kinyarwanda','lv':'Latvian', 'mi':'Maori','sm':'Samoan','gd':'Scots Gaelic','st':'Sesotho','sn':'Shona','sk':'Slovak','xh':'Xhosa','zu':'Zulu'} def addSlugLine(document, slugline): slug_data = document.add_paragraph() slug_data_format = slug_data.paragraph_format slug_data_format.space_after = Pt(12) slug_data_format.keep_with_next = True slug_data_format.left_indent = Inches(0) slug_data.style.font.name = 'Courier New' slug_data.style.font.size = Pt(12.0) slug_data.add_run(slugline).bold = True def addActionLine(document,actionline, non_dial_dest_lang): act = document.add_paragraph() act_format = act.paragraph_format act_format.space_after = Pt(12) act_format.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY act_format.line_spacing = Pt(12) act_format.left_indent = Inches(0) if (non_dial_dest_lang == 'hi') or (non_dial_dest_lang =='gu'): act.style.font.name = 'Mangal' else: act.style.font.name = 'Courier New' act.add_run(actionline) def addSpeaker(document,speaker): spk = document.add_paragraph(speaker) spk.style.font.name = 'Courier New' spk_format = spk.paragraph_format spk_format.keep_with_next = True spk_format.space_after = 0 spk_format.line_spacing = Pt(12) spk_format.left_indent = Inches(2.0) def addParenthetical(document,parenthetical): parathetical = document.add_paragraph(parenthetical) parathetical.style.font.name = 'Courier New' parathetical_format = parathetical.paragraph_format parathetical_format.keep_with_next = True parathetical_format.space_after = 0 parathetical_format.line_spacing = Pt(12) parathetical_format.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY parathetical_format.left_indent = Inches(1.5) parathetical_format.right_indent = Inches(1.5) def addDialogue(document, dialogue, dial_dest_lang): dia = document.add_paragraph(dialogue) dia_format = dia.paragraph_format dia_format.keep_together = True dia_format.space_after = Pt(12) dia_format.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY dia_format.line_spacing = Pt(12) dia_format.left_indent = Inches(1) dia_format.right_indent = Inches(1.25) if (dial_dest_lang =='hi'): dia.style.font.name = 'Mangal' else: dia.style.font.name = 'Courier New' def dual_script(document, orignal_dial, translated_dial, dial_dest_lang): table = document.add_table(rows = 1, cols = 3) table.alignment = WD_TABLE_ALIGNMENT.CENTER table.autofit = False table.space_before = Pt(10) table.allow_autofit = False table.rows[0].cells[0].width = Inches(3.75) table.rows[0].cells[1].width = Inches(.30) table.rows[0].cells[0].vertical_alignment = WD_ALIGN_VERTICAL.TOP col1 = table.rows[0].cells dialogue1 = col1[0].paragraphs[0] dialogue1.add_run(orignal_dial) dia_format1 = dialogue1.paragraph_format dia_format1.space_before = Pt(5) table.rows[0].cells[2].width = Inches(3.75) col3 = table.rows[0].cells dialogue2 = col3[2].paragraphs[0] dialogue2.add_run(translated_dial) dia_format2 = dialogue2.paragraph_format dia_format2.space_before = Pt(5) if (dial_dest_lang =='hi'): dialogue2.style.font.name = 'Mangal' else: dialogue2.style.font.name = 'Courier New' def addTransition(document,transition): transitions_data = document.add_paragraph(transition) transitions_data_format = transitions_data.paragraph_format transitions_data_format.space_after = Pt(12) transitions_data_format.keep_with_next = True transitions_data_format.left_indent = Inches(5.0) # def dial_checker(dial_dest_lang, dial_src_lang, dial_dest_script, dial_src_script ): # if( dial_dest_lang != dial_src_lang ): # dial_translate = True # if ( dial_dest_script != default_script[dial_dest_lang]): # dial_transliterate = True # else: # dial_transliterate = False # else: # dial_translate = False # if dial_translate == False: # if ( dial_dest_script != dial_src_script ): # dial_transliterate = True # else: # dial_transliterate = False # return dial_translate, dial_transliterate def dial_checker(dial_dest_lang, dial_src_lang): if( dial_dest_lang != dial_src_lang ): dial_translate = True else: dial_translate = False return dial_translate def non_dial_checker( non_dial_dest_lang, non_dial_src_lang ): if( non_dial_dest_lang != non_dial_src_lang ): non_dial_translate = True else: non_dial_translate=False return non_dial_translate