diff --git a/Onyx.xcodeproj/project.pbxproj b/Onyx.xcodeproj/project.pbxproj index 846176c..134151a 100644 --- a/Onyx.xcodeproj/project.pbxproj +++ b/Onyx.xcodeproj/project.pbxproj @@ -307,7 +307,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "APP=\"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH\"\nmkdir -p \"$APP/MacOS\" \"$APP/Library/LaunchDaemons\"\ncp \"$BUILT_PRODUCTS_DIR/OnyxHelper\" \"$APP/MacOS/OnyxHelper\"\ncp \"$SRCROOT/OnyxHelper/com.scarriffleservices.onyx.helper.plist\" \\\n \"$APP/Library/LaunchDaemons/\"\n# Der Helfer wird eigenständig signiert — die Signatur der App deckt\n# ihn nicht ab, und ohne gültige eigene Signatur lehnt launchd ihn ab.\n#\n# `-i` ist Pflicht: Xcode signiert Kommandozeilenprogramme sonst mit\n# dem Produktnamen (\"OnyxHelper\") als Bezeichner. Die App prüft aber\n# auf com.scarriffleservices.onyx.helper und würde ihren eigenen\n# Helfer ablehnen.\ncodesign --force --options runtime --timestamp=none \\\n -i com.scarriffleservices.onyx.helper \\\n --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" \"$APP/MacOS/OnyxHelper\"\n\n# Das Kopieren passiert nach Xcodes Signatur und bricht damit das\n# Siegel des App-Bundles (\"nested code is modified or invalid\").\n# Deshalb zum Schluss die App selbst neu signieren — mit denselben\n# Entitlements, sonst verliert sie App-Group, WeatherKit und die\n# TCC-Berechtigungen.\ncodesign --force --options runtime --timestamp=none \\\n --entitlements \"$SRCROOT/Onyx/Onyx.entitlements\" \\\n --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" \\\n \"$BUILT_PRODUCTS_DIR/$WRAPPER_NAME\"\n"; + shellScript = "APP=\"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH\"\nmkdir -p \"$APP/MacOS\" \"$APP/Library/LaunchDaemons\"\ncp \"$BUILT_PRODUCTS_DIR/OnyxHelper\" \"$APP/MacOS/OnyxHelper\"\ncp \"$SRCROOT/OnyxHelper/com.scarriffleservices.onyx.helper.plist\" \\\n \"$APP/Library/LaunchDaemons/\"\n# Der Helfer wird eigenständig signiert — die Signatur der App deckt\n# ihn nicht ab, und ohne gültige eigene Signatur lehnt launchd ihn ab.\n#\n# `-i` ist Pflicht: Xcode signiert Kommandozeilenprogramme sonst mit\n# dem Produktnamen (\"OnyxHelper\") als Bezeichner. Die App prüft aber\n# auf com.scarriffleservices.onyx.helper und würde ihren eigenen\n# Helfer ablehnen.\ncodesign --force --options runtime --timestamp=none \\\n -i com.scarriffleservices.onyx.helper \\\n --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" \"$APP/MacOS/OnyxHelper\"\n\n# Kein Neusignieren der App hier: Xcode signiert sie als letzten\n# Schritt, nach diesem Skript. Das repariert das Siegel von selbst\n# und legt im Debug-Build auch get-task-allow bei, ohne die im\n# Skript nachzubauen wäre — nachgemessen an der Reihenfolge im\n# Bauprotokoll (PhaseScriptExecution vor CodeSign Onyx.app).\n"; }; /* End PBXShellScriptBuildPhase section */ diff --git a/Packages/OnyxKit/Sources/AudioProvider/Localizable.xcstrings b/Packages/OnyxKit/Sources/AudioProvider/Localizable.xcstrings index f2c7fb3..3d4b5e2 100644 --- a/Packages/OnyxKit/Sources/AudioProvider/Localizable.xcstrings +++ b/Packages/OnyxKit/Sources/AudioProvider/Localizable.xcstrings @@ -1,24 +1,109 @@ { "sourceLanguage" : "en", "strings" : { - "mixer.name" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Audio-Mixer" } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "Audio mixer" } } } }, - "mixer.on" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Mixer einschalten" } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "Turn mixer on" } } } }, - "mixer.off" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Mixer ausschalten" } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "Turn mixer off" } } } }, - "mixer.off.explain" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Regelt die Lautstärke einzelner Programme, auch über 100 %." } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "Sets the volume of individual apps, including above 100%." } } } }, - "mixer.off.warning" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Dafür greift Onyx in den Tonweg der ausgewählten Programme ein. Beim Ausschalten wird der ursprüngliche Zustand sofort wiederhergestellt." } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "Onyx intercepts the audio path of the selected apps to do this. Turning it off restores the original state immediately." } } } }, - "mixer.noProcesses" : { "localizations" : { - "de" : { "stringUnit" : { "state" : "translated", "value" : "Kein Programm gibt gerade Ton aus" } }, - "en" : { "stringUnit" : { "state" : "translated", "value" : "No app is playing audio" } } } } + "" : { + + }, + "%lld %%" : { + "comment" : "A row of controls for adjusting the volume and muting a process.", + "isCommentAutoGenerated" : true + }, + "mixer.name" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Audio-Mixer" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Audio mixer" + } + } + } + }, + "mixer.noProcesses" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Programm gibt gerade Ton aus" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No app is playing audio" + } + } + } + }, + "mixer.off" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mixer ausschalten" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turn mixer off" + } + } + } + }, + "mixer.off.explain" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Regelt die Lautstärke einzelner Programme, auch über 100 %." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sets the volume of individual apps, including above 100%." + } + } + } + }, + "mixer.off.warning" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dafür greift Onyx in den Tonweg der ausgewählten Programme ein. Beim Ausschalten wird der ursprüngliche Zustand sofort wiederhergestellt." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx intercepts the audio path of the selected apps to do this. Turning it off restores the original state immediately." + } + } + } + }, + "mixer.on" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mixer einschalten" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Turn mixer on" + } + } + } + } }, - "version" : "1.0" -} + "version" : "1.1" +} \ No newline at end of file diff --git a/project.yml b/project.yml index 13a1029..457ea0c 100644 --- a/project.yml +++ b/project.yml @@ -119,15 +119,11 @@ targets: -i com.scarriffleservices.onyx.helper \ --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$APP/MacOS/OnyxHelper" - # Das Kopieren passiert nach Xcodes Signatur und bricht damit das - # Siegel des App-Bundles ("nested code is modified or invalid"). - # Deshalb zum Schluss die App selbst neu signieren — mit denselben - # Entitlements, sonst verliert sie App-Group, WeatherKit und die - # TCC-Berechtigungen. - codesign --force --options runtime --timestamp=none \ - --entitlements "$SRCROOT/Onyx/Onyx.entitlements" \ - --sign "$EXPANDED_CODE_SIGN_IDENTITY" \ - "$BUILT_PRODUCTS_DIR/$WRAPPER_NAME" + # Kein Neusignieren der App hier: Xcode signiert sie als letzten + # Schritt, nach diesem Skript. Das repariert das Siegel von selbst + # und legt im Debug-Build auch get-task-allow bei, ohne die im + # Skript nachzubauen wäre — nachgemessen an der Reihenfolge im + # Bauprotokoll (PhaseScriptExecution vor CodeSign Onyx.app). # Bewusst ohne outputFiles: mit ihnen überspringt Xcode den Schritt, # solange die Plist unverändert ist — auch wenn sich das Programm oder # die Signaturvorgaben geändert haben.