示例#1
0
        public static void LoadZipFile(ZipFile zip, string locale)
        {
            bool auto = string.IsNullOrEmpty(locale);

            foreach (ZipEntry entry in zip)
            {
                string path = entry.FileName;
                string name = Path.GetFileName(path);
                if (name != null && name.EndsWith(".properties", StringComparison.InvariantCultureIgnoreCase))
                {
                    name = Path.GetFileNameWithoutExtension(name);
                    var    rbStream = entry.OpenReader().ToMemoryStream();
                    var    lines    = rbStream.GetResourceBundleLines();
                    string loc      = locale;
                    if (auto)
                    {
                        string dir = Path.GetDirectoryName(path);
                        loc = Path.GetFileName(dir);
                        //TODO: check locale
                    }
                    var rb = new ResourceBundle
                    {
                        IsFlex     = _isFlex,
                        IsZipped   = true,
                        Name       = name,
                        Locale     = loc,
                        Content    = lines,
                        SourcePath = zip.Name,
                        ZipEntry   = path
                    };
                    Register(rb);
                }
            }
        }
示例#2
0
        private static void Register(ResourceBundle rb)
        {
            string name   = rb.Locale;
            var    locale = GetLocale(name);

            if (locale == null)
            {
                locale = new Locale();

                if (_isFlex && name.Equals(Const.Locales.en_US, StringComparison.InvariantCultureIgnoreCase))
                {
                    _localeEnUs = locale;
                }

                Locales.Add(name, locale);
            }

            locale.Add(rb);
        }
示例#3
0
 public void Add(ResourceBundle rb)
 {
     _rbcache.Add(rb.Name, rb);
 }