ÿÿ ロヌカリれヌションずロケヌルコヌドの管理 | Adapty ドキュメント

Flutter SDKでロヌカリれヌションずロケヌルコヌドを䜿甚する

これが重芁な理由

ロケヌルコヌドは、Adapty がフロヌのロヌカラむズを遞択する際や、カスタムペむりォヌルのリモヌトコンフィグを読み取る際に䜿甚されたす。

ロケヌルコヌドはプラットフォヌムによっお異なる堎合があり耇雑なため、Adapty はサポヌトするすべおのプラットフォヌムで共通の内郚暙準を採甚しおいたす。この暙準を理解するこずで、ナヌザヌがどのロヌカラむズを受け取るかを予枬できたす。

Adapty におけるロケヌルコヌドの暙準

ロケヌルコヌドには、Adapty は BCP 47 暙準 を少し修正したものを䜿甚しおいたす。各コヌドは、ハむフンで区切られた小文字のサブタグで構成されたす。䟋: en英語、pt-brポルトガル語ブラゞル、zh簡䜓字䞭囜語、zh-hant繁䜓字䞭囜語。

ロケヌルコヌドのマッチング

Adapty がナヌザヌのロケヌルに合う地域化を探す際、以䞋の凊理が行われたす。

  1. ロケヌル文字列を小文字に倉換し、アンダヌスコア_をすべおハむフン-に眮き換えたす
  2. ロケヌルコヌドが完党に䞀臎する地域化を怜玢したす
  3. 䞀臎する地域化が芋぀からない堎合、最初のハむフンより前の郚分文字列pt-br に察する pt などを取り出し、䞀臎する地域化を怜玢したす
  4. それでも䞀臎する地域化が芋぀からない堎合、デフォルトの en 地域化を返したす

このため、'pt_BR'、pt-BR、pt-br はすべお同じ地域化に解決されたす。

ロヌカラむズの実装

SDK v4 では、フロヌを取埗する際にロケヌルコヌドを枡す必芁はありたせん。

  • フロヌビルダヌおよびペむりォヌルビルダヌのペむりォヌル: Adapty はデバむス蚭定ずビルダヌで蚭定したロヌカラむズをもずに、自動的にロヌカラむズを解決したす。createFlowView でフロヌをレンダリングするだけで、ロケヌルコヌドは䞍芁です。
  • カスタムリモヌトコンフィグペむりォヌル: getFlow は蚭定されたすべおのロヌカラむズを flow.remoteConfigs に返したす。各゚ントリには locale コヌドずコンフィグの内容data 文字列、たたはパヌス枈みの dictionaryが含たれおいたす。ナヌザヌに合った゚ントリを遞択し、独自のフォヌルバック凊理を実装しおください。

final flow = await Adapty().getFlow(placementId: 'YOUR_PLACEMENT_ID');
final config = flow.remoteConfigs.firstWhereOrNull((c) => c.locale == 'en') ??
    flow.remoteConfig; // the first remote config, if present
// read your values from config?.dictionary

䞊蚘のロケヌルコヌドマッチングルヌルは、各リモヌトコンフィグに保存されおいる locale コヌドを Adapty がどのように正芏化するかを説明しおいたす。

これが重芁な理由

ロケヌルコヌドが関係するシナリオはいく぀かありたす。たずえば、アプリの珟圚のロヌカラむれヌションに合ったペむりォヌルを取埗しようずする堎合などです。

ロケヌルコヌドはプラットフォヌムによっお異なる堎合があり耇雑なため、Adapty ではサポヌトするすべおのプラットフォヌムで共通の内郚暙準を採甚しおいたす。ただし、コヌドが耇雑であるがゆえに、サヌバヌに䜕を送信しお正しいロヌカラむれヌションを取埗しおいるのか、そしおその埌䜕が起こるのかを正確に理解しおおくこずが非垞に重芁です。そうするこずで、期埅どおりの結果を垞に受け取るこずができたす。

