java - springboot web应用程序中的语言翻译
问题描述
我是 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.
消息属性
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
现在,我想做的是,我不想自己编写所有这些翻译,而是想将这些英文数据/单词传递给一些现有的翻译,例如谷歌翻译,取回这些数据并在同一页面上重新呈现。
有没有办法我可以做到这一点?
或者有什么更好的方法来做到这一点,我不必自己翻译网页上的所有这些词?
解决方案
翻译者会出现很多错误,从长远来看,这是一个坏主意。
我在职业生涯中遇到过这种情况。
您必须在不同的属性文件中维护所有语言文本,这也是有效的。
推荐阅读
- c++ - 以毫秒为单位的媒体基础曝光
- ubuntu - Nginx 重定向问题
- android - [React-Native]:未连接 Android 设备或模拟器
- r - 用于数据框中值比例的 lmer 模型
- python - 错误:不可散列的类型:带有 Django 和 API 数据的“dict”
- javascript - 数据在我已经定义时未定义?
- r - 在 R 中使用 OSM 绘制纽约市行政区时出错
- c# - 在运行时根据端点提供程序使用参数来控制 JSON 反序列化的微小变化
- c# - 将模型传递给 ViewModel 按钮单击 Xamarin MVVM
- javascript - 为什么我可以将 const 与 Array.slice() 一起使用并且仍然分配一个新值?