【问题标题】:wolkenkit: How to localizationwolkenkit:如何本地化
【发布时间】:2019-05-25 01:45:03
【问题描述】:

我存储的数据目前是用英文写的。因此,我计划将此内容本地化/可翻译,并希望将此选项提供给用户。

这是我的用户故事:

(1) 作为用户,我想选择我的内容的首选语言(例如德语)。如果文本没有德语版本,请给我备用语言的内容(例如英语)。

(2) 作为用户,我希望能够翻译给定的模型。

鉴于以下情况:

1) 模型,例如Message 具有两个属性:titledescription。可以预期这两个属性是英文的(默认情况下)。

2) 一个命令,例如translateMessage 将接收带有以下内容的有效负载:titledescriptionlocale

处理这些模型的本地化的公认方法是什么?

【问题讨论】:

  • 不幸的是,我认为您的问题非常广泛,可能更多的是关于您的域的正确设计而不是 wolkenkit 本身。您能否详细说明一下您迄今为止所做的尝试,您想要实现的目标,......?
  • 已更新。我希望,这会让它更清楚。
  • 是的,确实如此!语言列表是否事先已知?
  • 应该可以即时添加它们。所以我想说,语言列表也是一个模型。

标签: localization internationalization intl wolkenkit


【解决方案1】:

我想出的解决方案:

假设我们的Message 将具有以下属性(在 Typescript 中):

{
  title: string;
  description: string;
}

我会用一个翻译对象来扩展它。其中每个键都有一个语言环境,并且有一个带有翻译字符串的对象。

{
  title: string;
  description: string;
  translations: {
    [key: string]: {
      title: string;
      description: string;
    }
  }
}

readModel 与上面相同,由客户端决定显示哪些字符串。

命令translateMessage 将接收如上所述的有效负载并发布一个事件。 readModel 将以某种方式对该事件做出反应,它将新的有效负载数据推送到该模型中的 translations 对象上。

对于模型创建,如果数据是在与默认语言不同的语言环境中接收的,则事件处理程序会将这些翻译后的字符串以它们写入的语言环境作为前缀放入根目录中,例如model.title 可以类似于 [de] Nachrichtentitel。模型如下所示:

{
  title: '[de] Nachrichtentitel'
  description: '[de] Nachrichteninhalt'
  translations: {
    de: {
      title: 'Nachrichtentitel'
      description: 'Nachrichteninhalt'
    }
  }
}

你觉得这有什么问题吗?是否有其他已经确立的最佳实践来说明如何做到这一点?

【讨论】:

    猜你喜欢
    • 2012-01-05
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2020-11-14
    相关资源
    最近更新 更多