Java 本地化不适用于android应用程序中的字符串数组

Java 本地化不适用于android应用程序中的字符串数组,java,android,arrays,xml,localization,Java,Android,Arrays,Xml,Localization,我在我的values文件夹中以这种方式为默认英语语言定义了一个字符串数组 <string-array name="movie"> <item>11001#Action#1</item> <item>11002#Animation#1</item> <item>11003#Comedy#1</item> <item>11004#Docume

我在我的values文件夹中以这种方式为默认英语语言定义了一个字符串数组

<string-array name="movie">
        <item>11001#Action#1</item>
        <item>11002#Animation#1</item>
        <item>11003#Comedy#1</item>
        <item>11004#Documentary#1</item>
        <item>11005#Family#1</item>
        <item> 11006#Film-Noir#1</item>
        <item>11007#Horror#1</item>
        <item>11008#Musical#1</item>
        <item>11009#Romance#1</item>
    </string-array>

11001行动1
11002#动画#1
11003#喜剧#1
11004#纪录片#1
11005#家庭#1
11006#黑色电影#1
11007#恐怖#1
11008#音乐剧#1
11009#浪漫#1
我的应用程序支持许多像chainese simplified这样的语言,这就是为什么我用值zh rCN/string.xml为chainese simplified language这样定义了另一个字符串数组

<string-array name="movie">
        <item>11001#动作片#1</item>
        <item>11002#动画片#1</item>
        <item>11003#喜剧#1</item>
        <item>11004#记录片#1</item>
        <item>11005#家庭#1</item>
        <item> 11006#黑色电影#1</item>
        <item>11007#恐怖片#1</item>
        <item>11008#音乐剧#1</item>
        <item>11009#爱情片#1</item>
    </string-array>

11001#动作片#1.
11002#动画片#1.
11003#喜剧#1.
11004#记录片#1.
11005#家庭#1.
11006#黑色电影#1.
11007#恐怖片#1.
11008#音乐剧#1.
11009#爱情片#1.
当我的应用程序运行时,选择默认英语语言显示数组数据,但当我选择chainese simplified或其他语言而不是英语的电话语言时,数组数据不会显示。这些问题的可能解决方案是什么?

喜剧
<string name="abcd">喜剧</string>
<string name="efgh">记录片</string>

<array name="array_abcd">
     <item>@string/abcd</item>
     <item>@string/efgh</item>
</array>
记录片 @字符串/abcd @字符串/efgh
使用此方法获取资源并从此资源获取数组。 这将100%有效

public static Resources getResourcesBasedOnLanguage(Activity activity) {
    Configuration confTmp =new Configuration(activity.getResources().getConfiguration());
    confTmp.locale = new Locale("EN");
    DisplayMetrics metrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    return new Resources(activity.getAssets(), metrics, confTmp);
}

将文本作为字符串项写入
string.xml
,然后将其用于数组.xml,例如:

string.xml(英文):

<string name="array_power_unit_item_00">By Watt.</string>
<string name="array_power_unit_item_01">By KiloWatt.</string>
<string name="array_power_unit_item_02">By Ampere and Volt.</string>
<string name="array_power_unit_item_03">By MilliAmpere and Volt.</string>
<string name="array_power_unit_item_00">بالواط.</string>
<string name="array_power_unit_item_01">بالكيلو واط.</string>
<string name="array_power_unit_item_02">بالأمبير و الفولت.</string>
<string name="array_power_unit_item_03">بالميلي أمبير و فولت.</string>
<string-array name="arraypowerunit" translatable="false">
<item>@string/array_power_unit_item_00</item>
<item>@string/array_power_unit_item_01</item>
<item>@string/array_power_unit_item_02</item>
<item>@string/array_power_unit_item_03</item>
</string-array>
瓦特。 用千瓦。 用安培和伏特。 用毫安和伏特。 string.xml(阿拉伯语):

<string name="array_power_unit_item_00">By Watt.</string>
<string name="array_power_unit_item_01">By KiloWatt.</string>
<string name="array_power_unit_item_02">By Ampere and Volt.</string>
<string name="array_power_unit_item_03">By MilliAmpere and Volt.</string>
<string name="array_power_unit_item_00">بالواط.</string>
<string name="array_power_unit_item_01">بالكيلو واط.</string>
<string name="array_power_unit_item_02">بالأمبير و الفولت.</string>
<string name="array_power_unit_item_03">بالميلي أمبير و فولت.</string>
<string-array name="arraypowerunit" translatable="false">
<item>@string/array_power_unit_item_00</item>
<item>@string/array_power_unit_item_01</item>
<item>@string/array_power_unit_item_02</item>
<item>@string/array_power_unit_item_03</item>
</string-array>
。
بالكيلو واط.
بالأمبير و الفولت.
بالميلي أمبير و فولت.
arrays.xml:

<string name="array_power_unit_item_00">By Watt.</string>
<string name="array_power_unit_item_01">By KiloWatt.</string>
<string name="array_power_unit_item_02">By Ampere and Volt.</string>
<string name="array_power_unit_item_03">By MilliAmpere and Volt.</string>
<string name="array_power_unit_item_00">بالواط.</string>
<string name="array_power_unit_item_01">بالكيلو واط.</string>
<string name="array_power_unit_item_02">بالأمبير و الفولت.</string>
<string name="array_power_unit_item_03">بالميلي أمبير و فولت.</string>
<string-array name="arraypowerunit" translatable="false">
<item>@string/array_power_unit_item_00</item>
<item>@string/array_power_unit_item_01</item>
<item>@string/array_power_unit_item_02</item>
<item>@string/array_power_unit_item_03</item>
</string-array>

@字符串/数组\u电源\u单元\u项目\u 00
@字符串/数组\u电源\u单元\u项目\u 01
@字符串/数组\u电源\u单元\u项目\u 02
@字符串/数组\u电源\u单元\u项目\u 03

如果这样更改,是否需要更改jave代码?我需要在哪里定义字符串数组和字符串值?您确定这是解决此问题的方法吗?请自己尝试。我肯定有110%。。。如果这能奏效,那么请接受这个答案。但是我需要定义数组和单个字符串。在绳子的箱子里?或者我需要为array定义array.xml文件您现在在吗?找到解决方案了吗?如果是,请分享答案。这对我不起作用,在应用程序设置中手动更改区域设置并重新创建活动后,我仍然会收到手机区域设置中数组中的字符串。其他一切都很好。这对我很好,谢谢。唯一让我担心的是,资源构造函数被弃用了