幫助

如何使用google API翻譯

2023-05-06 10:48 技術(shù)文檔

google API翻譯是收費的,但翻譯比較準確,正常google翻譯的收費是100萬個字符20美元。我們第一次使用,當然不想就開始付費,而是想先體驗一下,好在google也提供了免費試用的功能,會給新賬號300$的額度。

要使用google API翻譯,整個流程還挺長的。由于google的文檔對新手很不好友,所以在這個過程中我也走了不少彎路,現(xiàn)在總結(jié)一下并分享給大家,
其中關(guān)鍵的步驟是:

  • 申請google API
  • 建立項目
  • 啟用記費功能
  • 開啟API
  • 設(shè)立身份驗證

希望讓有需要的人少走點彎路。

一、申請google API
(一)進入申請頁面
點擊鏈接進行申請。
(二)申請API
可能是因為google在中國被墻的原因,國家那里找了半天找不到中國的選項,后來干脆用默認選項“美國”。

由于選的是美國,所以信用卡地址那里也只能填美國的,我隨便填了一下紐約大學的地址:70 Washington Square South ,New York, NY。

300$的額度,90天內(nèi)用完。

二、新建項目
按google的說法,要使用Google Cloud提供的服務(wù),您必須創(chuàng)建一個項目。

一個項目可以組織您所有的Google Cloud資源。 一個項目由一組協(xié)作者,已啟用的API(和其他資源),監(jiān)視工具,計費信息以及身份驗證和訪問控制組成。 您可以創(chuàng)建一個項目,也可以創(chuàng)建多個項目,然后使用它們在資源層次結(jié)構(gòu)中組織Google Cloud資源。 創(chuàng)建項目時,請記下項目ID。 您將需要此ID來進行API調(diào)用。

建議您為實驗,測試和生產(chǎn)創(chuàng)建單獨的項目。 創(chuàng)建項目后,記錄項目編號或ID。 調(diào)用Cloud Translation API時,必須提供項目編號(或ID)。

三、啟用記費功能
您必須啟用計費才能使用云翻譯。
如何確認你的項目已經(jīng)開啟了計費功能呢?
打開你的項目,點擊左邊導航欄的“結(jié)算”鏈接,如果看到下面的頁面,就表明你的項目已經(jīng)開啟了計費的功能。

四、開啟API
(一)生成API密鑰
進入你的項目里,點擊執(zhí)行“創(chuàng)建憑據(jù)->生成API密鑰”功能,就可以得到你的API密鑰.

(二)測試API密鑰
填上key進行測試,測試代碼如下:

import  requests
import csv
import sys
reload(sys)
sys.setdefaultencoding('utf-8')#python處理字符流改成utf-8形式

def translate_text(target, content):
	language_type = ""
	url = "https://translation.googleapis.com/language/translate/v2"
	data = {
	    'key':"AI*******mpI",
	    'source': language_type,
	    'target': target,
	    'q': content,
	    'format': "text"
	}
	#headers = {'X-HTTP-Method-Override': 'GET'}
	#response = requests.post(url, data=data, headers=headers)
	response = requests.post(url, data)
	# print(response.json())
	print(response)
	res = response.json()
	print(res["data"]["translations"][0]["translatedText"])
	result = res["data"]["translations"][0]["translatedText"]
	print(result)
	return result


if __name__ == '__main__':
	content = "Teknoloji haberleri ve ürün incelemeleri"
	target = 'zh-cn'
	translate_text(target,content)


(三)啟用翻譯API報以下錯誤:
{'error': {'code': 403, 'message': 'Cloud Translation API has not been used in project 288578xxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/translate.googleapis.com/overview?project=288578xxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.', 'errors': [{'message': 'Cloud Translation API has not been used in project 288578xxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/translate.googleapis.com/overview?project=288578xxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.', 'domain': 'usageLimits', 'reason': 'accessNotConfigured', 'extendedHelp': 'https://console.developers.google.com'}], 'status': 'PERMISSION_DENIED'}}

按上面的出錯提示,進入到這個頁面,點擊“啟用”翻譯API.

一些介紹:https://cloud.google.com/translate/docs/basic/quickstart?hl=zh_CN

(四)成果展示
再次運行上面的測試代碼,可以發(fā)現(xiàn)翻譯成功了。運行結(jié)果如下:


