Example #1
0
        public static Dictionary <string, string> Strings(string viewVirtualPath, CultureInfo cultureInfo)
        {
            #region Precompiled

            var resourceManager = CompiledResources.GetResourceManager(viewVirtualPath);
            try
            {
                var resourceSet = resourceManager.GetResourceSet(cultureInfo, false, true);

                if (resourceSet == null)
                {
                    return(GetDefaultCultureResourceSet(resourceManager, cultureInfo));
                }

                var result = new Dictionary <string, string>();

                var enumerator = resourceSet.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    result.Add(enumerator.Key.ToString(), (string)enumerator.Value);
                }

                return(result);
            }
            catch (NullReferenceException ex)
            {
                throw new NullReferenceException(
                          "NullReferenceException was met with 'viewVirtualPath' = '{0}', 'CultureInfo' = '{1}'.".FormatWith(
                              viewVirtualPath, cultureInfo), ex);
            }
            #endregion

            #region Non precompiled
            var dic        = new Dictionary <string, string>();
            var resXReader = new ResXResourceReader(GetResourceFileFullName(viewVirtualPath, cultureInfo));

            foreach (DictionaryEntry entry in resXReader)
            {
                var value = entry.Value.ToString();
                //value = value.Replace("\"", "\\\"").Replace("'", "\\'").Replace("\r", "")
                //    .Replace("\n", "");
                dic.Add(entry.Key.ToString(), value);
            }
            resXReader.Close();

            return(dic);

            #endregion
        }
Example #2
0
        public static string[] GetAllAvailableCultures(this HtmlHelper helper, string virtualPath, string resourceFolder = "App_LocalResources")
        {
            #region precompiled
            return(CompiledResources.GetAvailableCulturesFor(virtualPath, resourceFolder, true));

            #endregion

            #region Not precompiled
            List <string> availableCultures     = new List <string>();
            string        cultureFilesFolder    = Path.Combine(Path.GetDirectoryName(HostingEnvironment.MapPath(virtualPath)), resourceFolder);
            string        currentViewName       = Path.GetFileName(virtualPath);
            string[]      fileNames             = Directory.GetFiles(cultureFilesFolder, "*.resx", SearchOption.TopDirectoryOnly);
            bool          hasDefaultCultureCode = false;
            foreach (string filePath in fileNames)
            {
                string fileName = Path.GetFileNameWithoutExtension(filePath);
                if (fileName.StartsWith(currentViewName, StringComparison.InvariantCultureIgnoreCase))
                {
                    string temp         = fileName.TrimStart(currentViewName);
                    int    cultureStart = temp.LastIndexOf(".");
                    if (cultureStart >= 0)
                    {
                        availableCultures.Add(temp.Substring(cultureStart + 1));
                    }
                    else
                    {
                        hasDefaultCultureCode = true;
                    }
                }
            }

            if (hasDefaultCultureCode)
            {
                string defaultCultureCode = LookupDefaultCultureCode(availableCultures);
                if (!string.IsNullOrWhiteSpace(defaultCultureCode))
                {
                    availableCultures.Add(defaultCultureCode);
                }
            }

            return(availableCultures.ToArray());

            #endregion
        }
        public static string Localize(this WebPageExecutingBase page, string resourceKey, string defaultValue = null)
        {
            #region Precompiled
            return(CompiledResources.GetResourceManager(page.VirtualPath).GetString(resourceKey));

            #endregion

            #region Not precompiled
            var localResourceObject = HttpContext.GetLocalResourceObject(page.VirtualPath, resourceKey);

            if (localResourceObject != null)
            {
                return(localResourceObject.ToString());
            }
            else
            {
                return(defaultValue ?? resourceKey);
            }
            #endregion
        }