3

我以 root 身份运行,但有用户的 uid(例如504)。如何计算出用户的语言环境(在我的情况下en_GB)?以下不起作用:

setuid(user_uid);
fprintf(stderr,
        CFStringGetCStringPtr(CFLocaleGetIdentifier(CFLocaleCopyCurrent()),
                              kCFStringEncodingMacRoman);
setuid(0);

en_US为我输出。

4

2 回答 2

1

此信息包含在 中GlobalPreferences.plist,因此运行:

$ defaults read /Library/Preferences/.GlobalPreferences AppleLocale

给出了想要的结果。

于 2011-11-29T10:03:28.703 回答
-1

你不能,因为它不存在。语言环境由环境变量控制,可以动态变化,从窗口到窗口,甚至从应用程序到应用程序(即,如果用户启动程序时:

env LC_LANG=fr_FR program_name ...

.) 在 Unix 下,您可以通过执行以下操作来获取用户的默认语言环境:

FILE* in = popen("su -c 'env | grep ^LC_ ; env | grep ^LANG' -用户", "r" );

,然后读取和解析输入,但我认为没有什么更简单的了。

于 2011-11-24T16:25:31.913 回答