【问题标题】:Android localize xml fileAndroid本地化xml文件
【发布时间】:2016-09-05 18:08:45
【问题描述】:

我有几个不同语言的 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?

感谢您的帮助。何塞

【问题讨论】:

    标签: java android xml localization plist


    【解决方案1】:

    我终于设法本地化了我的 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;
        }
    

    我希望这对将来的某人有用。 问候 何塞

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多