【问题标题】:Flask-Babel do not translate anything in a web projectFlask-Babel 不会翻译 Web 项目中的任何内容
【发布时间】:2015-01-23 03:55:12
【问题描述】:

我的用法说明:

这是我的项目结构(基本上基于Flask Web Development):

├── README.md
├── app
│   ├── __init__.py
│   ├── admin
│   │   ├── __init__.py
│   │   ├── user_admin.py
│   ├── auth
│   │   ├── __init__.py
│   │   ├── forms.py
│   │   ├── views.py
│   ├── decorators.py
│   ├── main
│   │   ├── __init__.py
│   │   ├── errors.py
│   │   ├── forms.py
│   │   ├── views.py
│   ├── models.py
│   └── templates
│       ├── auth
│       │   ├── login.html
│       │   └── register.html
│       ├── base.html
│       ├── edit-profile.html
│       ├── index.html
│       ├── layout.html
│       └── user.html
├── babel.cfg
├── config.py
├── manage.py
├── migrations
│   ├── README
│   ├── alembic.ini
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       ├── 20c68396e6d8_.py
├── requirement.txt
├── test
└── translations
    └── zh_CN
        └── LC_MESSAGES
            ├── messages.mo
            └── messages.po

/babel.cfg 和 /app/__init__.py 中的配置

babel.cfg:

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

app/__init__.py:

# ...
from flask_babelex import Babel

babel = Babel()

@babel.localeselector
def get_locale():
    return 'zh_CN'

def create_app(config_name):
    #...
    babel.init_app(app)
    return app

然后我按照 Flask-Babel 文档进行操作

运行$ pybabel extract -F babel.cfg -o messages.pot .

运行$ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .

他们确实找到了所有gettexts 和lazy_gettexts。

运行$ pybabel init -i messages.pot -d translations -l zh_CN

这会为我生成一个/translations/zh_CN/LC_MESSAGES/messages.po。我修复了其中的一些翻译。(包括删除# .fuzzy

最后我运行$ pybabel compile -d translations。这样就成功生成了/tranlations/zh_CN/LC_MESSAGES/messages.mo

但是什么都没有翻译......而且我真的不知道如何修复这个错误。

这几天我真的被搞砸了。

更多信息,我把这个项目放在Github

【问题讨论】:

  • 我不明白为什么如果你将你的语言环境定义为zh,你最终会得到一个/translations/zh_CN/LC_MESSAGES 路径。语言代码不同。
  • 很困惑,我已经将它们统一到'zh_CN',但仍然没有发生翻译动作。我很高兴你在这里留下了评论,Miguel。你的书和博客对我帮助很大。
  • 看起来只有翻译的文本被输入 Flask-Admin。也许您应该尝试一些更简单的方法,只需将您翻译的这些单词中的一个直接放入模板中,看看是否有效。
  • 它们在模板中也不起作用。想知道我的本地配置是否有问题,或者它们进入了错误的“gettext”方法?

标签: python flask flask-sqlalchemy python-babel flask-babel


【解决方案1】:

由于babel实际解析的locale名称是“zh_Hans_CN”,所以将你的翻译目录命名为“zh_Hans_CN”,就会被找到。

【讨论】:

  • 那个“汉斯”是从哪里来的?我想我面临着同样的问题,但我并不理解这个解决方案。谢谢!
  • @jmendiola 你最终弄明白了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2022-11-25
  • 1970-01-01
相关资源
最近更新 更多