【问题标题】:Is there a way to specify custom locale directory for C++ program on macOS有没有办法在 macOS 上为 C++ 程序指定自定义语言环境目录
【发布时间】:2020-05-31 05:43:53
【问题描述】:

在我的 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++ 项目中更改所有语言环境的使用。

【问题讨论】:

    标签: c++ utf-8 locale


    【解决方案1】:

    我的问题得到了答案。

    PATH_LOCALE=<new_path> ./binary
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多