Catel.Services.LanguageService.GetString C# (CSharp) Method

GetString() public method

Gets the string from the specified resource file with the current culture.
The is null. The is null. The is null.
public GetString ( ILanguageSource languageSource, string resourceName, CultureInfo cultureInfo ) : string
languageSource ILanguageSource The language source.
resourceName string Name of the resource.
cultureInfo System.Globalization.CultureInfo The culture information.
return string
        public override string GetString(ILanguageSource languageSource, string resourceName, CultureInfo cultureInfo)
        {
            Argument.IsNotNull("languageSource", languageSource);
            Argument.IsNotNullOrWhitespace("resourceName", resourceName);
            Argument.IsNotNull("cultureInfo", cultureInfo);
            
            string value = null;
            var source = languageSource.GetSource();
            var resourceLoader = GetResourceManager(source);

            if (resourceLoader != null)
            {
#if NETFX_CORE
                var resourceContainer = GetResourceContainer(source);

                // Try the language specific first
                var neutralSource = string.Format("{0}", resourceContainer);
                var cultureName = cultureInfo.Name;
                var languageSpecificSource = string.Format("{0}.{1}", resourceContainer, cultureName);

                var currentResourceManager = Windows.ApplicationModel.Resources.Core.ResourceManager.Current;

                var finalResourceMap = (from resourceMap in currentResourceManager.AllResourceMaps
                                        let rm = resourceMap.Value.GetSubtree(languageSpecificSource)
                                        where rm != null
                                        select rm).FirstOrDefault();

                if ((finalResourceMap == null) && !cultureInfo.IsNeutralCulture)
                {
                    cultureName = cultureInfo.Parent.Name;
                    languageSpecificSource = string.Format("{0}.{1}", resourceContainer, cultureName);

                    finalResourceMap = (from resourceMap in currentResourceManager.AllResourceMaps
                                        let rm = resourceMap.Value.GetSubtree(languageSpecificSource)
                                        where rm != null
                                        select rm).FirstOrDefault();
                }

                if (finalResourceMap == null)
                {
                    finalResourceMap = (from resourceMap in currentResourceManager.AllResourceMaps
                                        let rm = resourceMap.Value.GetSubtree(neutralSource)
                                        where rm != null
                                        select rm).FirstOrDefault();
                }

                if (finalResourceMap != null)
                {
                    var resourceContext = ResourceContext.GetForViewIndependentUse();
                    resourceContext.Languages = new[] { cultureName };

                    var resourceCandidate = finalResourceMap.GetValue(resourceName, resourceContext);
                    if (resourceCandidate != null)
                    {
                        value = resourceCandidate.ValueAsString;
                    }
                }
#else
                value = resourceLoader.GetString(resourceName, cultureInfo);
#endif
            }

            return value;
        }

Same methods

LanguageService::GetString ( string resourceName ) : string
LanguageService::GetString ( string resourceName, CultureInfo cultureInfo ) : string

Usage Example

Example #1
0
            public void ReturnsStringForMvvmAssembly()
            {
                var languageService = new LanguageService();

                Assert.AreEqual("Warning", languageService.GetString("WarningTitle"));
                Assert.AreEqual("Warning", languageService.GetString("WarningTitle"));
            }
All Usage Examples Of Catel.Services.LanguageService::GetString