/// <summary> /// 根据类型 t 获取语言列表 /// </summary> /// <param name="t"></param> /// <returns></returns> public static LanguageSetting getByApp( Type t ) { String langStr = getLangString(); Dictionary<String, LanguageSetting> langlist; langLocaleAll.TryGetValue( langStr, out langlist ); if (langlist == null) { langlist = new Dictionary<String, LanguageSetting>(); logger.Error( "no language: " + langStr ); } LanguageSetting result; langlist.TryGetValue( t.FullName, out result ); if (result == null) { result = LanguageSetting.NewNull(); logger.Error( "no language config: " + langStr + " => " + t.FullName ); } return result; }
private String getVal( Dictionary<String, String> dic, String key ) { String val; dic.TryGetValue( key, out val ); return val; }
public LanguageSetting( String name, Dictionary<String, String> lang ) { this.name = name; this.langMap = lang; }
//-------------------------------------------------------------------- private static Dictionary<String, Dictionary<String, LanguageSetting>> getLangLocale() { String dirRoot = PathHelper.Map( getLangRootPath() ); String[] dirPaths = Directory.GetDirectories( dirRoot ); Dictionary<String, Dictionary<String, LanguageSetting>> results = new Dictionary<String, Dictionary<String, LanguageSetting>>(); foreach (String path in dirPaths) { String langName = Path.GetFileName( path ); results.Add( langName.ToLower(), getLangList( path ) ); } return results; }
private static Dictionary<String, LanguageSetting> getLangList( String path ) { String[] files = Directory.GetFiles( path ); Dictionary<String, LanguageSetting> results = new Dictionary<String, LanguageSetting>(); foreach (String file in files) { if (Path.GetExtension( file ) != ".config") continue; String fileName = Path.GetFileNameWithoutExtension( file ); Dictionary<String, String> _lang = cfgHelper.Read( file, '=' ); LanguageSetting lbl = new LanguageSetting( fileName, _lang ); results.Add( fileName, lbl ); } return results; }
private static Dictionary<String, String> getLangInfo() { Dictionary<String, String> map = new Dictionary<String, String>(); map.Add( "en-us", "English (US)" ); map.Add( "en-gb", "English (British)" ); map.Add( "zh-cn", "中文(简体)" ); // skipLang map.Add( "zh-tw", "正體中文(繁體)" ); // skipLang map.Add( "ja", "日本語" );// skipLang map.Add( "ko", "한국어" ); map.Add( "fr", "Français" ); map.Add( "de", "Deutsch" ); map.Add( "it", "Italiano" ); return map; }
//------------------------------------------------------------------ /// <summary> /// 获取所有支持的语言包 /// </summary> /// <returns></returns> public static List<Dictionary<String, String>> GetSupportedLang() { List<Dictionary<String, String>> list = new List<Dictionary<String, String>>(); foreach (String key in langLocaleAll.Keys) { Dictionary<String, String> pair = new Dictionary<String, String>(); pair.Add( "Name", GetLangInfo( key ) ); pair.Add( "Value", key ); list.Add( pair ); } return list; }
//-------------------------------------------------------------------- private static Dictionary<String, Dictionary<String, LanguageSetting>> getLangLocale() { String dirRoot = PathHelper.Map( getLangRootPath() ); if (Directory.Exists( dirRoot ) == false) { logger.Error( "no language directory: " + dirRoot ); return new Dictionary<String, Dictionary<String, LanguageSetting>>(); } String[] dirPaths = Directory.GetDirectories( dirRoot ); Dictionary<String, Dictionary<String, LanguageSetting>> results = new Dictionary<String, Dictionary<String, LanguageSetting>>(); foreach (String path in dirPaths) { String langName = Path.GetFileName( path ); results.Add( langName.ToLower(), getLangList( path ) ); } if (results.Count == 0) { logger.Error( "no language sub directory: " + dirRoot ); } return results; }
private static LanguageSetting getCoreLang( String langStr ) { Dictionary<String, LanguageSetting> langlist; langLocaleAll.TryGetValue( langStr, out langlist ); if (langlist == null) { langlist = new Dictionary<String, LanguageSetting>(); logger.Error( "no language: " + langStr ); } String configName = "core"; LanguageSetting ret; langlist.TryGetValue( configName, out ret ); if (ret == null) { ret = LanguageSetting.NewNull(); logger.Error( "no language config: " + langStr + " => " + configName ); } return ret; }