python实现:命令行翻译.string 和 .xml 文件 -- mkTranslate:支持多种语言的互译

【github 传送门】
mkTranslate(V1.2.0):支持多种语言的互译

安装:

pip install mkTranslation

使用:

-p 指定要翻译文档的路径

-t 指定要翻译的文本

-d 目标语言(缺省'en')

-c 指定翻译渠道:[-c "google"] or [-c "youdao"] (缺省google)

-s 原始语言,有道翻译检测原始文本语言不太准确,翻译的结果会不太准确,所以使用有道翻译时,最好要指定原始的语言

翻译文档

translate -p ./ios.strings -d 'pt'      # 默认使用 google 翻译

translate -p ./android.xml -d 'pt'      # 默认使用 google 翻译

translate -p ./test.txt -d 'pt' -c 'youdao' -s 'zh'  #使用有道翻译

自动在原始文件目录生成翻译后的文件  translate_pt_android.xml translate_pt_ios.strings translate_pt_test.txt

翻译文本

$translate -t 'Facebook發幣,是偉大征途還是飛蛾撲火?' -d 'pt'

# 默认使用谷歌翻译(目标语言是葡萄牙语)

Moeda do Facebook, é uma ótima jornada ou uma mariposa?

$translate -t 'Facebook發幣,是偉大征途還是飛蛾撲火?' -d 'ja' -s 'zh'

# 使用有道翻译(目标语言是日语)

Facebook currency, is it a great journey or a moth?

更多用法 参见 translate -h

支持的文件和语种:

支持 txt、iOS(.strings) 和 Android(.xml) 的配置文件

支持翻译的语言

支持如下任意两个语种互译

'af': 'afrikaans',

'sq': 'albanian',

'am': 'amharic',

'ar': 'arabic',

'hy': 'armenian',

'az': 'azerbaijani',

'eu': 'basque',

'be': 'belarusian',

'bn': 'bengali',

'bs': 'bosnian',

'bg': 'bulgarian',

'ca': 'catalan',

'ceb': 'cebuano',

'ny': 'chichewa',

'zh-cn': 'chinese (simplified)',

'zh-tw': 'chinese (traditional)',

'co': 'corsican',

'hr': 'croatian',

'cs': 'czech',

'da': 'danish',

'nl': 'dutch',

'en': 'english',

'eo': 'esperanto',

'et': 'estonian',

'tl': 'filipino',

'fi': 'finnish',

'fr': 'french',

'fy': 'frisian',

'gl': 'galician',

'ka': 'georgian',

'de': 'german',

'el': 'greek',

'gu': 'gujarati',

'ht': 'haitian creole',

'ha': 'hausa',

'haw': 'hawaiian',

'iw': 'hebrew',

'hi': 'hindi',

'hmn': 'hmong',

'hu': 'hungarian',

'is': 'icelandic',

'ig': 'igbo',

'id': 'indonesian',

'ga': 'irish',

'it': 'italian',

'ja': 'japanese',

'jw': 'javanese',

'kn': 'kannada',

'kk': 'kazakh',

'km': 'khmer',

'ko': 'korean',

'ku': 'kurdish (kurmanji)',

'ky': 'kyrgyz',

'lo': 'lao',

'la': 'latin',

'lv': 'latvian',

'lt': 'lithuanian',

'lb': 'luxembourgish',

'mk': 'macedonian',

'mg': 'malagasy',

'ms': 'malay',

'ml': 'malayalam',

'mt': 'maltese',

'mi': 'maori',

'mr': 'marathi',

'mn': 'mongolian',

'my': 'myanmar (burmese)',

'ne': 'nepali',

'no': 'norwegian',

'ps': 'pashto',

'fa': 'persian',

'pl': 'polish',

'pt': 'portuguese',

'pa': 'punjabi',

'ro': 'romanian',

'ru': 'russian',

'sm': 'samoan',

'gd': 'scots gaelic',

'sr': 'serbian',

'st': 'sesotho',

'sn': 'shona',

'sd': 'sindhi',

'si': 'sinhala',

'sk': 'slovak',

'sl': 'slovenian',

'so': 'somali',

'es': 'spanish',

'su': 'sundanese',

'sw': 'swahili',

'sv': 'swedish',

'tg': 'tajik',

'ta': 'tamil',

'te': 'telugu',

'th': 'thai',

'tr': 'turkish',

'uk': 'ukrainian',

'ur': 'urdu',

'uz': 'uzbek',

'vi': 'vietnamese',

'cy': 'welsh',

'xh': 'xhosa',

'yi': 'yiddish',

'yo': 'yoruba',

'zu': 'zulu',

'fil': 'Filipino',

'he': 'Hebrew'

demo

原始 .strings 文件

common_btn_sdk_pin_error = "錯誤";

common_btn_sdk_pin_error = "PIN 碼輸入錯誤,請檢查輸入!"; /**"PIN 碼輸入錯誤,請檢查輸入!"*/

