• msgfmt


    说明

    • 目前大部分自由软件实现国际化使用的是gettext。
    • 国际化就是让程序可以使用多国语言来显示程序里的字符串。
    • 程序里一般都有很多字符串,菜单名也好,错误信息也好,都是字符串。假设字符串为string,非国际化的程序里都是直接写"string"。如果用了 gettext 来实现国际化的话,就要写成 gettext("string")。有时也会看到_("string"),那实际上也是 gettext,只不过通过宏的定义把 gettext 改头换面了。
    • 这个string就是msgid。然后使用xgettext来从程序源代码文件产生po文件。
    • 然后交给专门的翻译人员来翻译 po。
    • 翻译完毕后,使用 msgfmt 来把po转化成 mo 文件,并安装到系统里合适的位置。
    • 程序运行时,到底显示什么字符串就是 由 gettext 函数来决定的了。
    • 主要有两个决定因素,一个是系统的locale及相关环境变量(LANGUAGE,LC_ALL,LC_MESSAGES和LANG), 一个是相关的mo文件。

    安装使用

    # 安装软件

    yum install gettext -y

     

    # 编码 po 文件为 mo 文件:

    msgfmt -o test.mo test.po

     

    # mo 文件反编码成 po 文件:

    msgunfmt test.mo -o test.po

     

    Q & A

    • 如果有重复内容提示,删掉重复内容即可:

    # msgfmt -o messages.mo messages.po

    messages.po: 4622: duplicate message definition...

    messages.po: 4590: ...this is the location of the first definition

     

    作者: duchaoqun

    出处:https://www.cnblogs.com/duchaoqun/p/11982804.html

    版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

  • 相关阅读:
    线段树(题集
    T3——拆分自然数
    P1309 瑞士轮
    普通母函数简单使用
    双向广度优先搜索
    秦九韶算法
    P1043-数字游戏
    网站在阿里云备案的详细全过程详细步骤
    从git拉取代码后经常出现maven窗口不见
    SpringBoot入门教程之打成war包在tomcat容器中执行
  • 原文地址:https://www.cnblogs.com/dier-gaohe/p/14251630.html
Copyright © 2020-2023  润新知