在移动应用程序中编辑翻译的工具

Mobile-Text-Tool的Python项目详细描述


https://travis-ci.org/ncornette/python-mobile-text-tool.svg?branch=masterhttps://codecov.io/gh/ncornette/python-mobile-text-tool/branch/master/graph/badge.svghttps://api.codacy.com/project/badge/Grade/a37555ff09aa4a09a51d7b3a34e810c2https://img.shields.io/pypi/v/Mobile-Text-Tool.svg?maxAge=2592000

移动文本工具是一组将翻译导出到^{tt1}的工具$ 以及IOS移动应用程序。它提供了 json,可以读写不同的格式。

功能

  • 导入.csv、.xls、.xlsx、.json
  • 导出.csv、.json、android资源、ios资源
  • 自定义行格式导入和导出
  • 字符串转义
  • 令牌替换:必须使用{}{1}..{n}符号 在源文件中

cli

$ update_wordings --help
usage: update_wordings [-h] [-o [OUT_FILE [OUT_FILE ...]]]
                          [-a ANDROID_RES_DIR] [-i IOS_RES_DIR]
                          [--android-resname ANDROID_RESNAME]
                          [--ios-resname IOS_RESNAME] [-s] [-f FORMAT_CONFIG]
                          input_file

Export wordings for Android & IOS.

positional arguments:
  input_file            .csv, .xls, .xlsx, .json formats are supported.

optional arguments:
  -h, --help            show this help message and exit
  -o [OUT_FILE [OUT_FILE ...]], --out-file [OUT_FILE [OUT_FILE ...]]
                        .json or .csv output file path (default: [])
  -a ANDROID_RES_DIR, --android_res_dir ANDROID_RES_DIR
                        resource directory for android strings (default: None)
  -i IOS_RES_DIR, --ios_res_dir IOS_RES_DIR
                        resource directory for ios strings (default: None)
  --android-resname ANDROID_RESNAME
                        filename for android resource (default: strings.xml)
  --ios-resname IOS_RESNAME
                        filename for ios resource (default: i18n.strings)
  -s, --split-files     Export sections as separate ios and android resource
                        files, comment key is used for naming new files
                        (default: False)
  -f FORMAT_CONFIG, --format-config FORMAT_CONFIG
                        excel and csv format specifications config file
                        (default: None)

默认CSV和XLS格式规范配置:

{"excel_sheet_reference":0,"key_col":0,"exportable_col":1,"is_comment_col":2,"comment_col":3,"translations_start_col":4,"exportable_value":null,"is_comment_value":null,"metadata_cols":{}}
  • excel_sheet_reference:是用于excel导入的工作表编号(int)或名称(string)
  • exportable_value:是要在exportable_col中匹配的值,用于判断该值是否将导出到android或ios,可以是字符串或字符串列表,null将与该列中任何非空值的True匹配。
  • is_comment_value:与exportable_value相同,用于判断行是否是注释

示例csv或xls表格,默认格式:

keyexportableis_commentcommentenfrde
MenuYesYesMenu Screen
menu.welcomeYesWelcomeBienvenueWillkommen
menu.contactYesContactContactKontakt
ShareYesYesShare Screen
share.shareYesSharePartagerTeilen

.xlsx文件生成android和ios的翻译:

$ update_wordings my_wordings.xlsx -i out/ios -a out/android

使用自定义资源从android的json文件生成翻译 文件名:

$ update_wordings my_wordings.json -a out/android --android-resname my_strings.xml

python接口

importmobileStrings

阅读:

来自模块text_in的函数read_file(f)支持.xls.xlsx.csv.json文件格式。

languages,wordings=mobileStrings.text_in.read_file('./test_translations.json')print', '.join(languages)
en, fr, de, pt, it, es, nl, zh, ja, pl, pt_BR, ru, id, ko, ar, tr, th, sv

读取自定义格式:

对于表示为.csv.xls行的格式,可以 用FormatSpec

指定列号
specs=mobileStrings.text_in.FormatSpec(0,1,2,3,4,bool,bool,{})# Default format_spec (all params are optional)languages,wordings=mobileStrings.text_in.read_file('./test_translations.csv',specs)print', '.join(languages)
en, fr, de, pt, it, es, nl, zh, ja, pl, pt_BR, ru, id, ko, ar, tr, th, sv

查询:

要按关键字搜索一个词,可以将 Wording到adict

# wordings is a list, create a dict to queryd=dict((w.key,w)forwinwordings)print('# keys: ')print'\n'.join(d.keys())welcome_wording=d.get('menu.welcome')print('\n# '+welcome_wording.comment+':')printwelcome_wording.translations.get('fr')printwelcome_wording.translations.get('de')
# keys:
menu.home
menu.contact
menu.share
menu.welcome
menu.news
menu.share.not.exported
menu.infos
comment.generated
comment.section

# Title on menu header:
Bienvenue !
Willkommen!

写入:

编写非常简单:使用^{tt27}中的write_函数$ 模块。它支持AndroidIOSjsoncsv输出 格式。

对于移动应用程序:

mobileStrings.text_out.write_android_strings(languages,wordings,'~/dev/myAndProject/res')mobileStrings.text_out.write_ios_strings(languages,wordings,'~/dev/myIOSProject/res')

CSV示例:

importcStringIOsf=cStringIO.StringIO()# Write csv in a file-like object, for the first 3 languages onlymobileStrings.text_out.write_csv(languages[:3],wordings,sf)printsf.getvalue()sf.close()
key,exportable,is_comment,comment,en,fr,de
comment.generated,Yes,Yes,Generated by mobile dev tools - Do not modify,,,
menu.welcome,Yes,,Title on menu header,Welcome!,Bienvenue !,Willkommen!
menu.home,Yes,,Home item,Home,Accueil,Start
menu.news,Yes,,News item,News,Actualités,News
comment.section,Yes,Yes,This is a section,,,
menu.contact,Yes,,Contact item,Contact,Contact,Kontakt
menu.infos,Yes,,Information pages item,Info,Infos,Informationen
menu.share.not.exported,,,Share application item - not exported,Share,Partager,Teilen
menu.share,Yes,,Share application item,Share,Partager,Teilen
menu.share,Yes,,Share application item,,Partager,Teilen

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java能否使用OpenJPA将一个实体持久化到多个持久化单元?   java如何访问当前按下的键   java singleton是否意味着哈希代码总是返回相同的值?   inputstream无法在Java中同时使用STDIN和STDERR读取程序输出   java运行时有多贵。getRuntime()与获取内存度量相结合   java AndroidStudio ListView适配器更新   java小程序请求未扩展实时会话   java是设置布尔值所必需的关键部分?   java比较两个字符串,并突出显示发现的不匹配项   java带抽屉布局,无论哪个屏幕处于活动状态,如何在按下后退键时关闭应用程序?   爪哇:颜色有什么区别。黑色和彩色。黑色   Velocity模板中子类的java访问方法   java如何快速学习Drools或其他规则引擎   从Java应用程序访问时缓存数据库查询结果   java cassandra nodetool JPLISAgent。c错误   java我正在解析一个没有pubDate的RSS提要,有没有其他方法可以确定一个项目是何时发布的?