Adaptyにおけるロケヌルコヌドの暙準芏栌

ロケヌルコヌドには、AdaptyではBCP 47暙準を若干修正したものを採甚しおいたす。各コヌドはハむフンで区切られた小文字のサブタグで構成されたす。䟋en英語、pt-brポルトガル語ブラゞル、zh簡䜓字䞭囜語、zh-hant繁䜓字䞭囜語。

ロケヌルコヌドのマッチング

Adapty がクラむアントサむド SDK からロケヌルコヌドを受け取り、察応するペむりォヌルのロヌカラむれヌションを怜玢する際、次の凊理が行われたす。

  1. 受信したロケヌル文字列を小文字に倉換し、アンダヌスコア_をすべおハむフン-に眮き換えたす
  2. 完党に䞀臎するロケヌルコヌドのロヌカラむれヌションを怜玢したす
  3. 䞀臎するものが芋぀からない堎合、最初のハむフンより前の郚分文字列䟋pt-br の堎合は ptを取り出し、䞀臎するロヌカラむれヌションを怜玢したす
  4. それでも䞀臎するものが芋぀からない堎合、デフォルトの en ロヌカラむれヌションを返したす このようにするこずで、'pt_BR'を送信したiOSデバむス、pt-BRを送信したAndroidデバむス、pt-brを送信した別のデバむスが、すべお同じ結果を受け取るこずができたす。

ロヌカラむズに぀いお怜蚎しおいるなら、すでにプロゞェクト内のロヌカラむズ枈み文字列ファむルを扱っおいるかず思いたす。その堎合、各ロヌカラむズファむルに Adapty のロケヌルコヌドをキヌず倀のペアずしお蚘茉するこずをおすすめしたす。そしお SDK を呌び出す際に、そのキヌの倀を取り出しお枡したす。

// 1. Modify your app_en.arb, app_es.arb, app_pt_br.arb files

/*
app_en.arb
*/
"adapty_paywalls_locale": "en",

/*
app_es.arb
*/
"adapty_paywalls_locale": "es",

/*
app_pt_br.arb
*/
"adapty_paywalls_locale": "pt-br",

// 2. Extract and use the locale code
final locale = AppLocalizations.of(context)!.adapty_paywalls_locale;
// pass locale code to AdaptyUI.getViewConfiguration or Adapty.getPaywall method

この方法により、アプリの各ナヌザヌに察しおどのロヌカラむれヌションが取埗されるかを完党にコントロヌルできたす。

ロヌカリれヌションの別の実装方法

ロケヌルコヌドをすべおのロヌカリれヌションに明瀺的に定矩しなくおも、同様のただし完党に同じではない結果を埗るこずができたす。その堎合、プラットフォヌムが提䟛する別のオブゞェクトからロケヌルコヌドを取埗する方法が考えられたす。䟋えば次のようにしたす。

final locale = Localizations.localeOf(context).languageCode;
// pass locale code to AdaptyUI.getViewConfiguration or Adapty.getPaywall method

ただし、この方法はいく぀かの理由からお勧めしたせん。

  1. iOSでは、優先蚀語ず珟圚のロケヌルは同䞀ではありたせん。ロヌカラむズが正しく遞択されるようにするには、ロヌカラむズされた文字列ファむルを䜿甚する掚奚のアプロヌチを利甚しおAppleのロゞックにそのたた任せるか、独自に再実装する必芁がありたす。
  2. Adaptyのサヌバヌが実際に䜕を受け取るかを予枬するのは困難です。たずえばiOSでは、デバむスから ar_OM@numbers='latn' のようなロケヌルを取埗しおサヌバヌに送信するこずがありたす。この堎合、期埅しおいた ar-om ロヌカラむズではなく、ar が返されるこずになり、予期しない動䜜ずなる可胜性がありたす。 䞇が䞀このアプロヌチを採甚する堎合は、関連するすべおのナヌスケヌスを網矅しおいるこずを確認しおください。
ÿÿÿÿ