在setuptools打包中顺利集成mo文件

mo-installer的Python项目详细描述


帮助在setuptools包中安装gettext mo文件。

当前状态

此软件包功能齐全,但仍应视为beta版,因为它没有经过足够的测试

目标

setuptools目前很少支持gettextmo文件的生成和打包。babel提供了一个很好的集成,但它是一个相当大的包。为了帮助开发人员顺利地将gettext国际化集成到他们的包中,这将是一个带有示例的小包。

用法

要在生成时生成MO文件,包开发人员只需:

  • 在目录中的某个地方准备它的po文件。在该目录下,可以安装po文件:

    • 直接在名为domain-lang.po(例如:msg-fr_FR.po)的目录中
    • lang子目录中,例如lang/domain.po(例如:fr/msg.po
    • LC_MESSAGES子目录中,例如lang/LC_MESSAGES/domain.po(例如:fr/LC_MESSAGES/msg.po
  • 在其setup.py中声明他要使用mo_installer,并且po文件在哪里:

    setup(
        ...
        setup_require = ["mo_installer"],
        locale_src = src_locale_top_level_dir,
    )
    

就这些!

mo_installer模块自动添加一个从build_py自动调用的build_mosetuptools命令。它构建mo文件并将其安装在locale/lang/LC_MESSAGES文件夹中的主包下所以,在上面的例子中,我们以一个locale/lang/LC_MESSAGES/msg.mo文件结束。

配置

可以使用setup参数配置源和目标文件夹:

  • locale_src是源目录(相对于源安装,即包含setup.py文件的目录)。默认情况下,它是主包下的locale
  • locale_dir是顶级区域设置目录(相对于主包)默认情况下是locale

默认值尝试与babel兼容。

安装

最终用户安装

可以从PyPI安装包但是使用pip时不需要安装:setup_require自动找到包并将其安装到本地.eggs目录中

显影装置

如果要在自己的代码中贡献或集成mou安装程序,您应该从GitHUB获得完整树的副本:

git clone https://github.com/s-ball/mo_installer.git [your_working_copy_folder]

常见问题解答

问:我已经配置了我的项目,但是找不到python setup.py install阻塞mo_installer

A:pip知道如何在生成之前获取安装要求但是,当您直接运行python setup.py install时,没有地方下载它们,因为安装已经启动。在这种情况下,必须使用pip手动安装mo_installer


问:由mo_installer生成的MO文件似乎不包含哈希表

A:没有。由于mo_installer基于msgfmt.py,因此无法生成哈希表,gettext将使用二进制搜索顺便说一下,babel也不会生成任何哈希表。

运行测试

由于该项目打算与pypi兼容,您只需使用以下命令从主文件夹运行测试:

python setup.py test

有些测试依赖于pyfakefs,当您运行python setup.py test时,它会自动从PyPI中插入但不需要使用mo_installer,也不需要由pip install mo_installer安装。

贡献

由于这个项目是在我的空闲时间开发的,我不能保证很快的反馈。无论如何,我很高兴在github上收到问题或请求。

版本控制

此项目使用标准的Major.Minor.Patch版本控制模式在主版本中,需要公共api的稳定性(至少在1.0.0版本发布之后)。

许可证

这个项目是在麻省理工学院的许可下授权的-请参阅LICENSE文件了解详细信息

致谢

  • 优秀的pyfakefs允许在假文件系统上运行集成测试
  • 欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java为扫描器的输入生成字符序列   hibernate中的java实体合并   如何使变量在Java文件中成为全局变量   java JVM崩溃“异常访问冲突”   向MediaMetadataRetriever中的setDataSource()发送Uri时发生java IllegalArgumentException   java没有节约协议?   用户界面java gui帮助actionlistener   java索引越界异常,即使大小小于索引?   在C++中使用java的困惑   在普通java编码中插入图像   JDBC上的java缓存数据   在Java中,在字符串的特定位置替换子字符串   java在运行elasticsearch集群时遇到Perm Gen空间问题   java Soap故障跟踪   java拆分器。固定长度(int)。拆分(字符串)   java获取jar内部包的路径