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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
210
CSC307 Lecture 09
javiergs
PRO
1
840
組織で育むオブザーバビリティ
ryota_hnk
0
180
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.6k
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
How to train your dragon (web standard)
notwaldorf
97
6.5k
GraphQLとの向き合い方2022年版
quramy
50
14k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
The agentic SEO stack - context over prompts
schlessera
0
640
Rails Girls Zürich Keynote
gr2m
96
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
150
WENDY [Excerpt]
tessaabrams
9
36k
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/