1

我正在使用具有 2 种语言(法语和阿拉伯语)的应用程序,为此我使用以下代码:

        Locale locale = new Locale("ar" or "fr");
        Locale.setDefault(locale);
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());

但问题是它希望数字以法语显示,我在这里发现我需要使用这些命令:

        NumberFormat nf=NumberFormat.getInstance(new Locale("fr","FR"));
        nf.format(i);

但它一次只适用于一个字符串,我需要找到另一个命令在所有应用程序中使用它,所以我可以一步将数字设置为法语

4

1 回答 1

1

要在不同的语言环境中格式化数字,您可以在 Application 上下文中定义 NumberFormat 对象,并从那里使用它:

如果您的应用程序已经定义了一个 Application 对象,则必须将此代码添加到该类,否则您将创建一个从 Application 扩展的新类。这是因为您的应用程序中只有一个 Application 实例。

还要记住,必须在清单中声明 Application 类。

public class MyApplication extends Application{

    private NumberFormat nf = NumberFormat.getInstance(new Locale("fr","FR"));

    public NumberFormat getNumberFormat(){
        return nf;
    }

    public String getFormattedNmbr(double i){
        return nf.format(i);
    }

    // add here getFormattedNmbr with different argument types
}

在清单中:

<application
        ...
        android:name="com.you.yourapp.MyApplication">
        ...
</Application>

在您的活动中:

getApplication().getNumberFormat().format(number);

//or

getApplication().getFormattedNbr(32.45);
于 2018-03-07T11:57:33.483 回答