Localization wolkenkit:如何实现本地化

Localization wolkenkit:如何实现本地化,localization,internationalization,intl,wolkenkit,Localization,Internationalization,Intl,Wolkenkit,我存储的数据目前是用英语编写的。因此,我计划将此内容本地化/可翻译,并将此选项提供给用户 以下是我的用户故事: (1) 作为一名用户,我希望选择我的内容的首选语言(例如德语)。如果文本没有德语版本,请给我回退语言(如英语)的内容 (2) 作为一个用户,我希望能够翻译一个给定的模型 鉴于以下情况: 1) 具有两个属性的模型,例如消息,标题和描述。可以预期这两个属性是英文的(默认情况下) 2) 一种命令,例如,translateMessage,它将接收一个有效负载,其中包含:标题、说明和区域设置 处

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

以下是我的用户故事:

(1) 作为一名用户,我希望选择我的内容的首选语言(例如德语)。如果文本没有德语版本,请给我回退语言(如英语)的内容

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

鉴于以下情况:

1) 具有两个属性的模型,例如
消息
标题
描述
。可以预期这两个属性是英文的(默认情况下)

2) 一种命令,例如,
translateMessage
,它将接收一个有效负载,其中包含:
标题
说明
区域设置


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

我提出了一个解决方案:

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

我会用一个translations对象来扩展它。其中每个键都有一个区域设置,并有一个带有已翻译字符串的对象

{
  title: string;
  description: string;
  translations: {
    [key: string]: {
      title: string;
      description: string;
    }
  }
}
readModel
与上面相同,由客户端决定显示哪些字符串

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

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

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

你觉得有什么问题吗?关于如何做到这一点,还有其他已经确立的最佳实践吗?

不幸的是,我认为你的问题相当广泛,可能更多的是关于你的领域的正确设计,而不是关于wolkenkit本身。你能不能详细说明一下你到目前为止所做的尝试,你想实现的目标,…?更新。我希望,这能让事情变得更清楚。是的,确实如此!是否提前知道语言列表?应该可以动态添加它们。所以我想说,语言列表也是一个模型。
{
  title: '[de] Nachrichtentitel'
  description: '[de] Nachrichteninhalt'
  translations: {
    de: {
      title: 'Nachrichtentitel'
      description: 'Nachrichteninhalt'
    }
  }
}