Thymeleafのth:lang属性を完全解説!初心者でもわかる国際化対応の方法
生徒
「先生、Thymeleafで多言語対応をするにはどうすればいいんですか?」
先生
「Thymeleafでは、th:lang属性を使ってHTMLのlang属性を動的に設定することで、多言語対応が可能になります。」
生徒
「具体的にはどのように使うんですか?」
先生
「それでは、th:langの使い方を詳しく見ていきましょう!」
1. th:lang属性とは?
Thymeleafのth:lang属性は、HTMLのlang属性を動的に設定するためのものです。lang属性は、文書の言語を指定するために使用され、検索エンジンの最適化(SEO)やアクセシビリティの向上に役立ちます。
例えば、HTMLのlang属性を日本語に設定する場合、通常は次のように記述します。
<html lang="ja">
しかし、Thymeleafを使用すると、th:lang属性を使って動的に言語を設定できます。
2. th:lang属性の基本的な使い方
Thymeleafでth:lang属性を使用する基本的な例を見てみましょう。以下のように記述することで、現在のロケールに応じてlang属性が設定されます。
<html xmlns:th="http://www.thymeleaf.org" th:lang="${#locale.language}">
この例では、${#locale.language}を使用して、現在のロケールの言語コード(例:jaやen)を取得し、それをlang属性に設定しています。
将来を見据えて、+αのスキルを身につけたい方へ
JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。
AIを学ぶならアイデミープレミアム3. th:lang属性とxml:lang属性の併用
HTMLでは、xml:lang属性も言語を指定するために使用されます。Thymeleafでは、th:langとth:xmllangを併用して、両方の属性を動的に設定できます。
<html xmlns:th="http://www.thymeleaf.org" th:lang="${#locale.language}" th:xmllang="${#locale.language}">
これにより、HTMLとXMLの両方の仕様に対応した言語設定が可能になります。
4. th:lang属性を使用した国際化対応の例
Thymeleafを使用して、国際化対応のテンプレートを作成する例を見てみましょう。以下のコードでは、th:lang属性を使用して、文書の言語を動的に設定しています。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" th:lang="${#locale.language}">
<head>
<meta charset="UTF-8">
<title>国際化対応の例</title>
</head>
<body>
<h1 th:text="#{greeting}">こんにちは</h1>
</body>
</html>
この例では、#{greeting}を使用して、メッセージプロパティファイルから適切な挨拶文を取得しています。例えば、messages_ja.propertiesにはgreeting=こんにちは、messages_en.propertiesにはgreeting=Helloと記述することで、ロケールに応じた挨拶文が表示されます。
5. Spring Bootとの連携によるロケールの設定
Spring Bootでは、LocaleResolverを使用してロケールを管理します。例えば、SessionLocaleResolverを使用して、ユーザーのセッションにロケールを設定できます。
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.JAPAN);
return slr;
}
また、LocaleChangeInterceptorを使用して、リクエストパラメータからロケールを変更できるように設定します。
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
これにより、URLに?lang=enのようなパラメータを追加することで、表示言語を変更できます。
6. th:lang属性を使用する際の注意点
th:lang属性を使用する際には、以下の点に注意してください。
- ロケールの設定が適切に行われていることを確認する。
- メッセージプロパティファイル(例:
messages_ja.properties)が正しく配置されていること。 - テンプレートファイルで
xmlns:th="http://www.thymeleaf.org"を宣言していること。
これらの点に注意することで、th:lang属性を正しく使用し、国際化対応を実現できます。
7. th:lang属性とSEOの関係
th:lang属性を使用して文書の言語を明示的に指定することで、検索エンジンに対してコンテンツの言語を正確に伝えることができます。これにより、検索結果での表示が適切になり、SEOの向上につながります。
また、アクセシビリティの観点からも、スクリーンリーダーなどの支援技術が文書の言語を正しく認識できるようになります。
8. まとめ
Thymeleafのth:lang属性を使用することで、HTML文書の言語を動的に設定し、国際化対応を実現できます。Spring Bootとの連携により、ロケールの管理も容易になり、ユーザーにとって使いやすい多言語対応のWebアプリケーションを構築できます。
SEOやアクセシビリティの向上にも寄与するため、th:lang属性の活用を検討してみてください。
Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。
Spring Framework超入門をAmazonで見る※ Amazonアソシエイト・プログラムを利用しています