• Stars
    star
    333
  • Rank 126,599 (Top 3 %)
  • Language
    Kotlin
  • License
    GNU General Publi...
  • Created almost 5 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于Jetpack Compose开发的翻译软件,支持多引擎、插件化~ | Jetpack Compose+MVVM+协程+Room

FunnyTranslation

| English Version |

介绍

本软件是一款翻译软件,旧版基于Java语言,在传统View体系下开发;自2.0.0起逐步改用Kotlin开发,自2.1.0起软件架构重写,大部分代码均用Kotlin编写,页面完全改用Jetpack Compose。软件自2.1.0起决定开源、自2.6.0起因成本原因引入付费机制。出于对开源精神的追求,到目前仍然继续保持开源。如有帮助, 欢迎star

本应用有以下特点:

  • Jetpack Compose + MVVM + Kotlin Coroutine + Flow + Room
  • 多 module 设计,公共模块与项目模块分离
  • 支持多引擎同步翻译,支持插件开发、下载、更新、导入、导出等,高拓展性
  • 充分利用 Kotlin 语言特性,如延迟懒加载、类代理、Coroutine、Flow、密闭类、拓展方法、拓展属性、反射等
  • 基于 Rhino JS 设计并实现完整的 JavaScript 插件加载、运行、调试环境,提供插件开发一条龙支持
  • 适配 Android11文件权限,适配双语、暗黑模式、横屏/平板页面,开发、使用并公开发布三个开源库

应用逐步适配 Android13,具体包括:

  • 支持单独设置应用语言
  • 适配桌面单色图标

您可以在以下途径获取最新版本:

考虑到本应用的Star逐渐增多,且在某些地方一定程度上作为学习的项目,我最近也在加强它“一个可参考的开源项目”的属性。

如果您希望阅读代码,我建议您从 主Activity 开始

截图

运行截图

UI v4:

旧版 UI v3
图片 图片
Screenshot_2021-11-07-22-37-33-814_com.funny.tran Screenshot_2021-11-07-22-39-18-201_com.funny.tran
Screenshot_2021-11-07-22-40-16-339_com.funny.tran IMG_20211107_223720

源代码简介

作为开源项目来说,您可以从以下方面了解它

代码风格

从代码的组织结构来说,这里面的代码并没有完全遵循 Google 的最佳实践,如果想极力追求代码的优雅,可以参考 Google 官方的 NowInAndroid 项目。但就实际使用效果来看,那个项目因为过于追求数据流的统一,导致体验上并不非常好(比如在我体验到的版本中,列表项中的任何一个点击 “收藏”,都会触发上流的 flow 更新,从而刷新整个列表,这会导致你点击一个收藏按钮,整个列表又回到了最顶端,显然是不符合实际使用体验的)。

代码的编写大致遵循这个规则:Composable + ViewModel,其中较为简单的逻辑直接在 Composable 中实现,较为复杂的在 ViewModel 中实现。出于写起来的方便,ViewModel 并里面的 State 没有采取 “内置 MutableState + 对外暴露 State” 的策略,而是将所有的 State 均设为 Mutable,并且有一部分直接通过 vm.xxx 调用。

不过,一些基本的整洁度,比如命名的基本规范、代码缩进、Kotlin 式的编程风格还是有的。主要的 ViewModel 文件和 Composable 页面,在 AS 的检查下,部分做到了全绿,绝大部分的黄色 Lint 均在 1~5 个,多为未使用的 TAG 变量,未使用的函数之类。

模块

  • translate: 主体的翻译页面
  • base-core:基础模块,定义了基本Bean,以API形式引入第三方模块提供给其他部分
  • codeeditor:代码编辑器页面
  • login: 登录、注册页面
  • jet-setting-core:设置页面的基本组件
  • editor、language-base、language-universal:来源于开源项目sora-editor,代码编辑器 View
  • buildSrc:依赖版本管理

