当前位置: 首页 > news >正文

如何用dw做旅游网站目录大二学生做网站难吗

如何用dw做旅游网站目录,大二学生做网站难吗,珠海互联网平台,开企网站建设最近项目要做多语言适配,查了一下babel是个不错的选择。 babel的github主页上有flask-babel, django-babel, babel 本文以flask-babel为例,记录一下使用过程的注意事项 1. 安装 pip install Flask-Babel 2. 使用 from flask import Flask from flask…

最近项目要做多语言适配,查了一下babel是个不错的选择。
babel的github主页上有flask-babel, django-babel, babel
本文以flask-babel为例,记录一下使用过程的注意事项

1. 安装

pip install Flask-Babel

2. 使用

from flask import Flask
from flask_babel import Babeldef get_locale():  # Flask-Babel# otherwise try to guess the language from the user accept# header the browser transmits.  We support de/fr/en in this# example.  The best match wins.return request.accept_languages.best_match(['zh', 'en'])app = Flask(__name__)
Babel(app, locale_selector=get_locale, default_locale='zh')# 它会根据浏览器的header: accept-language zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 来判断用户使用的语言,自动选择对应的翻译

在需要翻译的地方,加上对应的函数:(建议全使用英文,它会把这段英文作为ID,去匹配翻译, 见后文例子)

from flask_babel import gettext,ngettext,lazy_gettext,lazy_ngettext# 常规翻译
gettext('Parameter error')# 对方语言有单复数区分时(比如中文1颗苹果,2颗苹果,没有单复数区别;但英语就有单复数区分:1 Apple,2 Apples)
ngettext('%(num)s Apple', u'%(num)s Apples', number_of_apples)
# ngettext需要把目标语言的单复数翻译都写上(前面单数翻译,后面复数翻译),翻译时 它会自动根据变量的值来选择单数翻译 or 复数翻译# 翻译内容需要结合上下文情景时(需要把变量插到要翻译的句中),比如这里要标明是那个参数错误:
lazy_gettext('Invalid Parameter: %(value)s', value=var)
# Lazy strings will not be evaluated until they are actually used.

3. 提取翻译内容

根目录下增加babel.cfg文件:

[python: **.py]

表示从所有.py文件中提取翻译内容

# Usage: pybabel extract [options] <input-paths>
# 在项目的根目录下执行
pybabel extract -F babel.cfg -k "lazy_gettext lazy_ngettext" -o messages.pot --no-wrap . 
# 它默认只提取gettext,ngettext,如果你使用了lazy_gettext,需要加 -k参数指定
# 如果翻译内容太长,超过Python规范的单行长度,会被自动换行,--no-wrap 就是让它别给我自动换行
# 更多参数的意思,自行pybabel extract --help 查看

上面命令执行后,项目根目录下 会多出一个 messages.pot 文件

msgid "Parameter error"
msgstr ""#, python-format
msgid "Invalid Parameter: %(value)s"
msgstr ""

4. 初始化、更新翻译内容

如果你是第一次使用,执行命令:

pybabel init -i messages.pot -d target_dir/translations -l zh --no-wrap
# -l 指定各种语言  zh/de/fr 等等
# 这段命令执行过后,项目根目录/target_dir 下会生成一些目录、文件:
├─translations
│  └─zh
│      └─LC_MESSAGES
│              messages.po# 此时messages.po的内容和messages.pot一样

如果不是第一次使用,就不执行上面的命令,执行更新命令:
pybabel update -i messages.pot -d target_dir/translations --no-wrap
这个命令会把第3步提取出来的内容(messages.pot)合并到messages.po

5. 编写翻译内容

打开messages.po文件,人工写入每一条翻译:

msgid "Parameter error"
msgstr "参数错误"#, python-format
msgid "Invalid Parameter: %(value)s"
msgstr "参数错误:%(value)s"

此时有个注意事项:
通常更新后,.po 文件中可能出现 fuzzy标识,这是因为你修改了一些翻译内容,它在更新合并的时候,无法确定msgid 和msgstr的对应关系,需要你人工检查修改,否则,有fuzzy标识的翻译 通常都是不对的,它不会将其编译到最终的翻译文件中,除非编译时明确指定--use-fuzzy
(这个坑困扰了我很久,我想着 明明写了翻译,却翻译不出来,后来发现是fuzzy的原因)

6. 编译最终使用的翻译文件

# 执行命令:
pybabel compile -d target_dir/translations# 此时翻译目录会多出一个 messages.mo 文件,这个就是最终使用到的翻译文件
├─translations
│  └─zh
│      └─LC_MESSAGES
│              messages.mo
│              messages.po

好了,我只写了基本使用的主要过程,通常情况够用了,更多还需要你们自行探索

http://www.dtcms.com/a/475965.html

相关文章:

  • 专业的移动网站建设公wordpress插件使用Python
  • 玉林网站推广广告制作公司怎么拉业务
  • 做渠道的网站有哪些方面wordpress加载 jquery
  • 黄石网站建设报价群辉nas 做网站
  • 建设银行手机银行网站登录三个律师做网站合适吗
  • 好模板网站wordpress openload
  • 动漫网站设计理念中国产品设计网
  • 西安建设门户网站购物网站导航素材代码
  • 西安商城类网站制作西安建设厅网站首页
  • 新蔡县城乡建设局网站dw网站制作
  • 网站支付页面设计page做网站
  • 绍兴网站开发08keji深圳装饰装修公司
  • 邱县网站建设近两年成功的网络营销案例及分析
  • 沈阳网站seo排名优化嘉兴注册公司
  • 做网站维护工作难吗免费行情网站链接
  • 网站建设平台官网河间米各庄互联网上网络营销的推广
  • 湖南seo网站多少钱天津网站建设需要多少钱
  • 网站建设国风网络公司wordpress猜你喜欢功能
  • 百度搜索网站怎么做网站可以给pdf做笔记
  • 曲靖住房和城乡建设局网站建设工程施工合同 示范文本
  • 海南网站建设fwlit软件开发模型包括哪些
  • VMWare和物理机之间文件传输
  • 自助建网站系统看电影工业厂房设计
  • 网页制作与网站建设从入门到精通 下载网站改版 总结
  • 定制型网站建设推广redis wordpress 提速
  • 最好的商业网站化妆培训网站 源码
  • 华为ENSP——OSPF的基本配置实验
  • 网站建设公司如何企业网站群建设的原因
  • 万网没备案怎么做网站自己怎么做网站赚钱吗
  • 制作网站地图软件开发定制app