跨平台、多用户协作的移动应用 (安卓+iOS) 多语言管理工具

AppRunner: 支持多种语言的Web应用管理平台 前言 App Runner是由我们公司技术大神Daniel Flower一手打造的Web应用管理平台。什么是App Runner?简单来说,它是一个快速构建和部署Web应用的平台。我们只需要向App Runner注册自己的App,注册时指定了代码的Git URL,App Runner就会把代码从Github仓库拉取下来并进行自动构建和部署。有了 AppRunner,开发人员可以快速地开发。作为开发人员,只管写代码,其他问题根本不用担心。 平台介绍 一键配置 通过一键,新应用的专属的 Github 仓 阅读详情

1、项目背景

TranslateMyApp 项目是我之前为了在 Android 应用中集成多语言而开发的一个工具,当时主要为了解决应用的词条的多语言翻译问题,然而实际应用的时候发现起存在诸多的不便之处。最近当我开发 言叶APP 的时候,为了减少多语言维护的工作量,重新开发了这个应用。现在它具备了更多功能和特性,可以满足更多的应用场景。该项目基于 Python 开发,项目地址:

  • https://github.com/Shouheng88/TranslateMyApp
  • https://gitee.com/WngShhng/TranslateMyApp

2、功能特性

  • 可应用多个移动应用平台:Android 和 iOS 皆可,两端可以共用一份多语言
  • 支持用户之间的协作,Android 开发、iOS 开发和产品经理可以共同维护一份多语言
  • 支持 GUI 操作,降低了上手难度,不懂程序一样可以使用
  • 软件支持多个运行环境:Windows 和 Mac 皆可运行
  • 环境配置非常简单,仅需要 Python3 环境以及几个 Python 包即可

3、最佳实践

该软件的设计思路是本地维护一份多语言仓库,增、删、改多语言词条都在该仓库完成。每次修改完成之后再使用该软件一键生成应用内的多语言词条。所以,我推荐你 Fork 我们的项目作为自己的多语言仓库,开发者和产品经理可以通过 Git 共同维护一份多语言。建议工作流:

Step 1:在 Github 或者 Gitee 上面 Fork 该项目作为自己的多语言资源仓库;

Step 2:准备环境。运行该 Python 程序需要做如下配置:

  1. 安装 Python3 环境;
  2. 安装 Excel 库并准备 Tkinter 环境;
pip install requests
pip install xlwt
pip install xlrd
pip install xlutils

Step 3:在项目的根目录下执行 python launcher.py 启动程序,进入仓库初始化界面:

项目初始化页面

这里你需要先选择 Android 或者 iOS 的多语言根目录,并勾选要维护的多语言,然后点击“初始化”来完成仓库初始化。

说明:这里各协作用户只要在自己的电脑上面选择自己项目根目录即可,使用 Git 进行同步的时候可以只同步仓库 repo.json 文件,而不同步本地的配置信息。

Step 4:完成项目初始化之后,再次使用 python launcher.py 启动项目。此时将进入应用的主界面:

项目主界面

部分功能说明:

  1. 更新词条:用来将客户端多语言词条的修改记录同步到仓库,比如增加或者修改了某个词条。
  2. 自助翻译:使用百度翻译平台平台进行多语言词条的自动翻译(需要在项目的 config 目录下面的 baidu.json 文件中填写在百度翻译平台申请的 app_id 和 app_secret)。
  3. 人工翻译:导出 Excel 修改之后再导入程序中来完成多语言翻译。
  4. 生成资源:分别生成 Android 和 iOS 各自的多语言资源文件。
  5. 校验资源:如果对 Android 和 iOS 多语言资源做了细微的修改可以通过这个功能将其同步到仓库中。

建议版本开发迭代过程中的多语言修改通过“更新词条”完成仓库调整,可以先使用“自助翻译”进行机器翻译减轻工作量,然后使用“人工翻译”进行校对,使用“生成资源”生成了多语言之后发现资源存在问题可以使用“校验资源”将本地修改同步到仓库。

4、项目结构

如果你对该项目感兴趣可以通过项目结构了解下我们的代码:

