You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			116 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Java
		
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Java
		
	
package net.minecraft.client.resources;
 | 
						|
 | 
						|
import com.google.common.collect.Lists;
 | 
						|
import com.google.common.collect.Maps;
 | 
						|
import com.google.common.collect.Sets;
 | 
						|
 | 
						|
import cpw.mods.fml.common.registry.LanguageRegistry;
 | 
						|
import cpw.mods.fml.relauncher.Side;
 | 
						|
import cpw.mods.fml.relauncher.SideOnly;
 | 
						|
import java.io.IOException;
 | 
						|
import java.util.ArrayList;
 | 
						|
import java.util.Iterator;
 | 
						|
import java.util.List;
 | 
						|
import java.util.Map;
 | 
						|
import java.util.SortedSet;
 | 
						|
import net.minecraft.client.resources.data.IMetadataSerializer;
 | 
						|
import net.minecraft.client.resources.data.LanguageMetadataSection;
 | 
						|
import net.minecraft.util.StringTranslate;
 | 
						|
import org.apache.logging.log4j.LogManager;
 | 
						|
import org.apache.logging.log4j.Logger;
 | 
						|
 | 
						|
@SideOnly(Side.CLIENT)
 | 
						|
public class LanguageManager implements IResourceManagerReloadListener
 | 
						|
{
 | 
						|
    private static final Logger logger = LogManager.getLogger();
 | 
						|
    private final IMetadataSerializer theMetadataSerializer;
 | 
						|
    private String currentLanguage;
 | 
						|
    protected static final Locale currentLocale = new Locale();
 | 
						|
    private Map languageMap = Maps.newHashMap();
 | 
						|
    private static final String __OBFID = "CL_00001096";
 | 
						|
 | 
						|
    public LanguageManager(IMetadataSerializer p_i1304_1_, String p_i1304_2_)
 | 
						|
    {
 | 
						|
        this.theMetadataSerializer = p_i1304_1_;
 | 
						|
        this.currentLanguage = p_i1304_2_;
 | 
						|
        I18n.setLocale(currentLocale);
 | 
						|
    }
 | 
						|
 | 
						|
    public void parseLanguageMetadata(List p_135043_1_)
 | 
						|
    {
 | 
						|
        this.languageMap.clear();
 | 
						|
        Iterator iterator = p_135043_1_.iterator();
 | 
						|
 | 
						|
        while (iterator.hasNext())
 | 
						|
        {
 | 
						|
            IResourcePack iresourcepack = (IResourcePack)iterator.next();
 | 
						|
 | 
						|
            try
 | 
						|
            {
 | 
						|
                LanguageMetadataSection languagemetadatasection = (LanguageMetadataSection)iresourcepack.getPackMetadata(this.theMetadataSerializer, "language");
 | 
						|
 | 
						|
                if (languagemetadatasection != null)
 | 
						|
                {
 | 
						|
                    Iterator iterator1 = languagemetadatasection.getLanguages().iterator();
 | 
						|
 | 
						|
                    while (iterator1.hasNext())
 | 
						|
                    {
 | 
						|
                        Language language = (Language)iterator1.next();
 | 
						|
 | 
						|
                        if (!this.languageMap.containsKey(language.getLanguageCode()))
 | 
						|
                        {
 | 
						|
                            this.languageMap.put(language.getLanguageCode(), language);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            catch (RuntimeException runtimeexception)
 | 
						|
            {
 | 
						|
                logger.warn("Unable to parse metadata section of resourcepack: " + iresourcepack.getPackName(), runtimeexception);
 | 
						|
            }
 | 
						|
            catch (IOException ioexception)
 | 
						|
            {
 | 
						|
                logger.warn("Unable to parse metadata section of resourcepack: " + iresourcepack.getPackName(), ioexception);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public void onResourceManagerReload(IResourceManager p_110549_1_)
 | 
						|
    {
 | 
						|
        ArrayList arraylist = Lists.newArrayList(new String[] {"en_US"});
 | 
						|
 | 
						|
        if (!"en_US".equals(this.currentLanguage))
 | 
						|
        {
 | 
						|
            arraylist.add(this.currentLanguage);
 | 
						|
        }
 | 
						|
 | 
						|
        currentLocale.loadLocaleDataFiles(p_110549_1_, arraylist);
 | 
						|
        LanguageRegistry.instance().mergeLanguageTable(currentLocale.field_135032_a, this.currentLanguage);
 | 
						|
        StringTranslate.replaceWith(currentLocale.field_135032_a);
 | 
						|
    }
 | 
						|
 | 
						|
    public boolean isCurrentLocaleUnicode()
 | 
						|
    {
 | 
						|
        return currentLocale.isUnicode();
 | 
						|
    }
 | 
						|
 | 
						|
    public boolean isCurrentLanguageBidirectional()
 | 
						|
    {
 | 
						|
        return this.getCurrentLanguage() != null && this.getCurrentLanguage().isBidirectional();
 | 
						|
    }
 | 
						|
 | 
						|
    public void setCurrentLanguage(Language p_135045_1_)
 | 
						|
    {
 | 
						|
        this.currentLanguage = p_135045_1_.getLanguageCode();
 | 
						|
    }
 | 
						|
 | 
						|
    public Language getCurrentLanguage()
 | 
						|
    {
 | 
						|
        return this.languageMap.containsKey(this.currentLanguage) ? (Language)this.languageMap.get(this.currentLanguage) : (Language)this.languageMap.get("en_US");
 | 
						|
    }
 | 
						|
 | 
						|
    public SortedSet getLanguages()
 | 
						|
    {
 | 
						|
        return Sets.newTreeSet(this.languageMap.values());
 | 
						|
    }
 | 
						|
} |