Closed15
i18nライブラリ周り(expo前提多め)
ピン留めされたアイテム
と思ったけど一番シンプルで行けそう?
Typescript
-
d.ts
ファイルの生成そんなに重くない割に、ある程度固い型つけてくれる感じ - 自前でラッパー関数をササっと作っても良さそう
Provider
- https://react.i18next.com/latest/i18nextprovider
- 公式には「なくても良いよ」って言ってる
-
https://react.i18next.com/guides/quick-start
- 確かに
.use(initReactI18next)
とするとグローバルインスタンスにしてくれる - けどこれで試してたら平気で初期化忘れたりするしお行儀よくないので個人的には「ちゃんとProviderつけよ」ってなった
- 確かに
-
https://react.i18next.com/guides/quick-start
namespace
-
https://react.i18next.com/guides/multiple-translation-files
- このへんにある
- 本気で足突っ込むと「ネストさせられる」ぐらいに考えて良さそう
-
ns
の設定やuseTranlation(["ns"])
とかやると、型もうまくつかないケースがあったりしてややこしい - なのであんまりnamespaceにこだわると死ぬ気がする
- 雑にネストはさせて
some:foo.baz.bar
みたいな感じでアクセス出来る、ぐらいな使い勝手が良さそう
エラーハンドリング
- デフォルトだと、エラーにならないでキー名を指定すると、キー名がそのまま表示される
-
use
使ったらなんかエラーハンドリング挟められそう- 基本はnamespace複雑に使わずにTS依存が良いのかも
-
https://docs.expo.io/versions/v41.0.0/sdk/localization/
- ここだとi18n-jsが紹介されてる
- i18n-js、いきなりgemの話から始まるパッケージなのでなるべく避けたい
- TypeScript safetyさは絶対ほしい
React Intl / formatjs
- https://formatjs.io/docs/react-intl
- なんか作りはいい感じに見える
- が、messageDescriptor周りがだるそう
ts-transformerはjsx形式を変換するらしい。あんまりうれしくない。というかどっちかというと嫌・・・
このスクラップは2021/05/29にクローズされました