您可以参阅此文档以了解各模块详细代码组成

运行前准备

  • 自23年6月起,项目迁移到了 Gradle 8 + AGP 8,因此您需要使用 Android Studio Flamingo | 2022.2.1 及以上版本,高度建议为最新的稳定版

  • 为了安全起见,开源部分不包括有关签名信息的signing.properties文件,如需打 Release 包请您补全此文件

    • signing.properties

    • 位于根目录下

      // 如果需要打release包,请在项目根目录下自行添加此文件
      /**
       *  STORE_FILE=yourAppStroe.keystore
          STORE_PASSWORD=yourStorePwd
          KEY_ALIAS=yourKeyAlias
          KEY_PASSWORD=yourAliasPwd
       */

    如果你在最新的稳定版 AS 上以及正确的 Gradle 版本上仍然运行不起来,确定不是自己的问题后,可以(feel free to)开 issue 来问问,有可能是我提交 git 时少了哪些文件。我会在看到后尽快回复的。

致谢

  • 页面设计(UI v3)参考自 酷安@江戸川コナン(已授权)
  • 页面设计(UI v4)和宣传图来自 酷安@松川吖
  • 感谢所有赞助过项目的小伙伴们!
  • 感谢所有贡献者们!

贡献者 ❤

如果此项目对您有帮助,欢迎不吝Star~

Star History

Star History Chart

More Repositories

1

ComposeDataSaver

在 Compose Multiplatform ( Android / JVM Desktop) 中优雅完成数据持久化 | An elegant way to do data persistence in Compose Multiplatform ( Android / JVM Desktop )
Kotlin
87
star
2

Better-Ruozhiba

【逐条进行中】人为审核+加修改每一条的弱智吧精选问题QA数据集
80
star
3

Transtation-KMP

A translation app on Android/Desktop built by Kotlin Multiplatform + Compose Multiplatform, enjoy amazing experience with LLMs' support
Kotlin
77
star
4

JetpackComposeStudy

本人 Jetpack Compose 主题文章所包含的示例,包括自定义布局、部分组件用法等
Kotlin
40
star
5

JetpackComposePhysicsLayout

Jetpack Compose custom layout that simulates physics using JBox2D
Kotlin
35
star
6

bilibili_comments_crawl

基于 B 站评论区数据构建大语言模型训练用对话数据集
Python
25
star
7

JetpackComposeSnake

Jetpack Compose Snake Game using MVI | Jetpack Compose 基于 MVI 架构实现贪吃蛇小游戏
Kotlin
15
star
8

CMaterialColors

Jetpack Compose Material Design Colors | 在 Jetpack Compose 中使用 Material Design Color
Kotlin
13
star
9

FunnyBottomNavigation

一个很漂亮的底部导航栏,继承自View,带有流畅且有趣的过度动画
Kotlin
9
star
10

ComposeLoading

An easy-to-use way to wrap loading process in Jetpack Compose | 在 Jetpack Compose 中轻松地包装加载过程
Kotlin
8
star
11

FunnyTimeLine

Android基于自定义View实现的时间选择器(时间轴状),支持三级惯性滑动,内建时间管理类
Java
3
star
12

ChineseNewsAndSummaryDataset

中文新闻摘要&教培行业消息新闻摘要数据集
Python
2
star
13

best_llm

Vote the Best LLM by yourself! 票选你最喜欢的大语言模型
Python
2
star
14

FunnySaltyFish.github.io

Stylus
1
star
15

ComposeCalculator

A Simple But Not Simple Calculator built by Jetpack Compose
Kotlin
1
star
16

FunnyTranslationDownload

个人软件FunnyTranslation的自动更新。没钱买服务器……
Python
1
star
17

partial-json-parser-kmp

Parse incomplete JSON (like what ChatGPT generates in stream mode) in Kotlin, obtain as much as possible information fastly.
Kotlin
1
star