Android 本地化 xml 文件

Android localize xml file

我有几个不同语言的 Xml,但是当我以编程方式获取 XmlResourceParser 时,我总是获取默认语言。

这就是我以编程方式获取 Xml 的方式:

XmlResourceParser xpp = TCXApplication.getContext().getResources().getXml(R.xml.some_name);

我的 Xml 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
    <array>
        <dict>
            <key>type</key>
            <string>some</string>
            <key>other_some</key>
            <array>
                <string>...</string>
                <string>...</string>
                <string>...</string>
            </array>
            <key>other_other_some</key>
            <array>
                <string>...</string>
                <string>...</string>
                <string>...</string>
            </array>
        </dict>
    </array>
</plist>

我在每种语言的不同文件夹中都有不同版本的文件(xml、xml-es、xml-fr、xml-it)但是即使我将设备语言更改为其他一些语言,我也始终获得默认版本... 难道我做错了什么?没有办法本地化 plist 吗?

感谢您的帮助。何塞

我终于设法本地化了我的 xml 文件,我所做的是将我的文件移动到 raw 文件夹,所以我最终得到了一个 (raw, raw-es, raw-it, raw- fr)

为了解析来自他们的信息,我使用:

private List<PlistItem> parse() {
        try {
            InputStream inputStream = MyApplication.getContext().getResources()
                    .openRawResource(R.raw.some);
            XmlPullParserFactory pullParserFactory;
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser xmlPullParser = pullParserFactory.newPullParser();
            xmlPullParser.setInput(inputStream, null);

            String key = null;
            PlistItem item = null;
            int eventType = xmlPullParser.getEventType();
            while (!(eventType == XmlPullParser.END_TAG
                    && xmlPullParser.getName() != null
                    && xmlPullParser.getName().equals("plist"))) {

                if (eventType == XmlPullParser.START_DOCUMENT) {
                    list = new ArrayList<>();
                } else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_DICT)) {
                    item = new PlistItem();
                } else if (eventType == XmlPullParser.END_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_DICT)) {
                    list.add(item);
                } else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_KEY)) {
                    xmlPullParser.next();
                    key = xmlPullParser.getText();
                } else if (eventType == XmlPullParser.START_TAG && xmlPullParser.getName().contentEquals(PLIST_ELEMENT_STRING)) {
                    xmlPullParser.next();

                    if (key != null && item != null) {
                        if (key.contentEquals(PLIST_VALUE_TYPE)) {
                            item.type = xmlPullParser.getText();
                        }
                        if (key.contentEquals(PLIST_VALUE_SOME)) {
                            item.some.add(xmlPullParser.getText());
                        }
                        if (key.contentEquals(PLIST_VALUE_OTHER_SOME)) {
                            item.otherSome.add(xmlPullParser.getText());
                        }
                    }
                }

                eventType = xmlPullParser.next();
            }

            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list;
    }

我希望这对以后的人有用。 问候 何塞