5

Android アプリを持っていて、セルビア語に翻訳したいのですが、ラテン文字とキリル文字の両方の言語バリアントが必要です。私はこの変種を試しました:value-sr-rRS-Latn , value-sr-Latn , value-sr-rRS-Cyrl , value-sr-Cyrl しかし、それは機能していません。次のエラーが表示されます。android-apt-compiler: [NAMEOFAPP] invalid resource directory name: [path]\res/value-sr-rRS-Latn

res dirs と Locale に関する Android のドキュメントでは、このオプションが見つかりません。

言語の 2 つのバリアントで 2 つのディレクトリを作成できますか? そしてどうやって?

ありがとうございました

4

2 に答える 2

5

Android 7.0 以降、ラテン文字のセルビア語が正式に含まれるようになりました。values-srキリル文字にはまだ使用されておりvalues-b+sr+Latn、ラテン文字には使用されています。

values-srキリル文字
values-b+sr+Latn用 ラテン語用

于 2017-03-21T19:04:44.813 に答える
1

Android のローカライズをテストしたところ、任意のリージョンを使用でき、それが機能することがわかりました。

values-sr-rZZZZ は存在しなかった架空の地域のような名前のフォルダーをプロジェクトに追加します。

次に、次のコードを Application クラスに追加します。ここから取得し、わずかに変更しました。

public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Resources res = this.getResources();
        Configuration conf = res.getConfiguration();
        boolean isLatinAlphabet = PreferenceManager.getDefaultSharedPreferences(this)... // get a value from the application settings

        if(conf.locale.getLanguage().equals("sr") && isLatinAlphabet) {
            conf.locale = new Locale("sr", "ZZ");
            res.updateConfiguration(conf, res.getDisplayMetrics());
        }
    }
}

このコードでは、ユーザーがセルビア語をデフォルトとして選択し( ) conf.locale.getLanguage().equals("sr")、アプリの設定でいくつかのチェックボックスをオンにした場合 ( ) にのみ、ロケールが変更されますisLatinAlphabet

別の条件を使用して、必要に応じて変更できます。

また、言語を動的に変更するこのような方法では、古いデバイスのメニュー項目にバグが発生する可能性がありますが、新しいデバイスでは再現されません。

于 2013-03-20T18:39:42.080 に答える