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
340
React 多言語対応
2023/11/11 ENGINE登壇資料
tatsuaki
October 31, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
Gleamという選択肢
comamoca
6
760
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
570
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
140
Effect の双対、Coeffect
yukikurage
5
1.5k
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
380
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
490
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.3k
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Create a website using Spatial Web
akkeylab
0
300
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
250
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
100
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
19
3.5k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
184
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Thoughts on Productivity
jonyablonski
69
4.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Documentation Writing (for coders)
carmenintech
71
4.9k
Docker and Python
trallard
44
3.4k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
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/