A translations app without interruptions, copy words and translate directly, show result by top view.

Overview

咕咚翻译

icon

Build Status

介绍

一个实现『划词翻译』功能的 Android 应用 ,可能是目前 Android 市场上翻译效率最高的一款应用。

shot

下载

Fir

酷安市场

如果想要帮助做内部测试,欢迎来Google+社区我会把最新的版本放在 Google+社区。

缘起

自己经常在手机上会阅读一些英文的技术 blog 或者文档,经常会遇到陌生的单词,想必大家都有类似的经历,一般的,如果是上班期间,我可能会打开谷歌翻译,然后查词,但是当你不在电脑旁,就只能通过手机上的翻译软件来翻译生词,所以这时我们通常遇到生词会这样操作,长按生词、选择复制、点击 Home 键、找到翻译 App,有道翻译或者谷歌翻译之类的,然后长按输入框,选择粘贴,此时你才可以看到那个生词的意思。其实这是一个非常考验用户耐性的事,连续操作几次,不烦才怪呢。

我也是,自己以前在 Medium 上阅读文章时经常做这样的事,后来我想能不能简单点呢,所以就有了咕咚翻译这个 App,咕咚是我的网名呢~

讨论/发声

个人博客上关于咕咚翻译的介绍

V2EX 上对 App 的讨论 咕咚翻译

微博上关于咕咚翻译的讨论

Google+ 咕咚翻译社群

技术点

  • 1、全程使用 Dagger2 对项目进行类依赖管理
  • 2、项目使用标准的 MVP 架构,关于 MVP 的一篇博客
  • 3、实现对粘贴板的监听以及访问
  • 4、无需权限显示悬浮窗(6.0悬浮窗权限适配)
  • 5、使用 RxJava 探索函数式编程
  • 6、使用 Retrofit2 进行网络请求
  • 7、开机自启动
  • 8、Android 6.0 自定义文本操作栏

Note 3、4都是借鉴自廖祜秋的开源项目android-UCToast,感谢~

适配问题

更新日志

日志列表

支持一下

贡献者

关于作者

咕咚,软件工程师,更多

License

 Copyright (C) 2015 GuDong 
   
    

 This file is part of GdTranslate

 GdTranslate is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 GdTranslate is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with GdTranslate.  If not, see 
    .

   
