Advertisement
dermetfan

Language

Nov 23rd, 2013
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.91 KB | None | 0 0
  1. package net.dermetfan.someLibgdxTests.other;
  2.  
  3. import java.io.IOException;
  4. import java.util.Locale;
  5.  
  6. import com.badlogic.gdx.Gdx;
  7. import com.badlogic.gdx.assets.loaders.FileHandleResolver;
  8. import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
  9. import com.badlogic.gdx.files.FileHandle;
  10. import com.badlogic.gdx.utils.ObjectMap;
  11. import com.badlogic.gdx.utils.XmlReader;
  12. import com.badlogic.gdx.utils.XmlReader.Element;
  13.  
  14. /** loads and holds Strings from an XML file */
  15. public class Language {
  16.  
  17.     /** used to resolve Strings */
  18.     private FileHandleResolver resolver = new InternalFileHandleResolver();
  19.  
  20.     /** the name of the language */
  21.     private String language = Locale.getDefault().toString();
  22.  
  23.     /** the content of the language */
  24.     private ObjectMap<String, String> content = new ObjectMap<String, String>();
  25.  
  26.     /** @see #load(String) */
  27.     public Language(String file) {
  28.         load(file);
  29.     }
  30.  
  31.     /** @see #load(FileHandle) */
  32.     public Language(FileHandle file) {
  33.         load(file);
  34.     }
  35.  
  36.     /** @param resolver the {@link #resolver}
  37.      *  @see #load(String) */
  38.     public Language(String file, FileHandleResolver resolver) {
  39.         this.resolver = resolver;
  40.         load(file);
  41.     }
  42.  
  43.     /** @see #load(String, String) */
  44.     public void load(String file) {
  45.         load(file, null);
  46.     }
  47.  
  48.     /** @see #load(FileHandle, String) */
  49.     public void load(String file, String language) {
  50.         load(resolver.resolve(file), language);
  51.     }
  52.  
  53.     /** @see #load(FileHandle, String) */
  54.     public void load(FileHandle file) {
  55.         load(file, null);
  56.     }
  57.  
  58.     /** @param file the language XML file to load
  59.      *  @param language The child of the root element. If null, root will be used. */
  60.     public void load(FileHandle file, String language) {
  61.         XmlReader xml = new XmlReader();
  62.  
  63.         Element root = null;
  64.         try {
  65.             root = xml.parse(file);
  66.         } catch(IOException e) {
  67.             Gdx.app.error(Language.class.getSimpleName(), "could not load language file \"" + file + "\"\n" + e.getStackTrace());
  68.         }
  69.         if(root == null)
  70.             return;
  71.         language = root.getName();
  72.  
  73.         Element lang = language == null || root.getName().equals(language) ? root : root.getChildByNameRecursive(language);
  74.         if(lang == null)
  75.             return;
  76.  
  77.         content.clear();
  78.         for(int i = 0; i < lang.getChildCount(); i++) {
  79.             Element entry = lang.getChild(i);
  80.             content.put(entry.getName(), entry.getText());
  81.         }
  82.     }
  83.  
  84.     /** @return the value associated with the given {@code key} */
  85.     public String get(String key) {
  86.         return content.get(key);
  87.     }
  88.  
  89.     /** @return the {@link #resolver} */
  90.     public FileHandleResolver getResolver() {
  91.         return resolver;
  92.     }
  93.  
  94.     /** @param resolver the {@link #resolver} to set */
  95.     public void setResolver(FileHandleResolver resolver) {
  96.         this.resolver = resolver;
  97.     }
  98.  
  99.     /** @return the {@link #language} */
  100.     public String getLanguage() {
  101.         return language;
  102.     }
  103.  
  104.     /** @return the {@link #content} */
  105.     public ObjectMap<String, String> getContent() {
  106.         return content;
  107.     }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement