2 votes

Utilisation de system_profiler avec une sortie en anglais sur MacOS allemand

Pour un logiciel MacOS qui travaille avec des polices dans le shell bash, j'ai besoin d'informations sur les polices installées. Pour obtenir les informations sur les polices, j'utilise

system_profiler SPFontsDataType

Cela fonctionne très bien sur un MacOS anglais. Cependant, lorsqu'il est exécuté sur un MacOS allemand, il produit tout en anglais, à l'exception du style de police. Or, pour des raisons de compatibilité, j'ai également besoin que le style de police soit en anglais.

Exemple MacOS allemand :

Full Name: Times New Roman Fett
Family: Times New Roman
Style: Fett

Exemple anglais MacOS :

Full Name: Times New Roman Bold
Family: Times New Roman
Style: Bold

J'ai essayé de modifier AppleLanguages dans les paramètres par défaut de system_profiler, mais cela n'a pas fonctionné. La sortie était toujours en allemand :

defaults write com.apple.systemprofiler AppleLanguages '("en-US","de-DE")'

defaults write com.apple.systemprofiler AppleLanguages -array "en-US" "de-DE"

Cependant, lorsque j'ai temporairement défini le NSGlobalDomain sur English, cela a fonctionné :

tempvalues=$(defaults read NSGlobalDomain AppleLanguages)
defaults write NSGlobalDomain AppleLanguages -array "en-US" 
system_profiler SPFontsDataType
defaults write NSGlobalDomain AppleLanguages "$tempvalues"

Mais n'y a-t-il pas une meilleure approche que de changer le NSGlobalDomain ? L'appel à system_profiler prend quelques secondes, ce qui peut affecter d'autres programmes.

Des polices dont j'ai besoin : le nom complet, la famille, le style, le nom et l'emplacement du fichier (= chemin complet), la version, le champ protégé contre la copie, le champ incorporable. Toutes ces informations sont disponibles dans SPFontsDataType.

2voto

benwiggy Points 21125

Je dirais qu'il est beaucoup plus facile à utiliser NSFontManager que d'essayer d'utiliser les informations localisées de System Profiler.

Voici un script Swift qui produit une liste des noms PostScript de toutes les polices installées.

#!/usr/bin/swift    
import AppKit

    let manager = NSFontManager.shared
    let fontList = manager.availableFonts

    print (fontList)

Si vous souhaitez simplement vérifier si une police particulière est installée, il existe des moyens simples de le faire.

Cependant, on s'éloigne du développement de logiciels, qui est hors sujet ici, et pour lequel les Stack Overflow (en anglais) est plus approprié.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X