ホームページ Java &#&チュートリアル Spring Boot を通じて多言語サポートと国際アプリケーションを実現

Spring Boot を通じて多言語サポートと国際アプリケーションを実現

Jun 23, 2023 am 09:09 AM
spring boot 多言語サポート 国際出願

グローバリゼーションの進展に伴い、多言語サポートと国際化機能を提供する必要のある Web サイトやアプリケーションがますます増えています。開発者にとって、これらの機能を実装することは、言語翻訳、日付、時刻、通貨の形式など、多くの側面を考慮する必要があるため、簡単な作業ではありません。ただし、Spring Boot フレームワークを使用すると、多言語サポートと国際アプリケーションを簡単に実装できます。

まず、Spring Boot が提供する LocaleResolver インターフェイスについて理解しましょう。 LocaleResolver インターフェイスは、Locale オブジェクトを解析して返すために使用されるインターフェイスです。 Locale オブジェクトは、ユーザーが使用する言語、地域、および関連情報を表します。 Spring Boot では、LocaleResolver インターフェイスには CookieLocaleResolver と AcceptHeaderLocaleResolver の 2 つの実装があります。

CookieLocaleResolver は、ブラウザーの Cookie を通じて Locale オブジェクトを解析します。ユーザーが言語を選択すると、Locale オブジェクトがブラウザに設定され、Cookie に保存されます。したがって、次回ユーザーが Web サイトにアクセスすると、CookieLocaleResolver は Cookie から Locale オブジェクトを読み取ることができます。

AcceptHeaderLocaleResolver は、HTTP 要求ヘッダーの Accept-Language フィールドを通じて Locale オブジェクトを解析します。ユーザーが Accept-Language ヘッダーを含むリクエストを送信すると、AcceptHeaderLocaleResolver は Locale オブジェクトを解析して返します。

LocaleResolver インターフェイスに加えて、Spring Boot は MessageSource インターフェイスも提供します。 MessageSource インターフェイスは、多言語メッセージを解析して処理するために使用されます。 Spring Boot では、MessageSource インターフェイスには ResourceBundleMessageSource と ReloadableResourceBundleMessageSource という 2 つの実装があります。

ResourceBundleMessageSource は、提供されたプロパティ ファイルから多言語メッセージを解析する単純な実装です。プロパティ ファイルにはキーと値のペアが含まれており、キーはメッセージ識別子、値はメッセージ自体です。たとえば、英語と中国語のメッセージの場合、プロパティ ファイルは次のようになります。

# messages_en_US.properties
hello=Hello world!

# messages_zh_CN.properties
hello=你好,世界!
ログイン後にコピー

ユーザーにメッセージを表示する必要がある場合、MessageSource インターフェイスを使用して対応するメッセージを取得し、表示します。それをユーザーに伝えます。

ReloadableResourceBundleMessageSource は ResourceBundleMessageSource に非常に似ていますが、アプリケーションの実行中にプロパティ ファイルを再ロードできます。これは、メッセージを頻繁に更新する必要があるアプリケーションに役立ちます。

多言語サポートと国際アプリケーションを実装する場合、通常、日付、時刻、通貨の形式の問題を考慮する必要があります。 Spring Boot は、これらの問題を解決するために FormattingConversionServiceFactoryBean クラスを提供します。これを使用して日付、時刻、通貨の形式を定義し、多言語アプリケーションで有効にすることができます。

以下は、FormatttingConversionServiceFactoryBean クラスを使用して日付、時刻、および通貨の形式を定義する例です。

@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()));
  }
}
ログイン後にコピー

上記のコードでは、日付、時刻、および通貨の形式を定義するために FormattingConversionServiceFactoryBean を作成します。 DateTimeFormatter と NumberFormatter を使用して日時と通貨の形式を定義し、LocaleContextHolder.getLocale() メソッドを使用して現在のユーザーの Locale オブジェクトを取得します。

最後に、複数の言語をサポートするためにアプリケーションで LocaleResolver と MessageSource を設定する必要があります。これは、Spring Boot によって提供される @EnableWebMvc および @Configuration アノテーションを使用して実現できます。以下は構成クラスのサンプルです:

@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);
  }
}
ログイン後にコピー

上記のコードでは、WebConfig 構成クラスを作成し、@EnableWebMvc アノテーションを使用して Spring MVC 機能を有効にします。 LocaleResolver() Bean と messageSource() Bean を使用して LocaleResolver と MessageSource を設定します。また、addInterceptors() メソッドを使用して LocaleChangeInterceptor を追加しました。このインターセプターでは、「lang」パラメーターを使用してユーザーの言語を切り替えました。

要約すると、Spring Boot が提供する LocaleResolver インターフェイス、MessageSource インターフェイス、および FormattingConversionServiceFactoryBean クラスを通じて、多言語サポートと国際アプリケーションを簡単に実装できます。上記の方法を使用すると、ユーザーのさまざまな言語、文化、地域のニーズを満たすグローバル アプリケーションをより簡単かつ便利に構築できます。

以上がSpring Boot を通じて多言語サポートと国際アプリケーションを実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Gin フレームワークを使用して国際化および多言語サポート機能を実装する Gin フレームワークを使用して国際化および多言語サポート機能を実装する Jun 23, 2023 am 11:07 AM

