国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF本地化/國(guó)際化,多語(yǔ)言切換

這篇具有很好參考價(jià)值的文章主要介紹了WPF本地化/國(guó)際化,多語(yǔ)言切換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

之前寫過(guò)winformwinform使用本地化,中英文切換_winform 中英文切換_故里2130的博客-CSDN博客

基本的技術(shù)差不多,但是后來(lái)又發(fā)現(xiàn)了一個(gè)ResXManager工具,可以更好方便快捷的使用。

首先下載,網(wǎng)絡(luò)不好的話,去官網(wǎng)下載,然后安裝,重啟vs即可

WPF本地化/國(guó)際化,多語(yǔ)言切換

wpf做多語(yǔ)言切換

有很多種,可以使用自帶的資源去做,就是使用xaml寫key值,這種做法是最簡(jiǎn)單方便的,也是wpf獨(dú)特使用的,如果有大量的翻譯,那么需要人工去翻譯,需要轉(zhuǎn)折一次,此種方法就不說(shuō)了。下面說(shuō)2種使用.resx資源和ResXManager工具來(lái)做。唯一的好處,就是自帶翻譯功能,方便快捷。

第一種

1.此處使用.net6創(chuàng)建wpf項(xiàng)目,與.net?framework不一樣,.net?framework要簡(jiǎn)單一些

建立如圖項(xiàng)目

WPF本地化/國(guó)際化,多語(yǔ)言切換

2.打開(kāi)ResXManager工具

WPF本地化/國(guó)際化,多語(yǔ)言切換

3.點(diǎn)擊新增語(yǔ)言,增加幾個(gè)語(yǔ)種

WPF本地化/國(guó)際化,多語(yǔ)言切換

增加后,雙擊增加的語(yǔ)種,就會(huì)自動(dòng)生成對(duì)應(yīng)的.resx文件,想要多少種語(yǔ)言,就可以增加多少種

WPF本地化/國(guó)際化,多語(yǔ)言切換

最后要修改一下后綴名,否則報(bào)錯(cuò)。

4. 點(diǎn)擊翻譯

此處,可以導(dǎo)出Excel,讓別人翻譯,然后再導(dǎo)入,也可以使用在線翻譯的功能,點(diǎn)擊翻譯。

WPF本地化/國(guó)際化,多語(yǔ)言切換??

5.效果

WPF本地化/國(guó)際化,多語(yǔ)言切換

6. 創(chuàng)建LanguageManager.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Resources;
using System.Text;

namespace WpfApp1.Resources
{
    public class LanguageManager : INotifyPropertyChanged
    {
        /// <summary>
        /// 資源
        /// </summary>
        private readonly ResourceManager _resourceManager;

        /// <summary>
        /// 懶加載
        /// </summary>
        private static readonly Lazy<LanguageManager> _lazy = new Lazy<LanguageManager>(() => new LanguageManager());   
        public static LanguageManager Instance => _lazy.Value;
        public event PropertyChangedEventHandler PropertyChanged;

        public LanguageManager()
        {
            //獲取此命名空間下Resources的Lang的資源,Lang可以修改
            _resourceManager = new ResourceManager("WpfApp1.Resources.Lang", typeof(LanguageManager).Assembly);
        }

        /// <summary>
        /// 索引器的寫法,傳入字符串的下標(biāo)
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public string this[string name]
        {
            get
            {
                if (name == null)
                {
                    throw new ArgumentNullException(nameof(name));
                }
                return _resourceManager.GetString(name);
            }
        }

        public void ChangeLanguage(CultureInfo cultureInfo)
        {
            CultureInfo.CurrentCulture = cultureInfo;
            CultureInfo.CurrentUICulture = cultureInfo;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("item[]"));  //字符串集合,對(duì)應(yīng)資源的值
        }
    }
}

