Es ist mühsam, "messages.properties" zu pflegen! !! Wenn Sie es mit Eclipse berühren, wird es ein Problem sein, da es "native2ascii" ohne Erlaubnis ausführen wird! !! 11! !![^ 1]
Schreiben wir also in "YAML"
Wenn i18n von einer Anwendung unterstützt wird, die Spring Framework verwendet, wird eine Ressourcendatei wie "messages.properties" (Eigenschaftendatei mit der Erweiterung ".properties") verwendet.
Es ist so ein Typ
message_ja.properties
#Können Sie nicht in einer hierarchischen Struktur schreiben? Nein!
site.title=Seitentitel
site.description=Seitenbeschreibung
page.header.links.index=Site oben
page.header.links.gettingstart=Loslegen
page.header.links.document=Dokument
page.header.links.community=Gemeinschaft
Ich möchte das so schreiben. [^ 2]
message_ja.yaml
#Können Sie in einer hierarchischen Struktur schreiben? Muss ich native2ascii machen? Yay!
site:
title: "Seitentitel"
description: "Seitenbeschreibung"
page:
header:
links:
index: "Site oben"
gettingstart: "Loslegen"
document: "Dokument"
community: "Gemeinschaft"
Ich konnte kein Implementierungsbeispiel für Zubari finden, selbst wenn ich es gegoogelt habe, also werde ich es so schreiben.
Ein Beispiel für eine Projektkonfiguration, um Nachrichtenressourcen YAML-fähig zu machen. [^ 3] YamlResourceBundle wird zum Lesen aus der Yaml-Datei verwendet. [^ 4]
Der Inhalt jeder Datei ist wie folgt. Es ist einfach zu tun, so dass Sie es lesen können. Eine ausführliche Erklärung entfällt.
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE'
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
baseName = 'exercise1'
version = '0.0.1-SNAPSHOT'
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework.boot:spring-boot-devtools'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
compile 'net.rakugakibox.util:yaml-resource-bundle:1.1'
}
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
ext['mainClass'] = 'pkg.exercise1.App'
ext['thymeleaf.version'] = '3.0.9.RELEASE'
ext['thymeleaf-layout-dialect.version'] = '2.3.0'
config/application.yml
spring:
thymeleaf:
mode: "HTML"
messages:
basename: "i18n/messages"
encoding: "UTF-8"
i18n/messages.yml
site:
title: "Excercise"
description: "Diese Nachricht wird aus der YAML-Ressourcendatei ausgegeben"
templates/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title data-th-text="#{site.title}">Title</title>
</head>
<body>
<div>
<article>
<h1 data-th-text="#{site.title}">Title</h1>
<p data-th-text="#{site.description}">This is Index page. Yeah!</p>
<hr />
<h2>API</h2>
<ul>
<li><a href="#" data-th-href="@{/api/hello}">/api/hello</a></li>
</ul>
</article>
</div>
</body>
</html>
pkg/exercise1/App.java
package pkg.exercise1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
}
pkg/exercise1/configurations/MessageSourceConfig.java
package pkg.exercise1.configurations;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import net.rakugakibox.util.YamlResourceBundle;
@Configuration
public class MessageSourceConfig {
@Bean("messageSource")
public MessageSource messageSource(
@Value("${spring.messages.basename}") String basename,
@Value("${spring.messages.encoding}") String encoding
) {
YamlMessageSource ms = new YamlMessageSource();
ms.setBasename(basename);
ms.setDefaultEncoding(encoding);
ms.setAlwaysUseMessageFormat(true);
ms.setUseCodeAsDefaultMessage(true);
ms.setFallbackToSystemLocale(true);
return ms;
}
}
class YamlMessageSource extends ResourceBundleMessageSource {
@Override
protected ResourceBundle doGetBundle(String basename, Locale locale) throws MissingResourceException {
return ResourceBundle.getBundle(basename, locale, YamlResourceBundle.Control.INSTANCE);
}
}
pkg/exercise1/controllers/IndexController.java
package pkg.exercise1.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/")
String home() {
return "index";
}
}
Starten Sie die Spring Boot-Anwendung und versuchen Sie, auf [http: // localhost: 8080](http: // localhost: 8080) zuzugreifen.
Ich habs gemacht. [^ 5]
[^ 1]: Netbeans zeigt mehrere Sprachen nebeneinander an, ist also einfach zu übersetzen und führt nicht "native2ascii" aus. Er versteht die Geschichte. Ich muss jedoch sagen, dass es ehrlich gesagt subtil ist, wenn es einfach als Entwicklungsumgebung zu verwenden ist, da ihm verschiedene Funktionen fehlen.
[^ 2]: Jeder möchte so schreiben. Ich möchte nicht schreiben, aber diese Seite wird nicht geöffnet. (Namensbegründung)
[^ 3]: Es gibt einige zusätzliche Pakete, aber keine Sorge.
[^ 4]: Zu diesem Zweck müssen Sie nur die Klasse YamlResourceBundle.Control
verwenden.
[^ 5]: Bestätigte Anzeige im englischen (en) Gebietsschema. Beweise? Hey, das ist: smile_imp:
Recommended Posts