{'data': {'translations': [{'translatedText': '技術(shù)新聞和產(chǎn)品評論', 'detectedSourceLanguage': 'tr'}]}}
技術(shù)新聞和產(chǎn)品評論

參考:https://blog.csdn.net/javajiawei/article/details/90691108?spm=1001.2014.3001.5501

到了上面這一步就可以使用了,如果你只是進行簡單的翻譯,那么到上一步就已經(jīng)大功告成了!

不過我還有一個需求,就是可以實現(xiàn)對html代碼的翻譯,即保留html代碼,但是翻譯代碼中的內(nèi)容。所以后來又折騰客戶端庫。

五、進行配額管理
這一步是可選步驟,可以不做。

Cloud Translation具有配額管理系統(tǒng),可幫助您和Google管理該服務(wù)的使用情況。 默認情況下,每天可以發(fā)送的字符數(shù)沒有限制。 如果您有固定的預算,建議您監(jiān)控日常使用情況,并根據(jù)計劃支出調(diào)整配額。

六、設(shè)立身份驗證
如果您打算使用Cloud Translation API,則需要設(shè)置身份驗證。 任何使用該API的客戶端應(yīng)用程序都必須經(jīng)過身份驗證,并被授予對所請求資源的訪問權(quán)限。

其實官方也推薦使用客戶端庫來調(diào)用 Cloud Translation,因為它們可以更輕松地訪問 API

(一)獲得api json文件
1.點擊進入這個頁面

2.選擇一個項目

3.選擇“create service account”

4.建立賬號
輸入相關(guān)的信息,完成賬號的建立。

5.點擊左邊導航欄的“service account”,你會發(fā)現(xiàn)剛剛自己建立的賬號已經(jīng)出現(xiàn)在里面了,點擊這個賬號。

6.建立key
在出現(xiàn)的窗口中,點擊“key”,再點擊“add key-creat new key”

7.在出現(xiàn)的窗口中選擇"json"

點擊“創(chuàng)建”之后,會自動將一個json文件下載到你的電腦上,請保存好這個json文件,里面有你的key.

(二)添加系統(tǒng)變量
將上一步下載的json文件保存到你的電腦中的某一個文件夾下面,比如我就將它存在C:\google\這個文件夾下面。
然后添加環(huán)境變量。
其中變量名為:GOOGLE_APPLICATION_CREDENTIALS
變量的值就是你的json文件路徑,比如:"C:\Users\username\Downloads\你的key.json"

(三)使用google translate的客戶端
1.先安裝

pip install google-cloud-translate==2.0.1
pip install --upgrade google-cloud-storage

2.運行測試代碼

def implicit():
    from google.cloud import storage

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    storage_client = storage.Client()

    # Make an authenticated API request
    buckets = list(storage_client.list_buckets())
    print(buckets)


只要運行上面的代碼不報錯,那就表示你的google授權(quán)成功,以后可以通過from google.cloud import translate_v3beta1 來使用google翻譯了。


示例代碼:

def translate_text_with_model(target, text, model="nmt"):
    """Translates text into the target language.

    Make sure your project is allowlisted.

    Target must be an ISO 639-1 language code.
    See https://g.co/cloud/translate/v2/translate-reference#supported_languages
    """
    import six
    from google.cloud import translate_v2 as translate

    translate_client = translate.Client()

    if isinstance(text, six.binary_type):
        text = text.decode("utf-8")

    # Text can also be a sequence of strings, in which case this method
    # will return a sequence of results for each text.
    result = translate_client.translate(text, target_language=target, model=model)

    print(u"Text: {}".format(result["input"]))
    print(u"Translation: {}".format(result["translatedText"]))
    print(u"Detected source language: {}".format(result["detectedSourceLanguage"]))



translate_text_with_model('zh-cn',"i love you")



輸出結(jié)果:

Text: i love you
Translation: 我愛你
Detected source language: en

參考:https://cloud.google.com/docs/authentication/getting-started
https://cloud.google.com/translate/docs/setup
參考:https://cloud.google.com/translate/markup

附錄:
帶詞匯表(glossaries)的翻譯
google還支持帶glossaries的翻譯,詞匯表是一種定制詞典,Cloud Translation API使用該詞典來一致地翻譯客戶的特定于域的術(shù)語。 這通常涉及指定如何轉(zhuǎn)換命名實體。

