如何在bash脚本中使用gettext?

我仅找到此页面,但我不理解。

Localization

我的脚本是这样写的:

 #!/bin/bash
 . lang_file.sh
 echo $LANG_HELLO_WORLD

lang_file.sh看起来像这样:
 #!/bin/bash
 LANG_HELLO_WORLD="Hello World"

我想将lang_file.sh更改为使用gettext的内容,如下所示:
 #!/bin/bash
 LANG_HELLO_WORLD=`some gettext command to get string in user language`

我想使用Launchpad中的代码,以便其他用户可以翻译它(.po,.pot文件)

对不起,英语不好,有什么建议吗?

最佳答案

您需要执行以下步骤:

  • 确定您的项目名称是什么,gettext将其称为textdomain,您将需要它来检索项目的翻译。我们称之为“PRJ”。
  • 标记要翻译的字符串。以下代码段给出了示例:

    我们称之为PRJ.sh:
    #!/bin/sh
    alias GETTEXT='gettext "PRJ"'
    
    ## Use GETTEXT to mark the string you want to translate
    HELLO_WORLD=$(GETTEXT "Hello world")
    
    echo "$HELLO_WORLD"
    
  • 生成.pot文件,以便翻译人员可以对其进行处理。

    运行以下命令,它将仅查找实际要翻译的GETTEXT。
    xgettext -o PRJ.pot  -L Shell --keyword --keyword=GETTEXT  PRJ.sh
    
  • 可选:生成.po文件。

    对于您要覆盖的每个语言环境。
    msginit -i PRJ.pot -l fr.UTF-8
    

    请注意,建议使用“UTF-8”,否则msginit可能会错误地为您选择一些过时的编码。
  • 检索完成的.po文件,并将它们转换为.mo文件(机器可以读取的文件)
    msgfmt -v  fr.po -o fr.mo
    
  • 安装.mo文件。运行:
    sudo install fr.mo /usr/share/locale/fr/LC_MESSAGES/PRJ.mo
    

    现在您可以尝试结果:
    LANGUAGE=fr  ./PRJ.sh
    

    并且您应该会看到Hello world的法语翻译。
  • 关于bash - 在bash中使用gettext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2221562/

    10-13 07:21