示例谷歌翻译API密钥Python代码leyentsoup
ro  fr  en  es  pt  ar  zh  hi  de  ru
ART 2.0 ART 3.0 ART 4.0 ART 5.0 ART 6.0 Pinterest

Python代码的示例,将网站转换为其他语言,使用Google翻译API键+ Beautifulsoup

June 20, 2021, in Leadership and Attitude, by Neculai Fantanaru

您可以在此处查看完整代码:HTTPS://帕萨特斌.com/vs XL淌UCL

安装Python。 然后使用Windows10中的命令提示符(CMD)解释器安装以下两个库:

py- m pip install google-cloud-translate
py -m pip install beautifulsoup4

Python将自动翻译以下HTML标记:

示例谷歌翻译API密钥Python代码leyentsoup
 name="description" content="Your Text"/>

此外,Python代码还将自动翻译以下标记的内容(您的文本),但仅当这些标记被框架框架<! - 开始文章 - ><! - 开始文章 - > HTML评论。 当然,您需要用自己的标签替换这些标签。



 class="den_articol" itemprop="name">Your Text
 class="text_obisnuit">Your Text

class="text_obisnuit2">Your Text

class="text_obisnuit2">Your Text class="text_obisnuit">Your Text class="text_obisnuit">Your Text class="linkMare" href="https://neculaifantanaru.com/zh/">Your Text class="text_obisnuit2>Your Text

text_obisnuit2>Your Text

class="text_obisnuit2>Your Text

您需要一个扩展名的文件 .JSON. (我更名响了 秘密.JSON.)你可以从中获得 HTTPS://console.cloud.Google.com/ 遵循本教程如何获得 Google API键。

将秘密。将秘密文件复制到与下面的代码相同的文件夹有人code.朋友

google translate api key python tutorial example code

代码:复制并在任何翻译程序中运行以下代码(我用Pycripter) .不要忘记更改“files_from_folder”行中的路径。

from bs4 import BeautifulSoup
from bs4.formatter import HTMLFormatter
import requests
import json
import os
import six
from google.cloud import translate_v2 as translate

class UnsortedAttributes(HTMLFormatter):
    def attributes(self, tag):
        for k, v in tag.attrs.items():
            yield k, v

def translate_text(target, text):
    """Translates text into the target language.

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

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "secret.json"

    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)

    return result["translatedText"]

files_from_folder = r"C:\test"
source_language = 'EN'

use_translate_folder = False

destination_language = 'ZH'

extension_file = ".html"

import os

directory = os.fsencode(files_from_folder)

def recursively_translate(node):
    for x in range(len(node.contents)):
        if isinstance(node.contents[x], str):
            if node.contents[x].strip() != '':
                try:
                    newtext = translate_text(destination_language, node.contents[x])
                    node.contents[x].replaceWith(newtext)
                except:
                    pass
        elif node.contents[x] != None:
            recursively_translate(node.contents[x])
    
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    print(filename)
    if filename == 'y_key_e479323ce281e459.html' or filename == 'TS_4fg4_tr78.html':
        continue
    if filename.endswith(extension_file): 
        with open(os.path.join(files_from_folder, filename), encoding='utf-8') as html:
            soup = BeautifulSoup('
' + html.read() + '
'
, 'html.parser') for title in soup.findAll('title'): recursively_translate(title) for meta in soup.findAll('meta', {'name':'description'}): try: newtext = translate_text(destination_language, meta['content']) meta['content'] = newtext except: pass for h1 in soup.findAll('h1', {'itemprop':'name'}, class_='den_articol'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(h1)) < end_comment: recursively_translate(h1) for p in soup.findAll('p', class_='text_obisnuit'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(p)) < end_comment: recursively_translate(p) for p in soup.findAll('p', class_='text_obisnuit2'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(p)) < end_comment: recursively_translate(p) for span in soup.findAll('span', class_='text_obisnuit2'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(span)) < end_comment: recursively_translate(span) for li in soup.findAll('li', class_='text_obisnuit'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(li)) < end_comment: recursively_translate(li) for a in soup.findAll('a', class_='linkMare'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(a)) < end_comment: recursively_translate(a) for h4 in soup.findAll('h4', class_='text_obisnuit2'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(h4)) < end_comment: recursively_translate(h4) for h5 in soup.findAll('h5', class_='text_obisnuit2'): begin_comment = str(soup).index('') end_comment = str(soup).index('') if begin_comment < str(soup).index(str(h5)) < end_comment: recursively_translate(h5) print(f'{filename} translated') soup = soup.encode(formatter=UnsortedAttributes()).decode('utf-8') new_filename = f'{filename.split(".")[0]}_{destination_language}.html' if use_translate_folder: try: with open(os.path.join(files_from_folder+r'\translated', new_filename), 'w', encoding='utf-8') as new_html: new_html.write(soup[5:-6]) except: os.mkdir(files_from_folder+r'\translated') with open(os.path.join(files_from_folder+r'\translated', new_filename), 'w', encoding='utf-8') as new_html: new_html.write(soup[5:-6]) else: with open(os.path.join(files_from_folder, new_filename), 'w', encoding='utf-8') as html: html.write(soup[5:-6])

That's all folks.

If you like my code, then make me a favor: translate your website into Romanian, "ro".

另请检查这个翻译代码: BeautifulSoup Library 要么 DEEPL+API Key 要么版本3.要么版本4.


Latest articles accessed by readers:

  1. An Eye To See And A Mind To Understand
  2. Turn Towards Me With An Eye Full Of Your Own Gaze
  3. The Snapshot Of Magic In God's Universe
  4. Rhythm Of My Heart

Donate via Paypal

Alternate Text

RECURRENT DONATION

Donate monthly to support
the NeculaiFantanaru.com project

SINGLE DONATION

Donate the desired amount to support
the NeculaiFantanaru.com project

Donate by Bank Transfer

Account Ron: RO34INGB0000999900448439

Open account at ING Bank

Join The Neculai Fantanaru Community



* Note: If you want to read all my articles in real time, please check the romanian version !

decoration
About | Site Map | Partners | Feedback | Terms & Conditions | Privacy | RSS Feeds
© Neculai Fântânaru - All rights reserved