【问题标题】:How you deal with translation (multilanguage) webservices in Django Rest Framework using angularjs?您如何使用 angularjs 在 Django Rest Framework 中处理翻译(多语言)网络服务?
【发布时间】:2013-11-09 18:38:41
【问题描述】:

我是一个初学者,使用:django、django rest 框架和客户端 MVC 框架 Angularjs。

我想问任何在您的任何项目中工作或熟悉此堆栈的开发人员,您如何处理翻译(多种语言)?

有哪些最佳实践可以尽可能高效地做到这一点?是否有任何新的语言扩展可用?

【问题讨论】:

  • 我编辑了您的帖子以使其更好地阅读,但我认为它仍然可能会被关闭,因为您对自己的需求非常模糊。你能提供更多细节吗?

标签: django rest angularjs translation multilingual


【解决方案1】:

AngularJS 在处理语言方面没有什么特别之处。如果要在客户端处理选择,请确保设置 Accept-Language 标头。请参阅django translation docs

如果您想在服务器端处理语言选择,您可以使用url patterns,或设置translation.LANGUAGE_SESSION_KEY 会话密钥。

如果您需要支持存储支持的数据(即模型)的翻译,django-modeltranslation 是一个非常好的包。它会为您指定的字段动态添加额外的列,每个 settings.LANGUAGES 一个列,然后让您使用原始列作为当前活动语言中值的代理。

【讨论】:

    【解决方案2】:

    我想将 Django 与 AngularJS 一起使用,并使用相同的 PO 文件进行前端和后端翻译。

    最后我成功地使用了django-vinaigretteangular-translate。我创建了一个模型 AngularTranslations,它有两个 case-sensitive 字段,orig 和 trans,内容相同。 (有点浪费,但还可以)。我用 Vinaigrette 注册了“trans”字段,然后我创建了一个 API GET 方法,该方法将翻译输出为 JSON 格式,可由 angular-translate 读取。我还允许 POST 使用相同的方法来存储丢失的翻译。然后在运行manage.py makemessages 时,Vinaigrette 会捡起它们。

    可以详细说明,但这是它的要点。

    【讨论】:

    • 在哪一部分?与此同时,我对 Django PO 文件感到恼火,因为只要英文源翻译发生更改,它们就会重置。我仍然将它用于静态内容,但对于动态内容,我使用的是 django-parler。对于启用 django-parler 的模型,您可以执行与 vinaigrette-models 相同的操作:以某种方式将键值对传递给 Javascript 并将它们加载到 angular-translate 中。
    【解决方案3】:

    我认为对于将来希望在 REST 情况下处理翻译的人来说,这篇文章是一个很好的起点:

    https://web.archive.org/web/20150504195746/http://codeispoetry.me:80/index.php/django-multilingual-restful-api-i18n-support-with-django-tastypie/

    它强制使用 i18n,它是例如 django admin trans 的基础。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多