Была как то задача перевести один проект на nodejs на различные языки.
По моему субъективному мнению яндекс переводит по лучше гугла, по крайней мере в смысловом значении.
Соответственно мне нужен был способ перевода содержания js файлов без большого геморроя.
Накидал рабочий скрипт, протестирован в живую, работает отлично, делюсь с вами.
Документацию о том как получить ключ и указать папку (яндексовская фишка) спокойно найдёте по соответствующему поисковому запросу, там же и как получить список доступных вам языков.
По моему субъективному мнению яндекс переводит по лучше гугла, по крайней мере в смысловом значении.
Соответственно мне нужен был способ перевода содержания js файлов без большого геморроя.
Накидал рабочий скрипт, протестирован в живую, работает отлично, делюсь с вами.
Python:
import json
import requests
IAM_TOKEN = 'ТОКЕН'
folder_id = 'ПАПКА(ЯНДЕКСОВСКАЯ ФИШКА)'
target_language = 'en'
def translate_text(text):
body = {
"targetLanguageCode": target_language,
"texts": [text],
"folderId": folder_id,
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {0}".format(IAM_TOKEN)
}
response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
json=body,
headers=headers
)
if response.status_code == 200:
response_json = json.loads(response.text)
return response_json['translations'][0]['text']
else:
print(f"Failed to translate text: {text}")
return text
def translate_json_file(input_file_path, output_file_path):
with open(input_file_path, 'r') as input_file:
input_data = json.load(input_file)
output_data = {}
for key, value in input_data.items():
if isinstance(value, dict):
output_data[key] = translate_dict(value)
elif isinstance(value, list):
output_data[key] = translate_list(value)
elif isinstance(value, str):
output_data[key] = translate_text(value)
else:
output_data[key] = value
with open(output_file_path, 'w') as output_file:
json.dump(output_data, output_file, ensure_ascii=False, indent=4)
def translate_list(input_list):
output_list = []
for value in input_list:
if isinstance(value, dict):
output_list.append(translate_dict(value))
elif isinstance(value, list):
output_list.append(translate_list(value))
elif isinstance(value, str):
output_list.append(translate_text(value))
else:
output_list.append(value)
return output_list
def translate_dict(input_dict):
output_dict = {}
for key, value in input_dict.items():
if isinstance(value, dict):
output_dict[key] = translate_dict(value)
elif isinstance(value, list):
output_dict[key] = translate_list(value)
elif isinstance(value, str):
output_dict[key] = translate_text(value)
else:
output_dict[key] = value
return output_dict
if __name__ == '__main__':
input_file_path = 'ru.json'
output_file_path = 'en.json'
translate_json_file(input_file_path, output_file_path)
Документацию о том как получить ключ и указать папку (яндексовская фишка) спокойно найдёте по соответствующему поисковому запросу, там же и как получить список доступных вам языков.