2016-09-05 71 views
0

我在不同的语言中有几个Xml,但是当我以编程方式获取XmlResourceParser时,我总是获取默认语言。Android本地化xml文件

这是我应得的编程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本地化吗?

感谢您的帮助。何塞

回答

0

我终于设法本地化我的XML文件,我所做的就是我的文件移动到原始文件夹,所以我结束了一个(原始,原始ES,原始的,原始-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; 
    } 

。 Registers Jose