common_btn_sdk_cys_error = "助記詞或助記詞密碼錯誤,請檢查輸入!"; /**"助記詞或助記詞密碼錯誤,請檢查輸入!"*/

Home_alertview_pin = "請在設備上輸入 PIN 碼..."; /**"請在設備上輸入 PIN 碼..."*/

Home_alertview_cpinconnect = "正在建立連接.."; /**"正在建立連接.."*/

Home_alertview_cpinunconnect = "已斷開連接"; /**"已斷開連接"*/

/** ********************************************  */

gw_input_title_signtx = "%@/%@转账"; /**"%@转账"*/

gw_input_title_signtx_usdt = "支付 USDT 手續費:%ld/%@"; /**"支付 USDT 手續費:%ld/%@"*/

translate -p ./ios.strings -d 'pt' 翻译后

common_btn_sdk_pin_error ="Erro";

common_btn_sdk_pin_error ="O código PIN é inserido incorretamente, por favor, verifique a entrada!"; /**"PIN 碼輸入錯誤,請檢查輸入!"*/

common_btn_sdk_cys_error ="A senha mnemônica ou mnemônica está errada, por favor verifique a entrada!"; /**"助記詞或助記詞密碼錯誤,請檢查輸入!"*/

Home_alertview_pin ="Por favor, digite seu PIN no seu dispositivo ..."; /**"請在設備上輸入 PIN 碼..."*/

Home_alertview_cpinconnect ="Conectando está sendo estabelecido:"; /**"正在建立連接.."*/

Home_alertview_cpinunconnect ="Desconectado"; /**"已斷開連接"*/

/** ********************************************  */

gw_input_title_signtx ="%@/%@ transfer"; /**"%@转账"*/

gw_input_title_signtx_usdt ="Pagar taxa de manuseio do USDT:%ld/%@"; /**"支付 USDT 手續費:%ld/%@"*/

原始 .xml 文件

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <string name="ensure_app_normal_run_permission"> 为了保证软件的正常运行,必须要获取权限 </string>

    <!-- tab -->

    <string name="network_error"> 网络不可用,点击屏幕重试 </string>

    <string name="last_page"> 错误 </string>

    <string name="scan_qr_code_warn"> 将二维码放入框内,即可自动扫描 </string>

    <string name="album_text"> 相册 </string>

    <string name="qr_code_text"> 二维码 </string>

    <string name="scan_qr_code_from_photo_wrong"> 没有找到二维码 </string>

    <string name="most_withdraw"> 最多可用:</string>

    <string name="all_text"> 全部 </string>

    <string name="withdraw_chain_status"><xliff:g>%s</xliff:g></string>

    <string name="create_wallet_tips"> 开始以下操作前,请确保您处在四周无人、没有摄像头的安全环境,并准备好一支笔和您的助记码记录卡或一张空白卡纸 </string>

    <string name="system_setting"> 系统设置 </string>

    <string name="payfor_miners"> 支付矿工费 </string>

    <string name="high_grade"> 高级设置 </string>

</resources>

translate -p ./android.xml -d 'pt' 翻译后

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <string name="ensure_app_normal_run_permission">Para garantir o funcionamento normal do software, você deve obter permissão.</string>

    <!-- tab -->

    <string name="network_error">Rede não está disponível, clique na tela para tentar novamente</string>

    <string name="last_page">Erro</string>

    <string name="scan_qr_code_warn">Coloque o código QR na caixa e você pode digitalizá-lo automaticamente.</string>

    <string name="album_text">Album</string>

    <string name="qr_code_text">Código QR</string>

    <string name="scan_qr_code_from_photo_wrong">Nenhum código QR encontrado</string>

    <string name="most_withdraw">Mais disponível:</string>

    <string name="all_text">Todos</string>

    <string name="withdraw_chain_status"><xliff: g>%s</ xliff: g></string>

    <string name="create_wallet_tips">Antes de iniciar as seguintes operações, certifique-se de estar em um ambiente seguro, sem câmeras, sem câmeras e com uma caneta e seu cartão de memória mnemônico ou um congestionamento em branco.</string>

    <string name="system_setting">Configurações do sistema</string>

    <string name="payfor_miners">Pagar pelos mineiros</string>

    <string name="high_grade">Configurações avançadas</string>

</resources>

版本

V1.2.0 增加有道翻译, 有道会对ip封锁,所以可能出现无法翻译的问题,此时将会使用 api 接口翻译,本人申请的 api 接口仅支持中英互译。使用的key

V1.1.3 增加命令行直接翻译文本

更新本机的 mkTranslation:pip install --upgrade mkTranslation 查看本机的 mkTranslation 信息:

后续:

修复:

已经添加了一些简单的修复工作:

针对 "user_notify_type_word_input_index" = "第 %ld/%@ 个单词"; 这种词条,谷歌翻译葡萄牙后 % ld /% @ palavras, 脚本会自动删减空格:"user_notify_type_word_input_index" = "%ld/%@ palavras";

后续将会增加更多修复

翻译渠道:

优化有道翻译

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容