目录

名称

I18N::Langinfo - 查询区域设置信息

概要

use I18N::Langinfo;

说明

langinfo() 函数查询可用于本地化输出和用户界面的各种区域设置信息。它使用当前的基础区域设置,无论是否在 use locale 范围内调用。langinfo() 函数需要一个数字参数来标识要查询的区域设置常量:如果没有提供参数,则使用 $_。可作为参数使用的数字常量可从 I18N::Langinfo 导出。

以下示例将导入 langinfo() 函数本身和三个常量以用作 langinfo() 的参数:一个常量表示一周的第一天的缩写(编号从星期日 = 1 开始),以及两个常量表示当前区域设置中“是/否”问题的肯定和否定答案。

use I18N::Langinfo qw(langinfo ABDAY_1 YESSTR NOSTR);

my ($abday_1, $yesstr, $nostr) =
    map { langinfo($_) } (ABDAY_1, YESSTR, NOSTR);

print "$abday_1? [$yesstr/$nostr] ";

换句话说,在“C”(或英语)区域设置中,上述内容可能会打印类似以下内容

Sun? [yes/no]

但在法语区域设置下

dim? [oui/non]

通常可用的常量如下。

对于没有 nl_langinfo 的系统

此模块最初只是 libc nl_langinfo 函数的一个包装器,并且在没有该函数的系统(例如 Windows)上无法使用。

从 Perl 5.28 开始,此模块可在所有平台上使用。当 nl_langinfo 不可用的情况下,它会使用各种方法来构造该函数(如果存在)将返回的内容。但可能存在潜在的故障。这些是可能不同的项

ERA

未实现,因此返回 ""

CODESET

这应该适用于 Windows 平台。在几乎所有其他现代平台上,如果它是代码集,它将可靠地返回“UTF-8”。否则,它取决于区域设置的名称。如果它是 foo.bar 形式,它将假定 bar 是代码集;并且它还知道两个区域设置“C”和“POSIX”。如果这些都不适用,它将返回 ""

YESEXPR
YESSTR
NOEXPR
NOSTR

仅返回英语的值。YESSTRNOSTR 已从 POSIX 2008 中删除,并在此保留以保持向后兼容性。你的平台的 nl_langinfo 可能不支持它们。

D_FMT

始终计算为 %x,即区域设置的适当日期表示形式。

T_FMT

始终计算为 %X,即区域设置的适当时间表示形式。

D_T_FMT

始终计算为 %c,即区域设置的适当日期和时间表示形式。

CRNCYSTR

对于那些用货币符号替换基数字符的罕见区域设置,返回值可能不正确。如果您有需要以不同方式工作的示例,请在 https://github.com/Perl/perl5/issues 提交报告。

ALT_DIGITS

目前,这会提供与 Linux 相同的结果。如果您有需要以不同方式工作的示例,请在 https://github.com/Perl/perl5/issues 提交报告。

ERA_D_FMT
ERA_T_FMT
ERA_D_T_FMT
T_FMT_AMPM

这些都是使用 strftime() 派生的,并非该函数的所有版本都了解它们。在这样的系统上,将返回 ""

请参阅 nl_langinfo(3) 以获取有关可用常量的更多信息。(通常这意味着必须直接查看 langinfo.h C 头文件。)

EXPORT

默认情况下,仅导出 langinfo() 函数。

BUGS

在 Perl 5.28 之前,对于 RADIXCHARTHOUSEP 区域设置常量,返回值不可靠。

从 5.28 开始,在提供线程安全区域设置函数的系统上支持在多线程构建中更改区域设置。其中包括 POSIX 2008 系统和从 Visual Studio 2005 开始的 Windows,此模块将在这种情况下正常工作。但是,在 Visual Studio 2015 之前的 Windows 上的多线程构建中,检索 CRNCYSTRTHOUSEP 项可能会导致与已转换为使用全局区域设置的线程竞争。线程执行此操作的情况非常罕见。可以为此构建一个解决方法;欢迎提交补丁:请参阅 "switch_to_global_locale" in perlapi

另请参阅

perllocale"localeconv" in POSIX"setlocale" in POSIXnl_langinfo(3)

作者

Jarkko Hietaniemi,<[email protected]>。现在由 Perl 5 维护者维护。

版权和许可证

版权所有 2001 年 Jarkko Hietaniemi

此库是免费软件;您可以在与 Perl 自身相同的条款下重新分发和/或修改它。