系统语言切换为英文后,右键菜单里很多项目仍显示中文?一次关于 LaunchServices 本地化注册机制的深挖过程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ahaxzh
V2EX    macOS

系统语言切换为英文后,右键菜单里很多项目仍显示中文?一次关于 LaunchServices 本地化注册机制的深挖过程

  •  1
     
  •   ahaxzh 194 天前 1672 次点击
    这是一个创建于 194 天前的主题,其中的信息可能已经有所发展或是发生改变。

    [macOS] 系统语言改成英文后,右键菜单里很多项目仍是中文 记录一次对 LaunchServices 本地化机制的深挖(未解)

    起因很简单,就是我把 macOS 的系统语言从中文切换成了英文,然后在 Finder 中右键选择文字时,发现菜单里还有一项中文服务:

    将文本转为音频

    说实话这东西在一堆英文菜单里格外显眼,我本来以为是缓存没刷新,结果越查越离谱……最终没解决,但这个坑我踩得够深,就整理一下发出来,供有类似强迫症的朋友参考。


    起因 & 表现

    系统界面全英文,唯独 Finder 的服务菜单中仍有一项中文服务「将文本转为音频」。这不是自己建的 Automator ,也不是第三方插件,看起来就是系统自带的。


    排查过程

    1. ~/Library/Services 没东西

    首先排除了用户级 Quick Action 的可能。

    2. 在 /System/Library/Services/ 下找到了关键文件:

    ChineseTextConverterService.app

    目录结构正常,里面包含多语言本地化资源:

    Contents/Resources/zh.lproj/ServicesMenu.strings Contents/Resources/en.lproj/ServicesMenu.strings

    也就是说,这玩意确实支持英文显示,但我系统语言都切成英文了,它却还是显示中文服务名?很迷。


    Gemini 推荐我执行了一条命令:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user 这条命令的作用是强制重建系统的 LaunchServices 数据库,理论上能刷新所有“打开方式”、服务项之类的注册信息。 我当时抱着试试看的态度执行了,没有报错,也没有立刻生效,问题依旧。 但,坑也就此埋下。 后续发现:它其实注册了这个服务(并锁定了中文) 我查了系统日志: log show --predicate 'eventMessage contains "ChineseTextConverterService"' --last 30d 结果显示: 2025-06-08 02:02:41 com.apple.ChineseTextConverterService 被正式注册入系统 也就是说,这条命令其实是“首次激活”了这个原本未注册的系统服务项,注册时使用的是中文资源( zh.lproj ),于是它现在牢牢地以「将文本转为音频」出现在菜单中,无论你系统语言是否为英文。 那这个服务是什么时候写入系统的? 查 .app 文件的创建时间是 2025-05-04 ,结合我现在是 macOS Sequoia 15.5 ,可以合理推测是系统更新中自动部署的。 当时它只是静静地存在,并未被注册为 Finder 服务,直到我执行了那条命令,把它“唤醒”了…… 崩溃瞬间:打开系统设置 > Keyboard > Services 后我彻底放弃 你以为只有一个中文服务名? 不,还有这些: ![hahah]( https://imgur.com/a/F4rjUMJ) 这些全部都还是中文,系统语言为英文,Finder 语言为英文,服务却全是中文。 尝试过但无效的操作 删除 ~/Library/Preferences/com.apple.finder.plist 删除 ~/Library/Preferences/com.apple.systempreferences.plist 手动编辑 .strings 文件(被 SIP 拦截) 新建用户(无效,LaunchServices 是系统级) 多次执行 lsregister (只会让更多服务“苏醒”) 怀疑人生(有效,但短暂) 所学到的冷知识 macOS 的 LaunchServices 服务名注册是一次性的 一旦注册,语言就固定了,以后语言切换不会影响已注册名称 /System/Library/Services 下很多 .app 是“预部署未激活”的,直到某些动作(或你手贱)触发才注册 lsregister -r 命令其实就是“全系统服务激活开关”,慎用 系统不会回滚注册名,SIP 不允许你改名或清除 可行的 Workaround (仅供参考) 在系统设置 → Keyboard → Services 中,取消勾选“将文本转为音频” 用 Automator 自建一个英文名的服务(比如叫 Convert Text to Audio ) 我也顺便做了一个 .workflow 模板,如果你想下载,可以留言我发给你。 最终结论 这个问题没有解法,除非你抹盘重装一个最初语言为英文的 macOS 系统,才能避免注册为中文服务项。 否则,这些看起来“只是语言显示”的东西,其实是系统注册层面已经写死的。
    12 条回复    2025-06-10 13:37:26 +08:00
    drymonfidelia
        1
    drymonfidelia  
       194 天前   1
    苹果的很多东西表面上看起来很优雅,去逆向看一下实际实现和屎一样。macOS 还有办法关 sip 改系统文件修复,我 iOS 遇到的 Bug 才真是只能抹盘解决 /t/1013867
    AmericanExpress
        2
    AmericanExpress  
       194 天前 via iPhone
    “将文本转为音频”
    AmericanExpress
        3
    AmericanExpress  
       194 天前 via iPhone
    my bad 我看岔了
    v2zhao
        4
    v2zhao  
       194 天前
    macOS 现在 bug 太多了,跟乔布斯那会是两个时代
    cpstar
        5
    cpstar  
       194 天前
    大胆设想,第一个应用安装时选择 A 语言,然后切换 B 语言安装第二个应用,然后切 C 语言安装第三个,以此类推,于是。。。
    咱就赌你初始化的时候固定到一种语言,爱咋咋地。
    cpstar
        6
    cpstar  
       194 天前   2
    @bunnyblueair 4# 窃以为,这种机制不太可能是近年来“创造”的,而是固化多少年的东西,甚至可以上追到上个世纪 80 年代初代苹果机。
    Kenshiro
        7
    Kenshiro  
       194 天前 via Android   1
    这个很早注意到了,一些关键设定的语言是走管理员的账户的设定的,把这俩的语言同步一下就好
    ahaxzh
        8
    ahaxzh  
    OP
       193 天前 via iPhone
    @Kenshiro 嚯?按照你说的意思 我添加个新的用户为管理员 把当前用户删掉 再新增回来??
    ahaxzh
        9
    ahaxzh  
    OP
       193 天前 via iPhone
    @Kenshiro 还有我目前单管理员用户的 不太明白你说的意思
        10
    Kenshiro  
       192 天前 via Android
    @ahaxzh 方便发下图吗,怀疑这是捷径的动作
    ahaxzh
        11
    ahaxzh  
    OP
       192 天前 via iPhone
    @Kenshiro Mac 上目前无捷径操作,这些中文项目我都查了,全是系统自带的。![hahah]( https://imgur.com/a/F4rjUMJ)
    Kenshiro
        12
    Kenshiro  
       192 天前 via iPhone
    @ahaxzh
    1. 重新更换语言
    2. 去设置/语音 检查是否有单一 Apps 语言指定
    3. 新建管理员用户,设定为英文,将原有账户降权为普通用户看看
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5078 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 69ms UTC 07:48 PVG 15:48 LAX 23:48 JFK 02:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86