【问题标题】:Globalize gem: how to keep track of translations?全球化 gem:如何跟踪翻译?
【发布时间】:2016-09-06 11:12:27
【问题描述】:

我想使用 Globalize gem 在我的 Rails 应用程序中翻译一些模型。这似乎很容易,但我想知道如何最好地跟踪更改的文本?这样我就不会忘记在更改其中一个翻译后更新所有其他翻译?

是否已经内置了一些功能?因此,与某些翻译相比,我可以看到我的模型的哪些字段在此期间发生了变化,然后我可以进行翻译并修复它们吗?

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

【问题讨论】:

    标签: ruby-on-rails globalize


    【解决方案1】:

    有趣的问题,我完全可以理解这样做的必要性。不幸的是,Globalize 是一个非常小的 gem,它只处理翻译的存储和检索,没有别的。所以回答你的第一个问题:不,没有内置功能可以做你想做的事。

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

    我想你需要做的是在你的翻译表中为每个翻译属性分配一个新列(比如post_translations),并带有一个版本号,所以如果你有列titlesummary,你会有post_translations:

    title
    title_version
    summary
    summary_version
    

    最初(比如说)每个版本列是1。当更新像表这样的单个列时,您会将版本更新为2,以表明它已从原始翻译更新。

    然后,您可以使用版本中的这种差异来强制用户更新 summary 以匹配更改后语言的翻译,并在完成后将其版本更新为 2(对于任何其他语言都相同)。

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

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

    即便如此,基本问题还是很有趣的,如果你走到那一步,即使是一个最小的解决方案也很有趣(比如说)添加为一个全球化扩展。祝你好运!

    (作为记录,我是 Globalize 的作者之一,虽然最近不太活跃......)

    【讨论】:

    • 谢谢,这是一篇非常有趣的帖子。随着我的进展,我会不断更新这个线程。
    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多