有没有办法为macOS上的C++程序指定自定义语言环境目录



在我的Mac中,/usr/share/locale是放置所有语言环境的默认区域设置目录。我想指定一个自定义语言环境目录,以便C++程序(即libc/libc++(可以从那里获取语言环境。

#include <locale>
int main() {
std::locale a("en_US.utf-8"); // OK.
std::locale b("en_US.utf8"); // Error. Failed to create locale for en_US.UTF8
}

此C++程序无法为第二种情况构造语言环境,因为 Mac 上的目录中/usr/share/locale没有en_US.utf8文件夹。我想通过复制/链接en_US.utf-8来创建en_US.utf8,但是目录/usr/share/locale是写保护的,即即使使用 sudo 模式也无法更改此目录。更改此目录的唯一方法是在安全模式下重新启动mac,更改此目录并在正常模式下重新启动。这不是一个令人鼓舞的选择。所以我需要在自定义目录中复制整个/usr/share/locale目录,并更改自定义目录中的区域设置文件夹。我所需要的只是一种为我的C++程序指定自定义语言环境目录的方法。

任何通过在一个地方更改程序而不更改所有出现的区域设置用法(utf8->utf-8(来使我的C++程序工作的解决方案对我来说都是有效的解决方案。

注意:在 std::locale 上编写包装器对我不起作用,因为正如我所提到的,我无法承受在一个非常大的C++项目中更改语言环境的所有用法。

我得到了问题的答案。

PATH_LOCALE=<new_path> ./binary

它适用于mac(BSD(。 谢谢。

最新更新