From: http://www.minilinux.net/node/27
这个程序使用google translate来辅助翻译po文件。需要注意的是,现在机器的翻译水平并不高,人工智能还有很长很长的路要走。这个程序的主要作用是节省一部分英语不是那么好的网友查字典的时间,而指望它翻译出来的句子能直接被读懂是不现实的。
这个程序的使用方法很简单,它只有一个参数,就是需要翻译的po文件名称,翻译后的结果直接输出到stdout。如果文件名是-
,那么程序将从stdin读入po文件。
这个程序的一大特色是可以支持多个代理服务器轮流向google translate发出请求,以免被google封锁,哈哈。配置代理服务器只要修改一下程序开头的proxies数组就可以了。其中None代表不使用代理服务器。
程序中间还有一段是设置输出po文件头的部分,主要是版权申明和reportbug字段可能要根据需要修改。
另外这个程序对bash脚本中字符串翻译做了一些优化,比如$ABC这样在字符串中的变量名是不会被翻译的。具体可以看translate_fixed函数。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import httplib
import urllib
import urllib2
import traceback
import re
import random
import time
proxies = [
"proxy1:port",
"proxy2:port",
None,
]
def translate(text):
addr = "http://www.google.com/translate_t?sl=en&tl=zh-CN"
proxies.insert(0, proxies.pop())
for proxy in proxies[:]:
try:
req = urllib2.Request(addr)
req.add_header("User-Agent", "Mozilla/5.0")
req.add_data(urllib.urlencode({"text": text}))
if proxy:
req.set_proxy(proxy, "http")
trans = urllib2.urlopen(req).read()
trans = re.search("<div id=result_box dir=\"ltr\">(.*?)</div>",
trans).group(1)
trans = re.sub("&#(\d+);",
lambda s: chr(int(s.group(1))),
trans)
trans = re.sub("&([a-z]+);",
lambda s: {"lt":"<", "gt":">", "amp":"&"}[s.group(1)],
trans)
return trans
except:
proxies.remove(proxy)
print >>sys.stderr, "Proxy: %s" % proxy
traceback.print_exc()
return None
def translate_fixed(text):
# signature = random.randrange(1E20, 1E21)
notrans = []
def replace(match):
notrans.append(match.group(0))
return " 0.%d68065175210" % (len(notrans) - 1)
text = re.sub("\${[\w_]+}|\$[\w_]+", replace, text)
text = re.sub("\\\\\"|\\\\$|\\\\\\\\n|\\\\t", replace, text)
text = re.sub("\\\\", replace, text)
text = re.sub("[A-Z]{2,100}", replace, text)
text = re.sub("<\w+>|</\w+>", replace, text)
text = re.sub("puppy(?i)", replace, text)
trans = translate(text)
for i in range(len(notrans)):
# print "re.sub",
# print "%dx" % (signature + i), notrans[i], trans
trans = re.sub("0 ?.%d68065175210" % i, lambda x: notrans[i], trans)
return trans
random.seed()
if len(sys.argv) != 2:
print "Usage: " + sys.argv[0] + " filename.pot"
sys.exit(1)
if sys.argv[1] == "-":
f = sys.stdin
else:
f = open(sys.argv[1])
print """# 中文Puppy Linux开发者之家.
# This file is distributed under GPL.
#"""
print """#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: %(program)s\\n"
"Report-Msgid-Bugs-To: %(reportbug)s\\n"
"POT-Creation-Date: %(date)s\\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"
"Last-Translator: Google Translate\\n"
"Language-Team: Chinese\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=utf-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
""" % {"program": sys.argv[1],
"reportbug": "laborer@126.com",
"date": time.strftime("%Y-%m-%d %H:%M%z")}
for line in f:
if not line.rstrip():
break;
trans = []
buf = ""
skip = False
for line in f:
line = line.rstrip()
if skip:
skip = line;
continue
if line.startswith("#,"):
print line + ", fuzzy"
elif line.startswith("#"):
print line
elif line.startswith("msgid "):
print "msgid",
line = line[6:]
elif line.startswith("msgstr "):
print "msgstr",
if buf:
trans.append(translate_fixed(buf))
buf = ""
for s in trans:
print "\"%s\"" % s
print
trans = []
skip = True
if line.startswith("\""):
print line
buf += line[1:-1]
if buf.endswith("\\n"):
trans.append(translate_fixed(buf[:-2])+"\\n")
buf = ""
分享到:
相关推荐
使用Google翻译自动免费翻译PO文件的过程,脚本使用JavaScript编写 要求 node.js 脚步 克隆此仓库 git clone git@github.com:MehdiNassim/po-auto-translation.git 安装依赖 yarn install 将您的PO文件转换为csv...
po文件自动翻译安装包,但是不能翻译成中文
openerp_po翻译文件
将PO文件转换为JSON,反之亦然。 与ember-i18n配合良好。 该项目是的fork /扩展。 虽然po2json可以很好地将.po文件转换为.json格式,但是它不允许在另一个方向上进行转换(.json-> .po)。 入门 使用以下命令安装...
PoTranslator PoTranslator是一个CLI工具,用于自动翻译.po / .pot文件。 功能性: 自动翻译如果自动翻译不准确,则可以修改翻译支持数十种语言PoTranslator使用IBM Watson Language Translator服务提供自动翻译。...
注意:自动翻译的语言选择由po/pot在文件中设置确定。 该设置不能通过本(PO自动翻译器)来更改, 所以使用PO编辑器才能对文件进行本地整体语言设置. PO Auto- Translator reads an existing po/pot file and ...
用于转换的Python转换实用程序。 这套工具旨在帮助开发人员和翻译人员执行Web应用程序的翻译。 它将所有可翻译资源提取到转换矩阵(以CSV的形式),并能够将转换矩阵重新应用回资源文件。 用法 要从.po文件中提取...
可翻译PO文件,但是只能翻译成西班牙语言,郁闷
可以编辑翻译PO文件,打开一个现有的PO文件并编辑翻译。创建新的翻译,利用现有的PO文件或者POT模板,并从它创建一个新的翻译。翻译Wordpress的主题或插件,创建一个新的翻译,Poedit会自动设置好一切,你可以专注...
appium python PO模式,HTMLTESTrunner报告,安卓手机自动化测试脚本
github地址: https://github.com/wuranxu/webTest 基于Python的webUI自动化测试框架,支持多平台~带有自动下载chrome驱动功能
今天我给大家带来了自制的mo、po文件相互转换工具, 主要特点是方便简洁。 =======================================================...把要转换的mo或po文件拖到bat上即可,会自动在文件原目录生成对应的另一种格式。
利用python编写PO电磁散射代码,为python应用程序开发提供一种有效的指导~
项目简介:本项目采用Python语言开发,基于Django框架和Redis数据库,构建了一套微信小程序的后台接口。该源码包含共计5723个文件,其中主要文件类型包括: - Python源文件(.py):1528个,为主要业务逻辑实现; -...
翻译 使用 GoogleTranslate 翻译 PO 文件 安装 pip install potranslate 截图
用于验证 PO 文件的脚本。 安装 $ npm install 用法 $ node po-validate.js POFILE.po 例子 当 po-validator 检测到一些错误时: $ node po-validate.js sample-data/wrong-ja.po Error: Hello, %s! こんに...
开发实现PR自动生成PO的功能,实现原理:通过后台作业变式实现
poedit的自动翻译中文zh_CN词库共计10187条翻译。 用来汉化wordpress主题和插件的,自动翻译省去了一条一条手动翻译的烦恼。在poedit软件我的-翻译记忆-管理-导入词库文件就行了
收藏了好久的WordPress主题翻译.po文件编辑器poedit-1.4.6