7.xaml界面

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1.Resources"
        mc:Ignorable="d"
        xmlns:res="clr-namespace:System.Windows.Resources;assembly=PresentationFramework"
       
        Title="MainWindow" Height="450" Width="800">
    <StackPanel HorizontalAlignment="Center">
        <ComboBox x:Name="LanguageList" SelectedIndex="0" Margin="10" SelectionChanged="LanguageList_SelectionChanged"/>
        <!--這里綁定字符串的值,Source來(lái)源于語(yǔ)言的集合,Mode是響應(yīng)的方式,有些需要,有些不需要-->
        <TextBlock FontSize="20" Margin="10" Text="{Binding [String1], Source={x:Static local:LanguageManager.Instance}}"/>
        <TextBox FontSize="20" Margin="10"   Text="{Binding [String2], Source={x:Static local:LanguageManager.Instance}, Mode=OneWay}"/>
        <Button FontSize="20" Margin="10" Content="{Binding [String3], Source={x:Static local:LanguageManager.Instance}}"/>
    </StackPanel>
</Window>

8.后臺(tái)

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfApp1.Resources;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            LanguageList.ItemsSource = new List<string>
            {
                "en-Us",
                "zh-CN",
                "ar"
            };
  //this.DataContext = new Lazy<LanguageManager>(() => new LanguageManager()).Value;
        }

        /// <summary>
        /// 下拉框賦值語(yǔ)言的類型
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LanguageList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LanguageManager.Instance.ChangeLanguage(new CultureInfo((sender as ComboBox).SelectedItem.ToString()));
        }
    }
}

此處使用mvvm的話,可以直接綁定,1對(duì)1綁定語(yǔ)言?

9.效果

WPF本地化/國(guó)際化,多語(yǔ)言切換

WPF本地化/國(guó)際化,多語(yǔ)言切換

WPF本地化/國(guó)際化,多語(yǔ)言切換

第二種

1.首先創(chuàng)建一個(gè)程序

WPF本地化/國(guó)際化,多語(yǔ)言切換

2.在Resources文件夾中,創(chuàng)建文件

WPF本地化/國(guó)際化,多語(yǔ)言切換

3.GlobalClass.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp2.Resources
{
    /// <summary>
    /// 全局類
    /// </summary>
    public static class GlobalClass
    {
        static bool? inDesignMode = null;
        /// <summary>
        /// 判斷是設(shè)計(jì)器還是程序運(yùn)行
        /// </summary>
        public static bool InDesignMode
        {
            get
            {
                if (inDesignMode == null)
                {
#if SILVERLIGHT
                    inDesignMode = DesignerProperties.IsInDesignTool;
#else
                    var prop = DesignerProperties.IsInDesignModeProperty;
                    inDesignMode = (bool)DependencyPropertyDescriptor.FromProperty(prop, typeof(FrameworkElement)).Metadata.DefaultValue;

                    if (!inDesignMode.GetValueOrDefault(false) && Process.GetCurrentProcess().ProcessName.StartsWith("devenv", StringComparison.Ordinal))
                        inDesignMode = true;
#endif
                }

                return inDesignMode.GetValueOrDefault(false);
            }
        }
        /// <summary>
        /// 語(yǔ)言改變通知事件
        /// </summary>
        public static EventHandler<EventArgs> LanguageChangeEvent;
        static Resource StringResource;
        static GlobalClass()
        {
            StringResource = new Resource();
        }
        /// <summary>
        /// 獲取資源內(nèi)容
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string GetString(string key)
        {
            return StringResource.GetString(key);
        }
        /// <summary>
        /// 改變語(yǔ)言
        /// </summary>
        /// <param name="language">CultureInfo列表(http://www.csharpwin.com/csharpspace/8948r7277.shtml)</param>
        public static void ChangeLanguage(string language)
        {
            CultureInfo culture = new CultureInfo(language);
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;

            StringResource.CurrentCulture = culture;

            if (LanguageChangeEvent != null)
            {
                LanguageChangeEvent(null, null);
            }
        }
    }
}

