【问题标题】:How to provide translations for django standalone app inside app?如何在应用程序内为 django 独立应用程序提供翻译?
【发布时间】:2021-10-11 13:12:07
【问题描述】:

我想在 django-standalone 应用程序中提供翻译文本(makemessages 和编写翻译字符串),以使应用程序支持多种语言。怎么做?

目前,我使用from django.utils.translation import gettext 定义翻译字符串。我不想在父项目中运行manage.py makemessages 命令并为每个父项目重复编写翻译字符串。

【问题讨论】:

    标签: django django-apps


    【解决方案1】:

    如果您使用的是 Linux,则可以使用以下代码:

    cd your_app_name
    python ../manage.py makemessages
    

    在 windows 上也没有区别,但我从未测试过!

    欲了解更多信息和了解翻译目录的优先级,请阅读this documentation

    【讨论】:

    • 谢谢,文档链接帮助我理解翻译发现逻辑。我没有父项目和 manage.py 文件,因为我在没有父项目的情况下开发了我的独立应用程序。对于其他人,请在下面查看我的答案以在没有父项目的情况下运行 makemessages
    • 不过,我认为一般来说添加一个父项目会是一个更好的解决方案,让一切都以正常的方式工作。
    • 推荐的解决方案是使用简单的父项目来测试代码和使用模型。但你可以使用:stackoverflow.com/questions/16509160/…
    【解决方案2】:

    为了在没有父项目的情况下为应用程序运行 makemessages,我制作了以下 python 脚本makemessages.py,我把它放在我的应用程序根目录中:

    #!/usr/bin/env python
    
    import sys
    import django
    
    from django.conf import settings
    from django.core.management import call_command
    from django.utils.translation import gettext_lazy as _
    
    settings.configure(DEBUG=True,
        LANGUAGES = [
        ('fi', _('Suomi')),
        ('en', _('English')),
        ],
        USE_I18N = True,
        USE_L10N = True,
        USE_TZ = True,
        LOCALE_PATHS = (
            'locale/',
        )
    )
    
    django.setup()
    
    call_command('makemessages', '-l', 'fi', '-l', 'en')
    
    

    之后,我能够通过运行为指定语言创建第一个翻译

    python3 makemessages.py
    

    运行一次后,我能够更新翻译字符串并编译消息

    django-admin makemessages --all
    django-admin compilemessages
    

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2013-01-28
      • 2016-05-14
      • 2016-03-28
      • 1970-01-01
      相关资源
      最近更新 更多