Comments
  • 单词获取建议,能否实现?

    单词获取建议,能否实现?

    现在的长按单词再复制才能出翻译,感觉有点麻烦,能否实现下面的功能? 1 【选取】:通过点击单词就选中单词,代替长按选词 2 【获取】:自动复制单词代替手动复制单词 当然最好就是点击单词就出翻译,一步到位哈! 小白想问问能否实现这两个功能?

    当然,要是能做到锤子手机那种“哪里不会点哪里”的翻译功能可就太棒了,我估计是用ocr做的

    opened by redstoneleo 3
  • fix crash and add shadow

    fix crash and add shadow

    ec9dd66 fix crash for remote service If there are several tipview on screen, service will crash because of removing TipView which has already been removed

    dd937af add shadow to tipview May be there is a better app interaction, as for now, we can add a shadow. If there are two TipView on screen, we can easily distinguish them.

    opened by WonShaw 3
  • install apk报文件报文件找不到

    install apk报文件报文件找不到

    本地编译部署会报找不到apk,应该是时区的问题, utc_settings 截图如上,系统时间0325,打包安装会找0324的,相同问题在这里. emptythrowable-the-apk-file-apk-does-not-exist-on-disk

    修改app.gradle解决. 获取中国时区.

    //格式化打完完成后APK名称中的时间
    def releaseTime() {
        return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC+8"))
    }
    
    opened by leizhiyuan 2
  • 优化-生词本为空时弹窗提示没有收藏的单词

    优化-生词本为空时弹窗提示没有收藏的单词

    WordsBookActivity 修改代码

      @Override
        public void fillData(List<Result> transResultEntities) {
            //如果查出来的结果为空,那么提示用户没有收藏的单词
            if (transResultEntities == null || transResultEntities.size() == 0) {
                Toast.makeText(WordsBookActivity.this, "没有收藏的单词", Toast.LENGTH_SHORT).show();
            } else {
                mAdapter.update(transResultEntities);
            }
        }
    

    其余两行是代码格式化.

    opened by leizhiyuan 2
  •  check DrawOverlays permission before using it

    check DrawOverlays permission before using it

    • If user didn't grant DrawOverlays permission on the startup page, when copying text to clipboard, it will cause a crash of Permission Denied
      • check permission before using it
    • The result of Settings.canDrawOverlays(context) should not be saved, because you never know when your user would modify it
      • remove it in sf
    opened by PinkD 1
  • Inclusion in F-Droid

    Inclusion in F-Droid

    Hi,

    Since this app is GNU GPL v3 licensed, are you considering the fact to add it to F-Droid? There is a strong community behind, that do not use Google Play nor anything else, except F-Droid.

    You can find some documentation here.

    Otherwise, if you don't want to work on the inclusion of this app by yourself, would it be ok for you if someone else do it for you?

    opened by Poussinou 1
  • 快速退出会导致程序崩溃

    快速退出会导致程序崩溃

    一开就按后退键。 call: Attempt to invoke interface method 'void name.gudong.translate.mvp.views.IMainView.fillDayline(name.gudong.translate.mvp.model.entity.dayline.IDayLine)' on a null object reference

    原因应该是MainPresenter 里dayline方法,由于mView 在退出后为空导致NullpointerException,建议做一下null检查或者cancel 这个subscrption

    opened by cooperkong 1
  • 请问一下这个实现句子和词组的翻译难道有多大.

    请问一下这个实现句子和词组的翻译难道有多大.

    我对这个项目很感兴趣,现在的iphone或者是mac都默认对单个单词执行翻译,安卓有了你开发的应用也实现了这个功能. 但是谷歌浏览器的插件划词翻译可以实现句子的翻译,我想问一下你开发的这个实现句子翻译的难度有多大.而且我是一个刚入行的pythoner,要想对你的项目有所贡献应该如何做呢.如果实现一个跨平台的划词翻译.iphone andriod mac Windows 都可以. 不用浏览器插件,在pdf阅读中也可以用的软件是不是一个很大的挑战呢(可以翻译句子的)?

    opened by Lchyang 2
  • Setup Airbrake for your Java application

    Setup Airbrake for your Java application

    Step 1: Install

    Install option 1: Maven

    Add the javabrake dependency through your IDE or directly to your pom.xml file:

    <dependency>
      <groupId>io.airbrake</groupId>
      <artifactId>javabrake</artifactId>
      <version>0.1.4</version>
      <type>pom</type>
    </dependency>
    

    Install option 2: Gradle

    Add javabrake to your Gradle dependencies:

    compile 'io.airbrake:javabrake:0.1.4'
    

    Install option 3: Ivy

    Add javabrake to your Ivy dependencies:

    <dependency org='io.airbrake' name='javabrake' rev='0.1.4'>
      <artifact name='javabrake' ext='pom'></artifact>
    </dependency>
    

    Step 2: Configuration

    Copy this configuration snippet into your Java app.

    (You can find your project API KEY with your project's settings)

    import io.airbrake.javabrake.Notifier;
    
    int projectId = <Your project ID>;
    String projectKey = "<Your project API KEY>";
    Notifier notifier = new Notifier(projectId, projectKey);
    
    notifier.addFilter(
        (Notice notice) -> {
          notice.setContext("environment", "production");
          return notice;
        });
    

    Example of reporting a caught exception:

    try {
      do();
    } catch (IOException e) {
      notifier.report(e);
    }
    

    Visit our official GitHub repo for advanced information and integrations like log4j, log4j2, and logback.

    airbrake 
    opened by maoruibin 0
Releases(V1.7.1)
  • V1.7.1(Aug 20, 2017)

    Version 1.7.1

    • 新增: 输入单词自动联想提示(By 70kg 添加单词完成自动提示 by 70kg · Pull Request #53)
    • 优化: 设置页面层级以及一个错别字 (17-08-20)
    • 修复: 背单词时偶现的奔溃 (17-08-20)
    Source code(tar.gz)
    Source code(zip)
  • v0.6.3(Mar 4, 2016)

    新增: 划词翻译开关,你可以关闭划词翻译功能了。(03-04) 优化: 单词本被移动到了 Toolbar 上面展示。(03-05) 修复: 翻译时不显示 "翻译中" 的提示问题,Thanks @leizhiyuan。(03-04)

    Source code(tar.gz)
    Source code(zip)
Owner
咕咚
热爱篮球的 Android 工程师,公众号「咕咚同学」欢迎关注。
咕咚
Add status to beans in Compose, Fields in beans can be directly used as the MutableState

Buff Add status to beans in Jetpack(jb) Compose, Fields in beans can be directly used as the MutableState<T> ⚠️ Non mainstream warning:This item viola

lt 2 Oct 23, 2022
Android App Module - Activity Result Contracts

Activity Result Contract with async & await (Asynchronous) - Android App Module App Features Activity Result Contract : ActivityResultContracts Permis

Alvin Setiawan 1 Feb 1, 2022
🚆 Retrofit adapters for modeling network responses with Kotlin Result, Jetpack Paging3, and Arrow Either.

Retrofit Adapters ?? Retrofit adapters for modeling network responses with Kotlin Result, Jetpack Paging3, and Arrow Either. Sandwich If you're intere

Jaewoong Eum 293 Dec 26, 2022
A pluggable sealed API result type for modeling Retrofit responses.

A pluggable sealed API result type for modeling Retrofit responses.

Slack 645 Dec 19, 2022
UserLoc - A API call using Retrofit to obtain list of users details and show on UI in recycler view and google map

UserLoc This uses a API call using Retrofit to obtain list of users details and

Rohit Kumar 0 Jun 22, 2022
find the top coffee shop near by a given location

YelpCoffee&Tea 2 Different Activities (Screens): coffee shop List, coffee shop detail View Android app displays coffee shop locations in specified loc

null 0 Oct 31, 2021
A React Native library making file access easier for developers as first class citizens, without the tears

React Native File Gateway A React Native library making file access easier for developers as first class citizens, without the tears. ⚠️ NOTE: This li

Jimmy Wei 4 Sep 11, 2021
Create minecraft worlds without lag!

WorldGen 랙 없는 월드 생성을 위한 라이브러리 시작하기에 앞서, 이 라이브러리는 UHC_System 의 월드 생성 코드를 작성하면서 WorldCreator의 단점인 랙을 없애기 위해 만들어진 코드의 일부를 라이브러리로 공개하는 것임을 알려드립니다 WorldCre

dolphin2410 4 Jul 29, 2022
Minecraft Server Software specially designed for Thicc SMP. Here on GitHub without the private patches, just a normal hybrid JettPack-Pufferfish-Empirecraft fork

AlynaaMC A private, custom server software for Thicc SMP and a fork of Pufferfish. Here on GitHub with patches from JettPack, Airplane and Pufferfish

ThiccMC 14 Dec 31, 2021
Write a Ghidra Extension without using Java or Eclipse!

Ghidra Extension in Kotlin using IntelliJ IDEA Write a Ghidra Extension without using Java or Eclipse! Setup Hit Use this template at the top of the r

Florian Magin 7 Dec 15, 2022
CryptoMovies is a small app that show modern Android developement: with Hilt, Coroutines, Flow, Jetpack and Material Design 3

CryptoMovies is a small app that show modern Android developement: with Hilt, Coroutines, Flow, Jetpack and Material Design 3.

Leonardo Pirro 7 Sep 2, 2022
A movie and TV Show streaming mobile app built with Jetpack Compose.

PhotoPlay A movie and TV Show streaming mobile app in Android built using Jetpack compose. This project is developed by Javokhir Savriev for more proj

Javokhir 4 Nov 9, 2022
REST countries sample app that loads information from REST countries API V3 to show an approach to using some of the best practices in Android Development.

MAJORITY assignment solution in Kotlin via MVVM Repository Pattern. REST countries sample app that loads information from REST countries API V3 to sho

Rehan Sarwar 1 Nov 8, 2022
Android app that uses TMDB API to show info about movies.

Movies App: Projeto Integrador - Vitória Code 2021 ?? Sobre o projeto Esse é um aplicativo Android feito em Kotlin que oferece aos usuários uma listag

Glória Monique 16 Dec 23, 2022
🏞 A simple android app to show random images with Lorem Picsum API.

LoremPicsum A simple android app to show random images with Lorem Picsum API. Used skills Android Multi-Module RecyclerView MVVM with AAC ViewModel &

Haenala Shin 2 Feb 25, 2022
Skeleton project for show the architecture of Android project using MVVM, Clean Architecture and Kotlin coroutine Flow

ClearScoreDemo Skeleton project for showing the architecture of Android project using MVVM, Clean architecture and Kotlin coroutine Flow App Architect

Plabon Modak 1 Mar 6, 2022
Blinking-image-view - A variant of Android View that blinks only the source image (not the background)

Blinker View for Android What is this? Blinker View is an Android View that blinks a given drawable. Yes, it's that simple. Place it in your layout an

Milos Marinkovic 4 Jul 29, 2020
Kotlin Multiplatform Application to show Crypto Coins

This is the codebase of Crypto currency Tracking Kotlin Multiplatform App. Components Shared Components Ktor (Network Client) SQL Delight (Local DB) A

Aman Bansal 10 Oct 31, 2022
Show weather data for the current location [Apollo Agriculture Interview Solution], for the Senior Android Engineer Role

Apollo Agriculture Android Take Home Assignment Writing Apollo Agriculture App using Android Architecture Components, in 100% Kotlin, using Android Je

Juma Allan 23 Nov 23, 2022