4.Resource.cs

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Resources;

namespace WpfApp2.Resources
{
    public interface IResource
    {
        string GetString(string name);
        CultureInfo CurrentCulture { set; }
    }
    public class Resource : IResource
    {
        private ResourceManager stringResource;
        //我們這樣設(shè)置的時(shí)候ResourceManager會(huì)去查找MultilanguageTest.StringResource.en-us.resx,如果沒(méi)有會(huì)查找MultilanguageTest.StringResource.resx
        private CultureInfo culture = new CultureInfo("zh-cn");     //默認(rèn)值
        public Resource()
        {
            //MultilanguageTest.StringResource是根名稱,該實(shí)例使用指定的System.Reflection.Assmbly查找從指定的跟名稱導(dǎo)出的文件中包含的資源
            //此處注意WpfApp2.Resources.Lang,Lang是資源文件的名字
            stringResource = new ResourceManager("WpfApp2.Resources.Lang", typeof(Resource).Assembly);
        }
        /// <summary>
        /// 通過(guò)資源名稱獲取資源內(nèi)容
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public string GetString(string name)
        {
            return stringResource.GetString(name, culture);
        }
        /// <summary>
        /// 改變當(dāng)前的區(qū)域信息,ResourceManager可以通過(guò)當(dāng)前區(qū)域信息去查找.resx文件
        /// </summary>
        public CultureInfo CurrentCulture
        {
            set
            {
                culture = value;
            }
        }
    }
}

5.StringResourceExtension.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;

namespace WpfApp2.Resources
{
    [MarkupExtensionReturnType(typeof(BindingExpression))]
    public class StringResourceExtension : MarkupExtension, INotifyPropertyChanged
    {
        /// <summary>
        /// 資源的名稱,與資源文件StringResource.resx對(duì)應(yīng)
        /// </summary>
        [ConstructorArgument("key")]
        public string Key
        {
            get;
            set;
        }
        string _DefaultValue;
        /// <summary>
        /// 默認(rèn)值,為了使在設(shè)計(jì)器的情況時(shí)把默認(rèn)值綁到設(shè)計(jì)器
        /// </summary>
        public string DefaultValue
        {
            get
            {
                return _DefaultValue;
            }
            set
            {
                _DefaultValue = value;
            }
        }
        string _Value;
        /// <summary>
        /// 資源的具體內(nèi)容,通過(guò)資源名稱也就是上面的Key找到對(duì)應(yīng)內(nèi)容
        /// </summary>
        public string Value
        {
            get
            {
                ///如果為設(shè)計(jì)器模式,本地的資源沒(méi)有實(shí)例化,我們不能從資源文件得到內(nèi)容,所以從KEY或默認(rèn)值綁定到設(shè)計(jì)器去
                if (GlobalClass.InDesignMode)
                {
                    if (Key != null && DefaultValue != null)
                        return DefaultValue;
                    if (Key == null && DefaultValue != null)
                        return DefaultValue;
                    if (Key != null && DefaultValue == null)
                        return Key;
                    if (Key == null && DefaultValue == null)
                        return "NULL";
                }
                else
                {
                    if (Key != null)
                    {
                        string strResault = null;
                        try
                        {
                            strResault = GlobalClass.GetString(Key);
                        }
                        catch
                        {
                        }
                        if (strResault == null)
                        {
                            strResault = _DefaultValue;
                        }
                        return strResault;
                    }
                }
                return _Value;
            }
            set
            {
                _Value = value;
            }
        }
        public StringResourceExtension(string key)
            : this()
        {
            Key = key;
            GlobalClass.LanguageChangeEvent += new EventHandler<EventArgs>(Language_Event);
        }
        public StringResourceExtension(string key, string DefaultValue)
            : this()
        {
            Key = key;
            _DefaultValue = DefaultValue;
            GlobalClass.LanguageChangeEvent += new EventHandler<EventArgs>(Language_Event);

        }
        public StringResourceExtension()
        {
        }
        /// <summary>
        /// 每一標(biāo)記擴(kuò)展實(shí)現(xiàn)的 ProvideValue 方法能在可提供上下文的運(yùn)行時(shí)使用 IServiceProvider。然后會(huì)查詢此 IServiceProvider 以獲取傳遞信息的特定服務(wù)
        ///當(dāng) XAML 處理器在處理一個(gè)類型節(jié)點(diǎn)和成員值,且該成員值是標(biāo)記擴(kuò)展時(shí),它將調(diào)用該標(biāo)記擴(kuò)展的 ProvideValue 方法并將結(jié)果寫入到對(duì)象關(guān)系圖或序列化流,XAML 對(duì)象編寫器將服務(wù)環(huán)境通過(guò) serviceProvider 參數(shù)傳遞到每個(gè)此類實(shí)現(xiàn)。
        /// </summary>
        /// <param name="serviceProvider"></param>
        /// <returns></returns>
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

