2个不稳定版本
0.2.0 | 2023年1月22日 |
---|---|
0.1.0 | 2023年1月21日 |
#576 in 过程宏
1,850 每月下载量
6KB
国际化格式化
xgettext
用于从源文件中提取字符串。不幸的是,它不支持Rust。 补丁自2019年以来一直处于审核状态。
幸运的是,它几乎可以与Rust一起工作。您可以指定关键字 gettext
或您使用的任何别名(我通常使用 i18n
),但是要使用格式化版本 gettext!
,它不起作用,因为 !
。
这个crate提供包装宏,以便可以使用 gettextrs::gettext!
和 gettextrs::ngettext!
,以便 xgettext
可以找到 .po
文件中的字符串,因为它不支持带 !
的关键字。将 i18n_fmt
和 i18n_nfmt
作为 xgettext
调用的关键字,然后像这样编写您的格式化gettext调用:
use i18n_format::i18n_fmt;
let number = 1;
let s = i18n_fmt! {
i18n_fmt("This is number {}, make it so !", number)
};
相当于
use gettextrs::gettext;
let number = 1;
let s = gettext!("This is number {}, make it so !", number);
但是字符串将被提取。
i18n_fmt
只是在块中作为 i18n_fmt!
的占位符,它将被替换为对 gettext!
的调用。要调用 ngettext!
,只需在宏内部使用 i18n_nfmt
作为占位符。
Meson支持
此crate最初用于与meson构建的gtk-rs应用程序一起使用。如果您使用常规的 gtk-rust-template
,国际化支持主要已设置。 po/meson.build
文件应包含如下部分
i18n.gettext(gettext_package, preset: 'glib')
只需将以下内容添加到 i18n.gettext
函数的参数中
args [
'--keyword=i18n_fmt',
'--keyword=i18n_nfmt:1,2'
]
如果 args
已存在,只需将项目添加到列表中。
许可证
本软件包采用 MIT 许可证授权。
作者:Hubert Figuière [email protected]
依赖项
约10MB
约61K SLoC