纠正大文本文件中错误放置的文本

时间:2014-05-22 14:18:16

标签: python localization notepad++

我正在研究一个大型文本文件的加工翻译,我希望自动化,文件看起来像这样,

<TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>1</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_Duel_Season01_sudden_death_1vs1</alias>
    <replacement>Уникальная массовая дуэль: Битва один на один до полного уничтожения в один раунд</replacement>
  </TEXT>
  <TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>2</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_Duel_Season01_sudden_death_3vs3</alias>
    <replacement>Уникальная массовая дуэль: Битва трое на трое до полного уничтожения в один раунд</replacement>
  </TEXT>
  <TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>3</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_MuSinTower_step01</alias>
    <replacement>Первое воплощение Бога Войны: Боль</replacement>

这里的人帮我构建了一个脚本,经过一些修改后,我设法提取了我需要翻译的文本,使用这个脚本,

import re

def loadfile(filename):
    '''
    Returns a string containing all data from file
    '''
    infile = open(filename, 'r')
    infile_string = infile.read()
    infile.close()
    return infile_string


def main():
    #load the files into strings
    original = loadfile("original.xml")


    #grab all of the "TEXT" blocks from the original file
    original_regex = re.compile("(<original>.*?</original>)", re.DOTALL)
    original_list = original_regex.findall(original)


    #a string to write out to the new file
    outfile_string = ""
    for i in range(len(original_list)): #loop through all of the original text blocks
        #build a new string with the replacement text only
        build_string = ""
        build_string += original_list[i]
        build_string += "\n" + " "*4
        outfile_string+=build_string


    #write the outfile string out to a file
    outfile = open("replacement.xml", 'w')
    outfile.write(outfile_string)
    outfile.close()

if __name__ == "__main__":
    main()

现在我的文件只需要翻译文本(接近300k行文本),

 <replacement>Золотой великан</replacement>
    <replacement>Серкет</replacement>
    <replacement>Предводитель Хакан</replacement>
    <replacement>Посвященный У Кахи</replacement>
    <replacement>Лидер банды Чугуна Хви Бичжок</replacement>
    <replacement>Предводитель Сок Самчжа</replacement>
    <replacement>Глава охранников гробницы</replacement>
    <replacement>Древняя гробница</replacement>
    <replacement>Василиск с крыльями вихря</replacement>

问题是,在使用谷歌翻译运行后,格式变得格格不入,翻译的产品有时在标题之前只有一个单词并且这是不可接受的,

<replacement> Golden Giant </ replacement>
    <replacement> Serket </ replacement>
    Hakan <replacement> Leader </ replacement>
    Dedicated <replacement> Kakha </ replacement>
    The gang's leader <replacement> Cast Iron Hwee Bichzhok </ replacement>
    <replacement> Leader Samji Juice </ replacement>
    <replacement> Chapter guards tomb </ replacement>
    <replacement> Ancient tomb </ replacement>
    <replacement> Basilisk with wings swirl </ replacement>

我可以解决其他格式问题,但我真的无法解决这个问题,欢迎对原始脚本提出任何建议或修改,谢谢。

编辑:我认为&#34; notepad ++&#34;中的替换命令也许是帮助,我只是不知道究竟是怎么回事。 将notepad ++添加到标签中。

编辑2 :我找到了一个非常简单的解决方案但需要更多修改,我只是打开文件,搜索所有<replacement>字符串,并删除它们!现在所有文本都集中正确,我只需要将字符串<replacement>添加到文档中每行的开头。 现在,我该怎么做?

1 个答案:

答案 0 :(得分:0)

既然你已经深入研究python,那就有好消息:你可以使用python来翻译你的XML文件。看一下python的Goslate模块,它是Google翻译引擎的界面。

首先,使用pip install goslateeasy_install goslate安装goslate,因为它不包含在大多数python发行版中。

接下来,您可以要求翻译引擎将您的字符串翻译成所需的语言,并在输出文件中编写已翻译的字符串。只需使用以下代码:

import goslate
gs = goslate.Goslate()

# set your text_to_be_translated here in reading loop
text_translated = gs.translate(text_to_be_translated, target_language,source_language)

您已翻译text_to_be_translated,无需其他操作。