一般情况下,应用程序的界面语言会和系统语言保持一致。但有些时候,我们也会希望临时换用一种不同的界面语言。例如,一些程序的中文翻译词不达意,有必要参考英文界面来确定功能的准确含义;又如,一些网页会强制按照浏览器语言显示不同版本,因此必须通过切换浏览器语言来控制网页语言。

问题是,并不是所有的应用程序都提供了切换界面语言的选项。事实上,大多数 macOS 的内建应用都没有这样的设置。如果每次遇到这种需求都去临时改变系统语言,未免过于耗时和麻烦。

这个问题可以通过终端命令来解决。macOS 允许在运行应用程序时向其传递特定参数,其中,-AppleLanguages 参数就是用来控制应用程序的语言的。例如:

  1. # 以简体中文界面启动 Safari 浏览器
    $ open -a /Applications/Safari.app --args -AppleLanguages '(zh-CN)'
  2. # 以英文界面启动 Pages
    $ open -a /Applications/Pages.app --args -AppleLanguages '(en)'

如果想以其他语言启动某个应用程序,只需要修改将上述命令最后的地区代码。其他一些常用的代码包括繁体中文(zh-TW)、日文(ja)、法文(fr)、德文(de)等。

要知道一个应用都支持哪些界面语言,可以在 Finder 中找到该应用,点击右键选择 显示包内容,然后查看 /Contents/Resources 目录下以 .lproj 结尾的语言文件目录;.lproj 之前的部分就是各语言对应的地区代码。

Safari 的语言文件

当然,更快捷的方法还是使用终端命令。例如:

  1. # 查看 Ulysses 支持的界面语言
    $ ls /Applications/Ulysses.app/Contents/Resources | grep lproj
    > Base.lproj
    > de.lproj
    > en.lproj
    >

为应用程序的特定语言创建快捷方式

如果需要比较频繁地用不同语言显示某个应用,那么可以为其创建一个快捷方式。

方法是:打开系统内建的「脚本编辑器」应用,新建一个文档,在命令栏输入:

  1. do shell script "open -a [应用程序路径] --args -AppleLanguages '([要显示的语言])'"

点击 文件 > 导出,起一个易认的名字(例如「Safari CN」),并将「文件格式」选为「脚本」,然后将其导出到 Applications 文件夹。

用脚本编辑器为特定语言创建快捷方式

这样,就可以直接从 Launchpad 以特定语言启动这一应用了。

Alfred 或 LaunchBar 用户可以用该原理制作动作来实现同样效果,在此不赘。

默认以特定语言启动应用程序

最后,如果希望始终以某种与系统设置不同的语言启动特定应用,可以用 defaults write 命令来修改其默认设置。具体语法是:

  1. $ defaults write [应用的 Bundle ID] AppleLanguages '([要默认显示的语言])'

例如:

  1. # 默认以简体中文打开「文本编辑」应用
    $ defaults write com.apple.TextEdit AppleLanguages '(zh-CN)'

其中,应用的 Bundle ID 可以通过运行 mdls -name kMDItemCFBundleIdentifier [应用程序路径]来查找。例如:

  1. # Chrome 浏览器的 Bundle ID
    $ mdls -name kMDItemCFBundleIdentifier /Applications/Google\ Chrome.app
    > kMDItemCFBundleIdentifier = "com.google.Chrome"

如果不再需要固定应用程序的显示语言,在终端运行:

  1. $ defaults delete [应用的 Bundle ID] AppleLanguages

如何临时修改 macOS 应用的界面语言?的更多相关文章

  1. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  2. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  3. CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

    上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...

  4. docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用

    .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...

  5. ASP.NET Core 中文文档 第二章 指南(1)用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

    原文:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 作者:Daniel Roth.Steve Smith ...

  6. Swift 3 and OpenGL on Linux and macOS with GLFW

    https://solarianprogrammer.com/2016/11/19/swift-opengl-linux-macos-glfw/ Swift 3 and OpenGL on Linux ...

  7. Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 有关如何在 Jexus 中进行部署,请 ...

  8. 在MacOS 10.12上安装Tomcat8.5

    在MacOS 10.12上安装Tomcat8.5 原文链接:https://wolfpaulus.com/journal/mac/tomcat8/ Context 已安装Java,使用java -ve ...

  9. MacOS中使用QT开发iOS应用

    因为项目合同中规定一部分业务内容要在手机端实现,包括安卓机和苹果机,因此选择了QT作为开发工具.程序在Win10和安卓系统上已经完美运行,这几天开始搭建iOS的编译和发布环境,因为以前没有使用过mac ...

随机推荐

  1. Srping的IOC

    XML方式: IOC:控制反转的底层原理就是:工厂模式+反射+配置文件DI:依赖注入就是通过配置文件设置属性值 BeanFactory 是老版本的工厂类:调用getBean的时候,才会生成类的实例Ap ...

  2. LwIP应用开发笔记之五:LwIP无操作系统TCP服务器

    前面我们实现了UDP服务器及客户端以及基于其上的TFTP应用服务器.接下来我们将实现同样广泛应用的TCP协议各类应用. 1.TCP简述 TCP(Transmission Control Protoco ...

  3. android问题总结:

    1. android:focusableInTouchMode="true" 属性: 控制 子view不获取焦点:   <android.support.v4.widget. ...

  4. Python监听键盘和鼠标事件

    我们可以利用windows提供的api函数来实现对系统键盘事件和鼠标事件的监听,主要利用的是SetWindowsHookEx函数,这个函数可以允许调用者传入一个钩子函数也叫回调函数,当指定的事件发生时 ...

  5. Java的三大版本

    Java的三大版本 Write Once.Run Anywhere JavaSE:标准版(桌面程序,控制台开发......) JavaME:嵌入式开发(手机,小家电......) JavaEE:E企业 ...

  6. 【记录】【MySQL】填充字符串函数 LPAD(str,len,padstr)

    LPAD(str,len,padstr) 1.如果str的长度等于len,那么就返回str 2.如果str的长度大于len,那么就返回str的前len个长度 3.如果str的长度小于len,那么就返回 ...

  7. 218. The Skyline Problem (LeetCode)

    天际线问题,参考自: 百草园 天际线为当前线段的最高高度,所以用最大堆处理,当遍历到线段右端点时需要删除该线段的高度,priority_queue不提供删除的操作,要用unordered_map来标记 ...

  8. Java集合框架(Java总结五)

    ”https://www.runoob.com/java/” 集合接口区别 List 接口存储一组不唯一,有序(插入顺序)的对象,允许有相同的元素. Set 接口存储一组唯一,无序的对象,不保存重复的 ...

  9. 关于nslookup以及dig命令的研究报告

    我们在日常上网时都是用域名访问网路,如www.baidu.com,而在实际寻址过程中,是使用IP地址,如180.101.49.11,域名到IP地址的解析是通过DNS服务器来实现的,系统中我们可以用一些 ...

  10. PV、UV、UIP、VV、DAU、CTR指的是什么?

    PV(page view) 网站浏览量,指网页的浏览次数,用户每打开一次页面就记录一次PV,多次打开则累加. UV(unique vistor) 独立访客数,指的是某一天访问某站点的人数,以cooki ...