it鸟 2024-06-16 12:00 采纳率: 80%
浏览 17
已结题

WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译

img


最近做一个WPF项目,希望实现多语言。

1.希望通过判定用户登录的服务器,自动配置语言(在conn 中可以区分)。

img

//服务器连接信息字典
        private static readonly Dictionary<string, string> ConnectionStrings = new Dictionary<string, string>
        {
            { "2", "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.144.16.201)(PORT=1521))(CONNECT_DATA=(SID=HMCSPROD)));User Id=XX;Password=XXX;" },
            { "3", "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.134)(PORT=1521))(CONNECT_DATA=(SID=HMCSKS)));User Id=XX;Password=XXX;" },
          ........
}

2.目前是直接在xaml中,label 中写的中文。

img

img

<Label  
                        HorizontalAlignment="Left"
                        Content="生产线/Prod Line"
                        FontSize="20"
                        Foreground="White" Margin="0,0,0,2" />

3.还有写在.cs中的部分,不知道如何翻译【live_chart 的Title (图例)】。

img


var plannedCompletionSeries = new ColumnSeries
            {
                
                Title = "计划产出(Plan Output)",  
                Values = new ChartValues<int>(productionDatas.Select(d => d.PlannedCompletion)),
                DataLabels = true,
                LabelPoint = point => point.Y.ToString(),
                FontFamily = new System.Windows.Media.FontFamily("Arial"),               
                Fill = Brushes.Orange,
                FontSize = 10,
                Foreground = System.Windows.Media.Brushes.White // 字体颜色
            };
  • 写回答

20条回答 默认 最新

  • Java毕设王 2024-06-18 01:34
    关注

    引用讯飞星火
    要实现WPF项目的多语言支持,可以使用资源文件(Resource Files)来实现。首先,需要为每种语言创建一个资源文件,例如:

    1. 创建两个资源文件,分别为中文(zh-CN)和英文(en-US):

      • zh-CN.xaml
      • en-US.xaml
    2. 在资源文件中定义字符串资源,例如:

      • zh-CN.xaml:
        <ResourceDictionary>
            <sys:String x:Key="ProdLine">生产线</sys:String>
            <sys:String x:Key="PlanOutput">计划产出</sys:String>
        </ResourceDictionary>
        
      • en-US.xaml:
        <ResourceDictionary>
            <sys:String x:Key="ProdLine">Prod Line</sys:String>
            <sys:String x:Key="PlanOutput">Plan Output</sys:String>
        </ResourceDictionary>
        
    3. 在App.xaml中设置当前语言的资源文件:

      <Application.Resources>
          <ResourceDictionary>
              <ResourceDictionary.MergedDictionaries>
                  <ResourceDictionary Source="zh-CN.xaml"/>
              </ResourceDictionary.MergedDictionaries>
          </ResourceDictionary>
      </Application.Resources>
      
    4. 在XAML中使用资源文件中的字符串资源:

      <Label HorizontalAlignment="Left" Content="{StaticResource ProdLine}" FontSize="20" Foreground="White" Margin="0,0,0,2" />
      
    5. 在代码中使用资源文件中的字符串资源:

      var plannedCompletionSeries = new ColumnSeries
      {
          Title = (string)FindResource("PlanOutput"),
          Values = new ChartValues<int>(productionDatas.Select(d => d.PlannedCompletion)),
          DataLabels = true,
          LabelPoint = point => point.Y.ToString(),
          FontFamily = new System.Windows.Media.FontFamily("Arial"),
          Fill = Brushes.Orange,
          FontSize = 10,
          Foreground = System.Windows.Media.Brushes.White // 字体颜色
      };
      
    6. 根据用户登录的服务器自动配置语言,可以在App.xaml.cs中的OnStartup方法中判断服务器连接信息字典ConnectionStrings的值,然后设置相应的资源文件。例如:

      protected override void OnStartup(StartupEventArgs e)
      {
          base.OnStartup(e);
      
          // 获取当前服务器连接信息
          string serverInfo = "2"; // 假设从某个地方获取到的用户登录的服务器信息
          string connectionString = ConnectionStrings[serverInfo];
      
          // 根据服务器信息设置语言资源文件
          if (serverInfo == "2")
          {
              App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("zh-CN.xaml", UriKind.Relative) });
          }
          else if (serverInfo == "3")
          {
              App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.Relative) });
          }
      }
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(19条)

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 已采纳回答 6月22日
  • 创建了问题 6月16日