由于应用程序要自适应系统的当前用户设置的语言,我想很多人都遇到过这样的需求。例如同一台mac本,用户test1设置的系统语言是“简体中文”,用户test2设置的系统语言是“英文”,此时在运行同一款程序时就应该通过判断系统语言来显示不同的语言。unix没有接口函数来获得系统语言信息,所以最后采用了一种迂回的方式来实现的。用c写了个实例如下:

思路:用脚本可以获得用户语言设置偏好的列表,位于最上面的就是当前的系统语言,因为在c中是不能直接得到脚本输出的值的,所以先将信息写入一个临时文件中,再读文件获取内容再给出相应的判断和其他操作,最后关闭文件,删除文件。

代码如下:

/*------------------------------------------------------------------------------*/

#include

#include

#define HANS 1

#define HANT 2

#define EN   0

int  getCurrentLang()

{

//先用脚本获取,然后重定向到临时文件/tmp/lang.txt中

//但是这个脚本只适合10.4以上的系统

system("defaults read .GlobalPreferences AppleLanguages | tr -d [:space:] | cut -c2-9 > /tmp/lang.txt");

FILE *fp;

int rv = HANS;

char lang[10]={0};

const char *fname="/tmp/lang.txt";

if(fp=fopen(fname,"r"))

{

if(fgets(lang, 10, fp)>0)

{

printf("lang: %s\n",lang);

if(strstr(lang,"en"))

{

rv =  EN;

}

else if(strstr(lang,"zh-Hant"))

{

rv =  HANT;

}

else if(strstr(lang, "zh-Hans"))

{

rv =  HANS;

}

else

{

rv =  HANS;

}

}

}

fclose(fp);

remove(fname);

return rv;

}

int main(int argc, char **argv)

{

int lang;

lang = getCurrentLang();

switch(lang)

{

case HANS:

printf("current language is 简体中文\n");

break;

case HANT:

printf("current language is 繁体中文\n");

break;

case EN:

printf("current language is 英文\n");

break;

default:

printf("current language is 简体中文\n");

break;

}

return 0;

}

/*------------------------------------------------------------------------------*/

自己感觉这种方法并不好,但是暂时没有找到比较简便的方法来获取

如果有类似的系统接口就好了。如果你有更好的方式,请告诉我吧。。

c 当前程序的语言,c语言实现获取macos当前的系统语言相关推荐

  1. 获取MAC端当前系统语言

    在项目中有台湾的客户需求支持英文和繁体,界面上的文字使用配置页面就可以解决,但是代码中修改页面的文字动态改变比较麻烦了. 最开始 使用的是: NSArray *languages = [NSLocal ...

  2. android改变系统语言,Android 9.0设置系统语言

    1.系统权限 android:sharedUserId="android.uid.system" 2.签名 通过手动签名的方式,用系统的签名文件为程序签名解决签名的问题,将程序加入 ...

  3. 汇编语言、高级语言(系统语言)、脚本语言的异同

    汇编语言.高级语言(系统语言).脚本语言的异同 高级语言主要指需要编译的语言.如C/C++,Java,C#.脚本语言主要指解释型语言,编写的代码无需编译器编译,直接使用解释器放入虚拟机执行. 高级语言 ...

  4. Android 9.0设置系统语言

    1.系统权限 android:sharedUserId="android.uid.system" 2.签名 通过手动签名的方式,用系统的签名文件为程序签名解决签名的问题,将程序加入 ...

  5. Win11怎么改系统语言?Win11系统语言简体改繁体的方法

    Win11怎么改系统语言?有时候我们电脑下载安装系统之后,发现该系统语言不是自己常用的,因此还需要更换系统语言,那么应该如何操作呢?今天小编就为大家带来Win11系统语言简体改繁体的方法,而且用类似的 ...

  6. 计算机语言栏怎么打开,语言栏不见了怎么办,详细教您win7系统语言栏不见了怎么办...

    在操用电脑学习时,习惯了在下端的语言条栏的呈出,偶时却发现它消失了,虽然能自如切换,但示着总生感不太佳.那么,怎样把它显现出呢?win7系统语言栏不见了怎么处理?下面,小编给大家带来了win7系统语言 ...

  7. Android6.0和7.0应用层更改系统语言(反射)

    转载注明出处: http://blog.csdn.net/zhaokai621/article/details/77102308 当处于应用层时,如果只是修改应用内多语言时,上层app可以轻松完成各种 ...

  8. CentOS7系统语言切换

    在CentOS系统中,中文语言界面虽然便于直观理解,但是经常要使用操作命令,遇到有中文目录的情况下,混杂有中英文名称,对输入字符和定位路径不太方便, 因此统一修改为全英文语言显示. #查看当前系统的语 ...

  9. android 华为 多语言设置在哪,华为荣耀6系统语言在哪里设置?

    怎么设置华为荣耀6系统语言?很多朋友的手机系统语言不是中文的,想设置手机系统语言为中文,可以不知道在哪设置华为荣耀6系统语言.十分头疼,下面我就简单说下华为荣耀6怎么设置系统语言,荣耀6语言更换方法 ...

最新文章

  1. 物体的三维识别与6D位姿估计:PPF系列论文介绍(五)
  2. 谈谈Android重打包--初语
  3. python数据处理实例-Python----数据预处理代码实例
  4. 对Java初学者来说,到底Java有哪些高效的开源库?
  5. sql server 里面怎么支持数字使用双引号_国查:用中文编写SQL
  6. 技术选型:Sentinel vs Hystrix
  7. HTML5新增-页面结构状态-列表-表单-音视频-全局兼容
  8. Apache 查看连接数
  9. 韩国各大银行纷纷开始引进区块链技术
  10. GIT插件EGIT使用手册
  11. oracle 归档模式 ASM,oracle rac启用归档模式
  12. WORD文档中的宏代码操作(表格批量操作))
  13. osgEarth使用经纬度定义视点/设置相机跟随移动的节点
  14. mac安装homebrew失败的处理方法
  15. 什么编程语言的开发者平均年薪高达94万?
  16. silvaco学习日记(四)
  17. 开发微信小程序的必备技能图谱
  18. sudo apt update时 E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu jammy Release” 没有 Release
  19. android开发之SnackBar的使用
  20. 无效的列类型所执行的sql语句

热门文章

  1. 怎么把dell 灵越2020一体机的win8系统改成win7?
  2. 【Python入门教程】第49篇 集合的子集
  3. 程序报错:AttributeError: module ‘cv2.cv2‘ has no attribute ‘cv2.MultiTracker_create()‘
  4. c语言压力变送器程序设计,智能温度变送器信号处理软件算法与软件设计
  5. 关于SaaS平台中应对多租户系统模式的权限设计
  6. cmmi3级包含的过程域
  7. PIL批量更改图片像素大小,python
  8. (转)MTK之Flash篇一
  9. Crowding Counter 之 根据.mat标注制作密度图进行训练
  10. gradle编译慢解决_Gradle build 太慢,可能是你使用的姿势不对