csharp Xamarin RESX

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp Xamarin RESX相关的知识,希望对你有一定的参考价值。

   /// <summary>
    /// 多言語化されたリソースと、言語の切り替え機能を提供します。
    /// </summary>
    public class ResourceService : INotifyPropertyChanged
    {
        #region singleton members

        public static ResourceService Current { get; } = new ResourceService();

        #endregion

        public string this[string key]
        {
            get
            {
                return Resource.ResourceManager.GetString(key, Resource.Culture);
            }
        }

        #region INotifyPropertyChanged members

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
        {
            var handler = this.PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion

        /// <summary>
        /// 指定されたカルチャ名を使用して、リソースのカルチャを変更します。
        /// </summary>
        /// <param name="name">カルチャの名前。</param>
        public void ChangeCulture(string name)
        {
            Resource.Culture = CultureInfo.GetCultureInfo(name);
            this.RaisePropertyChanged("Item");  //気持ち悪いけどこうするしかないんだ
        }

        /// <summary>
		/// サポートされているカルチャの名前。
		/// </summary>
		private readonly string[] supportedCultureNames =
        {
            "ja", // Resources.resx
			"en",
            "zh-CN",
        };

        /// <summary>
        /// サポートされているカルチャを取得します。
        /// </summary>
        public IReadOnlyCollection<CultureInfo> SupportedCultures { get; }

        private ResourceService()
        {
            this.SupportedCultures = this.supportedCultureNames
                .Select(x =>
                {
                    try
                    {
                        return CultureInfo.GetCultureInfo(x);
                    }
                    catch (CultureNotFoundException)
                    {
                        return null;
                    }
                })
                .Where(x => x != null)
                .ToList();
        }
    }

以上是关于csharp Xamarin RESX的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Xamarin iOS/Android 中使用定义 PCL 的 RESX 文件来支持多语言?

带有 .resx 资源的 Windows Phone 8.1 上的 MissingManifestResourceException

dotnet 5 和 Xamarin Android:找不到导入的项目“Xamarin.Android.CSharp.targets”

csharp Xamarin主题

csharp MyBindableCustomPicker / Xamarin.Forms

csharp Xamarin.Forms条目只有底部边框。