|Labs
デモを予約プラットフォーム
React (Lingo Compiler)
Alpha
React MCPReact (i18n)
旧CLI(v0)
非推奨

概要

  • @lingo.dev/react

はじめに

  • クイックスタート

リファレンス

  • LingoProvider
  • useLingo
  • 複数形と select
  • 書式設定

書式設定

各Lingoインスタンスには、現在のロケールに応じた一連の書式設定メソッドが備わっています。これらはネイティブのIntl.* API を薄くラップしたものです。バンドルサイズは増えず、LingoProviderに渡したロケール文字列以外の独自デフォルトもありません。

すべてのメソッドは純粋関数です。同じ入力とロケールを渡せば、常に同じ出力が返ります。メモ化しなくても render 内で安全に呼び出せます。

数値#

l.num(value, options?)#

ロケールに応じた桁区切りと小数表記で数値を整形します。

tsx
l.num(1234567);       // "1,234,567" (en) / "1.234.567" (de) / "1 234 567" (fr)
l.num(3.14159, { maximumFractionDigits: 2 }); // "3.14" (en) / "3,14" (de)

optionsはIntl.NumberFormatにそのまま渡されます。

l.currency(value, code, options?)#

tsx
l.currency(29.99, "USD");   // "$29.99" (en) / "29,99 $US" (fr)
l.currency(29.99, "EUR");   // "€29.99" (en) / "29,99 €" (de)

l.percent(value, options?)#

15.6 ではなく、0.156 のような小数値を渡してください。

tsx
l.percent(0.156);                           // "16%" (en) / "16 %" (fr)
l.percent(0.156, { maximumFractionDigits: 1 }); // "15.6%"

l.unit(value, unit, options?)#

unitには、Intl が認識する単位名を指定します(celsius、kilometer-per-hour、megabyteなど)。

tsx
l.unit(32, "celsius");        // "32°C" (en) / "32 °C" (de)
l.unit(120, "kilometer-per-hour"); // "120 km/h"

l.compact(value, options?)#

tsx
l.compact(1234567);    // "1.2M" (en) / "123万" (ja) / "1,2 Mio." (de)
l.compact(950);        // "950"

日付と時刻#

l.date(value, options?) / l.time / l.datetime#

Dateまたは Unix エポックのミリ秒を受け取ります。

tsx
l.date(new Date());     // "3/16/2026" (en) / "16.03.2026" (de)
l.time(new Date());     // "3:45 PM" (en) / "15:45" (de)
l.datetime(new Date()); // "3/16/2026, 3:45 PM" (en)

l.date(now, { dateStyle: "long" });   // "March 16, 2026"
l.date(now, { weekday: "short", month: "short", day: "numeric" }); // "Mon, Mar 16"

l.relative(value, unit, options?)#

符号付きオフセットです。過去は負、未来は正を指定します。

tsx
l.relative(-3, "day");       // "3 days ago" (en) / "vor 3 Tagen" (de)
l.relative(2, "hour");       // "in 2 hours"
l.relative(0, "second", { numeric: "auto" }); // "now"

リスト#

l.list(items, options?)#

ロケールに応じた接続表現で整形します。デフォルトの style はlong、type はconjunction("and")です。

tsx
l.list(["apples", "oranges", "pears"]); // "apples, oranges, and pears" (en)
                                         // "apples, oranges y pears" (es)
l.list(["red", "blue"], { type: "disjunction" }); // "red or blue"

ファイルサイズ#

l.fileSize(bytes)#

適切な単位(B、KB、MB、GB、TB、PB)を自動で選び、ロケールに応じた小数表記で整形する便利なラッパーです。

tsx
l.fileSize(1024);          // "1 KB"
l.fileSize(1073741824);    // "1 GB" (en) / "1 Go" (fr)
l.fileSize(1536);          // "1.5 KB"

表示名#

l.displayName(code, type)#

言語、地域、文字体系、通貨コードをローカライズされた名称に変換します。

tsx
l.displayName("en", "language");  // "English" (en) / "Englisch" (de) / "Английский" (ru)
l.displayName("US", "region");    // "United States" / "Vereinigte Staaten"
l.displayName("USD", "currency"); // "US Dollar" / "US-Dollar"
l.displayName("Cyrl", "script");  // "Cyrillic" / "Kyrillisch"

指定した type に対してコードが認識されない場合は、undefinedを返します。

照合#

l.sort(items, options?)#

新しいソート済み配列を返します。入力の配列は変更しません。

tsx
l.sort(["ä", "z", "a"]);   // de: ["a", "ä", "z"]   sv: ["a", "z", "ä"]
l.sort(["File 10", "File 2"], { numeric: true }); // ["File 2", "File 10"]

セグメンテーション#

l.segment(text, granularity?)#

書記素、単語、文にロケールに応じて分割します。スペースで単語を区切らない CJK では特に重要です。

tsx
l.segment("Hello world", "word");  // ["Hello", " ", "world"]
l.segment("こんにちは世界", "word"); // ["こんにちは", "世界"]   (ja)
l.segment("café", "grapheme");     // ["c", "a", "f", "é"]

granularity のデフォルトは"grapheme"です。

なぜ薄いラッパーなのか?#

すべてのメソッドはネイティブのIntlフォーマッターに処理を委ねます。パース処理も、数値ライブラリも、追加の依存関係もありません。ランタイムがバンドルを小さく保ち、ロケールデータはプラットフォーム側が扱うため、V8 / SpiderMonkey の ICU テーブルに追加された新しいロケールもそのまま使えます。

生のIntlに対して加わる唯一の価値は、ロケール文字列です。これは<LingoProvider locale="...">で一度設定すれば、すべてのフォーマッターがそこから読み取ります。生のIntlを使いたい場合(React の外で使うコードなど)は、createLingo(locale)でプロバイダーなしの同じオブジェクトを取得できます。

次に読む項目#

  • useLingo — l.textとl.richを使った文字列翻訳。
  • Plurals and select — 件数やカテゴリに応じたフォームの選択。

このページは役に立ちましたか?

Max PrilutskiyMax Prilutskiy·更新済み 約1か月前·2分で読めます