1. ホーム
  2. アンドロイド

Google翻訳SDKの利用について(Google Translate SDK)

2022-03-16 10:25:38

I. Google Cloud SDK (http://blog.csdn.net/nicolelili1/article/details/68947164) をインストールする。

II. プロジェクトのセットアップ

1. Googleアカウントにログイン、お持ちでない方は登録 (https://accounts.google.com/SignUp)

https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin



2. 管理者用バックエンドインターフェースで、新しいプロジェクトを選択または作成します(https://console.cloud.google.com/cloud-resource-manager?_ga=1.106468362.863623109.1502182438&pli=1)



作成]をクリックします。

リストでは、この項目が生成されていることがわかります。



3. プロジェクトの課金を許可し、アカウント番号を設定します。

左のドロップダウンメニューから、quot;Billing"をクリックします(銀行カードをお持ちでない場合は、最初にカードをバインドする必要があります)。



課金アカウントの管理」を選択します。



アカウント作成」を選択します。



クリックで続行



"Confirm"をクリック(クレジットカードに合った国を選ぶ。例えばUSと間違って書くと請求され、口座番号と違うのでブロックされ、再度アピールする必要がある。)





正常に作成されました



マイプロジェクト(My Projects)をクリックします。





作成したアカウントを選択し、[アカウント設定]をクリックします。





IV. クラウド翻訳APIの有効化

1. URL https://console.cloud.google.com/flows/enableapi?apiid=translation.googleapis.com&_ga=1.1612088.863623109.1502182438 を開き、有効化するプロジェクトを選択します。



2. API概要へ"をクリックします。





3. 3. 「APISとサービスを有効にする」をクリックします。



4. 検索ボックスで「"Google Cloud Translation API"」を検索し、必要なAPIを探します。



5. APIを選択してダブルクリックし、開いた画面で "Enable"を選択します。



有効時のインターフェース



V. クレデンシャルの作成

1. 左のAPI&servicesをクリック -->認証情報 -->認証情報の作成 -->APIキー







VI. Google Cloud SDK の初期化

1. gcloud init コマンドを入力して初期化します。



2. 設定を再初期化するかどうかを選択します。1または新しいコンフィギュレーションを再作成する



3. 元のアカウントを使用する。1または新しいアカウントでログインします。2



4. 必要な項目を選択する



5. Google Cloud SDKのライセンス取得



6. 変数の設定

コンピュータ--> 右クリックでプロパティ--> システムの詳細設定--> 新規--> GOOGLE_API_KEY:キー



VII. 構成

1. build.gradleに依存関係を追加する

    compile 'com.google.cloud:google-cloud-translate:1.3.1'

コード

    private void googleTranslate() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //translate translate = TranslateOptions.getDefaultInstance().getService();
                Translate translate = TranslateOptions.newBuilder().setApiKey("AIzaSyAuPO3rl-CClveK6XulCapCITeSONanpVA").build().getService ();
                String sourceLanguage = "en";
                String targetLanguage = "zh-CN";
                TranslateOption srcLang = TranslateOption.sourceLanguage(sourceLanguage);
                TranslateOption tgtLang = TranslateOption.targetLanguage(targetLanguage);
                // Use translate `model` parameter with `base` and `nmt` options.
                TranslateOption model = TranslateOption.model("nmt");

                String sourceText = "Robinson Crusoe is a real hero. " +
                        "He almost has everything needed for becoming a successful man, " +
                        " + "such as his excellent creativity, great working capacity, courage, and persistence in overcoming obstacles. " +
                        "However, Robinson Crusoe is not a perfect man.
                        " + "He also has shortcomings. " +
                        " + "He was such a coward when he encountered a storm the first time. " +
                        " + "He sweared and repented yet ate his words and sailed on after the storm. " +
                        "By showing Robinson's shortcomings, Daniel Defoe made Robinson a real person. " +
                        "After all, no one is perfect. " + " +
                        "Robinson Crusoe can not only lead the ambitious ones to success, but also guide average people to face up to life. " + " +
                        " "This is the significance of the study of Robinson Crusoe";
                Log.e("MainActivity", "googleTranslate............................ .1");
                Translation translation = translate.translate(sourceText, srcLang, tgtLang, model);
                Log.e("MainActivity", "Source Text:.............................. "+sourceLanguage+"............... "+sourceText);
                Log.e("MainActivity", "TranslatedText.............................. "+targetLanguage+"............ "+translation.getTranslatedText());
            }
        }).start();
    }


运行后的结果:运行后的结果。

原来的语言

Quelltext:..............................en...............Robinson Crusoe ist ein echter Held. Er hat fast alles, was man braucht, um ein erfolgreicher Mann zu werden, wie z.B. seine ausgezeichnete Kreativität, seine große Arbeitsfähigkeit, seinen Mut und seine Ausdauer bei der Überwindung von Hindernissen. Doch Robinson Crusoe ist kein perfekter Mensch. Er hat auch Schwächen. Als er das erste Mal in einen Sturm geriet, war er ein Feigling. Er fluchte und bereute, aber er aß seine Worte und segelte nach dem Sturm weiter. Indem Daniel Defoe Robinsons Unzulänglichkeiten aufzeigt, macht er ihn zu einer realen Person. Schließlich ist kein Mensch perfekt. Robinson Crusoe kann nicht nur ehrgeizige Menschen zum Erfolg führen, sondern auch Durchschnittsmenschen dazu anleiten, sich dem Leben zu stellen. Das ist die Bedeutung des Studiums von Robinson Crusoe

