// Path: src/com/nilhcem/frcndict/core/Log.java
// public final class Log {
// 
// 	private static final boolean LOG_ERROR = Config.LOGLEVEL > 0;
// 	private static final boolean LOG_WARN = Config.LOGLEVEL > 1;
// 	private static final boolean LOG_INFO = Config.LOGLEVEL > 2;
// 	private static final boolean LOG_DEBUG = Config.LOGLEVEL > 3;
// 
// 	private Log() {
// 		throw new UnsupportedOperationException();
// 	}
// 
// 	public static void d(String tag, String msgFormat, Object... args) {
// 		if (LOG_DEBUG) {
// 			try {
// 				android.util.Log.d(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.d(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void w(String tag, String msgFormat, Object... args) {
// 		if (LOG_WARN) {
// 			try {
// 				android.util.Log.w(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.w(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void i(String tag, String msgFormat, Object... args) {
// 		if (LOG_INFO) {
// 			try {
// 				android.util.Log.i(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.i(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void e(String tag, Throwable t) {
// 		if (LOG_ERROR) {
// 			android.util.Log.e(tag, "", t);
// 		}
// 	}
// 
// 	public static void e(String tag, String msgFormat, Object... args) {
// 		if (LOG_ERROR) {
// 			try {
// 				android.util.Log.e(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.e(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void e(String tag, Throwable t, String msgFormat, Object... args) {
// 		if (LOG_ERROR) {
// 			try {
// 				android.util.Log.e(tag, String.format(Locale.US, msgFormat, args), t);
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.e(tag, msgFormat, t);
// 			}
// 		}
// 	}
// }


import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;
import com.nilhcem.frcndict.R;
import com.nilhcem.frcndict.core.Log;

		// Get webview and enable JS
		WebView webView = (WebView) findViewById(R.id.aboutWebView);
		webView.getSettings().setJavaScriptEnabled(true);

		// Add interface
		webView.addJavascriptInterface(jsInterface, "android"); // "android" is the keyword that will be exposed in js

		// Load file
		webView.loadUrl(getLocaleUrl());
	}

	private String getLocaleUrl() {
		boolean found = false;
		String localeUrl = null;

		try {
			Locale locale = Locale.getDefault();
			List<String> assets = Arrays.asList(mParentContext.getResources().getAssets().list(AboutDialog.ABOUT_ASSET_DIR));

			localeUrl = String.format(Locale.US, "%s%s%s%s", AboutDialog.ABOUT_ASSET_FILE,
					AboutDialog.ABOUT_ASSET_FILE_SEPARATOR, locale.getLanguage(),
					AboutDialog.ABOUT_URL_EXTENSION);
			if (assets.contains(localeUrl)) {
				found = true;
			}
			if (locale.getCountry().equals("CN")) {
				localeUrl = localeUrl.replace("zh", "zh-simplified");
			}
		} catch (IOException e) {
// Path: src/com/nilhcem/frcndict/core/Log.java
// public final class Log {
// 
// 	private static final boolean LOG_ERROR = Config.LOGLEVEL > 0;
// 	private static final boolean LOG_WARN = Config.LOGLEVEL > 1;
// 	private static final boolean LOG_INFO = Config.LOGLEVEL > 2;
// 	private static final boolean LOG_DEBUG = Config.LOGLEVEL > 3;
// 
// 	private Log() {
// 		throw new UnsupportedOperationException();
// 	}
// 
// 	public static void d(String tag, String msgFormat, Object... args) {
// 		if (LOG_DEBUG) {
// 			try {
// 				android.util.Log.d(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.d(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void w(String tag, String msgFormat, Object... args) {
// 		if (LOG_WARN) {
// 			try {
// 				android.util.Log.w(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.w(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void i(String tag, String msgFormat, Object... args) {
// 		if (LOG_INFO) {
// 			try {
// 				android.util.Log.i(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.i(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void e(String tag, Throwable t) {
// 		if (LOG_ERROR) {
// 			android.util.Log.e(tag, "", t);
// 		}
// 	}
// 
// 	public static void e(String tag, String msgFormat, Object... args) {
// 		if (LOG_ERROR) {
// 			try {
// 				android.util.Log.e(tag, String.format(Locale.US, msgFormat, args));
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.e(tag, msgFormat);
// 			}
// 		}
// 	}
// 
// 	public static void e(String tag, Throwable t, String msgFormat, Object... args) {
// 		if (LOG_ERROR) {
// 			try {
// 				android.util.Log.e(tag, String.format(Locale.US, msgFormat, args), t);
// 			} catch (NullPointerException e) {
// 				// Do nothing
// 			} catch (IllegalFormatException e) {
// 				android.util.Log.e(tag, msgFormat, t);
// 			}
// 		}
// 	}
// }


// Path: src/com/nilhcem/frcndict/about/AboutDialog.java
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;
import com.nilhcem.frcndict.R;
import com.nilhcem.frcndict.core.Log;


		// Get webview and enable JS
		WebView webView = (WebView) findViewById(R.id.aboutWebView);
		webView.getSettings().setJavaScriptEnabled(true);

		// Add interface
		webView.addJavascriptInterface(jsInterface, "android"); // "android" is the keyword that will be exposed in js

		// Load file
		webView.loadUrl(getLocaleUrl());
	}

	private String getLocaleUrl() {
		boolean found = false;
		String localeUrl = null;

		try {
			Locale locale = Locale.getDefault();
			List<String> assets = Arrays.asList(mParentContext.getResources().getAssets().list(AboutDialog.ABOUT_ASSET_DIR));

			localeUrl = String.format(Locale.US, "%s%s%s%s", AboutDialog.ABOUT_ASSET_FILE,
					AboutDialog.ABOUT_ASSET_FILE_SEPARATOR, locale.getLanguage(),
					AboutDialog.ABOUT_URL_EXTENSION);
			if (assets.contains(localeUrl)) {
				found = true;
			}
			if (locale.getCountry().equals("CN")) {
				localeUrl = localeUrl.replace("zh", "zh-simplified");
			}
		} catch (IOException e) {
			Log.e(AboutDialog.class.getSimpleName(), e, "Can't find about asset");