|--config
|   |--app.json         应用配置
|   |--baidu.json       百度翻译配置
|   |--languages.json   项目的多语言配置
|   |--repo.json        多语言仓库,项目初始化之后生成
|--app_gui.py           GUI 界面
|--config.py            常量等配置信息
|--file_operator.py     XML Excel File Json 等文件操作封装类
|--generator.py         Excel 和 APP 多语言资源文件生成工具类
|--importer.py          Excel 和 APP 多语言资源文件导入工具类
|--initializer.py       项目初始化、项目多语言、项目配置单例相关
|--launcher.py          启动程序
|--repository.py        用来维护多语言仓库的工具类
|--translatory.py       百度翻译 API 封装,自动翻译等

5、FAQ

  1. Android 词条中的特殊词条如何处理,比如字符串数组、复数资源、HTML 等?

    不建议在 values.xml 文件中使用字符串数组,可以单独一个文件定义,然后引用。复数资源当前版本没有做特殊处理。HTML 和引号等已经在程序中做了特殊处理。

  2. 项目会生成很多冗余的多语言资源,比如英语会生成 “en-rUS”, “en-rGB”, “en-rAU”, “en-rCA”, “en-rIE”, “en-rIN”, “en-rNZ”, “en-rSG”, “en-rZA” 等。

    英语是分成各个地方语种的,如果希望每次只生成一个文件可以在 config/app.json 文件中的 ios_language_black_list 或者 android_language_black_list 中添加需要过滤的黑名单。黑名单上面的多语言不会被自动生成。

  3. “校验资源”和“更新词条”的异同?

    假如你维护了 10 种多语言,当你修改了日语下面的词条 a,使用“更新词条”会将其余 9 种多语言对应的翻译置空,来标记该词条发生了变动。而如果你使用了“校验资源”,它只会将你在日语下的修改同步同步到日语对应的词条,而不会修改其它多语言。也就是说,“更新词条”意味着整个词条的翻译需要变更,而“校验资源”仅仅意味着该词条需要做小的调整。

