Globalize gem:如何跟踪翻译?

时间:2016-09-06 11:12:28

标签: ruby-on-rails globalize

我想使用Globalize gem在我的Rails应用程序中翻译一些模型。这看起来很简单,但我想知道如何跟踪更改后的文本?因此,在我更改其中一个后,我不会忘记更新所有其他翻译?

是否有内置的功能?所以我可以看到我的模型中的哪些字段在某些时候与某些翻译相比发生了变化,然后我可以进行翻译并将其修改为完成?

另外,当我修正错字时,我不希望翻译被视为“已更改”。

1 个答案:

答案 0 :(得分:1)

有趣的问题,我完全可以理解这一点的必要性。不幸的是,Globalize是一个非常小的宝石,它只处理翻译的存储和检索,而不是其他任何东西。所以回答你的第一个问题:不,没有内置的功能来做你想做的事。

要使用某种功能来跟踪翻译更改,您必须在Globalize之上添加一个图层,该图层会在使用一种语言更改的列上设置标记,因此用户可以知道用其他语言更新它们。

我想您需要做的是为每个带有版本号的已翻译属性在转换表中指定一个新列(例如post_translations),因此如果您有列title和{{ 1}},你会在summary

post_translations

最初(比方说)每个版本列都是title title_version summary summary_version 。更新单个列(如表格)时,您可以将版本更新为1,以表明它已从原始翻译更新。

然后,您可以在版本中使用此差异来强制用户更新2以匹配更改后的语言的翻译,一旦完成此操作,请将其版本更新为summary(同样为任何其他语言)。

对于拼写错误,您可能无法更新版本以避免强制跨语言同步。

当然,这是一个非常原始的实现。它不会处理两种语言独立更新的情况,例如:在这种情况下,两种语言都需要彼此同步。该场景中的最终复杂性类似于git等版本控制系统中的分支和合并的复杂性。这需要稍微复杂的版本控制方案。

即便如此,基本问题也很有趣,如果你走得那么远,即使是最小的解决方案也会很有趣(例如)添加为全球化扩展。祝你好运!

(为了记录,我是Globalize的作者之一,但最近并不活跃......)