首页
学习
活动
专区
圈层
工具
发布

python gettext使用

python中使用gettext进行语言国际化的方法 1.编辑源代码, 保存为gettextdemo.py import gettext catalogs = gettext.find("example...", fallback=True) _=t.ugettext print(_("this message")) 2.从源代码中抽取需要国际化的文本消息,并转换创建.pot文件, 可以使用的工具为pygettext.py...和 msgfmt 回到正题, 输入以下命令生成example.pot文件 xgettext -o example.pot gettextdemo.py 3.将example.pot复制到....二进制文件,  cd locale/en_US/LC_MESSAGES/ msgfmt -o example.mo example.po可以看到转换后生成的mo是二进制文件,而po,pot都是文本文件...这一步很关键,我在弄的时候没注意到这一步, 直接把.po文件复制成.mo文件, 导致出现以下类似的情况, 掉到坑里,半天爬不出来,汗~ File "C:\env\lib\gettext.py", line

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    gettext安装及使用

    ,比如:C:\ProgramFiles\gettext添加到系统环境变量按Win+S搜索"环境变量"选择"编辑系统环境变量"点击"环境变量"在"系统变量"中找到Path,点击"编辑"点击"新建",添加gettext..."文件未找到"编译翻译文件收起代码语言:TXTAI代码解释#编译.po文件为.mo文件msgfmtzh_CN.po-ozh_CN.mo使用gettext实现多语言支持⁠gettext是一个用于国际化(i18n...:在源代码中,使用`gettext`函数标记需要翻译的字符串:`src/main.c`:收起代码语言:TXTAI代码解释#include#include#include...;提取翻译字符串:使用`xgettext`工具从源码中提取标记的字符串,生成`.pot`(PortableObjectTemplate)文件。这个文件包含了所有需要翻译的原始字符串。...编译翻译文件:使用`msgfmt`将`.po`文件编译为机器可读的`.mo`文件。

    23410

    多语言中的 .POT .PO .MO 和 xgettext

    Google 上面有一张图,比较直观的解释了这三者的关系: xgettext 在介绍图中的三种文件之前,先要了解一下xgettext这个工具,它是在 Linux 上的一个程序,Ubuntu 下可以直接使用...(命令行中),其功能是抽取给定的文件中可供翻译的字符串。...如果没有 .POT 文件充当一个模板,原先翻译好的 .po 文件就会被改动,新的待翻译内容和已被翻译的内容掺杂在一个文件中,如何解析拆分?...从工程层面上就会变的复杂,因此一个简单的翻译流程就是,先生成模板文件,通过模板文件产出翻译内容,程序则直接使用翻译内容,即 .po 文件,或将他们编译成二进制使用。...php-format no-php-format 比如说下面的这段代码中 %d %s 是 php 中的语法,当原始的内容中有些是动态生成的的情况下,就像下面的这种语法,你需要明确告诉编辑器这是「代码语法

    2.4K31

    gettext模块实现Python国际化

    ---- 2.通用步骤 (1)无论是使用哪一套API,都必须提取可以翻译的字符串并且生成一个翻译模板文件.pot (2)然后生成对应于不同语言翻译的文件.po (3)我们在应用程序中使用是的二进制格式的...对en.po重复(e)操作 (f)使用msgfmt命令从po生成二进制文件mo,也是应用程序需要使用的文件。...到目前为止所有准备工作完成 补充: 注:上面的步骤也可以用poedit这款软件完成,官网上有详细的使用教程 另外,一旦python代码中要翻译的字符串发生变化(修改、增删),需要重新生成po文件时,可以用...msgmerge命令来代替msginit命令,例如: msgmerge -U zh_CN.po my_app.pot ---- 3.在Python代码中添加国际化支持 在第一部分介绍gettext模块时...第一种是根据用户系统的语言配置(系统的环境变量LANGUAGE, LC_ALL, LC_MESSAGES, LANG),自动选择语言;第二种是在程序中实时切换语言。

    2.8K10

    django2.2 国际化实践

    的支持,其实现是基于 GNU 的 gettext, 所以要想在 Django 中使用 I18N 还需要先安装配置 gettext。...,后加入的环境变量不会生效,需要重启咯),如图: Mac 安装 gettext 使用 brew 安装:(CommandError: Can't find msguniq....-force 注:Mac 解决 Homebrew 一直卡在 update 生成需要翻译的文件 python manage.py makemessages -l zh_Hans (joyoo) E:\yinzhuoqun...那么可能是:gettext 版本不对 或者 安装后没有加入到环境变量 手工翻译需要的 msgid 找到 settings 里面配置的 LOCALE_PATHS 下的 django.po 文件,开始你的编辑之路...msgid: 需要翻译的文案 msgstr: 翻译后的文案 在代码中看到:_("这种就是国际化的标志,我们只需要翻译下就 OK") 例子: 最后一步就是 编译 编译成功后会在 django.po 的对应目录生成

    98840

    在 csproj 文件中使用系统环境变量的值(示例将 dll 生成到 AppData 目录下)

    Windows 资源管理器使用 %var% 来使用环境变量,那么我们能否在 Visual Studio 的项目文件中使用环境变量呢? 本文介绍如何在 csproj 文件中使用环境变量。...遇到的问题 在 Windows 资源管理器中,我们可以使用 %AppData% 进入到用户的漫游路径。...更多关于路径的信息可以参考:UWP 中的各种文件路径(用户、缓存、漫游、安装……) - walterlv 然而,为了调试方便,我最好在 Visual Studio 中编写的时候就能直接输出到插件目录。...于是,我需要将 Visual Studio 的调试目录设置为以上目录,但是以上目录中包含环境变量 %AppData% 在 Visual Studio 中修改输出路径 如果直接在 csproj 中使用 %...在我的电脑上是 C:\Users\lvyi\AppData\Roaming。 于是,在 csproj 中设置 OutputPath 即可正确输出我的插件到目标路径。

    1.6K50

    掌握Linux Shell参数本地化(轻松实现多语言支持的脚本开发)

    比如在中文系统中显示中文提示,在英文系统中显示英文提示?这就是我们今天要讲的主题——Linux Shell 参数本地化。通过本地化(Localization),你可以让你的脚本更具通用性和用户友好性。...Shell 参数本地化是指根据系统的语言环境(locale)动态调整脚本中的输出信息(如提示语、错误信息等)。这通常涉及使用 gettext 工具或简单的变量替换机制,让脚本能“说”用户的母语。...进阶方法:使用 gettext 实现专业本地化对于更复杂的项目,推荐使用 GNU gettext 工具链。它支持完整的翻译流程,包括提取字符串、生成 .po 文件、编译为 .mo 文件等。...步骤简述:在脚本中用 gettext "字符串" 包裹所有需翻译的文本。使用 xgettext 提取这些字符串生成 .pot 模板文件。为每种语言创建 .po 文件并翻译。...用 msgfmt 编译 .po 为 .mo 文件,放入指定目录。运行脚本时自动加载对应语言的翻译。虽然 gettext 学习曲线稍陡,但它是实现 Shell 脚本国际化 的标准方案,值得深入学习。

    17510

    使用 poEdit 汉化 WordPress 插件和主题

    不过现在采用的是简单轻便的翻译方法:通过 .po 文件。 通过 .po 文件,任何人都能翻译你的插件或者主题,只要他熟悉插件使用的原始语言。...并且 .po 文件还有一个好处就是,如果源代码作了任何修改,翻译者不必查看源代码来重新翻译,因为所有需要翻译的文本都会自动保存在一个后缀名为 .po 文件中,翻译者所需要做的只是重新更新下 .po 文件...在确保输出的文本可以被本地化之后,你必须设置你的插件或者主题的 .mo 文件的路径(.mo 是编译后的 .po 文件,它是在 poEdit 保存的时候会自动产生的)。...第四步:输入插件的路径 在刚才的 'Settings' 对话框,点击 'Paths' 标签页并点击建立新条目的图标。假设插件在自己的子目录下并且你会把 .po 保存在子目录中,输入"."...在这里, 通过保存新文件,我将自动生成一个可以让别人使用的 .po的文件,和一个可以被 WordPress 直接读取来本地化插件的 .mo 文件。

    1.7K20

    Django 实战:I18N 国际化与本地化配置、翻译与切换一步到位

    惰性翻译:gettext_lazy会延迟翻译计算,直到实际渲染时才会根据当前请求语言动态加载,而 gettext 在模块加载时即固定翻译结果二、安装配置安装 gettext下载64位 share 安装包...安装后检查是否可识别:msguniq --version# 上述命令如果在VSCode的终端无法识别,可以在CMD中运行配置 settings.py在 Django 项目的 settings.py 文件中进行如下配置...生成对应的消息文件*.polocale├── en│ └── LC_MESSAGES│ ├── django.mo│ └── django.po # 消息文件└── zh_Hans...└── LC_MESSAGES ├── django.mo └── django.po # 消息文件消息文件说明*.po的是消息文件,必须使用 UTF-8 编码msgid...:显示在源代码中需要翻译的字符串。

    28300

    【Django | 开发】 (国际化项目&支持多语言)

    二、实现步骤 2.1 为翻译字符串添加钩子 1) py文件 将需要翻译的字符串统一使用gettext_lazy或gettext包裹 from django.utils.translation import...:{{ job_name }} 城市: {{ job_city }} {% endblock %} 如果在翻译中存在二级变量或者三级变量在渲染时需要提前保存...(.po和.mo格式的) 在终端输入 ( 大坑插入: 由于在gettext版本低于0.15, 报错:Make sure you have GNU gettext tools 0.15 or newer...django-admin makemessages -l zh_Hans -l en 生成对应文件 我们需要在对应的文件中,给这些需要翻译的键添加值 ( msgid (message id)是键,...en 文件 ( 这里的en 是之前所设置的名字,需要与setting中语言配置元组中第一个数据一样,此时我们需要都将中文翻译成英文,注意!!不进行翻译会默认使用其他语言!

    1.1K10

    Flask-Admin修改成中文显示

    redirect(url_for('login')) 在模板中我们必须做一些类似的工作,但是我们使用 _() 来简化 gettext()。...在它里面有另一个名为 LC_MESSAGES 的目录,在它里面有一个messages.po 文件。...这一步会读取 .po 文件的内容并且会在相同的目录下生成一个名为 .mo 的编译的版本。...为了能够在模版中加载正确语言版本的 moment.js,我们需要把语言的代码加入到 Flask 全局变量,跟记录登录用户是相同的方式(文件 app/views.py): @app.before_request...用户希望在本地语言下使用,因此必须让我们的应用程序支持多种语言。 在接下来的文章中,我们将看看可能是国际化和本地化最复杂的方面,就是用户产生的内容的实时自动翻译。

    2.2K31

    flask babel使用(flask 107)

    首先我们将这个 app “国际化”,为模板和 .py 文件中的每一个字符串添加一个 gettext 函数,由于 gettext 函数被引用的次数太多了,为了方便手写,就将其 import 为 “_”:...image 你可以注意到我们对 app 的 locale 做了配置,然后用 babel 扩展将 app 再次初始化,并且将 .py 和 .html 中的字符串做了配置,让它们都使用gettext这个函数...然后我们用 pybabel 生成要翻译的 PO 模板文件,这个命令是 babel 这个工具包带来的,生成翻译模板命令如下: $ pybabel extract -F babel.cfg -o messages.pot...message.po 中的#,fuzzy删除。...更新后需要用前面的命令重新生成 messages.pot 文件,然后使用下面的命令将更新的内容 merge 到原来的翻译中: $ pybabel update -i messages.pot -d translations

    1.1K20

    《IntelliJ IDEA 插件开发》第 五 节:IDEA工程右键菜单,自动生成ORM代码

    那么在这个DDD工程开发框架中,还缺少一部分基于数据库表信息自动生成对应PO、DAO、Mapper文件的功能。...那么本章节我们就来在工程中扩展这部分内容,实际操作的效果就是我们可以在工程上通过鼠标右键的方式,唤出添加ORM代码块的窗体,通过选择库表的方式,使用 freemarker 自动生成代码。...在生成的代码块中需要完成对所需要包的引入,同时会使用到 lombok 注解的方式替代PO对象中的get、set方法,以减少代码量逻辑的创建。 三、案例开发 1....同时这一层还提供了用于处理数据库操作的类,因为我们需要从数据库中读取出表的信息、字段、注释,用于创建PO、DAO、Mapper使用。...module:模块层,这里提供了一个用于选择文件路径的组件,可以让我们在工程上鼠标右键后出来的窗体中,点击模块选择对应的要生成代码的位置路径。

    2.8K10

    软件本地化中的 10 个常见错误

    使用分离的资源文件 应该谨慎地选择字段的 key,该键名总是应该描述字段在接口中的角色(标题、按钮文字,等等) 同时应该确保在增加新字段时不要和既有的字段重名。...以 Python 为例,在 .po 资源文件中保存了每种 locale 的翻译: # ....比较正确的方式是基于 locale 在资源文件中包含一个指示方向的字符串,并根据其调用不同的 CSS 样式。...缺少上下文造成的困惑和歧义 当字符串包含变量,且被用在一个特定上下文或使用了有歧义的措辞时,你的翻译团队就不好过了。翻译者通常基于无上下文格式的文件和字符串工作。...尽可能在资源文件中使用可读性强的 key,比如 toContact 或 contactButton 通过 key 还难以说明的,应该在本地化文件中添加注释和说明 如果基于 Excel 工作表管理翻译字段

    1K10
    领券