Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React 多言語対応
Search
tatsuaki
October 31, 2023
Programming
0
360
React 多言語対応
2023/11/11 ENGINE登壇資料
tatsuaki
October 31, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.9k
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
180
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
180
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
240
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.9k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
520
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
240
ThorVG Viewer In VS Code
nors
0
530
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
110
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
72
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
40
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Google's AI Overviews - The New Search
badams
0
880
Skip the Path - Find Your Career Trail
mkilby
0
38
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
99
Transcript
React 多言語対応 プロダクトデザイン部 松岡龍紀
目次 ▼ Webサイトにおける「多言語化対応」とは ▼ Reactで多言語化対応する術 ▼ やってみる
Webサイトにおける「多言語化対応」とは
Webサイト上のコンテンツを自国以外の言語を利用して、 外国人向けにフォーマット すること。 また、多言語対応には様々なポイントや課題があるが、その中で下記が挙げられる。 • ニーズに応じて取捨選択 • 技術的にコストがかかると同時に予算工数にも影響が出てくる懸念 英語 日本語
Reactで多言語対応する術 ※これから紹介するのは、あくまで一例で他にもやり方はありま す。
• Format.JS • react-i18next
Format.JS • <Formatted**> コンポーネントを使用して多言語化を実現する。 • フォーマット機能も提供されている。 こんにちは 2016年4月05日
react-i18next • ビルトインされているメソッドを使用する。 • 記述がシンプル。 • 併用できるパッケージが多数ある。 こんにちは
やってみる
ディレクトリ構成
ディレクトリ構成 後々使用するメソッドで型を得るためにアンビ エントで型を定義。 言語管理するためのjsonファイルと、設定ファ イル。
use 使用するパッケージ (プラグイン)を登録 lng デフォルトで使用する言語 debug デバッグ情報表示有無 defaultNS 使用するネームスペース。複数の言語ファイルを使用 するときなどに活用。
resources 翻訳に使用する元ファイルを登録。 etc https://www.i18next.com/overview/configuration-options config.ts
テキストにアクセスするためのkeyと翻訳に使用したいテキストをvalueに設定。 例では、言語ごとにファイルを分けて、中身をコンポーネント名で分割している。 ネームスペースをうまく使えば、コンポーネントごとにファイルを分割できたりする。 json 日本語 英語
useTranslationからtメソッドを取得。 翻訳対象の要素にtメソッドをかまして多言語 化する。 tメソッドの引数にjsonファイルで定義したkey でアクセスし対象要素を表示できる。 ComponentA.tsx
アンビエントで定義した型ファイルを用 意すれば、tメソッドに型が適用される。 jsonに定義されていない内容にアクセス すると型エラーになると同時にコード補 完もされるのでケアレスミスの回避にもつ ながる。 ComponentA.tsx
ルートコンポーネントでconfigファイルを importすることでi18nを適用できる。 i18nextから生えているchangeLanguage メソッドを使用してボタン切り替えで言語 切替をできる。 App.tsx
https://github.com/bita-matsuoka/react-i18next 今回用意したコード
• i18next-browser-languageDetector ブラウザの言語設定を自動判別してその言語を適用させるパッケージ。 • i18next-http-backend ファイルシステムから言語ファイルをロードするためのパッケージ。 • locize 言語ファイルを管理できるプラットフォーム。 エンジニアが関わらずとも翻訳チームだけで運用可能にできたり、文言修正のコストを削減できた
りする。 etc … https://www.i18next.com/overview/plugins-and-utils 有用なパッケージ
参考文献 • react-i18next https://react.i18next.com/ • react-18next sample code https://github.com/i18next/react-i18next/tree/master/example/react-typescript • Format.JS https://formatjs.io/