Heim  >  Artikel  >  Java  >  Erreichen Sie mehrsprachige Unterstützung und internationale Anwendungen durch Spring Boot

Erreichen Sie mehrsprachige Unterstützung und internationale Anwendungen durch Spring Boot

PHPz
PHPzOriginal
2023-06-23 09:09:062156Durchsuche

Mit der Entwicklung der Globalisierung müssen immer mehr Websites und Anwendungen mehrsprachige Unterstützung und Internationalisierungsfunktionen bieten. Für Entwickler ist die Implementierung dieser Funktionen keine leichte Aufgabe, da sie die Berücksichtigung vieler Aspekte erfordert, wie z. B. Sprachübersetzung, Datums-, Zeit- und Währungsformate usw. Mithilfe des Spring Boot-Frameworks können wir jedoch problemlos mehrsprachige Unterstützung und internationale Anwendungen implementieren.

Lassen Sie uns zunächst die von Spring Boot bereitgestellte LocaleResolver-Schnittstelle verstehen. Die LocaleResolver-Schnittstelle ist eine Schnittstelle zum Parsen und Zurückgeben von Locale-Objekten. Das Locale-Objekt stellt die vom Benutzer verwendete Sprache, Region und zugehörige Informationen dar. In Spring Boot verfügt die LocaleResolver-Schnittstelle über zwei Implementierungen: CookieLocaleResolver und AcceptHeaderLocaleResolver.

CookieLocaleResolver analysiert Locale-Objekte mithilfe von Browser-Cookies. Wenn der Benutzer eine Sprache auswählt, wird das Locale-Objekt auf den Browser eingestellt und in einem Cookie gespeichert. Daher kann CookieLocaleResolver beim nächsten Besuch der Website durch den Benutzer das Locale-Objekt aus dem Cookie lesen.

AcceptHeaderLocaleResolver löst Locale-Objekte über das Feld „Accept-Language“ im HTTP-Anforderungsheader auf. Wenn der Benutzer eine Anfrage mit dem Accept-Language-Header sendet, analysiert AcceptHeaderLocaleResolver das Locale-Objekt und gibt es zurück.

Zusätzlich zur LocaleResolver-Schnittstelle stellt Spring Boot auch die MessageSource-Schnittstelle bereit. Die MessageSource-Schnittstelle wird zum Parsen und Verarbeiten mehrsprachiger Nachrichten verwendet. In Spring Boot verfügt die MessageSource-Schnittstelle über zwei Implementierungen: ResourceBundleMessageSource und ReloadableResourceBundleMessageSource.

ResourceBundleMessageSource ist eine einfache Implementierung, die mehrsprachige Nachrichten aus einer bereitgestellten Eigenschaftendatei analysiert. Die Eigenschaftendatei enthält Schlüssel-Wert-Paare, wobei der Schlüssel die Nachrichtenkennung und der Wert die Nachricht selbst ist. Für englische und chinesische Nachrichten könnte die Eigenschaftendatei beispielsweise so aussehen:

# messages_en_US.properties
hello=Hello world!

# messages_zh_CN.properties
hello=你好,世界!

Wenn wir dem Benutzer eine Nachricht anzeigen müssen, können wir die MessageSource-Schnittstelle verwenden, um die entsprechende Nachricht abzurufen und sie dann dem Benutzer anzuzeigen.

ReloadableResourceBundleMessageSource ist ResourceBundleMessageSource sehr ähnlich, ermöglicht uns jedoch, die Eigenschaftendatei neu zu laden, während die Anwendung ausgeführt wird. Dies ist nützlich für Anwendungen, die häufig aktualisierte Nachrichten erfordern.

Bei der Implementierung von mehrsprachiger Unterstützung und internationalen Anwendungen müssen wir in der Regel Probleme mit Datum, Uhrzeit und Währungsformat berücksichtigen. Spring Boot bietet eine FormattingConversionServiceFactoryBean-Klasse, um diese Probleme zu lösen. Wir können damit Datums-, Zeit- und Währungsformate definieren und sie in mehrsprachigen Anwendungen gültig machen.

Das Folgende ist ein Beispiel für die Verwendung der FormattingConversionServiceFactoryBean-Klasse zum Definieren von Datums-, Uhrzeit- und Währungsformaten:

@Configuration
public class AppConfig {
  @Bean
  public FormattingConversionServiceFactoryBean formattingConversionServiceFactoryBean() {
    FormattingConversionServiceFactoryBean factoryBean = new FormattingConversionServiceFactoryBean();
    factoryBean.setRegisterDefaultFormatters(false);
    factoryBean.setFormatters(Set.of(dateTimeFormatter(), dateFormatter(), numberFormatter()));
    return factoryBean;
  }

  private DateTimeFormatter dateTimeFormatter() {
    return DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale());
  }

  private DateTimeFormatter dateFormatter() {
    return DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(LocaleContextHolder.getLocale());
  }

  private NumberFormatter numberFormatter() {
    return new NumberFormatter(NumberFormat.getCurrencyInstance(LocaleContextHolder.getLocale()));
  }
}

Im obigen Code erstellen wir eine FormattingConversionServiceFactoryBean zum Definieren von Datums-, Uhrzeit- und Währungsformaten. Wir verwenden DateTimeFormatter und NumberFormatter, um Datums-, Uhrzeit- und Währungsformate zu definieren, und verwenden die Methode LocaleContextHolder.getLocale(), um das Locale-Objekt des aktuellen Benutzers abzurufen.

Schließlich müssen wir LocaleResolver und MessageSource in unserer Anwendung einrichten, um mehrere Sprachen zu unterstützen. Dies können wir mithilfe der von Spring Boot bereitgestellten Annotationen @EnableWebMvc und @Configuration erreichen. Hier ist eine Beispielkonfigurationsklasse:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
  @Bean
  public LocaleResolver localeResolver() {
    AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
    resolver.setDefaultLocale(Locale.US);
    return resolver;
  }

  @Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("messages");
    messageSource.setFallbackToSystemLocale(false);
    return messageSource;
  }

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    registry.addInterceptor(localeChangeInterceptor);
  }
}

Im obigen Code haben wir eine WebConfig-Konfigurationsklasse erstellt und Spring MVC-Funktionen mithilfe der Annotation @EnableWebMvc aktiviert. Wir verwenden die Bean localeResolver() und die Bean messageSource(), um LocaleResolver und MessageSource festzulegen. Wir haben auch einen LocaleChangeInterceptor mit der Methode addInterceptors() hinzugefügt und in diesem Interceptor haben wir den Parameter „lang“ verwendet, um die Sprache des Benutzers zu wechseln.

Zusammenfassend lässt sich sagen, dass wir über die von Spring Boot bereitgestellten LocaleResolver-Schnittstellen, MessageSource-Schnittstellen und FormattingConversionServiceFactoryBean-Klassen problemlos mehrsprachige Unterstützung und internationale Anwendungen implementieren können. Mit den oben genannten Methoden können wir einfacher und bequemer eine globale Anwendung erstellen, die den unterschiedlichen Sprach-, Kultur- und regionalen Anforderungen der Benutzer gerecht wird.

Das obige ist der detaillierte Inhalt vonErreichen Sie mehrsprachige Unterstützung und internationale Anwendungen durch Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn