Skip to content

Commit

Permalink
Merge pull request #44 from LevineLiu/develop
Browse files Browse the repository at this point in the history
add google translate
  • Loading branch information
maoruibin committed Feb 22, 2017
2 parents aa3171f + 0df5b22 commit d928260
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 2 deletions.
4 changes: 4 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ android {
buildConfigField "String", "YOUDAO_DOC_TYPE", '"json"'
buildConfigField "String", "YOUDAO_VERSION", '"1.2"'

//google config
buildConfigField "String", "GOOGLE_LANGUAGE_ENGLISH", '"en"'
buildConfigField "String", "GOOGLE_LANGUAGE_CHINEASE", '"zh-CN"'

//common value
buildConfigField "String", "RESULT_JSON", '"json"'
buildConfigField "String", "LANGUAGE_AUTO", '"auto"'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import dagger.Component;
import name.gudong.translate.GDApplication;
import name.gudong.translate.mvp.model.ApiBaidu;
import name.gudong.translate.mvp.model.ApiGoogle;
import name.gudong.translate.mvp.model.ApiJinShan;
import name.gudong.translate.mvp.model.ApiYouDao;
import name.gudong.translate.mvp.model.SingleRequestService;
Expand All @@ -37,6 +38,8 @@
/**
* Created by GuDong on 12/27/15 16:41.
* Contact with gudong.name@gmail.com.
*
* Updated by Levine on 2/21/17 add google api
*/
@Singleton
@Component(modules = {AppModule.class,ApiServiceModel.class})
Expand All @@ -54,6 +57,8 @@ public interface AppComponent {

ApiBaidu getApiBaidu();

ApiGoogle getApiGoogle();

SingleRequestService getDwnloadService();

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import dagger.Provides;
import name.gudong.translate.BuildConfig;
import name.gudong.translate.mvp.model.ApiBaidu;
import name.gudong.translate.mvp.model.ApiGoogle;
import name.gudong.translate.mvp.model.ApiJinShan;
import name.gudong.translate.mvp.model.ApiYouDao;
import name.gudong.translate.mvp.model.SingleRequestService;
Expand All @@ -43,6 +44,8 @@
/**
* Created by GuDong on 12/27/15 16:17.
* Contact with gudong.name@gmail.com.
*
* Updated by Levine on 2/21/17 add google api
*/
@Module
public class ApiServiceModel {
Expand Down Expand Up @@ -76,6 +79,10 @@ ApiJinShan provideApiJinShan() {
return createService(ETranslateFrom.JIN_SHAN);
}

@Provides
@Singleton
ApiGoogle provideApiGoogle(){return createService(ETranslateFrom.GOOGLE);}

private <S> S createService(ETranslateFrom type) {
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(HttpUrl.parse(type.getUrl()))
Expand Down
26 changes: 26 additions & 0 deletions app/src/main/java/name/gudong/translate/mvp/model/ApiGoogle.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package name.gudong.translate.mvp.model;

import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.Query;
import retrofit2.http.Streaming;
import rx.Observable;

/**
* Created on 2017/2/22
*
* @author Levine
*/

public interface ApiGoogle {

/**
* http://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=google
*/
@Streaming
@GET("translate_a/single?client=gtx&dt=t&ie=UTF-8&oe=UTF-8&sl=auto")
Observable<ResponseBody> translateGoogle(
@Query("q") String q,
@Query("tl") String targetLanguage
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,43 @@

package name.gudong.translate.mvp.model;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.inject.Inject;

import name.gudong.translate.BuildConfig;
import name.gudong.translate.mvp.model.entity.translate.AbsResult;
import name.gudong.translate.mvp.model.entity.translate.BaiDuResult;
import name.gudong.translate.mvp.model.entity.translate.GoogleResult;
import name.gudong.translate.mvp.model.entity.translate.JinShanResult;
import name.gudong.translate.mvp.model.entity.translate.YouDaoResult;
import name.gudong.translate.mvp.model.type.ETranslateFrom;
import name.gudong.translate.util.SignUtils;
import okhttp3.ResponseBody;
import rx.Observable;
import rx.functions.Func1;

/**
* Created by GuDong on 1/22/16 10:37.
* Contact with gudong.name@gmail.com.
*
* Updated by Levine on 2/22/17 add google translation
*/
public class WarpAipService {

private ApiBaidu mApiBaidu;
private ApiYouDao mApiYouDao;
private ApiJinShan mApiJinShan;
private ApiGoogle mApiGoogle;

@Inject
public WarpAipService(ApiBaidu mApiBaidu, ApiJinShan mApiJinShan, ApiYouDao mApiYouDao) {
public WarpAipService(ApiBaidu mApiBaidu, ApiJinShan mApiJinShan, ApiYouDao mApiYouDao, ApiGoogle mApiGoogle) {
this.mApiBaidu = mApiBaidu;
this.mApiJinShan = mApiJinShan;
this.mApiYouDao = mApiYouDao;
this.mApiGoogle = mApiGoogle;
}

public Observable<AbsResult> translate(ETranslateFrom way, String query) {
Expand Down Expand Up @@ -98,6 +108,33 @@ public Observable<AbsResult> call(BaiDuResult result) {
}
});
break;
case GOOGLE:
String targetLanguage;
//String patternWords = "[a-zA-Z1-9 ]{1,}";
String patternWords = "[\u4e00-\u9fa5 ]{1,}";
Pattern r = Pattern.compile(patternWords);
Matcher m = r.matcher(query);
if(!m.matches()){
targetLanguage = BuildConfig.GOOGLE_LANGUAGE_CHINEASE;
}
else {
targetLanguage = BuildConfig.GOOGLE_LANGUAGE_ENGLISH;
}

resultObservable = mApiGoogle.translateGoogle(query, targetLanguage)
.flatMap(new Func1<ResponseBody, Observable<AbsResult>>() {
@Override
public Observable<AbsResult> call(ResponseBody result) {
GoogleResult googleResult = new GoogleResult();
try{
googleResult.setTranslationResult(result.string());
}catch (IOException e){
e.printStackTrace();
}
return Observable.just(googleResult);
}
});
break;
}
return resultObservable;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package name.gudong.translate.mvp.model.entity.translate;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import name.gudong.translate.mvp.model.type.ETranslateFrom;

/**
* Created on 2017/2/21
*
* @author Levine
*/

public class GoogleResult extends AbsResult{

/**
* [[["谷歌","google",,,1]],,"en"]
*/
private String translationResult;

private List<String> getTranslation(){
List<String> translationList = new ArrayList<>(1);
String[] translation = translationResult.replace("[", "").split("\",");
translationList.add(translation[0].replace("\"", ""));
return translationList;
}

@Override
public List<String> wrapTranslation() {
return getTranslation();
}

@Override
public List<String> wrapExplains() {
return Collections.emptyList();
}

@Override
public String wrapQuery() {
return translationResult;
}

@Override
public int wrapErrorCode() {
return 0;
}

@Override
public String wrapEnPhonetic() {
return null;
}

@Override
public String wrapAmPhonetic() {
return null;
}

@Override
public String wrapEnMp3() {
return null;
}

@Override
public String wrapAmMp3() {
return null;
}

@Override
public String translateFrom() {
return ETranslateFrom.GOOGLE.name();
}

@Override
public String wrapPhEn() {
return null;
}

@Override
public String wrapPhAm() {
return null;
}

@Override
public String wrapMp3Name() {
return null;
}

public String getTranslationResult() {
return translationResult;
}

public void setTranslationResult(String translationResult) {
this.translationResult = translationResult;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,23 @@
package name.gudong.translate.mvp.model.type;

import name.gudong.translate.mvp.model.ApiBaidu;
import name.gudong.translate.mvp.model.ApiGoogle;
import name.gudong.translate.mvp.model.ApiJinShan;
import name.gudong.translate.mvp.model.ApiYouDao;

/**
* Created by GuDong on 1/22/16 18:12.
* Contact with gudong.name@gmail.com.
*
* updated by Levine on 2/21/17
*/
public enum ETranslateFrom {

BAI_DU(0,"百度","http://api.fanyi.baidu.com/", ApiBaidu.class),
YOU_DAO(1,"有道","http://fanyi.youdao.com/",ApiYouDao.class),
JIN_SHAN(2,"金山","http://dict-co.iciba.com/",ApiJinShan.class);
JIN_SHAN(2,"金山","http://dict-co.iciba.com/",ApiJinShan.class),
GOOGLE(3, "谷歌", "http://translate.google.cn/",ApiGoogle.class);


private int index;
private String name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,10 @@ public void onItemSelected(AdapterView<?> parent, View view, int position, long
selectEngine(ETranslateFrom.JIN_SHAN);
MobclickAgent.onEvent(getApplicationContext(), "way_jinshan");
break;
case 3:
selectEngine(ETranslateFrom.GOOGLE);
MobclickAgent.onEvent(getApplicationContext(), "way_google");
break;
}
}

Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-zh/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<item>百度</item>
<item>有道</item>
<item>金山</item>
<item>谷歌</item>
</string-array>

<string-array name="recipe_time">
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<item>百度</item>
<item>有道</item>
<item>金山</item>
<item>谷歌</item>
</string-array>

<string-array name="recipe_time">
Expand Down

0 comments on commit d928260

Please sign in to comment.