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

Is there a way to specify custom locale directory for C++ program on macOS

在我的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 文件夹。我想通过 coping/linking 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)。 谢谢