如何在Swift中获得macOS垃圾桶/垃圾箱的正确本地化显示名称?

如何在Swift中获得macOS垃圾桶/垃圾箱的正确本地化显示名称?,swift,macos,Swift,Macos,我试图让Swift正确返回垃圾的本地名称(例如,自从macOS 10.14/10.15以来,垃圾现在在许多国家被称为垃圾箱) 我的尝试只是返回“垃圾”,尽管我在一个“垃圾箱”的地方:) 让Trashull=试试看!FileManager.default.url(用于:.trashDirectory,位于:.allDomainsMask中,适用于:nil,创建:false) 让trashName=FileManager.default.displayName(atPath:trashull.pat

我试图让Swift正确返回垃圾的本地名称(例如,自从macOS 10.14/10.15以来,垃圾现在在许多国家被称为垃圾箱)

我的尝试只是返回“垃圾”,尽管我在一个“垃圾箱”的地方:)

让Trashull=试试看!FileManager.default.url(用于:.trashDirectory,位于:.allDomainsMask中,适用于:nil,创建:false)
让trashName=FileManager.default.displayName(atPath:trashull.path)

如果您已将本地语言添加为应用程序的本地化之一,则您的代码将正常工作。例如,我的macOS系统语言是日语,如果我在项目设置中的本地化中添加日语:

从您的代码中打印
trashName
,将提供“ゴミ箱".


本质上,
displayName(for:)
是在你的应用程序的当前本地化中获取本地化名称。如果你的应用程序无法本地化到系统的本地化,它将保持英文,对吗?这就是为什么它会显示“垃圾”“,除非你让你的应用程序能够本地化到你感兴趣的任何地方。

谢谢你的回答!我添加了所有可用的“English(*)本地化,现在我上面的代码返回“Delete”,而不是“Trash”。真奇怪:)有什么想法吗?我只想显示一个对话框,上面写着“无法打开该项目,因为它在垃圾箱中”。可能我应该对整个消息进行本地化,但这似乎应该是一个快速的胜利,然后再进行full-l10n。@jeff-h您的系统区域设置是什么(
locale.current
)?“所有可用的”英语(*)“本地化”是否包括您的系统区域设置?如果它没有,那么它可能使用了一个最接近您的系统语言环境的语言环境(我不确定这一点),这恰好称为“垃圾”“删除”。另外,我认为API是专门设计来阻止你这样做的。我当前的语言环境是
en_NZ
,所以你是对的,它不在我添加的
en
语言环境中(
GB
AU
in
),因为它们在Xcode的主要语言环境列表中。我发现很难相信任何一个说英语的国家会说“你的文件在删除中”(lol),因此这似乎是一个非常奇怪的退步。无论如何,我将遵循您的智慧,完全删除此代码,并在时机成熟时正确执行l10n。再次感谢!