首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么gettext (Python)在没有.mo文件的情况下无法工作?

gettext是Python中的一个国际化和本地化库,用于提供多语言支持。它通过在代码中使用特定的函数和标记来标识需要翻译的文本,并根据用户的语言环境提供相应的翻译。

在没有.mo文件的情况下,gettext无法工作的原因是.mo文件是gettext的翻译文件,包含了源文本和对应的翻译文本。当程序运行时,gettext会根据用户的语言环境加载相应的.mo文件,并将源文本替换为对应的翻译文本。

如果没有.mo文件,gettext无法找到对应的翻译文本,因此无法完成翻译工作。这意味着在没有.mo文件的情况下,gettext将返回原始的源文本,而不是翻译后的文本。

为了让gettext正常工作,需要先使用gettext提供的工具将源代码中的文本提取出来,并生成对应的.po文件。然后,可以使用翻译工具(如Poedit)编辑.po文件,将源文本翻译为目标语言,并保存为.mo文件。最后,将生成的.mo文件放置在正确的位置,让gettext能够加载并使用它们进行翻译。

总结起来,gettext在没有.mo文件的情况下无法工作,是因为.mo文件包含了翻译文本,而gettext需要这些翻译文本才能完成翻译工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • python i18n实现

    10 Mar 2016 python i18n实现 本文简单介绍python实现i18n方法。...指让产品(出版物,软件和硬件等)无需做大改变就能够适应不同语言和地区需要,对软件来说,表示不修改内部代码情况下,能根据不同语言及地区显示相应界面,本文以中文和英文作为例子,当系统默认语言是中文时...二进制文件,使用pythoni18n工具msgfmt.py,且需代码所在目录下提前创建以下目录: locale/cn/LC_MESSAGES/ locale/en/LC_MESSAGES/ 指定中文...mo文件输出路径到locale/cn/LC_MESSAGES/,英文mo文件路径为locale/en/LC_MESSAGES/,mo文件名称必须相同,都是i18n_demo.mo。...创建中文mo文件: python msgfmt.py -o locale/cn/LC_MESSAGES/i18n_demo.mo cn.po 创建英文mo文件: python msgfmt.py -o

    1.8K70

    gettext模块实现Python国际化

    后者允许你一个python模块内进行本地化,非常适用于应用程序运行时切换你语言。...先在工程目录下创建存放mo文件locale目录,目录结构要和系统locale目录结构一样: ? 然后在对应目录下生成不同mo文件 ? ok!...到目前为止所有准备工作完成 补充: 注:上面的步骤也可以用poedit这款软件完成,官网上有详细使用教程 另外,一旦python代码中要翻译字符串发生变化(修改、增删),需要重新生成po文件时,可以用...目录下搜索对应语言二进制APP_NAME.mo文件 gettext.bindtextdomain(APP_NAME, LOCALE_DIR) # 声明使用现在域,可以使用多个域,便可以为同一种语言提供多套翻译...可以看到,可以程序中同时输出中文和英文。 到此为止,两种python中添加国际化支持方式介绍完毕。

    2.4K10

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

    gettext() 替换为 _(),同样是可以被提取,这个上面所谓标识了,更多细节可以参考链接中找到对于这个程序参数解释。...模板文件中所有翻译字符串留空,一个 POT 文件本质上是一个没有翻译空 PO 文件,只有原始字符串。....MO mo 代表 Machine Object,这是一个二进制数据文件,是 po 文件编译后产物,通常我们汉化程序或者主题时,如果没有 pot 或者 po 文件的话,可以用 mo 文件反编译出 po...下图是 GNU gettext 程序多语言中协作关系。...如果没有 .POT 文件充当一个模板,原先翻译好 .po 文件就会被改动,新待翻译内容和已被翻译内容掺杂一个文件中,如何解析拆分?

    1.6K31

    Python操控Excel:使用Python文件中添加其他工作簿中数据

    标签:Python与Excel,合并工作簿 本文介绍使用Python向Excel主文件添加新数据最佳方法。该方法可以保存主数据格式和文件所有内容。...安装库 本文使用xlwings库,一个操控Excel文件最好Python库。...图2 可以看出: 1.主文件包含两个工作表,都含有数据。 2.每个工作表都有其格式。 3.想要在每个工作最后一行下面的空行开始添加数据。如图2所示,“湖北”工作表中,是第5行开始添加新数据。...使用Python很容易获取所有Excel工作表,如下图3所示。注意,它返回一个Sheets对象,是Excel工作集合,可以使用索引来访问每个单独工作表。...要获取工作表名称,只需调用.name属性。 图3 接下来,要解决如何将新数据放置在想要位置。 这里,要将新数据放置紧邻工作表最后一行下一行,例如上图2中第5行。

    7.9K20

    flask babel使用(flask 107)

    image 然后 hello.py 同一级目录下创建一个叫 templates 文件夹,在其中写一个 index.html,内容如下: ?...首先我们将这个 app “国际化”,为模板和 .py 文件每一个字符串添加一个 gettext 函数,由于 gettext 函数被引用次数太多了,为了方便手写,就将其 import 为 “_”:...设置 Babel 接下来我们要做是 babel 配置。 hello.py 同级目录创建一个叫 babel.cfg 文件,内容如下: ?...注意结尾点“.”,这个点表示当前目录,目录是 pybabel 必须参数,官方文档中缺少这个点,所以命令是无法执行成功。...编译翻译结果 翻译完后执行下面的命令,为其编译出 message.mo 文件: $ pybabel compile -d translations 如果上述命令无法生成 messages.mo 文件,那你需要将

    85620

    混合模式程序集是针对“v2.0.50727”版运行时生成没有配置其他信息情况下无法 4.0 运行时中加载该...

    今天把以前写代码生成工具从原来.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版运行时生成...,没有配置其他信息情况下无法 4.0 运行时中加载该程序集 其调用方法是从sqlite数据库中获取原来已经使用过数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内...),而目前官方也没有给出最新.NET4数据访问支持。...既然出现这个问题,那肯定是上GOOGLE搜索解决方案,毕竟微软不可能因为升级到了.NET4.0程序无法访问.NET2.0程序集吧。...注意:由于config配置文件特性,如果在config配置文件中存在configSections节点,则必须将configSections放在一个,否则会引发异常:配置系统未能初始化 原来.NET2.0

    2.2K100

    带你认识 flask 国际化和本地化

    支持多语言常规流程是源代码中标记所有需要翻译文本。文本标记后,Flask-Babel将扫描所有文件,并使用gettext工具将这些文本提取到单独翻译文件中。...', username=username)) 还有更难处理情况。有些字符串文字并非是发生请求时分配,比如在应用启动时。因此评估这些文本时,无法知道要使用哪种语言。...每个语言存储库中创建messages.po文件使用格式是语言翻译事实标准,使用格式为gettext。...,此文件当然也在其中,所以你不必担心这部分翻译工作。....mo文件是Flask-Babel将用于为应用程序加载翻译文件。 在为西班牙语或任何其他添加到项目中语言创建messages.mo文件之后,可以应用中使用这些语言。

    1.8K30

    PHP项目多语言配置平台实现过程

    即通过人工方式按照规则写入.po文件,然后调用某函数生成.mo 文件,放到生产环境文件夹下,然后代码里初始化一些内容进行引用。 gettext gettext是php实现国际化基本方式。...使用方法如下: 安装php扩展gettext,这个同php其他扩展一样,这里就不详细介绍了。 linux环境安装msgfmt,安好后可用此命令将po文件生成.mo文件。...msgstr “文本内容相同” 利用msgfmt将.po文件生成.mo文件。...msgfmt -o {lang_path}/zh_CN.mo {lang_path}/zh_CN.po 将生成.po文件拷贝到你指定文件夹 target_dir 下。...虽然有个好些,但是这个确实看的人少,基本没有。 重新发布,如果有时间就做,没时间就不做。 对于一些特殊内容规定,如如果一个词组key某种语言环境下显示为空,该怎么处理等。

    1.2K30

    Typecho配置多国语支持,检查客户端语言自动切换翻译

    但是官方提供翻译文件都是 .po 文件,Typecho 并不支持 .po 文件,可以将 .po 文件编译成 .mo 文件,参考这篇文章:gettext msgfmt安装及po/mo文件编译转换 我把转换好文件也上传到我项目仓库了...:GitHub / 我自己搭建GitLab 直接下载:点击下载 下载完解压得到 .mo 文件,将这些文件放到 Typecho 根目录下 /usr/langs/ 文件夹下,如果没有,需要手动创建。...控制台 -> 设置 -> 基本 设置页面就可以看到语言选项了。 配置自动切换语言: 打开 Typecho 根目录下 /var/Typecho/I18n.php 文件(注意是文件不是文件夹)。...找到如下内容: /**  * 初始化语言文件  *  * @access private  */ private static function init() {     /** GetText支持 *...$langConfig.".mo");          /** GetText支持 */     if (false === self::$_loaded && $langConfig && file_exists

    2.2K10

    Hivespark2.0.0启动时无法访问..libspark-assembly-*.jar: 没有那个文件或目录解决办法

    无法访问/home/ndscbigdata/soft/spark-2.0.0/lib/spark-assembly-*.jar: 没有那个文件或目录。...而这一行究竟是怎么回事,网上没有任何有关资料。 没办法,只好一步一步分析,终于找到问题症结。...其主要原因是:hive.sh文件中,发现了这样命令,原来初始当spark存在时候,进行spark中相关JAR包加载。...而自从spark升级到2.0.0之后,原有的lib整个大JAR包已经被分散小JAR包替代,所以肯定没有办法找到这个spark-assemblyJAR包。这就是问题所在。...这也印证了各个软件升级过程中如何涉及到自动联运或者向下兼容问题。

    2K80

    django2.2 国际化实践

    -force 注:Mac 解决 Homebrew 一直卡在 update 生成需要翻译文件 python manage.py makemessages -l zh_Hans (joyoo) E:\yinzhuoqun...文件( LOCALE_PATHS 对应语言目录下 - 具体看下图,这个里面就是我们手动写翻译地方) django.po 文件: 如果执行命令:python manage.py makemessages...那么可能是:gettext 版本不对 或者 安装后没有加入到环境变量 手工翻译需要 msgid 找到 settings 里面配置 LOCALE_PATHS 下 django.po 文件,开始你编辑之路...msgid: 需要翻译文案 msgstr: 翻译后文案 代码中看到:_("这种就是国际化标志,我们只需要翻译下就 OK") 例子: 最后一步就是 编译 编译成功后会在 django.po 对应目录生成...django.mo 文件 python manage.py compilemessages (joyoo) E:\yinzhuoqun\djangos\joyoo>python manage.py compilemessages

    63740
    领券