グローバル化の進展とインターネットの普及に伴い、さまざまな人々のニーズを満たすために、ますます多くの Web サイトやアプリケーションが国際化や多言語サポート機能の実現に努め始めています。これらの機能を実現するには、開発者はいくつかの高度なテクノロジーとフレームワークを使用する必要があります。この記事では、Gin フレームワークを使用して国際化と多言語サポート機能を実装する方法を紹介します。 Gin フレームワークは、Go 言語で書かれた軽量の Web フレームワークです。効率的で使いやすく、柔軟性が高いため、多くの開発者にとって好ましいフレームワークとなっています。その上、

Spring Boot + MyBatis + Atomikos + MySQL (ソースコード付き) Spring Boot + MyBatis + Atomikos + MySQL (ソースコード付き) Aug 15, 2023 pm 04:12 PM

実際のプロジェクトでは、分散トランザクションを避けるように努めます。ただし、場合によってはサービスを分割する必要があり、分散トランザクションの問題が発生することがあります。同時に、分散取引についても面接で質問されるので、このケースで練習し、面接で 123 について話すことができます。

Golang を使用して Web アプリケーションの多言語サポートを実装する方法 Golang を使用して Web アプリケーションの多言語サポートを実装する方法 Jun 24, 2023 pm 12:25 PM

グローバル化の継続的な進展に伴い、多言語の必要性がますます一般的になり、Webアプリケーションの多言語サポートが開発者にとって検討すべき課題となっています。効率的で使いやすいプログラミング言語である Golang も、この問題をうまく解決できます。この記事では、Golang を使用して Web アプリケーションの多言語サポートを実装する方法について説明します。 1. 多言語サポートの基本原則 Web アプリケーションの多言語サポートの鍵は、異なる言語のテキストをどのように識別して保存するかにあります。一般的なアプローチは次のとおりです。

ThinkPHP6 多言語切り替え: 国際的なアプリケーションの実現 ThinkPHP6 多言語切り替え: 国際的なアプリケーションの実現 Aug 25, 2023 pm 08:31 PM

ThinkPHP6 多言語切り替え: 国際的なアプリケーションの実現 インターネットの急速な発展とグローバリゼーションのプロセスに伴い、さまざまな国や地域のユーザーのニーズを満たすために、ますます多くの Web サイトやアプリケーションが多言語機能をサポートする必要があります。 ThinkPHP6 を使用して Web アプリケーションを開発する場合、多言語切り替えを実現することは重要なタスクです。この記事では、ユーザーに便利な多言語エクスペリエンスを提供するために、ThinkPHP6 で国際アプリケーションを実装する方法を紹介します。なぜ多言語切り替えが必要なのでしょうか?グローバリゼーションの文脈において、ユーザーはインターネットを使用します

Laravel を使用して多言語サポートを実装する方法 Laravel を使用して多言語サポートを実装する方法 Nov 04, 2023 am 11:07 AM

Laravel は、Web アプリケーション開発をより簡単かつ効率的にする多数の機能とライブラリを提供する非常に人気のある PHP フレームワークです。重要な機能の 1 つは多言語サポートであり、Laravel は独自の言語パッケージ メカニズムとサードパーティ ライブラリを通じて多言語サポートを実現します。この記事では、Laravel を使用して多言語サポートを実装する方法を紹介し、具体的なコード例を示します。 Laravelの言語パック機能を利用する Laravelには多言語対応を簡単に実現できる言語パックの仕組みが備わっています。

Spring Boot は MySQL の読み取り/書き込み分離テクノロジを実装します Spring Boot は MySQL の読み取り/書き込み分離テクノロジを実装します Aug 15, 2023 pm 04:52 PM

読み取りと書き込みの分離を実現する方法、Spring Boot プロジェクト、データベースは MySQL、永続層は MyBatis を使用します。

Webman フレームワークを使用して国際化と多言語サポートを実現するにはどうすればよいですか? Webman フレームワークを使用して国際化と多言語サポートを実現するにはどうすればよいですか? Jul 09, 2023 pm 03:51 PM

現在、インターネット技術の継続的な発展に伴い、多言語化と国際化をサポートする必要がある Web サイトやアプリケーションがますます増えています。 Web 開発では、フレームワークを使用すると、開発プロセスを大幅に簡素化できます。この記事では、Webman フレームワークを使用して国際化と多言語サポートを実現する方法を紹介し、いくつかのコード例を示します。 1. Webman フレームワークとは何ですか? Webman は、Web アプリケーション開発のための豊富な機能と使いやすいツールを提供する軽量の PHP ベースのフレームワークです。その 1 つは国際化と多元化です。

Spring Boot で WebSocket を使用してプッシュおよび通知機能を実装する Spring Boot で WebSocket を使用してプッシュおよび通知機能を実装する Jun 23, 2023 am 11:47 AM

最新の Web アプリケーション開発では、WebSocket は即時通信とリアルタイム データ転送のための一般的なテクノロジです。 SpringBoot フレームワークは統合 WebSocket のサポートを提供し、開発者がプッシュおよび通知機能を実装するのに非常に便利です。この記事では、WebSocket を使用して SpringBoot にプッシュ機能と通知機能を実装する方法を紹介し、簡単なリアルタイム オンライン チャット ルームの実装を示します。 SpringBoot プロジェクトを作成する まず、

See all articles