            Setter setter = target.TargetObject as Setter;
            if (setter != null)
            {
                return new Binding("Value") { Source = this, Mode = BindingMode.OneWay };
            }
            else
            {
                Binding binding = new Binding("Value") { Source = this, Mode = BindingMode.OneWay };
                return binding.ProvideValue(serviceProvider);
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;

        static readonly System.ComponentModel.PropertyChangedEventArgs
            valueChangedEventArgs = new System.ComponentModel.PropertyChangedEventArgs("Value");

        protected void NotifyValueChanged()
        {
            if (PropertyChanged != null)
                PropertyChanged(this, valueChangedEventArgs);
        }
        /// <summary>
        /// 語(yǔ)言改變通知事件,當(dāng)程序初始化的時(shí)候會(huì)綁定到全局的GlobalClass.LanguageChangeEvent事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Language_Event(object sender, EventArgs e)
        {
            //通知Value值已經(jīng)改變,需重新獲取
            NotifyValueChanged();
        }
    }
}

6.創(chuàng)建3個(gè)語(yǔ)言的文件

WPF本地化/國(guó)際化,多語(yǔ)言切換

使用ResXManager工具進(jìn)行翻譯,參考上面的細(xì)節(jié)

WPF本地化/國(guó)際化,多語(yǔ)言切換

7.效果

WPF本地化/國(guó)際化,多語(yǔ)言切換

WPF本地化/國(guó)際化,多語(yǔ)言切換

WPF本地化/國(guó)際化,多語(yǔ)言切換

2種方式都可以,第一種要簡(jiǎn)單一點(diǎn)。?

源碼:

https://download.csdn.net/download/u012563853/87944124

來(lái)源:WPF本地化/國(guó)際化,多語(yǔ)言切換_wpf 國(guó)際化_故里2130的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-500007.html

到了這里,關(guān)于WPF本地化/國(guó)際化,多語(yǔ)言切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • WPS AI內(nèi)測(cè)申請(qǐng)竅門;AI數(shù)字人最全工具盤點(diǎn);AI超級(jí)個(gè)體必讀書籍;產(chǎn)品國(guó)際化與本地化指南;生成式AI應(yīng)用路線圖 | ShowMeAI日?qǐng)?bào)

    WPS AI內(nèi)測(cè)申請(qǐng)竅門;AI數(shù)字人最全工具盤點(diǎn);AI超級(jí)個(gè)體必讀書籍;產(chǎn)品國(guó)際化與本地化指南;生成式AI應(yīng)用路線圖 | ShowMeAI日?qǐng)?bào)

    ?? 日?qǐng)?bào)周刊合集 | ?? 生產(chǎn)力工具與行業(yè)應(yīng)用大全 | ?? 點(diǎn)贊關(guān)注評(píng)論拜托啦! 隨著生成式AI「 對(duì)生成內(nèi)容的可控性 」不斷提高,其應(yīng)用場(chǎng)景也在不斷擴(kuò)展和深化,這個(gè)演進(jìn)過(guò)程大致分為如圖所示的6個(gè)階段。 與簡(jiǎn)單的文本/圖片生成相比,包含聲音、視頻、3D場(chǎng)景、動(dòng)畫、復(fù)

    2024年02月16日
    瀏覽(30)
  • 【android studio 簡(jiǎn)單配置多語(yǔ)言國(guó)際化app 一行代碼實(shí)現(xiàn)切換語(yǔ)言】

    【android studio 簡(jiǎn)單配置多語(yǔ)言國(guó)際化app 一行代碼實(shí)現(xiàn)切換語(yǔ)言】

    新版本的android studio配置多語(yǔ)言其實(shí)很簡(jiǎn)單,不過(guò)目前網(wǎng)上找到的幾個(gè)博客都搞得很復(fù)雜,可能是版本比較老的時(shí)候出的方案,今天分享一下怎么一行代碼切換語(yǔ)言. 1.切換語(yǔ)言你得先有語(yǔ)言對(duì)應(yīng)的文本,推薦插件一鍵生成.在設(shè)置里搜索Androidlocalize,直接安裝即可 2.安裝好了以后右鍵

    2024年02月11日
    瀏覽(25)
  • 用i18n 實(shí)現(xiàn)vue2+element UI的國(guó)際化多語(yǔ)言切換詳細(xì)步驟及代碼

    用i18n 實(shí)現(xiàn)vue2+element UI的國(guó)際化多語(yǔ)言切換詳細(xì)步驟及代碼

    這個(gè)地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2點(diǎn)幾,記得安裝i18n的@8版本,不然會(huì)自動(dòng)安裝的最新版本,后面會(huì)報(bào)錯(cuò)哦,查詢了下資料,好像最新版本是適配的vue3。 在src下面新建i18n文件夾,然后在里面新建index.js,里面的內(nèi)容如下 新建i18n文件夾里面新建config文

    2024年02月14日
    瀏覽(32)
  • 【國(guó)際化Intl】Flutter 國(guó)際化多語(yǔ)言實(shí)踐

    【國(guó)際化Intl】Flutter 國(guó)際化多語(yǔ)言實(shí)踐

    提示:這里參考一下幾個(gè)鏈接 例如: https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 這篇也很詳細(xì),還有包括兼容中文的繁體簡(jiǎn)體… 可以看看 該分支對(duì)應(yīng)的提交是使用Android Studio 和 Flutter Intl插件 并根據(jù)掘金這篇文章的實(shí)踐,兼容漢字簡(jiǎn)體和繁體字 https://g

    2023年04月23日
    瀏覽(39)
  • 【Unity 實(shí)用工具篇】| 游戲多語(yǔ)言解決方案,官方插件Localization 實(shí)現(xiàn)本地化及多種語(yǔ)言切換

    【Unity 實(shí)用工具篇】| 游戲多語(yǔ)言解決方案,官方插件Localization 實(shí)現(xiàn)本地化及多種語(yǔ)言切換

    前言 Unity的 多語(yǔ)言本地化 是一個(gè)很實(shí)用的功能,它可以幫助游戲支持多種語(yǔ)言,讓不同語(yǔ)言的玩家都能夠更好地體驗(yàn)游戲。 而實(shí)現(xiàn)本地化的方案也有很多種,各個(gè)方案之間也各有優(yōu)劣,后面也會(huì)對(duì)多個(gè)方案進(jìn)行介紹學(xué)習(xí)。 本文就來(lái)介紹一個(gè)專門作用于多語(yǔ)言本地化的Unity官

    2024年02月05日
    瀏覽(29)
  • Android 實(shí)現(xiàn)資源國(guó)際化(多語(yǔ)言)

    Android 實(shí)現(xiàn)資源國(guó)際化(多語(yǔ)言)

    目錄 一、介紹 二、字符串資源 三、圖片資源 四、日期和時(shí)間格式 五、其他 六、應(yīng)用內(nèi)切換語(yǔ)言 七、資源文件命名規(guī)則 ????????Android國(guó)際化(多語(yǔ)言)是一種開(kāi)發(fā)技術(shù),旨在使Android應(yīng)用程序能夠在 「不同語(yǔ)言和文化環(huán)境」 下運(yùn)行,并為用戶提供本地化的體驗(yàn)。這是為了

    2024年02月04日
    瀏覽(25)
  • Flutter之國(guó)際化(多語(yǔ)言處理)

    Flutter之國(guó)際化(多語(yǔ)言處理)

    項(xiàng)目?jī)?nèi)最近加入國(guó)際化內(nèi)容,那么我們需要轉(zhuǎn)化對(duì)應(yīng)語(yǔ)言內(nèi)容,來(lái)展示UI App國(guó)際化開(kāi)發(fā)主要包括: 文本國(guó)際化 Widget顯示的國(guó)際化 某些文本在對(duì)應(yīng)語(yǔ)言環(huán)境下應(yīng)該顯示為所選擇語(yǔ)言內(nèi)容; 目前我項(xiàng)目?jī)?nèi)使用的是: Flutter Intl 插件: 1.安裝 Flutter Intl 插件 在Android studio內(nèi)直接搜

    2024年02月14日
    瀏覽(34)
  • SpringBoot集成國(guó)際化多語(yǔ)言配置

    SpringBoot集成國(guó)際化多語(yǔ)言配置

    在當(dāng)今全球化的環(huán)境下,為了更好地滿足用戶的多語(yǔ)言需求,越來(lái)越多的應(yīng)用程序需要支持國(guó)際化多語(yǔ)言配置。Spring Boot作為一種快速開(kāi)發(fā)框架,提供了方便的國(guó)際化支持,使得應(yīng)用程序可以輕松地適應(yīng)不同的語(yǔ)言環(huán)境。通過(guò)集成Spring Boot的國(guó)際化多語(yǔ)言配置,應(yīng)用程序可以根

    2024年02月07日
    瀏覽(28)
  • vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化

    vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化

    注意:vue2.0要用8版本的,使用9版本的會(huì)報(bào)錯(cuò) 在src目錄下,創(chuàng)建新的文件夾,命名為i18n zh.js en.js index.js main.js 使用方式一 效果圖 使用方式二 效果圖 使用方式三,在 效果圖 ` 注意:這種方式存在更新this.$i18n.locale的值時(shí)無(wú)法自動(dòng)切換的問(wèn)題,需要刷新頁(yè)面才能切換語(yǔ)言。解

    2024年02月07日
    瀏覽(24)
  • 【Unity編輯器擴(kuò)展】語(yǔ)言國(guó)際化工具,生成多語(yǔ)言Excel自動(dòng)翻譯并導(dǎo)出多語(yǔ)言表

    【Unity編輯器擴(kuò)展】語(yǔ)言國(guó)際化工具,生成多語(yǔ)言Excel自動(dòng)翻譯并導(dǎo)出多語(yǔ)言表

    ?多語(yǔ)言是個(gè)非常簡(jiǎn)單且常用的功能。但是重復(fù)工作量大,程序手動(dòng)把多語(yǔ)言Key配置到多語(yǔ)言表經(jīng)常會(huì)出現(xiàn)錯(cuò)漏,或者幾經(jīng)改版,有些Key已經(jīng)不用卻沒(méi)有剔除,久而久之造成冗余。這中簡(jiǎn)單且重復(fù)的工作必須讓工具來(lái)完成。 多語(yǔ)言通過(guò)Key,Value的形式保存,通過(guò)多語(yǔ)言API GF.

    2024年02月11日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包