詞匯表用例可能涉及:

  • 產(chǎn)品名稱:例如,“ Google Home”必須翻譯為“ Google Home”。
  • 模棱兩可的詞:例如,“蝙蝠”一詞可以表示一件運動器材或動物。 如果您知道自己正在翻譯有關(guān)體育的單詞,則可能需要使用詞匯表向Cloud Translation API提供“蝙蝠”的體育翻譯,而不是動物的翻譯。
  • 借來的單詞:例如,法語中的“ bouillabaisse”翻譯為英語中的“ bouillabaisse”。 19世紀,英語是從法語借來的“ bouillabaisse”一詞。 缺乏法國文化背景的講英語的人可能不知道法式海鮮湯是燉魚。 詞匯表可以覆蓋翻譯,以便法語的“法式海鮮湯”翻譯為英語的“燉魚”。

詞匯表中的術(shù)語可以是單個標記(單詞)或短短語(通常少于五個單詞)。 當前,每個項目的詞匯表數(shù)量上限為1000。

使用詞匯表的主要步驟是:

1.創(chuàng)建詞匯表文件(比如文本文件,每一行都是“account\賬戶”這樣的形式。
2.使用Cloud Translation API創(chuàng)建詞匯表資源
3.指定請求翻譯時要使用的詞匯表
一個項目可以有多個詞匯表。 您可以獲得可用詞匯表的列表,并且可以刪除不再需要的詞匯表。

參考:https://cloud.google.com/translate/docs/advanced/glossary#format-glossary

參考:https://cloud.google.com/translate/docs/setup

小疑問:
Q:請問是否需要FQ才能使用google API 翻譯?
A:不需要。

七、翻譯效果
在對代碼進行翻譯的時候,對code、a標簽內(nèi)的代碼可以保留不翻譯。
但是對于blockquote標簽內(nèi)的代碼,還是翻譯了,所以還是不符合我的要求。
解決方案:將blockquote替換為code。

八、如何在linux上運行
加入以下代碼,并將json放到相同目錄就可以了。

1import os
2os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'credentials.json'

九、其他問題
(一)Updated on Sep-21
寫這文章的時候是3月份,半年過去了,要使用google 翻譯的時候,發(fā)錯它又不能用了。
運行implicit函數(shù)的時候,并不報錯,不過運行最終的代碼報以下錯誤:

File "C:\Users\Kevin\Anaconda3\lib\site-packages\google\auth\transport\request
s.py", line 189, in __call__
six.raise_from(new_exc, caught_exc)
File "", line 3, in raise_from
google.auth.exceptions.TransportError: HTTPSConnectionPool(host='oauth2.googleap
is.com', port=443): Max retries exceeded with url: /token (Caused by NewConnecti
onError(': Failed to establish a new connection: [WinError 10060] A connection attempt
failed because the connected party did not properly respond after a period of ti
me, or established connection failed because connected host has failed to respon
d'))

有人在這里問:https://pythonrepo.com/repo/googleapis-google-auth-library-python-python-implementing-authentications-schemes,可是看了之后還是沒有找到解決方案。

參考:https://www.youtube.com/watch?v=ocUZgSUO-4I,重新操作了一次,還是不行。

在西數(shù)服務(wù)器上運行,還是不行。

在國外服務(wù)器上運行,結(jié)果報以下的錯誤:

google.api_core.exceptions.Forbidden: 403 POST https://translation.googleapis.com/language/translate/v2?prettyPrint=false: User Rate Limit Exceeded

打開上面的網(wǎng)址,得到:

{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"errors": [
{
"message": "The request is missing a valid API key.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}

然后我進入到gcp console,搜索"translate",然后點那個translate模塊,提示我激活我的賬戶,點"active",然后google 翻譯就可以在國外服務(wù)器上用了。

可是本地還是不行,報之前同樣的錯誤,應(yīng)該是富墻的原因。

(二)Sep-19-2022
運行的時候報錯:

google.api_core.exceptions.BadRequest: 400 POST https://translation.googleapis.com/language/translate/v2?prettyPrint=false: Required Text

訪問報錯中出現(xiàn)的網(wǎng)站,同樣是顯示api key的問題:

然后登陸:https://console.cloud.google.com/apis/credentials?project=stately-furnace-307600
發(fā)現(xiàn)我的API key前面有一個感嘆號,顯示:
This API key is unrestricted. To prevent unauthorized use and quota theft, restrict your key to limit how it can be used.



相關(guān)推薦

QQ在線咨詢