有没有一种方法可以为macOS上的C ++程序指定自定义语言环境目录

时间:2020-05-31 05:43:53

标签: c++ utf-8 locale

在我的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上en_US.utf8目录中没有/usr/share/locale文件夹。我想通过应对/链接en_US.utf8来创建en_US.utf-8,但是目录/usr/share/locale受写保护,即,即使使用sudo模式也无法更改此目录。更改此目录的唯一方法是在安全模式下重新启动mac,更改此目录,然后在正常模式下再次重新启动。这不是鼓励的选择。因此,我需要在自定义目录中复制整个/usr/share/locale目录,并更改自定义目录中的语言环境文件夹。我需要的是一种为C ++程序指定该自定义语言环境目录的方法。

任何使我的C ++程序在一个地方更改而又不改变所有语言环境用法(utf8-> utf-8)的解决方案对我来说都是有效的解决方案。 >

注意:在std :: locale上写一个包装器对我来说是行不通的,因为正如我提到的那样,我不能负担得起在一个大型C ++项目中对语言环境的所有使用。

1 个答案:

答案 0 :(得分:0)

我得到了问题的答案。

PATH_LOCALE=<new_path> ./binary

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