jsurfer's language selection page >
jsurfer's homepage >
Web Apps >
On-the-Fly Auto translation by ChatGPT -From English to Japanese-
- "With no html tags&with linebreaks" version -
Created on: August 21, 2023
Last updated on: September 01, 2023
This Web App translates English Web page into Japanese on-the-fly by using OpenAI API(ChatGPT)
"with no html tags&with linebreaks".
Download this version from
here. Check my web page for
"With html tags" version on how to use because the usage is exactly the same.
As with previous versions, we will have this Web App translate this English page.
http://cheezsj.com/ios/ios_en.html
The result is this. Since this is "With no html tags&with linebreaks" version, readability is a lot better than previous versions:
And just for the comparison, here is the "With no html tags&no linebreaks" version:
Ahd here is the "With html tags" version:
==========
For your reference, below is the codes for this Web App:
app.py
from flask import Flask, request, render_template
import requests
import openai
from bs4 import BeautifulSoup # Added
openai.api_key = "ENTER-YOUR-API-KEY-HERE"
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# Get URL from the user's input
url = request.form.get('url')
# Get info of the Web page
response = requests.get(url)
page_content = response.text
# Get rid of HTML tags
soup = BeautifulSoup(page_content, 'html.parser')
text_only = soup.get_text()
# Translate to Japanese
prompt_text = "Translate English to Japanese:\n" + text_only[:3000] # Only for the first 3000 characters
translation = openai.Completion.create(
model="text-davinci-003",
prompt=prompt_text,
max_tokens=2000,
n=1,
stop=None,
temperature=0.5
)
translated_content = translation.choices[0].text.strip()
translated_content = translated_content.replace("\n", "<br>") # Replace the linebreak with <br>
# Display translation
return render_template('translated.html', content=translated_content)
# If 'GET'request, then display URL entry page
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)
|
index.html
<!DOCTYPE html>
<html>
<head>
<title>URL Translator</title>
</head>
<body>
<form action="/" method="post">
<label for="url">Enter a URL:</label>
<input type="text" name="url" id="url">
<button type="submit">Translate</button>
</form>
</body>
</html>
|
translated.html
<!DOCTYPE html>
<html>
<head>
<title>Translation</title>
</head>
<body>
<h1>Translated Content:</h1>
<div>{{ content|safe }}</div>
</body>
</html>
|