【发布时间】:2020-05-12 10:33:58
【问题描述】:
我是 springboot 的新手,我正在尝试创建一个 Web 应用程序来翻译正在呈现的页面的语言。
我知道其中一种方法是创建 LocaleResolver 和 LocaleChangeInterceptor 的 bean 并将此拦截器添加到已实现的方法中WebMvcConfigurer 的。 这个过程非常繁琐和忙碌,因为它需要对页面上显示的每个单词进行每次翻译。这是一个例子:
我正在尝试翻译的网页;
<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Teacher page</title>
<link rel="stylesheet" th:href="@{~/css/landing.css}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<div th:replace="fragments/frag :: header"></div>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2 th:text="#{form}"></h2>
<form th:action="@{/teacher/save}" method="post" th:object="${teacher}">
<input th:field="*{id}" hidden>
<div class="form-group">
<label for="name" th:text="#{name}"></label>
<input type="text" class="form-control" id="name" th:field="*{name}">
<span class="class_css" th:text="${teacherError.nameError}"></span>
</div>
<div class="form-group">
<label for="mobileNumber" th:text="#{mobile}"></label>
<input type="text" class="form-control" id="mobileNumber" th:field="*{mobileNumber}">
<span class="class_css" th:text="${teacherError.mobileNumberError}"></span>
</div>
<div class="form-group">
<label for="exampleInputEmail1" th:text="#{email}"></label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" th:field="*{email}">
<span class="class_css" th:text="${teacherError.emailError}"></span>
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<button type="submit" class="btn btn-dark" th:text="#{submit}"></button>
</form>
<span th:text="${message}"></span>
</div>
<div class="col-md-8">
<h3 th:text="#{display}"></h3>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col" th:text="#{serial}"></th>
<th scope="col" th:text="#{name}"></th>
<th scope="col" th:text="#{mobile}"></th>
<th scope="col" th:text="#{email}"></th>
<th scope="col" th:text="#{status}"></th>
<th scope="col" th:text="#{action}"></th>
</tr>
</thead>
<tbody>
<tr th:each="teacher, istat: ${teacherList}">
<td th:text="${istat.index + 1}"></td>
<td th:text="${teacher.name}"></td>
<td th:text="${teacher.mobileNumber}"></td>
<td th:text="${teacher.email}"></td>
<td>ACTIVE</td>
<td><a th:href="@{/teacher/edit}+${teacher.id}"><button class="btn btn-warning">Edit</button></a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"></script>
</body>
</html>
仅针对此页面,我创建了 messages.properties、messages_np.propertoies(将其转换为尼泊尔语)和 messages_fr.properties 将其转换为法语。
institute=Institute
info=Info
teacher=Teacher
departments=Departments
form=Form
display=Display Data
name=Name
mobile=Mobile Number
email=Email Address
address=Address
status=Status
action=Action
submit=Submit
serial=S No.
messages.properties
institute=संस्थान
info=जानकारी
teacher=शिक्षक
departments=विभागहरु
form=फारम
display=प्रदर्शन
name=नाम
mobile=मोबाइल
email=ईमेल
address=ठेगाना
status=स्थिति
action=कार्य
submit=बुझाउनुहोस्
serial=सिरियल
messages_np.properties
institute=Institut
info=Info
teacher=Prof
departments=Départements
form=Forme
display=Afficher
name=Nom
mobile=Mobile
email=Email
address=Adresse
status=Statut
action=Action
submit=Soumettre
serial=En série
messages_fr.properties
现在,我想做的是,我不想自己编写所有这些翻译,而是想将这些英文数据/单词传递给一些现有的翻译人员,例如 Google 翻译,获取这些数据返回并在同一页面上重新渲染。
有什么办法可以做到吗?
或者有什么更好的方法来做到这一点,我不必自己翻译网页上的所有这些词?
【问题讨论】:
-
这是个坏主意。您需要知道单词的上下文才能进行适当的翻译。没有上下文,它会给你一个完全错误的翻译。即使在您自己的翻译中,“En série”也是“Serial”的翻译,但不是“Serial Number”的意思。
标签: java spring-boot maven language-translation