Android 13 デベロッパー プレビューへようこそ。フィードバックをお送りいただき、Android 13 をさらに優れたリリースにするためにご協力ください。

アプリごとの言語設定

多くの場合、多言語ユーザーは特定のアプリに対して、システムに設定した言語(英語など)と異なる言語(オランダ語、中国語、ヒンディー語など)を選択することを望みます。Android 13 では、このようなユーザーのエクスペリエンスを改善するために、複数の言語をサポートするアプリ向けに以下の新機能を導入しています。

  • ユーザー インターフェースで使用する別の言語をアプリが実行時に設定できるようにする API

    カスタムのアプリ内言語選択ツールを使用するアプリでは、これらの新しい API を使用して、ユーザーがどこで言語設定を選択するかにかかわらず、一貫したユーザー エクスペリエンスを提供する必要があります。新しい API を使用すると、ボイラープレート コードの量を減らすこともできます。

    以前の Android バージョンとの下位互換性を維持するため、この API は Appcompat 1.6.0-alpha01 以降の AndroidX でも使用できます。

  • ユーザーがアプリごとに使用言語を選択できるシステム設定

複数の言語に対応していないアプリは、これらの変更の影響を受けません。

API の実装

カスタムのアプリ内言語選択ツールを現在使用していないアプリの場合、追加の作業は必要ありません。

アプリ内言語選択ツールをすでに備えているか使用する予定があるアプリの場合、アプリにおけるユーザーの使用言語の設定と取得を処理するには、アプリのカスタム ロジックの代わりに新しい API を使用してください。

AndroidX サポート ライブラリを使用して実装する

以前の Android バージョンとの下位互換性を維持するため、アプリ内言語選択ツールを実装する際に AndroidX サポート ライブラリを使用することをおすすめします。Appcompat 1.6.0-alpha01 以上で利用可能な setApplicationLocales() メソッドを使用します。

たとえば、ユーザーの使用言語を設定するには、言語選択ツールでロケールを選択するようユーザーにリクエストし、その値をシステムに設定します。

Kotlin

val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags("xx-YY")
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale)

Java

LocaleListCompat appLocale = LocaleListCompat.forLanguageTags("xx-YY");
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale);

Android フレームワーク API を使用して実装する

アプリ内言語選択ツールは、Android フレームワーク API を使用して実装することもできます。その場合は、setApplicationLocales() メソッドと getApplicationLocales() メソッドを使用します。

たとえば、ユーザーの使用言語を設定するには、言語選択ツールでロケールを選択するようユーザーにリクエストし、その値をシステムに設定します。

// 1. Inside an activity, in-app language picker gets an input locale "xx-YY"
// 2. App calls the API to set its locale
mContext.getSystemService(LocaleManager.class
    ).setApplicationLocales(newLocaleList(Locale.forLanguageTag("xx-YY")));
// 3. The system updates the locale and restarts the app, including any configuration updates
// 4. The app is now displayed in "xx-YY" language

ユーザーの現在の使用言語を取得して言語選択ツールに表示する場合は、その値をシステムから取得できます。

// 1. App calls the API to get the preferred locale
LocaleList currentAppLocales =
    mContext.getSystemService(LocaleManager.class).getApplicationLocales();
// 2. App uses the returned LocaleList to display languages to the user

ユーザーのためのシステム設定

ユーザーは、新しいシステム設定を使用してアプリごとの使用言語を選択できます。この設定にアクセスするには、次の 2 つの方法があります。

  • システム設定からアクセスする

    [設定] > [システム] > [言語と入力] > [アプリの言語] >(アプリを選択)

  • アプリの設定からアクセスする

    [設定] > [アプリ] >(アプリを選択)> [言語]

既知の問題

アプリをテストする際に注意すべき既知の問題がいくつかあります。

  • 使用可能な言語のリストに、アプリが対応している言語が反映されないことがあります。
  • アプリが分割 APK を使用している場合、アプリのロケールを変更しても、それらの APK は自動的にダウンロードされません。
  • UI は予備バージョンであり、今後のリリースで引き続き変更される予定です。