翻译后的语言
 TranslatedText..............................zh-CN............ 罗宾逊漂流记是真正的英雄。他几乎拥有成为一个成功的人所需要的一切,如他的出色的创造力,伟大的工作能力,勇气和坚持克服障碍。然而,罗宾逊漂流记不是一个完美的人。他也有缺点。当他第一次遇到风暴时,他是个懦夫。他发誓和悔改,吃了他的话,在风暴后航行。通过显示罗宾逊的缺点,丹尼尔-迪福让罗宾逊成为一个真正的人物。毕竟,没有人是完美的。罗宾逊漂流记不仅可以引导雄心勃勃的成功,也可以引导普通人面对生活。这是对鲁滨逊漂流记的研究的意义
























注:1.参考资料:https://cloud.google.com/translate/docs/getting-started

https://cloud.google.com/docs/authentication/getting-started。

http://blog.csdn.net/wangbailin2009/article/details/72742246

https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-translate

2.jar下载的地址:https://jar-download.com/?detail_search=g%3A%22com.google.cloud%22&g=com.google.cloud&p=3

遇到的问题 .

3.Error:Failed to resolve: com.google.cloud:google-cloud-translate:0.20.1-alpha



按照官网缩写的添加如下的依赖后出现上面的问题



解决法

将コンパイルグループ: 'com.google.cloud', name: 'google-cloud-translate', version: '0.20.1-alpha' 替换为 compile 'com.google.cloud:google-cloud-translate:1.3.1'.



4.die Aufgabe ':app:transformClassesWithDexForOffcialSiteDebug' ist fehgeslugen.

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536



解决法

在build.gradle中允许multiDex(マルチデックス)

android {

    defaultConfig {
        ...

        // Aktivieren der Multidex-Unterstützung.
        multiDexEnabled true
    }
    ...
}

Abhängigkeiten {
  kompilieren 'com.android.support:multidex:1.0.0'
}



5、

Aufgabe ':app:transformResourcesWithMergeJavaResForOffcialSiteDebug' の使用は失敗です。

> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException.DuplicateFileException: APK project.properties でコピーされたファイルが重複しています。

File1: C:\Userszjhl**.gradle***cachesmodules-2files-2.1com.google.cloud***google-cloud-translate**1.3.1

File2: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core\1.3.1\6688ecc0b0527ddd08fad76adc5419ba40b68599\google-cloud-core-1.3.1.jar



APK project.propertiesに含まれる2つのデータをコピーする

File1: C:\Userszjhl.gradle

File2: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core\1.3.1\6688ecc0b0527ddd08fad76adc5419ba40b68599\google-cloud-core-1.3.1.jar



解决办法:配置不添加这个包选项

android {

    packagingOptions {
        exclude 'project.properties'
    }
}



6.

* Was schief gelaufen ist:

Aufgabe ':app:transformResourcesWithMergeJavaResForOffcialSiteDebug' の適用が失敗しています。

> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException.DuplicateFileException: APKのMETA-INF/INDEX.LISTに重複したファイルがコピーされています。

File1: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core-http\1.3.1\13ff41068c2db0e43cf3ed96e24746fabbcbee21\google-cloud-core-http-1.3.1.jar

File2: C:\Userszjhl.gradle

Datei3: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core\1.3.1\6688ecc0b0527ddd08fad76adc5419ba40b68599\google-cloud-core-1.3.1.jar

* Versuch:

スタックトレースを取得するには、--stacktrace オプションを使用します。その他のプロトコルを取得するには、--info または --debug オプションを使用してください。

ビルドに失敗しました

価格: 2,86 円

APKのMETA-INF/INDEX.LISTのDoppelte Dateienをkopiertする。

File1: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core-http\1.3.1\13ff41068c2db0e43cf3ed96e24746fabbcbee21\google-cloud-core-http-1.3.1.jar

File2: C:\Userszjhl**.gradle***cachesmodules-2files-2.1com.google.cloud***google-cloud-translate**1.3.1

Datei3: C:\Users\zjhl\.gradle\caches\modules-2\files-2.1\com.google.cloud\google-cloud-core\1.3.1\6688ecc0b0527ddd08fad76adc5419ba40b68599\google-cloud-core-1.3.1.jar



解决办法:添加不包括index.list

    packagingOptions {
        exclude 'project.properties'
        exclude 'META-INF/INDEX.LIST'
    }





6.com.google.cloud.translate.TranslateException: リクエストに有効なAPIキーがありません。

<イグ

原因:本来TranslateOptions.getDefaultInstance().getService()会默认调用在电脑上配置的GOOGLE_API_KEY的值的,但不知道哪步出错了,没上配置,可以使用下面的方法态动定API鍵的仪式

解决办法

Translate translate = TranslateOptions.getDefaultInstance().getService();

变成动态从代码中设置app key

Translate translate = TranslateOptions.newBuilder().setApiKey("AIzaSyAuPO3rl-CClwwwkeXulCapCITeSONanpVA").build().getService();