在我的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 ++项目中对语言环境的所有使用。
答案 0 :(得分:0)
我得到了问题的答案。
PATH_LOCALE=<new_path> ./binary
它适用于mac(BSD)。 谢谢。