【问题标题】:Column selection based on user language基于用户语言的列选择
【发布时间】:2020-05-25 12:59:16
【问题描述】:

有一类产品类别有多个不同语言的名称。如何在列表视图中选择、绑定和显示当前语言的对应名称? 班级分类:

public int CategoryId {get; set; } 
public string CategoryNameUS {get; set; } 
public string CategoryNameDE {get; set; } 
public string CategoryNameES {get; set; }   
public string CategoryNameCN {get; set; }

【问题讨论】:

  • 你能更详细地解释你想要达到的目标吗?此外,如果您向我们提供您已经在代码中尝试过的内容,这将有很大帮助。
  • 我想让界面适应多语言环境。下面是 Xaml 标记的一部分:
  • 我从 ViewModel 获取数据,它通过服务与服务器上的 Web API 交换数据。私有列表 _category;公共列表 类别 { 获取 { 返回 _category; } 设置 { _category = 值; OnPropertyChanged(); } }
  • 在属性 CategoryName 中以英文存储名称,当用户语言更改时我不知道如何切换到另一个属性

标签: c# xamarin xamarin.forms data-binding


【解决方案1】:

在您的模型中创建一个只读属性,该属性将选择正确的名称

public class Class Category 
{

  public int CategoryId { get; set; } 

  public string CategoryName 
  {
    get {
      // add logic here to return the named based on language selection
    }
  }

  public string CategoryNameUS { get; set; }

  ...

}

【讨论】:

  • 谢谢杰森,我按照你的建议做了:私有列表 _category; public List Categories { get { if(_category!=null) foreach (var category in _category) { if (UserLanguage == "kk-KZ") category.CategoryName = category.CategoryNameKZ; } 返回 _category; }
【解决方案2】:

创建一个包含所有语言的字典资源并将其链接到产品,通过代码(例如)。根据用户的配置以编程方式搜索产品名称。

您可以使用此参考:https://xamgirl.com/handle-multilingual-in-xamarin-forms-without-any-plugin/

设置当前文化。 >

Thread.CurrentThread.CurrentUICulture = CultureInfo.InstalledUICulture;

并实现类似的东西。

>

public int CategoryId {get; set; } 

public string CategoryName 
{ 
   get { return resources.GetText($"Category{CategoryId}");} 
} 

Obs:上次的 Visual Studio 更新在读取文件时出现了一些问题,但有一种解决方法可以解决此错误。

这里: https://github.com/xamarin/xamarin-android/issues/4664#issuecomment-632986668

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多