关于

  • 言叶:我最近开发的一个应用。它是一个句子创作、收藏和分享平台,为你提供了友好的用户交互环境和优雅的设计,有用又好玩。欢迎大家下载(下载地址是 https://appgallery5.huawei.com/#/app/C102024597) 😃

  • 获取更多技术文章(Android、服务端、运维、Python 等)可以直接关注我的公众号「Hello 开发者」,另外感兴趣的可以加入技术 QQ 交流群:1018235573.

公众号信息

多语言项目管理平台搭建与优化实践 多语言支持是现代软件开发中的重要特性,尤其在全球化协作场景下。其技术原理主要基于国际化(i18n)与本地化(l10n)规范,通过前后端分离架构实现动态语言切换。在工程实践中,采用JSON格式存储多语言内容(如PostgreSQL的JSONB类型)可显著提升查询效率。这类技术在跨国团队协作、跨境电商等场景具有重要价值,能有效解决术语一致性、本地化适配等痛点。本文以Laravel+Vue技术栈为例,详解如何实现包含自动翻译集成、术语库建设等进阶功能的多语言项目管理平台,其中涉及的语言包懒加载、GIN索引优化等方 阅读详情

相关推荐

Rust语言的移动应用开发

Rust是一种系统编程语言,强调安全性和性能。其设计目标包括内存安全、并发性和高效性,同时避免了许多其他语言(如C/C++)常见的陷阱。Rust通过所有权系统和借用检查器确保在编译时捕捉到潜在的内存问题,这使得它特别适合用于需要高性能和安全性的应用程序。

2501_90494494的博客 472

Android应用内设置多语言

最近项目中要加入多语言需求,涉及到的有中文简体,中文繁体,英语,西班牙语,泰语,印尼语,葡萄牙语。

lou_liang的博客 7545

uniapp跨平台开发

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

hui798的博客 1229

全新发布!云词 - 多语言管理平台,助力你的国际化战略!

它可以为你集中管理任何项目(iOS/Android/Web...)中的所有多语言内容,实现翻译、校对、发布流水线协作。无论你是个人还是公司,云词都能为你提供强大的本地化能力,助力产品国际化。开放简单:云词支持各种编程语言和文件格式的导入导出,同时提供丰富的 Open API 供二次开发或灵活使用。团队协作:云词为团队协作提供了强大的支撑,你可以邀请团队成员,实时协作,掌控任务进度。自动化翻译:云词集成了当前主流翻译服务商,公测阶段可以免费无限量机翻。当然,说的再多也不及你的亲身体验,立即访问我们的👉。

liushuliushi的博客 494

万岳教育平台学生端移动应用源码分析

在线教育作为现代教育的重要补充,正逐渐改变着我们的学习方式。其定义简单来说,是一个通过互联网实现教育内容分发、学习互动和学习资源管理的平台。与传统教育不同的是,它具备了无时间限制、空间自由和资源丰富等特点。源码(Source Code)是程序员用一种或多种编程语言编写的可读代码,是软件开发过程中的第一手材料。它是软件的原始形态,包含了构成程序所有功能的指令和逻辑结构。源码经过编译或解释过程后,会转换为计算机能够理解和执行的机器语言代码。

weixin_35754962的博客 713

APP 语言包转换工具 LanguageTrans

安卓、iOS语言文件转换工具 导入安卓多语言文件 xml文件后,自动提取语言包内容,贴入翻译完的语言包内容即可生成目标平台语言包文件。

多语言内容管理平台:Django+TranslateGemma构建智能CMS

本文介绍了如何在星图GPU平台上自动化部署🌐 TranslateGemma : Matrix Engine镜像,构建基于Django的多语言智能CMS。该镜像支持实时、可控的AI翻译,典型应用于跨境电商产品描述的多语言自动生成与同步发布,显著提升内容更新效率与本地化一致性。

weixin_42571280的博客 111

vTiger CRM v5.0.3 多国语言完整版.rar

英文/简体/繁体版本,是一套基于Web以销售能力自动化(SFA)为主的客户关系管理系统(CRM)。它基于是SugarCRM专业版(SPL1.1.2)开发的一个衍生版本。 提供的主要功能有: 1. 日程管理 2. 潜在客户管理 3. 公司与联系人管理(*.直接从公司、联络人产生报价单、订单与发票。*.追踪客户采购产品的历史记录) 4. 产品管理(*.建立价格表并且将产品进行归类。*.建立产品与知识库文章的关连性。*.上传产品图片等功能) 5. 报价单(*.从列表追踪还没有响应的报价单*.在报价单新增线条项目与更新小计、税金、调整与总计金额*.同样的产品在不同的客户群选择不同的价格*.建立适合打印的报价单并且透过内建的邮件系统寄送给指定的客户) 6. 订单管理(*.将订单管理与CRM结合后可以让整个组织的采购与执行流程更流畅*.从订单列表追踪未付款的订单*.可以透过vtiger CRM 的厂商、制造商与经销商等单位取得商品信息*.透过仓库库存量与订单状况的整合来管理及时的库存水准*.可以根据各个组织需求自行调整的客户采购订单(PO)与销售订单(SO)字段*.避免动态显示付款与送货住址时发生的重复作业*.在订单新增线条项目与更新小计、税金、调整与总计金额*.定期通知相关单位库存下限,让库存随时可以应付订单的需求) 7. 发票管理 8. 管理商品知识库与常见问答等。

moko-resources完全指南:如何为跨平台移动应用统一管理多语言字符串

在Kotlin Multiplatform移动应用开发中,高效管理多语言字符串资源是提升开发效率和用户体验的关键环节。moko-resources作为一款专为跨平台移动开发设计的资源管理库,能够帮助开发者在Android和iOS平台上实现字符串资源的统一管理,避免重复劳动并确保多平台资源一致性。本文将详细介绍如何使用moko-resources实现多语言字符串的统一管理,从基础配置到高级应用,让你

gitblog_00843的博客 513

Android多国语言批量修改(国际化)

1、支持英文、中文简体、中文繁体、法文、德文、西班牙文、意大利文、日文、荷兰文、波兰文、葡萄牙文、俄文、土耳其、罗马尼亚、希伯来、韩文同时修改 2、支持一键大写,一键小写,一键还原 3、支持实时查询 4、注意: a、首次使用,不建议直接修改项目中的多国语言,可以点击导入,进行新建(参考下面) 或 导入工具中提供的res文件夹,熟悉后再修改项目多国语言 b、新建:导入需要保存的文件夹位置,文件夹可以不为空 c、导入只会读取文件夹内,value_xxx的文件夹 d、保存方式:点击"更新原文件",否则修改不会被保存 e、当修改某项时,可以进行增加、修改、删除操作,但增加时请确保name唯一 f、若某语言的所有项都没有被赋值,在更新原文件时,不会生成values_xxx文件夹

TranslationManagement:这是一个有用的管理多语言资源的译文管理系统,由于用户分布于全球各地,公司的App需要显示多语言,Android和iOS有大量的译文需要管理,手工维护极其麻烦,于是这个系统诞生了,方便翻译者在平台翻译,翻译完成之后,开发者将一键转换代码,直接放置在项目中。公司App下载方式:软件商店搜索`Yeelight`

翻译资源管理系统 作者 余伟 电子邮件 项目介绍 这是一个有用的管理多语言资源的译文管理系统,由于用户分布于全球各地,公司的App需要显示多语言,Android和iOS有大量的译文需要管理,手工维护极其麻烦,于是这个系统诞生了,方便翻译者在平台翻译,翻译完成之后,开发者将一键编码,直接放置在项目中。 注意翻译者需要自己找人翻译,本系统只是维护译文资源,并不会自动翻译。 公司App下载方式:软件商店搜索Yeelight 软件架构 工具 版本 PHP 7.1+ MySQL的 5.6+ 框架 Laravel 5.3 安装教程 git clone项目至本地目录 composer install cp .env.example .env修改配置信息 php artisan key:generate生成APP_KEY 数据库/ sql查找SQL文件导入数据库 配置Apache / Nginx站

让安卓与IOS共用代码,Netflix是如何实现的?

全文共2367字,预计学习时长6分钟 图源:Google 近些年,Netflix一直在开发一款名为Prodicle的移动应用程序,借此推进电视节目和电影制作领域的创新。如今,实体制作领域发展迅速,不同国家、地区,甚至不同生产部门之间,对实体制作的要求亦是不同。 实体制作的独特性质,要求我们在分布式环境中的设备上开发出高写入软件,可只有不到三分之一的用户设备能同时连接上可靠的网络,设备的容错能力也相当有限。作为一支小型工程团队,我们逐渐意识到,必须不断优化产品,提高产品可靠性和交付速度,才能满足.

读芯术的博客 851

[官方培训]07-UE材质基础 孙丹璐 Epic 笔记

勾选允许自定义深度写入再在模型上勾选然后可以通过Scene Texture节点拿到渲染的自定义深度信息,有了自定义深度信息就可以与当前渲染的像素深度进行对比,自定义深度信息存放的是最靠近我们的深度,如果当前像素离自定义深度比较远我们就不要这个像素。效果如下这种方案的缺点也很明显,因为这样看不到第二层的透明了,如果是两层的半透明的裙摆,这样就看不到第二层的裙摆了。对于半透明排序问题最根本能解决的还是光线追踪,ue5中又加入了OIT(基于像素的排序)。官方透明材质的理解和应用。

Tcohneyn的博客 1562

如何轻松实现iOS与Android跨平台自动化测试:mobile-mcp完整指南

在移动应用开发中,你是否经常为iOS和Android平台的不同技术栈而烦恼?每次都需要为两个平台分别编写测试脚本,耗费大量时间和精力。mobile-mcp正是为了解决这一痛点而生的跨平台移动自动化测试框架,它通过统一的接口让你轻松管理iOS和Android设备,实现高效的自动化测试。 ## 🎯 项目核心价值:为什么选择mobile-mcp? mobile-mcp是一个基于Model Cont

gitblog_00291的博客 450

【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格

数据下载地址:https://www.kaggle.com/datasets/andradaolteanu/gtzan-dataset-music-genre-classification/data背景音乐。专家们长期以来一直在尝试理解声音以及是什么使一首歌曲与另一首不同。如何可视化声音。是什么使一个音调与另一个不同。这个数据集希望能提供实现这些目标的机会。内容原始流派 - 包含10种流派,每种流派有100个音频文件,每个文件长度为30秒(著名的GTZAN数据集,声音的MNIST)

2143

Java对接快递鸟,查询快递物流信息

根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递API接口,实现自动查询的功能。下面是java版本的根据单号查询物流跟踪信息的详细示例代码。只需要下载就可以运行,(自己需要简单的修改)注:登录快递鸟用户管理后台后获得。登录快递鸟用户管理后台。

Roc的博客 956

Audiobookshelf移动应用安装配置:简单5步完成部署

Audiobookshelf是一款功能强大的移动应用,专为有声书爱好者打造,支持多种格式的音频和电子书管理与播放。本指南将通过5个简单步骤,帮助你快速完成Audiobookshelf移动应用的安装与配置,让你轻松享受听书乐趣。 ## 📱 应用功能概览 Audiobookshelf移动应用提供直观的用户界面和丰富的功能,包括书籍管理、播放控制、进度同步等。以下是应用的主要界面展示,你可以看到其

gitblog_00710的博客 919

yolov7目标追踪:基于自定义数据集完成检测

目标追踪包含两个阶段:(1)基于自定义数据集,训练yolo目标检测模型;(2)基于检测模型,将实时检测结果传递到StrongSORT追踪算法中,该算法在OSNet基础上结合运动和外观信息,可以跟踪yolo模型检测到的任何物体。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2305

iOS与Android平台的Cookie处理差异:react-native-cookies实战指南

react-native-cookies是一款专为React Native应用打造的Cookie管理工具,能够帮助开发者在iOS和Android平台上轻松处理Cookie相关操作。本文将深入探讨两大平台在Cookie处理上的核心差异,并提供基于react-native-cookies的实战解决方案,让跨平台Cookie管理不再成为开发难题。 ## 一、react-native-cookies简介

gitblog_00637的博客 444

AI在生物学领域的应用:基因序列分析和人工智能生物学

好的,非常感谢您提供的这个精彩的主题和详细的要求。我会全力以赴,遵循您的要求写一篇内容丰富、结构清晰、论述深入的专业技术文章。现在,就让我们开始这篇关于"AI在生物学领域的应用:基因序列分析和人工智能生物学"的博客文章吧! 1. 背景介绍 1.1 生物信息学的兴起

AI天才研究院 1412

单片机原理及应用知识点汇总(一)

在键闭合稳定时,读取键的状态,并且必须判别;、串行通信的优点是只需一对传送线,成本低,适于远距离通信,缺点是传送速度较低。、并行通信的优点是传送速度高,缺点是所需传送线较多,远距离通信不方便。、串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是。系列单片机的指令中,既有带借位的减法指令,又有不带借位的减法指令。、简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理。、在异步通信的帧格式中,数据位是低位在前高位在后的排列方式。、异步通信中,波特率是指每秒传送二进制代码的位数,单位是。

T19900的博客 696

有声书管理神器:Audiobookshelf移动应用深度体验

在快节奏的现代生活中,有声书已成为获取知识、放松心情的重要方式。Audiobookshelf移动应用作为一款功能全面的有声书管理工具,为用户带来了前所未有的收听体验。这款开源应用不仅支持多种音频格式,还提供了智能分类、进度同步等贴心功能,真正实现了随时随地畅听有声书的梦想。 ## 🎧 为什么选择Audiobookshelf? ### 多平台兼容性优势 这款应用基于Capacitor框架构建,

gitblog_00093的博客 887

android cordova 教程,cordova入门教程(一)

安装cordova cli1、下载安装node.js(js的运行环境),安装时勾选npm(js包的管理工具)。2、下载安装git(配置好环境变量)。3、使用npm安装cordova。在os或Linux上$ sudo npm install -g cordova在Windows上C:\>npm install -g cordova创建App创建cordova项目$ cordova create...

weixin_33117513的博客 849

51单片机+DS18B20+数码管显示+超温提示+Proteus仿真

51单片机+DS18B20+数码管显示+超温提示+Proteus仿真 Proteus仿真 实例代码 #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit we1 = P3^0; sbit we2 = P3^1; sbit we3 = P3^2; sbit we4 = P3^3; sbit DS = P1^0; sbit D1 = P3^6; sbit D2 = P3^7; uch

perseverance51博客 1538

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

一套代码编译出ios和android,Netflix 是如何实现 Android 与 iOS 共用一套代码?

原标题:Netflix 是如何实现 Android 与 iOS 共用一套代码?作者 | Netflix 技术博客译者 | 核子可乐策划 | 田晓旭过去几年以来,Netflix 一直在开发 Prodicle 移动应用,借此在电视节目与电影制作领域推进创新。时至今日,实体生产的具体方式可谓日新月异,不同国家、地区甚至是不同生产体系之间都存在着巨大的方法与需求层面的差异。工作性质的变化,意味着我们需要在...

weixin_27215403的博客 1112

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 用这个库解决你的图片压缩和加载问题
下一篇: 一个高性能、功能丰富、可自定义的 Android 相机库 iCamera 的设计和开发过程
开发者如是说
博客等级 码龄10年 67粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值