66 lines
2.7 KiB
Python
66 lines
2.7 KiB
Python
import os
|
|
from pathlib import Path
|
|
from openai import OpenAI
|
|
import requests
|
|
client = OpenAI(api_key="example-key")
|
|
DIFY_API_KEY = "example-key"
|
|
|
|
def translate_text(api_key=DIFY_API_KEY, user_id="mark-doc", inputs={'input_text': 'Hello, how are you?', 'target_language': 'es'}):
|
|
url = 'https://api.dify.ai/v1/workflows/run'
|
|
headers = {
|
|
'Authorization': f'Bearer {api_key}',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
data = {
|
|
'inputs': inputs,
|
|
'response_mode': 'blocking',
|
|
'user': user_id
|
|
}
|
|
response = requests.post(url, headers=headers, json=data)
|
|
|
|
try:
|
|
# Check if the response status code indicates success (200 OK)
|
|
response.raise_for_status()
|
|
# Attempt to decode the JSON response
|
|
json_response = response.json()
|
|
return json_response['data']['outputs']
|
|
except requests.exceptions.HTTPError as http_err:
|
|
# Handle HTTP errors (e.g., 404 Not Found, 401 Unauthorized)
|
|
print(f'HTTP error occurred: {http_err}')
|
|
except requests.exceptions.RequestException as req_err:
|
|
# Handle other requests-related errors (e.g., connection errors)
|
|
print(f'Request error occurred: {req_err}')
|
|
except json.decoder.JSONDecodeError:
|
|
# Handle JSON decode errors (e.g., empty response body)
|
|
print('Failed to decode JSON response')
|
|
|
|
# Return None or an appropriate value in case of error
|
|
return None
|
|
|
|
def translate_markdown_files(input_folder, output_folder, target_language="japanese"):
|
|
input_folder = Path(input_folder)
|
|
output_folder = Path(output_folder)
|
|
for markdown_file in input_folder.rglob("*.md"):
|
|
relative_path = markdown_file.relative_to(input_folder)
|
|
output_file = output_folder / relative_path
|
|
output_file.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
with open(markdown_file, "r", encoding="utf-8") as f:
|
|
content = f.read()
|
|
print(f"Translating {markdown_file} to {target_language}")
|
|
# print(content)
|
|
|
|
translated_content = translate_text(inputs={'input_text': content, 'target_language': target_language})
|
|
|
|
# Inside the loop, after translating the content
|
|
if translated_content is not None:
|
|
translated_text = translated_content['final']
|
|
with open(output_file, "w", encoding="utf-8") as f:
|
|
f.write(translated_text)
|
|
else:
|
|
print(f"Warning: No translated content for {markdown_file}. Skipping file.")
|
|
|
|
print(f"Translation completed. Translated files are saved in {output_folder}")
|
|
|
|
# Example usage
|
|
translate_markdown_files("zh_CN/explore", "jp/explore", target_language="japanese") |