package net.minecraft.client.resources;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.IOException;
import java.io.InputStream;
import java.util.IllegalFormatException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
@SideOnly(Side.CLIENT)
public class Locale
{
/** Splits on "=" */
private static final Splitter splitter = Splitter.on('=').limit(2);
private static final Pattern field_135031_c = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]");
Map field_135032_a = Maps.newHashMap();
private boolean field_135029_d;
private static final String __OBFID = "CL_00001097";
/**
* par2 is a list of languages. For each language $L and domain $D, attempts to load the resource $D:lang/$L.lang
*/
public synchronized void loadLocaleDataFiles(IResourceManager p_135022_1_, List p_135022_2_)
{
this.field_135032_a.clear();
Iterator iterator = p_135022_2_.iterator();
while (iterator.hasNext())
{
String s = (String)iterator.next();
String s1 = String.format("lang/%s.lang", new Object[] {s});
Iterator iterator1 = p_135022_1_.getResourceDomains().iterator();
while (iterator1.hasNext())
{
String s2 = (String)iterator1.next();
try
{
this.loadLocaleData(p_135022_1_.getAllResources(new ResourceLocation(s2, s1)));
}
catch (IOException ioexception)
{
;
}
}
}
this.checkUnicode();
}
public boolean isUnicode()
{
return this.field_135029_d;
}
private void checkUnicode()
{
this.field_135029_d = false;
int i = 0;
int j = 0;
Iterator iterator = this.field_135032_a.values().iterator();
while (iterator.hasNext())
{
String s = (String)iterator.next();
int k = s.length();
j += k;
for (int l = 0; l < k; ++l)
{
if (s.charAt(l) >= 256)
{
++i;
}
}
}
float f = (float)i / (float)j;
this.field_135029_d = (double)f > 0.1D;
}
/**
* par1 is a list of Resources
*/
private void loadLocaleData(List p_135028_1_) throws IOException
{
Iterator iterator = p_135028_1_.iterator();
while (iterator.hasNext())
{
IResource iresource = (IResource)iterator.next();
this.loadLocaleData(iresource.getInputStream());
}
}
private void loadLocaleData(InputStream p_135021_1_) throws IOException
{
Iterator iterator = IOUtils.readLines(p_135021_1_, Charsets.UTF_8).iterator();
while (iterator.hasNext())
{
String s = (String)iterator.next();
if (!s.isEmpty() && s.charAt(0) != 35)
{
String[] astring = (String[])Iterables.toArray(splitter.split(s), String.class);
if (astring != null && astring.length == 2)
{
String s1 = astring[0];
String s2 = field_135031_c.matcher(astring[1]).replaceAll("%$1s");
this.field_135032_a.put(s1, s2);
}
}
}
}
/**
* Returns the translation, or the key itself if the key could not be translated.
*/
private String translateKeyPrivate(String p_135026_1_)
{
String s1 = (String)this.field_135032_a.get(p_135026_1_);
return s1 == null ? p_135026_1_ : s1;
}
/**
* Calls String.format(translateKey(key), params)
*/
public String formatMessage(String p_135023_1_, Object[] p_135023_2_)
{
String s1 = this.translateKeyPrivate(p_135023_1_);
try
{
return String.format(s1, p_135023_2_);
}
catch (IllegalFormatException illegalformatexception)
{
return "Format error: " + s1;
}
}
}