From eb573fdf74507947339847be3d2ac6739bc00d6a Mon Sep 17 00:00:00 2001 From: conath Date: Wed, 12 Oct 2022 00:16:51 +0200 Subject: [PATCH 1/5] Add German Localization to Xcode project No translations yet --- Platform/de.lproj/InfoPlist.strings | 14 ++ Platform/de.lproj/Localizable.strings | 1 + Platform/de.lproj/Localizable.stringsdict | 22 +++ .../VMDisplayMetalViewInputAccessory.strings | 162 ++++++++++++++++++ Platform/iOS/de.lproj/InfoPlist.strings | 1 + .../Display/de.lproj/VMDisplayWindow.strings | 93 ++++++++++ Platform/macOS/de.lproj/InfoPlist.strings | 1 + QEMUHelper/de.lproj/InfoPlist.strings | 1 + QEMUHelper/de.lproj/Localizable.strings | 1 + UTM.xcodeproj/project.pbxproj | 19 ++ 10 files changed, 315 insertions(+) create mode 100644 Platform/de.lproj/InfoPlist.strings create mode 100644 Platform/de.lproj/Localizable.strings create mode 100644 Platform/de.lproj/Localizable.stringsdict create mode 100644 Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings create mode 100644 Platform/iOS/de.lproj/InfoPlist.strings create mode 100644 Platform/macOS/Display/de.lproj/VMDisplayWindow.strings create mode 100644 Platform/macOS/de.lproj/InfoPlist.strings create mode 100644 QEMUHelper/de.lproj/InfoPlist.strings create mode 100644 QEMUHelper/de.lproj/Localizable.strings diff --git a/Platform/de.lproj/InfoPlist.strings b/Platform/de.lproj/InfoPlist.strings new file mode 100644 index 000000000..f92878472 --- /dev/null +++ b/Platform/de.lproj/InfoPlist.strings @@ -0,0 +1,14 @@ +/* Privacy - Location Always and When In Use Usage Description */ +"NSLocationAlwaysAndWhenInUseUsageDescription" = "由于iOS的机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; + +/* Privacy - Location Always Usage Description */ +"NSLocationAlwaysUsageDescription" = "由于iOS的机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; + +/* Privacy - Location When In Use Usage Description */ +"NSLocationWhenInUseUsageDescription" = "由于iOS的后台机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; + +/* Privacy - Microphone Usage Description */ +"NSMicrophoneUsageDescription" = "UTM需要您的同意才能使用麦克风。"; + +/* (No Comment) */ +"UTM virtual machine" = "UTM虚拟机"; diff --git a/Platform/de.lproj/Localizable.strings b/Platform/de.lproj/Localizable.strings new file mode 100644 index 000000000..f2180cd78 --- /dev/null +++ b/Platform/de.lproj/Localizable.strings @@ -0,0 +1 @@ +"" = ""; diff --git a/Platform/de.lproj/Localizable.stringsdict b/Platform/de.lproj/Localizable.stringsdict new file mode 100644 index 000000000..45479e04c --- /dev/null +++ b/Platform/de.lproj/Localizable.stringsdict @@ -0,0 +1,22 @@ + + + + + %lld Cores + + NSStringLocalizedFormatKey + %#@cores@ + cores + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + lld + one + %lld Core + other + %lld Cores + + + + diff --git a/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings b/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings new file mode 100644 index 000000000..003217011 --- /dev/null +++ b/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings @@ -0,0 +1,162 @@ + +/* Class = "UIButton"; normalTitle = "F7"; ObjectID = "3yi-Pr-1ih"; */ +"3yi-Pr-1ih.normalTitle" = "F7"; + +/* Class = "UIButton"; accessibilityLabel = "Paste"; ObjectID = "740-aI-39P"; */ +"740-aI-39P.accessibilityLabel" = "Paste"; + +/* Class = "UIButton"; accessibilityLabel = "Tab"; ObjectID = "7pj-Jz-7JR"; */ +"7pj-Jz-7JR.accessibilityLabel" = "Tab"; + +/* Class = "UIButton"; normalTitle = "⇥"; ObjectID = "7pj-Jz-7JR"; */ +"7pj-Jz-7JR.normalTitle" = "⇥"; + +/* Class = "UIButton"; accessibilityLabel = "Right"; ObjectID = "8Lh-4D-Fz6"; */ +"8Lh-4D-Fz6.accessibilityLabel" = "Right"; + +/* Class = "UIButton"; normalTitle = "→"; ObjectID = "8Lh-4D-Fz6"; */ +"8Lh-4D-Fz6.normalTitle" = "→"; + +/* Class = "UIButton"; accessibilityLabel = "Right"; ObjectID = "AY8-eJ-bAP"; */ +"AY8-eJ-bAP.accessibilityLabel" = "Right"; + +/* Class = "UIButton"; normalTitle = "Del"; ObjectID = "AY8-eJ-bAP"; */ +"AY8-eJ-bAP.normalTitle" = "Del"; + +/* Class = "UIButton"; normalTitle = "F10"; ObjectID = "AhH-ij-IF8"; */ +"AhH-ij-IF8.normalTitle" = "F10"; + +/* Class = "UIButton"; accessibilityLabel = "Up"; ObjectID = "BUL-js-yMh"; */ +"BUL-js-yMh.accessibilityLabel" = "Up"; + +/* Class = "UIButton"; normalTitle = "↑"; ObjectID = "BUL-js-yMh"; */ +"BUL-js-yMh.normalTitle" = "↑"; + +/* Class = "UIButton"; accessibilityLabel = "Num Lock"; ObjectID = "BUk-Vf-yE5"; */ +"BUk-Vf-yE5.accessibilityLabel" = "Num Lock"; + +/* Class = "UIButton"; normalTitle = "Num"; ObjectID = "BUk-Vf-yE5"; */ +"BUk-Vf-yE5.normalTitle" = "Num"; + +/* Class = "UIButton"; normalTitle = "F5"; ObjectID = "DxX-zu-urb"; */ +"DxX-zu-urb.normalTitle" = "F5"; + +/* Class = "UIButton"; normalTitle = "F12"; ObjectID = "EDi-KP-KwO"; */ +"EDi-KP-KwO.normalTitle" = "F12"; + +/* Class = "UIButton"; accessibilityLabel = "Left"; ObjectID = "EVa-2J-CRA"; */ +"EVa-2J-CRA.accessibilityLabel" = "Left"; + +/* Class = "UIButton"; normalTitle = "←"; ObjectID = "EVa-2J-CRA"; */ +"EVa-2J-CRA.normalTitle" = "←"; + +/* Class = "UIButton"; accessibilityLabel = "Caps Lock"; ObjectID = "FDV-W6-qlO"; */ +"FDV-W6-qlO.accessibilityLabel" = "Caps Lock"; + +/* Class = "UIButton"; normalTitle = "Caps"; ObjectID = "FDV-W6-qlO"; */ +"FDV-W6-qlO.normalTitle" = "Caps"; + +/* Class = "UIButton"; accessibilityLabel = "Home"; ObjectID = "LU6-kH-vN3"; */ +"LU6-kH-vN3.accessibilityLabel" = "Home"; + +/* Class = "UIButton"; normalTitle = "Home"; ObjectID = "LU6-kH-vN3"; */ +"LU6-kH-vN3.normalTitle" = "Home"; + +/* Class = "UIButton"; normalTitle = "F8"; ObjectID = "LlV-Ae-CrL"; */ +"LlV-Ae-CrL.normalTitle" = "F8"; + +/* Class = "UIButton"; normalTitle = "F1"; ObjectID = "PWe-Va-Qi1"; */ +"PWe-Va-Qi1.normalTitle" = "F1"; + +/* Class = "UIButton"; accessibilityLabel = "Print Screen"; ObjectID = "Pes-KN-KzU"; */ +"Pes-KN-KzU.accessibilityLabel" = "Print Screen"; + +/* Class = "UIButton"; normalTitle = "Pr Scr"; ObjectID = "Pes-KN-KzU"; */ +"Pes-KN-KzU.normalTitle" = "Pr Scr"; + +/* Class = "UIButton"; accessibilityLabel = "Command"; ObjectID = "Pjh-3m-tFX"; */ +"Pjh-3m-tFX.accessibilityLabel" = "Command"; + +/* Class = "UIButton"; normalTitle = "⌘"; ObjectID = "Pjh-3m-tFX"; */ +"Pjh-3m-tFX.normalTitle" = "⌘"; + +/* Class = "UIButton"; accessibilityLabel = "Shift"; ObjectID = "QPo-cD-UlK"; */ +"QPo-cD-UlK.accessibilityLabel" = "Shift"; + +/* Class = "UIButton"; normalTitle = "⇧"; ObjectID = "QPo-cD-UlK"; */ +"QPo-cD-UlK.normalTitle" = "⇧"; + +/* Class = "UIButton"; accessibilityLabel = "Down"; ObjectID = "RCo-l7-gvf"; */ +"RCo-l7-gvf.accessibilityLabel" = "Down"; + +/* Class = "UIButton"; normalTitle = "↓"; ObjectID = "RCo-l7-gvf"; */ +"RCo-l7-gvf.normalTitle" = "↓"; + +/* Class = "UIButton"; normalTitle = "F6"; ObjectID = "Rb5-vO-sIx"; */ +"Rb5-vO-sIx.normalTitle" = "F6"; + +/* Class = "UIButton"; accessibilityLabel = "End"; ObjectID = "TOV-fV-TTa"; */ +"TOV-fV-TTa.accessibilityLabel" = "End"; + +/* Class = "UIButton"; normalTitle = "End"; ObjectID = "TOV-fV-TTa"; */ +"TOV-fV-TTa.normalTitle" = "End"; + +/* Class = "UIButton"; normalTitle = "F9"; ObjectID = "UNT-ei-lIn"; */ +"UNT-ei-lIn.normalTitle" = "F9"; + +/* Class = "UIButton"; accessibilityLabel = "Control"; ObjectID = "bCv-uH-SSy"; */ +"bCv-uH-SSy.accessibilityLabel" = "Control"; + +/* Class = "UIButton"; normalTitle = "⌃"; ObjectID = "bCv-uH-SSy"; */ +"bCv-uH-SSy.normalTitle" = "⌃"; + +/* Class = "UIButton"; normalTitle = "F4"; ObjectID = "c7C-CG-EBg"; */ +"c7C-CG-EBg.normalTitle" = "F4"; + +/* Class = "UIButton"; normalTitle = "F3"; ObjectID = "gUX-ez-mbt"; */ +"gUX-ez-mbt.normalTitle" = "F3"; + +/* Class = "UIButton"; accessibilityLabel = "Page Down"; ObjectID = "h4q-XF-UMn"; */ +"h4q-XF-UMn.accessibilityLabel" = "Page Down"; + +/* Class = "UIButton"; normalTitle = "Pg Dn"; ObjectID = "h4q-XF-UMn"; */ +"h4q-XF-UMn.normalTitle" = "Pg Dn"; + +/* Class = "UIButton"; accessibilityLabel = "Option"; ObjectID = "jxu-AQ-u8c"; */ +"jxu-AQ-u8c.accessibilityLabel" = "Option"; + +/* Class = "UIButton"; normalTitle = "⌥"; ObjectID = "jxu-AQ-u8c"; */ +"jxu-AQ-u8c.normalTitle" = "⌥"; + +/* Class = "UIButton"; accessibilityLabel = "Insert"; ObjectID = "kO0-HZ-5w2"; */ +"kO0-HZ-5w2.accessibilityLabel" = "Insert"; + +/* Class = "UIButton"; normalTitle = "Ins"; ObjectID = "kO0-HZ-5w2"; */ +"kO0-HZ-5w2.normalTitle" = "Ins"; + +/* Class = "UIButton"; normalTitle = "F2"; ObjectID = "kd1-fj-kXM"; */ +"kd1-fj-kXM.normalTitle" = "F2"; + +/* Class = "UIButton"; accessibilityLabel = "Escape"; ObjectID = "n12-9R-99C"; */ +"n12-9R-99C.accessibilityLabel" = "Escape"; + +/* Class = "UIButton"; normalTitle = "⎋"; ObjectID = "n12-9R-99C"; */ +"n12-9R-99C.normalTitle" = "⎋"; + +/* Class = "UIButton"; accessibilityLabel = "Page Up"; ObjectID = "pX1-7o-dbU"; */ +"pX1-7o-dbU.accessibilityLabel" = "Page Up"; + +/* Class = "UIButton"; normalTitle = "Pg Up"; ObjectID = "pX1-7o-dbU"; */ +"pX1-7o-dbU.normalTitle" = "Pg Up"; + +/* Class = "UIButton"; normalTitle = "F11"; ObjectID = "rfk-su-cFq"; */ +"rfk-su-cFq.normalTitle" = "F11"; + +/* Class = "UIButton"; accessibilityLabel = "Hide Keyboard"; ObjectID = "rtU-Yt-FhT"; */ +"rtU-Yt-FhT.accessibilityLabel" = "Hide Keyboard"; + +/* Class = "UIButton"; accessibilityLabel = "Scroll Lock"; ObjectID = "sF1-tj-hUG"; */ +"sF1-tj-hUG.accessibilityLabel" = "Scroll Lock"; + +/* Class = "UIButton"; normalTitle = "Scroll"; ObjectID = "sF1-tj-hUG"; */ +"sF1-tj-hUG.normalTitle" = "Scroll"; diff --git a/Platform/iOS/de.lproj/InfoPlist.strings b/Platform/iOS/de.lproj/InfoPlist.strings new file mode 100644 index 000000000..f2180cd78 --- /dev/null +++ b/Platform/iOS/de.lproj/InfoPlist.strings @@ -0,0 +1 @@ +"" = ""; diff --git a/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings b/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings new file mode 100644 index 000000000..0aea30b5e --- /dev/null +++ b/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings @@ -0,0 +1,93 @@ + +/* Class = "NSToolbarItem"; label = "Shared Folder"; ObjectID = "7EC-GE-fIl"; */ +"7EC-GE-fIl.label" = "Shared Folder"; + +/* Class = "NSToolbarItem"; paletteLabel = "Shared Folder"; ObjectID = "7EC-GE-fIl"; */ +"7EC-GE-fIl.paletteLabel" = "Shared Folder"; + +/* Class = "NSToolbarItem"; toolTip = "Shared folder"; ObjectID = "7EC-GE-fIl"; */ +"7EC-GE-fIl.toolTip" = "Shared folder"; + +/* Class = "NSToolbarItem"; label = "Stop"; ObjectID = "Bkx-Ph-j0D"; */ +"Bkx-Ph-j0D.label" = "Stop"; + +/* Class = "NSToolbarItem"; paletteLabel = "Stop"; ObjectID = "Bkx-Ph-j0D"; */ +"Bkx-Ph-j0D.paletteLabel" = "Stop"; + +/* Class = "NSToolbarItem"; toolTip = "Shuts down and stops the VM"; ObjectID = "Bkx-Ph-j0D"; */ +"Bkx-Ph-j0D.toolTip" = "Shuts down and stops the VM"; + +/* Class = "NSToolbarItem"; label = "Toolbar Item"; ObjectID = "C8Y-BQ-Y6m"; */ +"C8Y-BQ-Y6m.label" = "Toolbar Item"; + +/* Class = "NSToolbarItem"; paletteLabel = "Toolbar Item"; ObjectID = "C8Y-BQ-Y6m"; */ +"C8Y-BQ-Y6m.paletteLabel" = "Toolbar Item"; + +/* Class = "NSToolbarItem"; label = "Capture Mouse"; ObjectID = "FN7-zs-mWC"; */ +"FN7-zs-mWC.label" = "Capture Mouse"; + +/* Class = "NSToolbarItem"; paletteLabel = "Capture Mouse"; ObjectID = "FN7-zs-mWC"; */ +"FN7-zs-mWC.paletteLabel" = "Capture Mouse"; + +/* Class = "NSToolbarItem"; toolTip = "Capture mouse cursor"; ObjectID = "FN7-zs-mWC"; */ +"FN7-zs-mWC.toolTip" = "Capture mouse cursor"; + +/* Class = "NSToolbarItem"; label = "Restart"; ObjectID = "G7P-HJ-bcy"; */ +"G7P-HJ-bcy.label" = "Restart"; + +/* Class = "NSToolbarItem"; paletteLabel = "Restart"; ObjectID = "G7P-HJ-bcy"; */ +"G7P-HJ-bcy.paletteLabel" = "Restart"; + +/* Class = "NSToolbarItem"; toolTip = "Restarts the VM"; ObjectID = "G7P-HJ-bcy"; */ +"G7P-HJ-bcy.toolTip" = "Restarts the VM"; + +/* Class = "NSToolbarItem"; label = "Windows"; ObjectID = "MQ2-L1-yl7"; */ +"MQ2-L1-yl7.label" = "Windows"; + +/* Class = "NSToolbarItem"; paletteLabel = "Windows"; ObjectID = "MQ2-L1-yl7"; */ +"MQ2-L1-yl7.paletteLabel" = "Windows"; + +/* Class = "NSToolbarItem"; toolTip = "Windows"; ObjectID = "MQ2-L1-yl7"; */ +"MQ2-L1-yl7.toolTip" = "Windows"; + +/* Class = "NSWindow"; title = "UTM"; ObjectID = "QvC-M9-y7g"; */ +"QvC-M9-y7g.title" = "UTM"; + +/* Class = "NSToolbarItem"; label = "Resize Console"; ObjectID = "Ulf-oT-4cP"; */ +"Ulf-oT-4cP.label" = "Resize Console"; + +/* Class = "NSToolbarItem"; paletteLabel = "Resize Console"; ObjectID = "Ulf-oT-4cP"; */ +"Ulf-oT-4cP.paletteLabel" = "Resize Console"; + +/* Class = "NSToolbarItem"; toolTip = "Send console resize command"; ObjectID = "Ulf-oT-4cP"; */ +"Ulf-oT-4cP.toolTip" = "Send console resize command"; + +/* Class = "NSButton"; ibShadowedToolTip = "Starts/resumes the VM"; ObjectID = "ZTi-Hs-ge6"; */ +"ZTi-Hs-ge6.ibShadowedToolTip" = "Starts/resumes the VM"; + +/* Class = "NSToolbarItem"; label = "Drives"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.label" = "Drives"; + +/* Class = "NSToolbarItem"; paletteLabel = "Drives"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.paletteLabel" = "Drives"; + +/* Class = "NSToolbarItem"; toolTip = "Drive image options"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.toolTip" = "Drive image options"; + +/* Class = "NSToolbarItem"; label = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.label" = "Start/Pause"; + +/* Class = "NSToolbarItem"; paletteLabel = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.paletteLabel" = "Start/Pause"; + +/* Class = "NSToolbarItem"; toolTip = "Start/pause the VM"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.toolTip" = "Start/pause the VM"; + +/* Class = "NSToolbarItem"; label = "USB"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.label" = "USB"; + +/* Class = "NSToolbarItem"; paletteLabel = "USB"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.paletteLabel" = "USB"; + +/* Class = "NSToolbarItem"; toolTip = "USB devices"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.toolTip" = "USB devices"; diff --git a/Platform/macOS/de.lproj/InfoPlist.strings b/Platform/macOS/de.lproj/InfoPlist.strings new file mode 100644 index 000000000..f2180cd78 --- /dev/null +++ b/Platform/macOS/de.lproj/InfoPlist.strings @@ -0,0 +1 @@ +"" = ""; diff --git a/QEMUHelper/de.lproj/InfoPlist.strings b/QEMUHelper/de.lproj/InfoPlist.strings new file mode 100644 index 000000000..f2180cd78 --- /dev/null +++ b/QEMUHelper/de.lproj/InfoPlist.strings @@ -0,0 +1 @@ +"" = ""; diff --git a/QEMUHelper/de.lproj/Localizable.strings b/QEMUHelper/de.lproj/Localizable.strings new file mode 100644 index 000000000..f2180cd78 --- /dev/null +++ b/QEMUHelper/de.lproj/Localizable.strings @@ -0,0 +1 @@ +"" = ""; diff --git a/UTM.xcodeproj/project.pbxproj b/UTM.xcodeproj/project.pbxproj index 81a5c9181..e7813fe24 100644 --- a/UTM.xcodeproj/project.pbxproj +++ b/UTM.xcodeproj/project.pbxproj @@ -1602,6 +1602,15 @@ 83C15C5E26CC441000ADFD45 /* KeyCodeMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyCodeMap.swift; sourceTree = ""; }; 83FBDD53242FA71900D2C5D7 /* VMDisplayMetalViewController+Pointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Pointer.h"; sourceTree = ""; }; 83FBDD55242FA7BC00D2C5D7 /* VMDisplayMetalViewController+Pointer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "VMDisplayMetalViewController+Pointer.m"; sourceTree = ""; }; + 83FE63B628F617CD0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/VMDisplayMetalViewInputAccessory.strings; sourceTree = ""; }; + 83FE63B728F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/VMDisplayWindow.strings; sourceTree = ""; }; + 83FE63B828F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 83FE63B928F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 83FE63BA28F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + 83FE63BB28F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = ""; }; + 83FE63BC28F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 83FE63BD28F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + 83FE63BE28F617CE0047FFEF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; 8401865D2887B1620050AC51 /* VMDisplayTerminalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VMDisplayTerminalViewController.swift; sourceTree = ""; }; 84018682288A3B2E0050AC51 /* VMWindowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VMWindowView.swift; sourceTree = ""; }; 84018685288A3B5B0050AC51 /* VMSessionState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VMSessionState.swift; sourceTree = ""; }; @@ -3463,6 +3472,7 @@ fr, fi, "es-419", + de, ); mainGroup = CE550BC0225947990063E575; packageReferences = ( @@ -4494,6 +4504,7 @@ 84937F19289764D9003148F4 /* en */, 5A1746A228BA9C4300278241 /* fi */, E68D491F28AC018D00D34C54 /* es-419 */, + 83FE63BA28F617CE0047FFEF /* de */, ); name = Localizable.strings; sourceTree = ""; @@ -4508,6 +4519,7 @@ 84937F1A289764DE003148F4 /* en */, 5A1746A428BA9C4300278241 /* fi */, E68D492128AC018D00D34C54 /* es-419 */, + 83FE63BC28F617CE0047FFEF /* de */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4520,6 +4532,7 @@ 5A17469F28BA9C4300278241 /* fi */, E68D491C28AC018700D34C54 /* es-419 */, 844C73F828BDA96200805313 /* fr */, + 83FE63B728F617CE0047FFEF /* de */, ); name = VMDisplayWindow.xib; sourceTree = ""; @@ -4531,6 +4544,7 @@ CE061CEB289EB62E0000351C /* ja */, 5A17469E28BA9C4300278241 /* fi */, E68D491B28AC018600D34C54 /* es-419 */, + 83FE63B628F617CD0047FFEF /* de */, ); name = VMDisplayMetalViewInputAccessory.xib; sourceTree = ""; @@ -4541,6 +4555,7 @@ CED8DF7828A120C100C34345 /* en */, CEC9968328AA516000E7A025 /* ja */, E68D492028AC018D00D34C54 /* es-419 */, + 83FE63BB28F617CE0047FFEF /* de */, ); name = Localizable.stringsdict; sourceTree = ""; @@ -4555,6 +4570,7 @@ 84937F17289764A9003148F4 /* en */, 5A1746A028BA9C4300278241 /* fi */, E68D491D28AC018D00D34C54 /* es-419 */, + 83FE63B828F617CE0047FFEF /* de */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4569,6 +4585,7 @@ 84937F18289764CF003148F4 /* en */, 5A1746A128BA9C4300278241 /* fi */, E68D491E28AC018D00D34C54 /* es-419 */, + 83FE63B928F617CE0047FFEF /* de */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4582,6 +4599,7 @@ 84937F1C289764E8003148F4 /* en */, 5A1746A628BA9C4300278241 /* fi */, E68D492328AC018E00D34C54 /* es-419 */, + 83FE63BE28F617CE0047FFEF /* de */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4596,6 +4614,7 @@ 84937F1B289764E4003148F4 /* en */, 5A1746A528BA9C4300278241 /* fi */, E68D492228AC018E00D34C54 /* es-419 */, + 83FE63BD28F617CE0047FFEF /* de */, ); name = Localizable.strings; sourceTree = ""; From ebfc93327e4790ad3bb390a5808d6f58db88284a Mon Sep 17 00:00:00 2001 From: conath Date: Mon, 17 Oct 2022 01:52:29 +0200 Subject: [PATCH 2/5] Add German localization This is my first localization pass, with little proofreading and only brief testing. Seems mostly fine, but additional work is needed to fix missing localized strings. --- Platform/de.lproj/Localizable.strings | 1007 ++++++++++++++++- .../VMDisplayMetalViewInputAccessory.strings | 166 +-- .../iOS/Settings.bundle/de.lproj/Root.strings | 147 +++ Platform/iOS/de.lproj/InfoPlist.strings | 19 +- .../Display/de.lproj/VMDisplayWindow.strings | 86 +- Platform/macOS/de.lproj/InfoPlist.strings | 10 +- QEMUHelper/de.lproj/InfoPlist.strings | 10 +- QEMUHelper/de.lproj/Localizable.strings | 7 +- UTM.xcodeproj/project.pbxproj | 12 + de.lproj/QEMULauncher-InfoPlist.strings | 3 + 10 files changed, 1336 insertions(+), 131 deletions(-) create mode 100644 Platform/iOS/Settings.bundle/de.lproj/Root.strings create mode 100644 de.lproj/QEMULauncher-InfoPlist.strings diff --git a/Platform/de.lproj/Localizable.strings b/Platform/de.lproj/Localizable.strings index f2180cd78..31c49b006 100644 --- a/Platform/de.lproj/Localizable.strings +++ b/Platform/de.lproj/Localizable.strings @@ -1 +1,1006 @@ -"" = ""; +/* A removable drive that has no image file inserted. */ +"(empty)" = "(leer)"; + +/* VMConfigAppleDriveDetailsView */ +"(New Drive)" = "(Neues Laufwerk)"; + +/* No comment provided by engineer. */ +"(new)" = "(neu)"; + +/* UTMWrappedVirtualMachine */ +"(Unavailable)" = "(nicht verfügbar)"; + +/* QEMUConstant */ +"%@ (%@)" = "%1$@ (%2$@)"; + +/* VMToolbarDriveMenuView */ +"%@ (%@): %@" = "%1$@ (%2$@): %3$@"; + +/* VMDisplayMetalWindowController */ +"%@ (Display %lld)" = "%1$@ (Display %2$lld)"; + +/* VMDisplayAppleTerminalWindowController + VMDisplayQemuTerminalWindowController */ +"%@ (Terminal %lld)" = "%1$@ (Terminal %2$lld)"; + +/* No comment provided by engineer. */ +"%@ ➡️ %@" = "%1$@ ➡️ %2$@"; + +/* VMDrivesSettingsView */ +"%@ Drive" = "%@ Laufwerk"; + +/* VMDrivesSettingsView */ +"%@ Image" = "%@ Abbild"; + +/* Format string for remaining time until a download finishes */ +"%@ remaining" = "%@ verbleibend"; + +/* Format string for the 'per second' part of a download speed. */ +"%@/s" = "%@ / s"; + +/* Format string for download progress and speed, e. g. 5 MB of 6 GB (200 kbit/s) */ +"%1$@ of %2$@ (%3$@)" = "%1$@ von %2$@ (%3$@)"; + +/* UTMAppleConfiguration */ +"A valid kernel image must be specified." = "Ein valides Kernel-Abbild ist erforderlich."; + +/* VMDisplayAppleController */ +"Add…" = "Hinzufügen…"; + +/* No comment provided by engineer. */ +"Additional Options" = "Weitere Optionen"; + +/* No comment provided by engineer. */ +"Additional Settings" = "Weitere Einstellungen"; + +/* No comment provided by engineer. */ +"Advanced" = "Erweitert"; + +/* VMConfigSystemView */ +"Allocating too much memory will crash the VM." = "Zu viel zugewiesener Speicher wird zum Abstürzen der VM führen."; + +/* UTMData */ +"AltJIT error: %@" = "AltJIT Fehler: %@"; + +/* UTMData */ +"An existing virtual machine already exists with this name." = "Es existiert bereits eine VM mit diesem Namen."; + +/* VMDrivesSettingsView */ +"An image already exists with that name." = "Es existiert bereits eine Abbild-Datei mit diesem Namen."; + +/* UTMConfiguration + UTMVirtualMachine */ +"An internal error has occurred." = "Ein interner Fehler ist aufgetreten."; + +/* UTMConfiguration */ +"An invalid value of '%@' is used in the configuration file." = "In der Konfigurationsdatei ist der ungültige Wert „%@” enthalten."; + +/* VMConfigSystemView */ +"Any unsaved changes will be lost." = "Alle nicht gespeicherten Änderungen gehen Verloren"; + +/* No comment provided by engineer. */ +"Application" = "Programm"; + +/* No comment provided by engineer. */ +"Architecture" = "Architektur"; + +/* No comment provided by engineer. */ +"Are you sure you want to exit UTM?" = "Soll UTM wirklich beendet werden?"; + +/* No comment provided by engineer. */ +"Are you sure you want to permanently delete this disk image?" = "Möchten Sie dieses Abbild wirklich dauerhaft löschen?"; + +/* No comment provided by engineer. */ +"Are you sure you want to reset this VM? Any unsaved changes will be lost." = "Möchten Sie wirklich einen Reset ausführen? Ungespeicherte Änderungen gehen verloren."; + +/* No comment provided by engineer. */ +"Are you sure you want to stop this VM and exit? Any unsaved changes will be lost." = "Möchten Sie die VM wirklich ausschalten? Ungespeicherte Änderungen gehen verloren."; + +/* UTMQemuConstants */ +"Automatic Serial Device (max 4)" = "Automatische Serielle Konsole (max. 4)"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"BIOS" = "BIOS"; + +/* UTMQemuConstants */ +"Bold" = "Fett"; + +/* No comment provided by engineer. */ +"Boot" = "Boot"; + +/* No comment provided by engineer. */ +"Boot Arguments" = "Boot-Argumente"; + +/* No comment provided by engineer. */ +"Boot Image Type" = "Art des Boot-Abbilds"; + +/* No comment provided by engineer. */ +"Boot ISO Image" = "Boot-ISO-Abbild"; + +/* No comment provided by engineer. */ +"Boot ISO Image (optional)" = "Boot-ISO-Abbild (optional)"; + +/* No comment provided by engineer. */ +"Boot VHDX Image" = "Boot-VHDX-Abbild"; + +/* UTMQemuConstants */ +"Bridged (Advanced)" = "Bridge (erweitert)"; + +/* No comment provided by engineer. */ +"Bridged Settings" = "Bridge-Modus Einstellungen"; + +/* No comment provided by engineer. */ +"Browse…" = "Durchsuchen…"; + +/* UTMQemuConstants */ +"Built-in Terminal" = "Eingebautes Terminal"; + +/* VMDisplayWindowController + VMQemuDisplayMetalWindowController */ +"Cancel" = "Abbrechen"; + +/* UTMAppleVirtualMachine */ +"Cannot access resource: %@" = "Ressource nicht verfügbar: %@"; + +/* UTMAppleVirtualMachine */ +"Cannot create virtual terminal." = "Virtuelles Terminal kann nicht erzeugt werden."; + +/* UTMData */ +"Cannot find AltServer for JIT enable. You cannot run VMs until JIT is enabled." = "Der AltServer für JIT wurde nicht gefunden. Die VMs können nicht starten, bis JIT aktiviert wurde."; + +/* UTMData */ +"Cannot import this VM. Either the configuration is invalid, created in a newer version of UTM, or on a platform that is incompatible with this version of UTM." = "Die VM konnte nicht importiert werden. Möglicherweise wurde sie in einer neueren oder inkompatiblen Version von UTM erstellt."; + +/* No comment provided by engineer. */ +"Caps Lock (⇪) is treated as a key" = "Die Feststelltaste (⇪) wird als einzelner Tastendruck behandelt"; + +/* VMMetalView */ +"Capture Input" = "Eingabe fangen"; + +/* VMDisplayQemuMetalWindowController */ +"Captured mouse" = "Maus gefangen"; + +/* Configuration boot device */ +"CD/DVD" = "CD/DVD"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"CD/DVD (ISO) Image" = "CD/DVD (ISO-) Abbild"; + +/* VMDisplayWindowController */ +"Change" = "Wechseln"; + +/* VMDisplayAppleController */ +"Change…" = "Abbild Wechseln…"; + +/* No comment provided by engineer. */ +"Clear" = "Entfernen"; + +/* VMQemuDisplayMetalWindowController */ +"Closing this window will kill the VM." = "Das Schließen des Fensters wird die VM unsanft beenden."; + +/* VMQemuDisplayMetalWindowController */ +"Confirm" = "Bestätigen"; + +/* No comment provided by engineer. */ +"Confirm Delete" = "Löschen bestätigen"; + +/* VMDisplayWindowController */ +"Confirmation" = "Bestätigung"; + +/* No comment provided by engineer. */ +"Connection" = "Verbindung"; + +/* No comment provided by engineer. */ +"Cores" = "Kerne"; + +/* No comment provided by engineer. */ +"CPU" = "Prozessor"; + +/* No comment provided by engineer. */ +"CPU Cores" = "Prozessor-Kerne"; + +/* No comment provided by engineer. */ +"Create" = "Erstellen"; + +/* No comment provided by engineer. */ +"Custom" = "Eigene"; + +/* No comment provided by engineer. */ +"Debug Logging" = "Ereignis-Protokoll"; + +/* QEMUConstantGenerated + UTMQemuConstants */ +"Default" = "Standard"; + +/* VMWizardSummaryView */ +"Default Cores" = "Standard-Kerne"; + +/* No comment provided by engineer. */ +"Delete" = "Löschen"; + +/* No comment provided by engineer. */ +"Devices" = "Geräte"; + +/* VMDisplayAppleWindowController */ +"Directory sharing" = "Ordnerfreigabe"; + +/* UTMQemuConstants */ +"Disabled" = "Deaktiviert"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"Disk Image" = "Laufwerks-Abbild"; + +/* VMDisplayAppleWindowController */ +"Display" = "Display"; + +/* VMDisplayQemuDisplayController */ +"Display %lld: %@" = "Display %1$lld: %2$@"; + +/* VMDisplayQemuDisplayController */ +"Disposable Mode" = "Wegwerf-Modus"; + +/* No comment provided by engineer. */ +"Do not save VM screenshot to disk" = "VM Screenshots nicht speichern"; + +/* No comment provided by engineer. */ +"Do not show prompt when USB device is plugged in" = "USB-Abfrage deaktivieren"; + +/* No comment provided by engineer. */ +"Do you want to delete this VM and all its data?" = "Möchten Sie diese VM und alle enthaltenen Daten löschen?"; + +/* No comment provided by engineer. */ +"Do you want to duplicate this VM and all its data?" = "Möchten Sie diese VM und alle enthaltenen Daten duplizieren?"; + +/* No comment provided by engineer. */ +"Do you want to force stop this VM and lose all unsaved data?" = "Möchten Sie diese VM unsanft beenden und ungespeicherte Daten verlieren?"; + +/* No comment provided by engineer. */ +"Do you want to move this VM to another location? This will copy the data to the new location, delete the data from the original location, and then create a shortcut." = "Möchten Sie diese VM an einen neuen Speicherort bewegen? Dadurch werden alle enthaltenen Daten dorthin kopiert, das Original gelöscht und eine Verknüpfung erstellt."; + +/* No comment provided by engineer. */ +"Do you want to remove this shortcut? The data will not be deleted." = "Möchten Sie diese VM-Verknüpfung löschen? Die Daten werden nicht gelöscht."; + +/* No comment provided by engineer. */ +"Download prebuilt from UTM Gallery…" = "Fertiges System von der UTM-Galerie laden…"; + +/* No comment provided by engineer. */ +"Drag and drop IPSW file here" = "IPSW-Datei hier ablegen"; + +/* No comment provided by engineer. */ +"Drives" = "Laufwerke"; + +/* VMDrivesSettingsView */ +"EFI Variables" = "EFI-Variablen"; + +/* VMDisplayWindowController */ +"Eject" = "Auswerfen"; + +/* No comment provided by engineer. */ +"Emulate" = "Emulieren"; + +/* UTMQemuConstants */ +"Emulated VLAN" = "Emuliertes VLAN"; + +/* No comment provided by engineer. */ +"Enable Clipboard Sharing" = "Geteilte Zwischenablage aktivieren"; + +/* VMDisplayWindowController */ +"Error" = "Fehler"; + +/* UTMJSONStream */ +"Error parsing JSON." = "Fehler bei der JSON-Verarbeitung."; + +/* UTMVirtualMachine */ +"Error trying to restore external drives and shares: %@" = "Fehler bei externen Laufwerken oder Freigaben: %@"; + +/* No comment provided by engineer. */ +"Existing" = "Existierende"; + +/* Word for decompressing a compressed folder */ +"Extracting…" = "Wird entpackt…"; + +/* UTMQemuVirtualMachine */ +"Failed to access data from shortcut." = "Die verknüpften Daten konnten nicht gefunden werden."; + +/* UTMQemuVirtualMachine */ +"Failed to access drive image path." = "Das Laufwerks-Abbild konnte nicht gefunden werden."; + +/* UTMQemuVirtualMachine */ +"Failed to access shared directory." = "Der freigegebener Ordner konnte nicht gefunden werden."; + +/* ContentView */ +"Failed to attach to JitStreamer:\n%@" = "Fehler beim Start von JitStreamer: %@"; + +/* ContentView */ +"Failed to attach to JitStreamer." = "Fehler beim Start von JitStreamer."; + +/* UTMData */ +"Failed to clone VM." = "Die VM konnte nicht dupliziert werden."; + +/* ContentView */ +"Failed to decode JitStreamer response." = "Die Kommunikation mit JitStreamer ist fehlgeschlagen."; + +/* VMWizardState */ +"Failed to get latest macOS version from Apple." = "Die neueste macOS-Version konnte nicht abgerufen werden."; + +/* UTMQemuConfigurationError */ +"Failed to migrate configuration from a previous UTM version." = "Die VM-Konfiguration konnte nicht von der alten UTM-Version übernommen werden."; + +/* UTMData */ +"Failed to parse download URL." = "Die Download-URL war fehlerhaft."; + +/* UTMData */ +"Failed to parse imported VM." = "Die importierte VM konnte nicht geöffnet werden."; + +/* UTMDownloadVMTask */ +"Failed to parse the downloaded VM." = "Die geladene VM konnte nicht geöffnet werden."; + +/* UTMQemuVirtualMachine */ +"Failed to save VM snapshot. Usually this means at least one device does not support snapshots. %@" = "Der VM-Zustand konnte nicht gespeichert werden. Meistens liegt das an einem nicht unterstützten Laufwerk. %@"; + +/* UTMSpiceIO */ +"Failed to start SPICE client." = "Fehler beim Start des SPICE Client."; + +/* No comment provided by engineer. */ +"Faster, but can only run the native CPU architecture." = "Schneller, unterstützt jedoch nur die Host-CPU-Architektur."; + +/* Configuration boot device + UTMQemuConstants */ +"Floppy" = "Diskette"; + +/* No comment provided by engineer. */ +"Font Size" = "Schriftgröße"; + +/* No comment provided by engineer. */ +"Force Multicore" = "Multicore erzwingen"; + +/* No comment provided by engineer. */ +"GB" = "GB"; + +/* UTMQemuConstants */ +"GDB Debug Stub" = "GDB Debug Stub"; + +/* No comment provided by engineer. */ +"Gesture and Cursor Settings" = "Gesten- und Zeiger-Einstellungen"; + +/* UTMQemuManager */ +"Guest panic" = "Kernel-Panic in der VM"; + +/* Configuration boot device */ +"Hard Disk" = "Festplatte"; + +/* No comment provided by engineer. */ +"Hardware" = "Hardware"; + +/* No comment provided by engineer. */ +"Hardware OpenGL Acceleration" = "OpenGL-Hardwarebeschleunigung"; + +/* No comment provided by engineer. */ +"Hello" = "Hallo"; + +/* No comment provided by engineer. */ +"Hide Unused…" = "Unbenutzte ausblenden…"; + +/* No comment provided by engineer. */ +"Hold Control (⌃) for right click" = "Control halten (⌃) für Rechtsklick"; + +/* UTMQemuConstants */ +"Host Only" = "Nur Host"; + +/* No comment provided by engineer. */ +"Icon" = "Icon"; + +/* UTMQemuConstants */ +"IDE" = "IDE"; + +/* No comment provided by engineer. */ +"Image File Type" = "Abbild-Typ"; + +/* No comment provided by engineer. */ +"Import IPSW" = "IPSW importieren"; + +/* No comment provided by engineer. */ +"Import…" = "Importieren…"; + +/* VMDetailsView */ +"Inactive" = "Inaktiv"; + +/* No comment provided by engineer. */ +"Information" = "Information"; + +/* No comment provided by engineer. */ +"Input" = "Eingabe"; + +/* VMDisplayWindowController */ +"Install Windows Guest Tools…" = "Windows Gasterweiterung installieren…"; + +/* VMDisplayAppleWindowController */ +"Installation: %@" = "Installation: %@"; + +/* UTMQemu */ +"Internal error has occurred." = "Ein interner Fehler ist aufgetreten. (QEMU)"; + +/* UTMSpiceIO */ +"Internal error trying to connect to SPICE server." = "Fehler bei Verbindung zum SPICE Server."; + +/* VMDisplayMetalWindowController */ +"Internal error." = "Interner Fehler."; + +/* ContentView */ +"Invalid JitStreamer attach URL:\n%@" = "JitStreamer-Attach-URL ist ungültig: %@"; + +/* VMConfigAppleNetworkingView */ +"Invalid MAC address." = "Ungültige MAC-Adresse."; + +/* No comment provided by engineer. */ +"Invert scrolling" = "Scrollrichtung umkehren"; + +/* No comment provided by engineer. */ +"IP Configuration" = "IP-Konfiguration"; + +/* No comment provided by engineer. */ +"Isolate Guest from Host" = "Gast-Netz vom Host isolieren"; + +/* UTMQemuConstants */ +"Italic" = "Kursiv"; + +/* UTMQemuConstants */ +"Italic, Bold" = "Kursiv & Fett"; + +/* No comment provided by engineer. */ +"Keep UTM running after last window is closed and all VMs are shut down" = "UTM weiter ausführen, wenn alle Fenster geschlossen und alle VMs beendet wurden"; + +/* No comment provided by engineer. */ +"License" = "Lizenz"; + +/* UTMQemuConstants */ +"Linear" = "Linear"; + +/* UTMAppleConfigurationBoot */ +"Linux" = "Linux"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"Linux Device Tree Binary" = "Linux Gerätebaum-Datei"; + +/* No comment provided by engineer. */ +"Linux initial ramdisk (optional)" = "Linux Ramdisk (optional)"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"Linux Kernel" = "Linux Kernel"; + +/* No comment provided by engineer. */ +"Linux kernel (required)" = "Linux Kernel (erforderlich)"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"Linux RAM Disk" = "Linux Ramdisk"; + +/* No comment provided by engineer. */ +"Linux Root FS Image (optional)" = "Linux Root-Dateisystem-Abbild (optional)"; + +/* No comment provided by engineer. */ +"Linux Settings" = "Linux Einstellungen"; + +/* No comment provided by engineer. */ +"Logging" = "Protokollierung"; + +/* UTMAppleConfigurationBoot */ +"macOS" = "macOS"; + +/* VMWizardOSMacView */ +"macOS guests are only supported on ARM64 devices." = "macOS VMs sind nur auf Apple Silicon verfügbar."; + +/* VMWizardState */ +"macOS is not supported with QEMU." = "macOS wird nicht in QEMU unterstützt."; + +/* No comment provided by engineer. */ +"macOS Settings" = "macOS Einstellungen"; + +/* UTMQemuManager */ +"Manager being deallocated, killing pending RPC." = "Manager wird beendet, stoppe verbleibende RPCs."; + +/* UTMQemuConstants */ +"Manual Serial Device (advanced)" = "Eigenes serielles Gerät (erweitert)"; + +/* No comment provided by engineer. */ +"Maximum Shared USB Devices" = "Anzahl weitergeleiteter USB-Geräte (max.)"; + +/* No comment provided by engineer. */ +"MB" = "MB"; + +/* No comment provided by engineer. */ +"Memory" = "Speicher"; + +/* VMDisplayMetalWindowController */ +"Metal is not supported on this device. Cannot render display." = "Display kann nicht angezeigt werden, weil Metal auf diesem Gerät nicht unterstützt wird."; + +/* No comment provided by engineer. */ +"Minimum size: %@" = "Mindestgröße: %@"; + +/* UTMAppleConfigurationDevices */ +"Mouse" = "Maus"; + +/* UTMQemuConstants */ +"MTD (NAND/NOR)" = "MTD (NAND/NOR)"; + +/* No comment provided by engineer. */ +"Name" = "Name"; + +/* UTMQemuConstants */ +"Nearest Neighbor" = "Nächstgelegen"; + +/* No comment provided by engineer. */ +"New" = "Neu"; + +/* No comment provided by engineer. */ +"New…" = "Neu…"; + +/* No comment provided by engineer. */ +"No" = "Nein"; + +/* VMDisplayWindowController */ +"No drives connected." = "Keine Laufwerke angeschlossen."; + +/* UTMDownloadSupportToolsTaskError */ +"No empty removable drive found. Make sure you have at least one removable drive that is not in use." = "Keine freien Laufwerke vorhanden. Stellen Sie sicher, dass ein Wechsellaufwerk verfügbar ist."; + +/* No comment provided by engineer. */ +"No output device is selected for this window." = "Für dieses Fenster wurde kein Ausgabegerät gewählt."; + +/* VMQemuDisplayMetalWindowController */ +"No USB devices detected." = "Keine USB-Geräte verfügbar."; + +/* VMToolbarDriveMenuView */ +"none" = "keine"; + +/* UTMLegacyQemuConfiguration + UTMQemuConstants */ +"None" = "Keine"; + +/* UTMQemuConstants */ +"None (Advanced)" = "Keine (erweitert)"; + +/* No comment provided by engineer. */ +"Notes" = "Notizen"; + +/* UTMQemuConstants */ +"NVMe" = "NVMe"; + +/* VMDisplayWindowController */ +"OK" = "Ok"; + +/* No comment provided by engineer. */ +"Open…" = "Öffnen…"; + +/* No comment provided by engineer. */ +"Operating System" = "Betriebssystem"; + +/* No comment provided by engineer. */ +"Other" = "Andere"; + +/* VMDisplayWindowController */ +"Pause" = "Pause"; + +/* UTMVirtualMachine */ +"Paused" = "Pausiert"; + +/* UTMVirtualMachine */ +"Pausing" = "Pausiert…"; + +/* UTMQemuConstants */ +"PC System Flash" = "PC-System-Flash"; + +/* No comment provided by engineer. */ +"Pending" = "In Arbeit"; + +/* VMDisplayWindowController */ +"Play" = "Starten"; + +/* VMWizardState */ +"Please select a boot image." = "Bitte wählen Sie ein Start-Abbild aus."; + +/* VMWizardState */ +"Please select a kernel file." = "Bitte wählen Sie eine Kernel-Datei aus."; + +/* No comment provided by engineer. */ +"Please select a macOS recovery IPSW." = "Bitte wählen Sie eine macOS Recovery IPSW-Datei aus."; + +/* No comment provided by engineer. */ +"Please select an uncompressed Linux kernel image." = "Bitte wählen Sie ein unkomprimiertes Linux Kernel-Abbild aus."; + +/* No comment provided by engineer. */ +"Port Forward" = "Port-Weiterleitung"; + +/* UTMJSONStream */ +"Port is not connected." = "Port ist nicht verbunden."; + +/* No comment provided by engineer. */ +"Preconfigured" = "Vorgefertigt"; + +/* A download process is about to begin. */ +"Preparing…" = "Vorbereitung…"; + +/* VMDisplayQemuMetalWindowController */ +"Press %@ to release cursor" = "Drücken Sie %@ um den Cursor freizugeben."; + +/* UTMQemuConstants */ +"Pseudo-TTY Device" = "Pseudo-TTY-Gerät"; + +/* No comment provided by engineer. */ +"QEMU Arguments" = "QEMU-Parameter"; + +/* UTMQemuVirtualMachine */ +"QEMU exited from an error: %@" = "QEMU wurde mit Fehler beendet: %@"; + +/* UTMQemuConstants */ +"QEMU Monitor (HMP)" = "QEMU Monitor (HMP)"; + +/* VMDisplayWindowController */ +"Querying drives status..." = "Status der Laufwerke wird abgerufen…"; + +/* VMQemuDisplayMetalWindowController */ +"Querying USB devices..." = "USB-Geräte werden abgerufen…"; + +/* VMQemuDisplayMetalWindowController */ +"Quitting UTM will kill all running VMs." = "Mit dem Beenden von UTM werden alle laufenden VMs abrupt heruntergefahren."; + +/* No comment provided by engineer. */ +"Raw Image" = "Direktes Image"; + +/* VMDisplayAppleController */ +"Read Only" = "Nur Lesen"; + +/* No comment provided by engineer. */ +"Reclaim" = "Freigeben"; + +/* UTMQemuConstants */ +"Regular" = "Normal"; + +/* No comment provided by engineer. */ +"Removable" = "Wechselbar"; + +/* No comment provided by engineer. */ +"Removable Drive" = "Wechsellaufwerk"; + +/* No comment provided by engineer. */ +"Remove" = "Entfernen"; + +/* VMDisplayAppleController */ +"Remove…" = "Entfernen…"; + +/* No comment provided by engineer. */ +"Reset" = "Zurücksetzen"; + +/* No comment provided by engineer. */ +"Resize" = "Größe anpassen"; + +/* No comment provided by engineer. */ +"Resize display to screen size and orientation automatically" = "Anzeige-Größe automatisch an Display und Ausrichtung anpassen"; + +/* No comment provided by engineer. */ +"Resize display to window size automatically" = "Anzeige-Größe automatisch an Fenstergröße anpassen"; + +/* No comment provided by engineer. */ +"Resizing is experimental and could result in data loss. You are strongly encouraged to back-up this VM before proceeding. Would you like to resize to %@ GiB?" = "Das Ändern der Größe ist eine experimentelle Funktion und könnte Datenverlust nach sich ziehen. Machen Sie vorher ein Backup. Möchten Sie die Größe auf $@ GiB ändern?"; + +/* UTMVirtualMachine */ +"Resuming" = "Wird fortgesetzt"; + +/* No comment provided by engineer. */ +"Retina Mode" = "Retina-Modus"; + +/* UTMAppleConfiguration */ +"Rosetta is not supported on the current host machine." = "Rosetta wird von der Host-Architektur nicht unterstützt."; + +/* No comment provided by engineer. */ +"Running low on memory! UTM might soon be killed by iOS. You can prevent this by decreasing the amount of memory and/or JIT cache assigned to this VM" = "Speicher-Engpass erkannt! UTM wird möglicherweise bald plötzlich beendet. Sie können dies fürs nächste Mal verhindern, indem Sie der VM weniger RAM zuweisen."; + +/* No comment provided by engineer. */ +"Save" = "Speichern"; + +/* No comment provided by engineer. */ +"Scaling" = "Skalierung"; + +/* UTMQemuConstants */ +"SCSI" = "SCSI"; + +/* UTMQemuConstants */ +"SD Card" = "SD-Karte"; + +/* No comment provided by engineer. */ +"Select a file." = "Wählen Sie eine Datei aus."; + +/* VMDisplayWindowController */ +"Select Drive Image" = "Abbild auswählen"; + +/* VMDisplayAppleWindowController + VMDisplayWindowController */ +"Select Shared Folder" = "Order auswählen"; + +/* SavePanel */ +"Select where to export QEMU command:" = "Ort zum Exportieren des QEMU-Kommandos auswählen"; + +/* SavePanel */ +"Select where to save debug log:" = "Ort zum Exportieren des Debug Log auswählen"; + +/* SavePanel */ +"Select where to save UTM Virtual Machine:" = "Speicherort der VM auswählen"; + +/* No comment provided by engineer. */ +"Selected:" = "Ausgewählt:"; + +/* VMDisplayAppleWindowController + VMDisplayQemuDisplayController */ +"Serial %lld" = "Serieller Anschluss %lld"; + +/* No comment provided by engineer. */ +"Share USB devices from host" = "USB-Geräte des Host freigeben"; + +/* No comment provided by engineer. */ +"Shared Directory" = "Freigegebener Ordner"; + +/* UTMQemuConstants */ +"Shared Network" = "Gemeinsames Netzwerk"; + +/* No comment provided by engineer. */ +"Sharing" = "Freigaben"; + +/* No comment provided by engineer. */ +"Show Advanced Settings" = "Erweiterte Einstellungen anzeigen"; + +/* No comment provided by engineer. */ +"Show All…" = "Alle anzeigen…"; + +/* No comment provided by engineer. */ +"Size" = "Größe"; + +/* No comment provided by engineer. */ +"Slower, but can run other CPU architectures." = "Langsamer, unterstützt eine Vielzahl an CPU-Architekturen"; + +/* No comment provided by engineer. */ +"Specify the size of the drive where data will be stored into." = "Legen Sie die Größe des VM-Speicherplatzes fest."; + +/* UTMQemuConstants */ +"SPICE WebDAV" = "SPICE WebDAV"; + +/* No comment provided by engineer. */ +"Start" = "Einschalten"; + +/* UTMVirtualMachine */ +"Started" = "Gestartet"; + +/* UTMVirtualMachine */ +"Starting" = "Startet"; + +/* No comment provided by engineer. */ +"Stop" = "Ausschalten"; + +/* UTMVirtualMachine */ +"Stopped" = "Ausgeschaltet"; + +/* UTMVirtualMachine */ +"Stopping" = "Wird ausgeschaltet"; + +/* No comment provided by engineer. */ +"Storage" = "Datenspeicher"; + +/* No comment provided by engineer. */ +"Style" = "Stil"; + +/* No comment provided by engineer. */ +"Summary" = "Zusammenfassung"; + +/* No comment provided by engineer. */ +"Support" = "Support"; + +/* UTMVirtualMachine */ +"Suspended" = "Im Betrieb pausiert"; + +/* No comment provided by engineer. */ +"System" = "System"; + +/* UTMQemuConstants */ +"TCP" = "TCP"; + +/* UTMQemuConstants */ +"TCP Client Connection" = "TCP Client-Verbindung"; + +/* UTMQemuConstants */ +"TCP Server Connection" = "TCP Server-Verbindung"; + +/* No comment provided by engineer. */ +"Test" = "Test"; + +/* UTMConfiguration */ +"The backend for this configuration is not supported." = "Diese Konfiguration wird auf dieser Plattform nicht unterstützt."; + +/* UTMConfiguration */ +"The drive '%@' already exists and cannot be created." = "Laufwerk konnte nicht erstellt werden: ein Laufwerk %@ existiert bereits."; + +/* UTMDownloadSupportToolsTaskError */ +"The guest support tools have already been mounted." = "Die Gast-Unterstützung ist bereits eingelegt."; + +/* UTMAppleConfiguration */ +"The host operating system needs to be updated to support one or more features requested by the guest." = "Ihr Host-Betriebssystem muss aktualisiert werden, um eines oder mehrere von der VM erwartete Features freizuschalten."; + +/* No comment provided by engineer. */ +"The selected architecture is unsupported in this version of UTM." = "Die gewählte Architektur wird in dieser Version von UTM nicht unterstützt."; + +/* VMWizardState */ +"The selected boot image contains the word '%@' but the guest architecture is '%@'. Please ensure you have selected an image that is compatible with '%@'." = "Das gewählte Start-Abbild enthält das Wort „%1$@”, die Gast-Architektur ist jedoch „%2$@”. Bitte stellen Sie sicher, dass Sie ein passendes Abbild für „%3$@” ausgewählt haben."; + +/* No comment provided by engineer. */ +"The target does not support hardware emulated serial connections." = "Das Ziel unterstützt keine simulierte Hardware für serielle Anschlüsse."; + +/* UTMQemuVirtualMachine */ +"The virtual machine is in an invalid state." = "Die VM ist in einem ungültigen Zustand."; + +/* Error shown when importing a ZIP file from web that doesn't contain a UTM Virtual Machine. */ +"There is no UTM file in the downloaded ZIP archive." = "Im heruntergeladenen ZIP-Archiv befindet sich keine UTM-Datei."; + +/* No comment provided by engineer. */ +"This build does not emulation." = "Emulation wird in dieser Version nicht unterstützt."; + +/* UTMQemuVirtualMachine */ +"This build of UTM does not support emulating the architecture of this VM." = "Die Emulation dieser Gast-Architektur wird in dieser Version nicht unterstützt."; + +/* VMConfigSystemView */ +"This change will reset all settings" = "Diese Änderung setzt sämtliche anderen Einstellungen zurück!"; + +/* UTMConfiguration */ +"This configuration is saved with a newer version of UTM and is not compatible with this version." = "Diese Konfiguration stammt aus einer neueren Version von UTM und wird nicht unterstützt."; + +/* UTMConfiguration */ +"This configuration is too old and is not supported." = "Diese Konfiguration ist veraltet und wird von dieser Version nicht unterstützt."; + +/* VMConfigAppleSharingView */ +"This directory is already being shared." = "Dieser Ordner wird bereits freigegeben."; + +/* UTMAppleConfiguration */ +"This is not a valid Apple Virtualization configuration." = "Dies ist keine gültige Apple Virtualization-Konfiguration."; + +/* VMDisplayWindowController */ +"This may corrupt the VM and any unsaved changes will be lost. To quit safely, shut down from the guest." = "Kann zu Datenverlust führen und die VM unbrauchbar machen. Fahren Sie die VM falls möglich mittels dem Gastsystem herunter."; + +/* No comment provided by engineer. */ +"This operating system is unsupported on your machine." = "Dieses Betriebssystem wird auf Ihrem Gerät nicht unterstützt."; + +/* UTMDataExtension */ +"This virtual machine cannot be run on this machine." = "Dieses VM wird auf Ihrem Gerät nicht unterstützt."; + +/* UTMAppleConfiguration */ +"This virtual machine cannot run on the current host machine." = "Diese VM wird auf Ihrem Gerät nicht unterstützt."; + +/* UTMAppleConfiguration */ +"This virtual machine contains an invalid hardware model. The configuration may be corrupted or is outdated." = "Die VM enthält ein nicht unterstütztes Hardware-Modell. Möglicherweise ist die Konfiguration beschädigt oder veraltet."; + +/* No comment provided by engineer. */ +"This virtual machine has been removed." = "Diese VM wurde entfernt."; + +/* VMDisplayWindowController */ +"This will reset the VM and any unsaved state will be lost." = "Die VM wird neu gestartet und nicht gespeicherte Änderungen gehen verloren."; + +/* UTMQemuManager */ +"Timed out waiting for RPC." = "Zeitüberschreitung bei RPC."; + +/* VMDisplayAppleWindowController */ +"To access the shared directory, the guest OS must have Virtiofs drivers installed. You can then run `sudo mount -t virtiofs share /path/to/share` to mount to the share path." = "Um auf das freigegebene Verzeichnis zugreifen zu können, müssen auf dem Gastbetriebssystem Virtiofs-Treiber installiert sein. Führen Sie anschließend `sudo mount -t virtiofs share /path/to/share` aus, um den Freigabepfad zu mounten."; + +/* VMMetalView */ +"To capture input or to release the capture, press Command and Option at the same time." = "Drücken Sie cmd und alt zugleich, um Tastatur und Mauszeiger zu fangen oder wieder freizugeben."; + +/* No comment provided by engineer. */ +"To install macOS, you need to download a recovery IPSW. If you do not select an existing IPSW, the latest macOS IPSW will be downloaded from Apple." = "Für die Installation von macOS wird ein Recovery-IPSW benötigt. Wenn Sie hier keines auswählen, wird als nächstes das neueste IPSW von Apple heruntergeladen."; + +/* VMDisplayQemuMetalWindowController */ +"To release the mouse cursor, press %@ at the same time." = "Drücken Sie %@ um den Mauszeiger freizugeben."; + +/* UTMAppleConfigurationDevices */ +"Trackpad" = "Trackpad"; + +/* UTMQemuConstants */ +"UDP" = "UDP"; + +/* No comment provided by engineer. */ +"UEFI" = "UEFI"; + +/* UTMQemuConfigurationError */ +"UEFI is not supported with this architecture." = "UEFI wird von dieser Architektur nicht unterstützt."; + +/* UTMData */ +"Unable to add a shortcut to the new location." = "Die Verknüpfung zum neuen Speicherort konnte nicht erstellt werden."; + +/* UTMUnavailableVirtualMachine */ +"Unavailable" = "Nicht verfügbar"; + +/* VMWizardState */ +"Unavailable for this platform." = "Auf dieser Plattform nicht verfügbar."; + +/* No comment provided by engineer. */ +"Uncompressed %@" = "Unkomprimiert %@"; + +/* UTMQemuConstants */ +"USB" = "USB"; + +/* UTMQemuConstants */ +"USB 2.0" = "USB 2.0"; + +/* UTMQemuConstants */ +"USB 3.0 (XHCI)" = "USB 3.0 (XHCI)"; + +/* VMQemuDisplayMetalWindowController */ +"USB Device" = "USB-Gerät"; + +/* No comment provided by engineer. */ +"USB Sharing" = "USB-Freigabe"; + +/* No comment provided by engineer. */ +"USB sharing not supported in this build of UTM." = "Die USB-Freigabe wird in dieser Version von UTM nicht unterstützt."; + +/* No comment provided by engineer. */ +"Use Command+Option (⌘+⌥) for input capture/release" = "Drücken Sie cmd+alt (⌘+⌥) um den Mauszeiger zu fangen oder freizugeben."; + +/* UTMQemuConstants */ +"VirtFS" = "VirtFS"; + +/* UTMQemuConstants */ +"VirtIO" = "VirtIO"; + +/* UTMConfigurationInfo + UTMData */ +"Virtual Machine" = "Virtuelle Maschine"; + +/* No comment provided by engineer. */ +"Virtual Machine Gallery" = "Bibliothek von virtuellen Maschinen"; + +/* No comment provided by engineer. */ +"Virtualization is not supported on your system." = "Die Virtualisierung wird auf diesem System nicht unterstützt."; + +/* No comment provided by engineer. */ +"Virtualize" = "Virtualisieren"; + +/* No comment provided by engineer. */ +"VM display size is fixed" = "VM Anzeige-Größe ist fest eingestellt."; + +/* No comment provided by engineer. */ +"Waiting for VM to connect to display..." = "Warte auf Verbindung der VM zum Display…"; + +/* No comment provided by engineer. */ +"Welcome to UTM" = "Willkommen bei UTM"; + +/* No comment provided by engineer. */ +"Windows" = "Windows"; + +/* UTMDownloadSupportToolsTask */ +"Windows Guest Support Tools" = "Windows-Gasterweiterungen"; + +/* VMQemuDisplayMetalWindowController */ +"Would you like to connect '%@' to this virtual machine?" = "Möchten Sie %@ an die VM anschließen?"; + +/* VMDisplayAppleWindowController */ +"Would you like to install macOS? If an existing operating system is already installed on the primary drive of this VM, then it will be erased." = "Möchten Sie jetzt macOS installieren? Alle bestehenden Daten in der ersten Festplatte dieser VM werden gelöscht."; + +/* No comment provided by engineer. */ +"Would you like to re-convert this disk image to reclaim unused space and apply compression? Note this will require enough temporary space to perform the conversion. Compression only applies to existing data and new data will still be written uncompressed. You are strongly encouraged to back-up this VM before proceeding." = "Möchten Sie das Festplatten-Abbild durch erneute Konvertierung komprimieren? Dies erfordert ausreichend verfügbaren Speicherplatz für eine Kopie der Daten. Nur Bestehendes wird komprimiert, neue Daten werden nicht komprimiert. Machen Sie unbedingt ein Backup bevor Sie die Konvertierung starten."; + +/* No comment provided by engineer. */ +"Would you like to re-convert this disk image to reclaim unused space? Note this will require enough temporary space to perform the conversion. You are strongly encouraged to back-up this VM before proceeding." = "Möchten Sie den ungenutzten Speicherplatz in diesem Festplatten-Abbild durch erneute Konvertierung freigeben? Dies erfordert ausreichend verfügbaren Speicherplatz für eine Kopie der Daten. Machen Sie unbedingt ein Backup bevor Sie die Konvertierung starten."; + +/* No comment provided by engineer. */ +"Yes" = "Ja"; + +/* VMConfigSystemView */ +"Your device has %llu MB of memory and the estimated usage is %llu MB." = "Ihr Gerät hat %1$llu MB Speicher und es wird voraussichtlich %2$llu MB verwendet."; + +/* VMConfigAppleBootView + VMWizardOSMacView */ +"Your machine does not support running this IPSW." = "DIe IPSW-Datei kann auf diesem Gerät nicht verwendet werden."; + +/* ContentView */ +"Your version of iOS does not support running VMs while unmodified. You must either run UTM while jailbroken or with a remote debugger attached. See https://getutm.app/install/ for more details." = "Diese Version von iOS erlaubt es nicht, VMs ohne weiteres auszuführen. Sie müssen JIT aktivieren – entweder mit Jailbreak oder Debugger – weitere Details unter https://getutm.app/install/ ."; + diff --git a/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings b/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings index 003217011..23a7f9e9c 100644 --- a/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings +++ b/Platform/iOS/Display/de.lproj/VMDisplayMetalViewInputAccessory.strings @@ -1,10 +1,6 @@ - /* Class = "UIButton"; normalTitle = "F7"; ObjectID = "3yi-Pr-1ih"; */ "3yi-Pr-1ih.normalTitle" = "F7"; -/* Class = "UIButton"; accessibilityLabel = "Paste"; ObjectID = "740-aI-39P"; */ -"740-aI-39P.accessibilityLabel" = "Paste"; - /* Class = "UIButton"; accessibilityLabel = "Tab"; ObjectID = "7pj-Jz-7JR"; */ "7pj-Jz-7JR.accessibilityLabel" = "Tab"; @@ -12,25 +8,28 @@ "7pj-Jz-7JR.normalTitle" = "⇥"; /* Class = "UIButton"; accessibilityLabel = "Right"; ObjectID = "8Lh-4D-Fz6"; */ -"8Lh-4D-Fz6.accessibilityLabel" = "Right"; +"8Lh-4D-Fz6.accessibilityLabel" = "Rechts"; /* Class = "UIButton"; normalTitle = "→"; ObjectID = "8Lh-4D-Fz6"; */ "8Lh-4D-Fz6.normalTitle" = "→"; -/* Class = "UIButton"; accessibilityLabel = "Right"; ObjectID = "AY8-eJ-bAP"; */ -"AY8-eJ-bAP.accessibilityLabel" = "Right"; - -/* Class = "UIButton"; normalTitle = "Del"; ObjectID = "AY8-eJ-bAP"; */ -"AY8-eJ-bAP.normalTitle" = "Del"; +/* Class = "UIButton"; accessibilityLabel = "Paste"; ObjectID = "740-aI-39P"; */ +"740-aI-39P.accessibilityLabel" = "Einfügen"; /* Class = "UIButton"; normalTitle = "F10"; ObjectID = "AhH-ij-IF8"; */ "AhH-ij-IF8.normalTitle" = "F10"; -/* Class = "UIButton"; accessibilityLabel = "Up"; ObjectID = "BUL-js-yMh"; */ -"BUL-js-yMh.accessibilityLabel" = "Up"; +/* Class = "UIButton"; accessibilityLabel = "Right"; ObjectID = "AY8-eJ-bAP"; */ +"AY8-eJ-bAP.accessibilityLabel" = "Rechts"; -/* Class = "UIButton"; normalTitle = "↑"; ObjectID = "BUL-js-yMh"; */ -"BUL-js-yMh.normalTitle" = "↑"; +/* Class = "UIButton"; normalTitle = "Del"; ObjectID = "AY8-eJ-bAP"; */ +"AY8-eJ-bAP.normalTitle" = "Entf"; + +/* Class = "UIButton"; accessibilityLabel = "Control"; ObjectID = "bCv-uH-SSy"; */ +"bCv-uH-SSy.accessibilityLabel" = "Strg"; + +/* Class = "UIButton"; normalTitle = "⌃"; ObjectID = "bCv-uH-SSy"; */ +"bCv-uH-SSy.normalTitle" = "⌃"; /* Class = "UIButton"; accessibilityLabel = "Num Lock"; ObjectID = "BUk-Vf-yE5"; */ "BUk-Vf-yE5.accessibilityLabel" = "Num Lock"; @@ -38,6 +37,15 @@ /* Class = "UIButton"; normalTitle = "Num"; ObjectID = "BUk-Vf-yE5"; */ "BUk-Vf-yE5.normalTitle" = "Num"; +/* Class = "UIButton"; accessibilityLabel = "Up"; ObjectID = "BUL-js-yMh"; */ +"BUL-js-yMh.accessibilityLabel" = "Oben"; + +/* Class = "UIButton"; normalTitle = "↑"; ObjectID = "BUL-js-yMh"; */ +"BUL-js-yMh.normalTitle" = "↑"; + +/* Class = "UIButton"; normalTitle = "F4"; ObjectID = "c7C-CG-EBg"; */ +"c7C-CG-EBg.normalTitle" = "F4"; + /* Class = "UIButton"; normalTitle = "F5"; ObjectID = "DxX-zu-urb"; */ "DxX-zu-urb.normalTitle" = "F5"; @@ -45,16 +53,43 @@ "EDi-KP-KwO.normalTitle" = "F12"; /* Class = "UIButton"; accessibilityLabel = "Left"; ObjectID = "EVa-2J-CRA"; */ -"EVa-2J-CRA.accessibilityLabel" = "Left"; +"EVa-2J-CRA.accessibilityLabel" = "Links"; /* Class = "UIButton"; normalTitle = "←"; ObjectID = "EVa-2J-CRA"; */ "EVa-2J-CRA.normalTitle" = "←"; /* Class = "UIButton"; accessibilityLabel = "Caps Lock"; ObjectID = "FDV-W6-qlO"; */ -"FDV-W6-qlO.accessibilityLabel" = "Caps Lock"; +"FDV-W6-qlO.accessibilityLabel" = "Feststelltaste"; /* Class = "UIButton"; normalTitle = "Caps"; ObjectID = "FDV-W6-qlO"; */ -"FDV-W6-qlO.normalTitle" = "Caps"; +"FDV-W6-qlO.normalTitle" = "Feststelltaste"; + +/* Class = "UIButton"; normalTitle = "F3"; ObjectID = "gUX-ez-mbt"; */ +"gUX-ez-mbt.normalTitle" = "F3"; + +/* Class = "UIButton"; accessibilityLabel = "Page Down"; ObjectID = "h4q-XF-UMn"; */ +"h4q-XF-UMn.accessibilityLabel" = "Seite nach Unten"; + +/* Class = "UIButton"; normalTitle = "Pg Dn"; ObjectID = "h4q-XF-UMn"; */ +"h4q-XF-UMn.normalTitle" = "Seite nach Unten"; + +/* Class = "UIButton"; accessibilityLabel = "Option"; ObjectID = "jxu-AQ-u8c"; */ +"jxu-AQ-u8c.accessibilityLabel" = "Alt"; + +/* Class = "UIButton"; normalTitle = "⌥"; ObjectID = "jxu-AQ-u8c"; */ +"jxu-AQ-u8c.normalTitle" = "⌥"; + +/* Class = "UIButton"; normalTitle = "F2"; ObjectID = "kd1-fj-kXM"; */ +"kd1-fj-kXM.normalTitle" = "F2"; + +/* Class = "UIButton"; accessibilityLabel = "Insert"; ObjectID = "kO0-HZ-5w2"; */ +"kO0-HZ-5w2.accessibilityLabel" = "Einfügen"; + +/* Class = "UIButton"; normalTitle = "Ins"; ObjectID = "kO0-HZ-5w2"; */ +"kO0-HZ-5w2.normalTitle" = "Einfg"; + +/* Class = "UIButton"; normalTitle = "F8"; ObjectID = "LlV-Ae-CrL"; */ +"LlV-Ae-CrL.normalTitle" = "F8"; /* Class = "UIButton"; accessibilityLabel = "Home"; ObjectID = "LU6-kH-vN3"; */ "LU6-kH-vN3.accessibilityLabel" = "Home"; @@ -62,101 +97,66 @@ /* Class = "UIButton"; normalTitle = "Home"; ObjectID = "LU6-kH-vN3"; */ "LU6-kH-vN3.normalTitle" = "Home"; -/* Class = "UIButton"; normalTitle = "F8"; ObjectID = "LlV-Ae-CrL"; */ -"LlV-Ae-CrL.normalTitle" = "F8"; +/* Class = "UIButton"; accessibilityLabel = "Escape"; ObjectID = "n12-9R-99C"; */ +"n12-9R-99C.accessibilityLabel" = "Escape"; -/* Class = "UIButton"; normalTitle = "F1"; ObjectID = "PWe-Va-Qi1"; */ -"PWe-Va-Qi1.normalTitle" = "F1"; +/* Class = "UIButton"; normalTitle = "⎋"; ObjectID = "n12-9R-99C"; */ +"n12-9R-99C.normalTitle" = "⎋"; /* Class = "UIButton"; accessibilityLabel = "Print Screen"; ObjectID = "Pes-KN-KzU"; */ -"Pes-KN-KzU.accessibilityLabel" = "Print Screen"; +"Pes-KN-KzU.accessibilityLabel" = "Drucken"; /* Class = "UIButton"; normalTitle = "Pr Scr"; ObjectID = "Pes-KN-KzU"; */ -"Pes-KN-KzU.normalTitle" = "Pr Scr"; +"Pes-KN-KzU.normalTitle" = "Drucken"; /* Class = "UIButton"; accessibilityLabel = "Command"; ObjectID = "Pjh-3m-tFX"; */ -"Pjh-3m-tFX.accessibilityLabel" = "Command"; +"Pjh-3m-tFX.accessibilityLabel" = "cmd"; /* Class = "UIButton"; normalTitle = "⌘"; ObjectID = "Pjh-3m-tFX"; */ "Pjh-3m-tFX.normalTitle" = "⌘"; +/* Class = "UIButton"; normalTitle = "F1"; ObjectID = "PWe-Va-Qi1"; */ +"PWe-Va-Qi1.normalTitle" = "F1"; + +/* Class = "UIButton"; accessibilityLabel = "Page Up"; ObjectID = "pX1-7o-dbU"; */ +"pX1-7o-dbU.accessibilityLabel" = "Seite nach Oben"; + +/* Class = "UIButton"; normalTitle = "Pg Up"; ObjectID = "pX1-7o-dbU"; */ +"pX1-7o-dbU.normalTitle" = "Seite nach Oben"; + /* Class = "UIButton"; accessibilityLabel = "Shift"; ObjectID = "QPo-cD-UlK"; */ "QPo-cD-UlK.accessibilityLabel" = "Shift"; /* Class = "UIButton"; normalTitle = "⇧"; ObjectID = "QPo-cD-UlK"; */ "QPo-cD-UlK.normalTitle" = "⇧"; -/* Class = "UIButton"; accessibilityLabel = "Down"; ObjectID = "RCo-l7-gvf"; */ -"RCo-l7-gvf.accessibilityLabel" = "Down"; - -/* Class = "UIButton"; normalTitle = "↓"; ObjectID = "RCo-l7-gvf"; */ -"RCo-l7-gvf.normalTitle" = "↓"; - /* Class = "UIButton"; normalTitle = "F6"; ObjectID = "Rb5-vO-sIx"; */ "Rb5-vO-sIx.normalTitle" = "F6"; -/* Class = "UIButton"; accessibilityLabel = "End"; ObjectID = "TOV-fV-TTa"; */ -"TOV-fV-TTa.accessibilityLabel" = "End"; - -/* Class = "UIButton"; normalTitle = "End"; ObjectID = "TOV-fV-TTa"; */ -"TOV-fV-TTa.normalTitle" = "End"; - -/* Class = "UIButton"; normalTitle = "F9"; ObjectID = "UNT-ei-lIn"; */ -"UNT-ei-lIn.normalTitle" = "F9"; - -/* Class = "UIButton"; accessibilityLabel = "Control"; ObjectID = "bCv-uH-SSy"; */ -"bCv-uH-SSy.accessibilityLabel" = "Control"; - -/* Class = "UIButton"; normalTitle = "⌃"; ObjectID = "bCv-uH-SSy"; */ -"bCv-uH-SSy.normalTitle" = "⌃"; - -/* Class = "UIButton"; normalTitle = "F4"; ObjectID = "c7C-CG-EBg"; */ -"c7C-CG-EBg.normalTitle" = "F4"; - -/* Class = "UIButton"; normalTitle = "F3"; ObjectID = "gUX-ez-mbt"; */ -"gUX-ez-mbt.normalTitle" = "F3"; - -/* Class = "UIButton"; accessibilityLabel = "Page Down"; ObjectID = "h4q-XF-UMn"; */ -"h4q-XF-UMn.accessibilityLabel" = "Page Down"; - -/* Class = "UIButton"; normalTitle = "Pg Dn"; ObjectID = "h4q-XF-UMn"; */ -"h4q-XF-UMn.normalTitle" = "Pg Dn"; - -/* Class = "UIButton"; accessibilityLabel = "Option"; ObjectID = "jxu-AQ-u8c"; */ -"jxu-AQ-u8c.accessibilityLabel" = "Option"; - -/* Class = "UIButton"; normalTitle = "⌥"; ObjectID = "jxu-AQ-u8c"; */ -"jxu-AQ-u8c.normalTitle" = "⌥"; - -/* Class = "UIButton"; accessibilityLabel = "Insert"; ObjectID = "kO0-HZ-5w2"; */ -"kO0-HZ-5w2.accessibilityLabel" = "Insert"; - -/* Class = "UIButton"; normalTitle = "Ins"; ObjectID = "kO0-HZ-5w2"; */ -"kO0-HZ-5w2.normalTitle" = "Ins"; - -/* Class = "UIButton"; normalTitle = "F2"; ObjectID = "kd1-fj-kXM"; */ -"kd1-fj-kXM.normalTitle" = "F2"; - -/* Class = "UIButton"; accessibilityLabel = "Escape"; ObjectID = "n12-9R-99C"; */ -"n12-9R-99C.accessibilityLabel" = "Escape"; - -/* Class = "UIButton"; normalTitle = "⎋"; ObjectID = "n12-9R-99C"; */ -"n12-9R-99C.normalTitle" = "⎋"; - -/* Class = "UIButton"; accessibilityLabel = "Page Up"; ObjectID = "pX1-7o-dbU"; */ -"pX1-7o-dbU.accessibilityLabel" = "Page Up"; +/* Class = "UIButton"; accessibilityLabel = "Down"; ObjectID = "RCo-l7-gvf"; */ +"RCo-l7-gvf.accessibilityLabel" = "Unten"; -/* Class = "UIButton"; normalTitle = "Pg Up"; ObjectID = "pX1-7o-dbU"; */ -"pX1-7o-dbU.normalTitle" = "Pg Up"; +/* Class = "UIButton"; normalTitle = "↓"; ObjectID = "RCo-l7-gvf"; */ +"RCo-l7-gvf.normalTitle" = "↓"; /* Class = "UIButton"; normalTitle = "F11"; ObjectID = "rfk-su-cFq"; */ "rfk-su-cFq.normalTitle" = "F11"; /* Class = "UIButton"; accessibilityLabel = "Hide Keyboard"; ObjectID = "rtU-Yt-FhT"; */ -"rtU-Yt-FhT.accessibilityLabel" = "Hide Keyboard"; +"rtU-Yt-FhT.accessibilityLabel" = "Tastatur ausblenden"; /* Class = "UIButton"; accessibilityLabel = "Scroll Lock"; ObjectID = "sF1-tj-hUG"; */ "sF1-tj-hUG.accessibilityLabel" = "Scroll Lock"; /* Class = "UIButton"; normalTitle = "Scroll"; ObjectID = "sF1-tj-hUG"; */ "sF1-tj-hUG.normalTitle" = "Scroll"; + +/* Class = "UIButton"; accessibilityLabel = "End"; ObjectID = "TOV-fV-TTa"; */ +"TOV-fV-TTa.accessibilityLabel" = "Ende"; + +/* Class = "UIButton"; normalTitle = "End"; ObjectID = "TOV-fV-TTa"; */ +"TOV-fV-TTa.normalTitle" = "Ende"; + +/* Class = "UIButton"; normalTitle = "F9"; ObjectID = "UNT-ei-lIn"; */ +"UNT-ei-lIn.normalTitle" = "F9"; + diff --git a/Platform/iOS/Settings.bundle/de.lproj/Root.strings b/Platform/iOS/Settings.bundle/de.lproj/Root.strings new file mode 100644 index 000000000..4ac9888a3 --- /dev/null +++ b/Platform/iOS/Settings.bundle/de.lproj/Root.strings @@ -0,0 +1,147 @@ +/* (No Comment) */ +"Apple Pencil Input" = "Apple Pencil-Eingabe"; + +/* (No Comment) */ +"Auto save on background" = "Im Hintergrund automatisch Pausieren"; + +/* (No Comment) */ +"Auto save on low memory" = "Bei Speicher-Knappheit automatisch Pausieren"; + +/* (No Comment) */ +"Background" = "Hintergrund"; + +/* (No Comment) */ +"Backspace" = "Rücktaste"; + +/* (No Comment) */ +"Caps" = "Caps"; + +/* (No Comment) */ +"Click & Hold" = "Klicken und Halten"; + +/* (No Comment) */ +"Continue running VM in the background" = "VM im Hintergrund weiterhin ausführen"; + +/* (No Comment) */ +"Cursor" = "Mauszeiger"; + +/* (No Comment) */ +"D-DOWN" = "D-Unten"; + +/* (No Comment) */ +"D-LEFT" = "D-Links"; + +/* (No Comment) */ +"D-RIGHT" = "D-Rechts"; + +/* (No Comment) */ +"D-UP" = "D-Oben"; + +/* (No Comment) */ +"Disabled" = "Deaktiviert"; + +/* (No Comment) */ +"Down" = "Unten"; + +/* (No Comment) */ +"Drag cursor" = "Zeiger ziehen"; + +/* (No Comment) */ +"Enabled" = "Aktiviert"; + +/* (No Comment) */ +"Enter" = "Enter"; + +/* (No Comment) */ +"Follow cursor" = "System-Mauszeiger folgen"; + +/* (No Comment) */ +"Gamepad" = "Controller"; + +/* (No Comment) */ +"Gamepad - Cursor Speed" = "Controller – Zeigergeschwindigkeit"; + +/* (No Comment) */ +"Gestures" = "Gesten"; + +/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */ +"Group" = "Gruppe"; + +/* (No Comment) */ +"Left" = "Links"; + +/* (No Comment) */ +"Long Press" = "Langes Halten"; + +/* (No Comment) */ +"Menu" = "Menü"; + +/* (No Comment) */ +"Mouse Left Button" = "Linke Maustaste"; + +/* (No Comment) */ +"Mouse Middle Button" = "Mittlere Maustaste"; + +/* (No Comment) */ +"Mouse Right Button" = "Rechte Maustaste"; + +/* (No Comment) */ +"Mouse Wheel" = "Mausrad"; + +/* (No Comment) */ +"Mouse Wheel (per swipe)" = "Mausrad (pro Einheit)"; + +/* (No Comment) */ +"Move Screen" = "Anzeige bewegen"; + +/* (No Comment) */ +"Name" = "Name"; + +/* (No Comment) */ +"none given" = "(keine Angabe)"; + +/* (No Comment) */ +"Right" = "Rechts"; + +/* (No Comment) */ +"Right Click" = "Rechtsklick"; + +/* (No Comment) */ +"Space" = "Leertaste"; + +/* (No Comment) */ +"Tablet mode (always show cursor)" = "Tablet-Modus (Zeiger immer anzeigen)"; + +/* (No Comment) */ +"Tablet mode (try hiding cursor)" = "Tablet-Modus (versuche, Zeiger auszublenden)"; + +/* (No Comment) */ +"Three Finger Pan" = "Drei-Finger-Ziehen"; + +/* (No Comment) */ +"Touch Input" = "Touch-Eingabe"; + +/* (No Comment) */ +"Touch mode (always show cursor)" = "Touch-Modus (Zeiger immer anzeigen)"; + +/* (No Comment) */ +"Touch mode (try hiding cursor)" = "Touch-Modus (versuche, Zeiger auszublenden)"; + +/* (No Comment) */ +"Touchpad/Mouse Input" = "Trackpad- bzw. Maus-Eingabe"; + +/* (No Comment) */ +"Two Finger Pan" = "Zwei-Finger-Ziehen"; + +/* (No Comment) */ +"Two Finger Scroll" = "Scollen mit zwei Fingern"; + +/* (No Comment) */ +"Two Finger Swipe" = "Zwei-Finger-Wischen"; + +/* (No Comment) */ +"Two Finger Tap" = "Zwei-Finger-Tippen"; + +/* (No Comment) */ +"Up" = "Oben"; + diff --git a/Platform/iOS/de.lproj/InfoPlist.strings b/Platform/iOS/de.lproj/InfoPlist.strings index f2180cd78..88dc1565c 100644 --- a/Platform/iOS/de.lproj/InfoPlist.strings +++ b/Platform/iOS/de.lproj/InfoPlist.strings @@ -1 +1,18 @@ -"" = ""; +/* Privacy - Local Network Usage Description */ +"NSLocalNetworkUsageDescription" = "Die VMs benötigten Zugriff auf das lokale Netzwerk. Außerdem wird der Zugriff für die AltServer-Verbindung benötigt."; + +/* Privacy - Location Always and When In Use Usage Description */ +"NSLocationAlwaysAndWhenInUseUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; + +/* Privacy - Location Always Usage Description */ +"NSLocationAlwaysUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; + +/* Privacy - Location When In Use Usage Description */ +"NSLocationWhenInUseUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; + +/* Privacy - Microphone Usage Description */ +"NSMicrophoneUsageDescription" = "Für Mikrofonzugriff in der VM wird Ihre Erlaubnis benötigt."; + +/* (No Comment) */ +"UTM virtual machine" = "Virtuelle Maschine (UTM)"; + diff --git a/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings b/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings index 0aea30b5e..e7727d6d5 100644 --- a/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings +++ b/Platform/macOS/Display/de.lproj/VMDisplayWindow.strings @@ -1,12 +1,20 @@ - /* Class = "NSToolbarItem"; label = "Shared Folder"; ObjectID = "7EC-GE-fIl"; */ -"7EC-GE-fIl.label" = "Shared Folder"; +"7EC-GE-fIl.label" = "Freigegebener Ordner"; /* Class = "NSToolbarItem"; paletteLabel = "Shared Folder"; ObjectID = "7EC-GE-fIl"; */ -"7EC-GE-fIl.paletteLabel" = "Shared Folder"; +"7EC-GE-fIl.paletteLabel" = "Freigegebener Ordner"; /* Class = "NSToolbarItem"; toolTip = "Shared folder"; ObjectID = "7EC-GE-fIl"; */ -"7EC-GE-fIl.toolTip" = "Shared folder"; +"7EC-GE-fIl.toolTip" = "Freigegebener Ordner"; + +/* Class = "NSToolbarItem"; label = "Drives"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.label" = "Laufwerke"; + +/* Class = "NSToolbarItem"; paletteLabel = "Drives"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.paletteLabel" = "Laufwerke"; + +/* Class = "NSToolbarItem"; toolTip = "Drive image options"; ObjectID = "bKL-Th-FFw"; */ +"bKL-Th-FFw.toolTip" = "Optionen zu Laufwerk-Abbildern"; /* Class = "NSToolbarItem"; label = "Stop"; ObjectID = "Bkx-Ph-j0D"; */ "Bkx-Ph-j0D.label" = "Stop"; @@ -15,31 +23,40 @@ "Bkx-Ph-j0D.paletteLabel" = "Stop"; /* Class = "NSToolbarItem"; toolTip = "Shuts down and stops the VM"; ObjectID = "Bkx-Ph-j0D"; */ -"Bkx-Ph-j0D.toolTip" = "Shuts down and stops the VM"; +"Bkx-Ph-j0D.toolTip" = "Beendet die VM abrupt"; /* Class = "NSToolbarItem"; label = "Toolbar Item"; ObjectID = "C8Y-BQ-Y6m"; */ -"C8Y-BQ-Y6m.label" = "Toolbar Item"; +"C8Y-BQ-Y6m.label" = "Menüleisten-Objekt"; /* Class = "NSToolbarItem"; paletteLabel = "Toolbar Item"; ObjectID = "C8Y-BQ-Y6m"; */ -"C8Y-BQ-Y6m.paletteLabel" = "Toolbar Item"; +"C8Y-BQ-Y6m.paletteLabel" = "Menüleisten-Objekt"; /* Class = "NSToolbarItem"; label = "Capture Mouse"; ObjectID = "FN7-zs-mWC"; */ -"FN7-zs-mWC.label" = "Capture Mouse"; +"FN7-zs-mWC.label" = "Mauszeiger fangen"; /* Class = "NSToolbarItem"; paletteLabel = "Capture Mouse"; ObjectID = "FN7-zs-mWC"; */ -"FN7-zs-mWC.paletteLabel" = "Capture Mouse"; +"FN7-zs-mWC.paletteLabel" = "Mauszeiger fangen"; /* Class = "NSToolbarItem"; toolTip = "Capture mouse cursor"; ObjectID = "FN7-zs-mWC"; */ -"FN7-zs-mWC.toolTip" = "Capture mouse cursor"; +"FN7-zs-mWC.toolTip" = "Mauszeiger fangen"; /* Class = "NSToolbarItem"; label = "Restart"; ObjectID = "G7P-HJ-bcy"; */ -"G7P-HJ-bcy.label" = "Restart"; +"G7P-HJ-bcy.label" = "Neustarten"; /* Class = "NSToolbarItem"; paletteLabel = "Restart"; ObjectID = "G7P-HJ-bcy"; */ -"G7P-HJ-bcy.paletteLabel" = "Restart"; +"G7P-HJ-bcy.paletteLabel" = "Neustarten"; /* Class = "NSToolbarItem"; toolTip = "Restarts the VM"; ObjectID = "G7P-HJ-bcy"; */ -"G7P-HJ-bcy.toolTip" = "Restarts the VM"; +"G7P-HJ-bcy.toolTip" = "Startet die VM sofort neu"; + +/* Class = "NSToolbarItem"; label = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.label" = "Start/Pause"; + +/* Class = "NSToolbarItem"; paletteLabel = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.paletteLabel" = "Start/Pause"; + +/* Class = "NSToolbarItem"; toolTip = "Start/pause the VM"; ObjectID = "kT2-2U-cYm"; */ +"kT2-2U-cYm.toolTip" = "Startet bzw. Pausiert die VM"; /* Class = "NSToolbarItem"; label = "Windows"; ObjectID = "MQ2-L1-yl7"; */ "MQ2-L1-yl7.label" = "Windows"; @@ -53,41 +70,24 @@ /* Class = "NSWindow"; title = "UTM"; ObjectID = "QvC-M9-y7g"; */ "QvC-M9-y7g.title" = "UTM"; +/* Class = "NSToolbarItem"; label = "USB"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.label" = "USB"; + +/* Class = "NSToolbarItem"; paletteLabel = "USB"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.paletteLabel" = "USB"; + +/* Class = "NSToolbarItem"; toolTip = "USB devices"; ObjectID = "tlw-Fb-ne3"; */ +"tlw-Fb-ne3.toolTip" = "USB-Geräte"; + /* Class = "NSToolbarItem"; label = "Resize Console"; ObjectID = "Ulf-oT-4cP"; */ -"Ulf-oT-4cP.label" = "Resize Console"; +"Ulf-oT-4cP.label" = "Größe der Konsole anpassen"; /* Class = "NSToolbarItem"; paletteLabel = "Resize Console"; ObjectID = "Ulf-oT-4cP"; */ -"Ulf-oT-4cP.paletteLabel" = "Resize Console"; +"Ulf-oT-4cP.paletteLabel" = "Größe der Konsole anpassen"; /* Class = "NSToolbarItem"; toolTip = "Send console resize command"; ObjectID = "Ulf-oT-4cP"; */ -"Ulf-oT-4cP.toolTip" = "Send console resize command"; +"Ulf-oT-4cP.toolTip" = "Kommando zur Größenänderung senden"; /* Class = "NSButton"; ibShadowedToolTip = "Starts/resumes the VM"; ObjectID = "ZTi-Hs-ge6"; */ -"ZTi-Hs-ge6.ibShadowedToolTip" = "Starts/resumes the VM"; - -/* Class = "NSToolbarItem"; label = "Drives"; ObjectID = "bKL-Th-FFw"; */ -"bKL-Th-FFw.label" = "Drives"; - -/* Class = "NSToolbarItem"; paletteLabel = "Drives"; ObjectID = "bKL-Th-FFw"; */ -"bKL-Th-FFw.paletteLabel" = "Drives"; - -/* Class = "NSToolbarItem"; toolTip = "Drive image options"; ObjectID = "bKL-Th-FFw"; */ -"bKL-Th-FFw.toolTip" = "Drive image options"; - -/* Class = "NSToolbarItem"; label = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ -"kT2-2U-cYm.label" = "Start/Pause"; - -/* Class = "NSToolbarItem"; paletteLabel = "Start/Pause"; ObjectID = "kT2-2U-cYm"; */ -"kT2-2U-cYm.paletteLabel" = "Start/Pause"; - -/* Class = "NSToolbarItem"; toolTip = "Start/pause the VM"; ObjectID = "kT2-2U-cYm"; */ -"kT2-2U-cYm.toolTip" = "Start/pause the VM"; +"ZTi-Hs-ge6.ibShadowedToolTip" = "Startet die VM bzw. setzt sie fort"; -/* Class = "NSToolbarItem"; label = "USB"; ObjectID = "tlw-Fb-ne3"; */ -"tlw-Fb-ne3.label" = "USB"; - -/* Class = "NSToolbarItem"; paletteLabel = "USB"; ObjectID = "tlw-Fb-ne3"; */ -"tlw-Fb-ne3.paletteLabel" = "USB"; - -/* Class = "NSToolbarItem"; toolTip = "USB devices"; ObjectID = "tlw-Fb-ne3"; */ -"tlw-Fb-ne3.toolTip" = "USB devices"; diff --git a/Platform/macOS/de.lproj/InfoPlist.strings b/Platform/macOS/de.lproj/InfoPlist.strings index f2180cd78..e2ee9546c 100644 --- a/Platform/macOS/de.lproj/InfoPlist.strings +++ b/Platform/macOS/de.lproj/InfoPlist.strings @@ -1 +1,9 @@ -"" = ""; +/* Bundle name */ +"CFBundleName" = "UTM"; + +/* Privacy - Microphone Usage Description */ +"NSMicrophoneUsageDescription" = "Für Mikrofonzugriff in der VM wird Ihre Erlaubnis benötigt."; + +/* (No Comment) */ +"UTM virtual machine" = "Virtuelle Maschine (UTM)"; + diff --git a/QEMUHelper/de.lproj/InfoPlist.strings b/QEMUHelper/de.lproj/InfoPlist.strings index f2180cd78..701d717fc 100644 --- a/QEMUHelper/de.lproj/InfoPlist.strings +++ b/QEMUHelper/de.lproj/InfoPlist.strings @@ -1 +1,9 @@ -"" = ""; +/* Bundle display name */ +"CFBundleDisplayName" = "QEMU Hilfsprogramm"; + +/* Bundle name */ +"CFBundleName" = "QEMU Hilfsprogramm"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2020 osy. Alle Rechte vorbehalten."; + diff --git a/QEMUHelper/de.lproj/Localizable.strings b/QEMUHelper/de.lproj/Localizable.strings index f2180cd78..3053995bb 100644 --- a/QEMUHelper/de.lproj/Localizable.strings +++ b/QEMUHelper/de.lproj/Localizable.strings @@ -1 +1,6 @@ -"" = ""; +/* QEMUHelper */ +"Cannot find QEMU support libraries." = "Die QEMU Unterstützungs-Dateien konnten nicht gefunden weren."; + +/* QEMUHelper */ +"Error starting QEMU." = "Fehler beim Start von QEMU."; + diff --git a/UTM.xcodeproj/project.pbxproj b/UTM.xcodeproj/project.pbxproj index e7813fe24..04a77a8bd 100644 --- a/UTM.xcodeproj/project.pbxproj +++ b/UTM.xcodeproj/project.pbxproj @@ -34,6 +34,7 @@ 835AA7B126AB7C85007A0411 /* UTMPendingVirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835AA7B026AB7C85007A0411 /* UTMPendingVirtualMachine.swift */; }; 835AA7B226AB7C85007A0411 /* UTMPendingVirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835AA7B026AB7C85007A0411 /* UTMPendingVirtualMachine.swift */; }; 835AA7B326AB7C85007A0411 /* UTMPendingVirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835AA7B026AB7C85007A0411 /* UTMPendingVirtualMachine.swift */; }; + 836CA97F28FCC39700EB9EF0 /* QEMULauncher-InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 836CA97D28FCC39700EB9EF0 /* QEMULauncher-InfoPlist.strings */; }; 83993290272F4A400059355F /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 8399328F272F4A400059355F /* ZIPFoundation */; }; 83993292272F68550059355F /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 83993291272F68550059355F /* ZIPFoundation */; }; 83993294272F685F0059355F /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 83993293272F685F0059355F /* ZIPFoundation */; }; @@ -1598,6 +1599,7 @@ 5A1746A628BA9C4300278241 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; }; 83034C0626AB630F006B4BAF /* UTMPendingVMView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMPendingVMView.swift; sourceTree = ""; }; 835AA7B026AB7C85007A0411 /* UTMPendingVirtualMachine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMPendingVirtualMachine.swift; sourceTree = ""; }; + 836CA97E28FCC39700EB9EF0 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = "de.lproj/QEMULauncher-InfoPlist.strings"; sourceTree = ""; }; 83A004B826A8CC95001AC09E /* UTMDownloadTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMDownloadTask.swift; sourceTree = ""; }; 83C15C5E26CC441000ADFD45 /* KeyCodeMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyCodeMap.swift; sourceTree = ""; }; 83FBDD53242FA71900D2C5D7 /* VMDisplayMetalViewController+Pointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Pointer.h"; sourceTree = ""; }; @@ -3039,6 +3041,7 @@ CE550BC0225947990063E575 = { isa = PBXGroup; children = ( + 836CA97D28FCC39700EB9EF0 /* QEMULauncher-InfoPlist.strings */, CE50A41F2637BB200050430F /* Build.xcconfig */, CE258ACC22715F8300E5A333 /* README.md */, CE31C242225E543A00A965DD /* Configuration */, @@ -3503,6 +3506,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 836CA97F28FCC39700EB9EF0 /* QEMULauncher-InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4524,6 +4528,14 @@ name = InfoPlist.strings; sourceTree = ""; }; + 836CA97D28FCC39700EB9EF0 /* QEMULauncher-InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 836CA97E28FCC39700EB9EF0 /* de */, + ); + name = "QEMULauncher-InfoPlist.strings"; + sourceTree = ""; + }; CE061CDD289E6DC30000351C /* VMDisplayWindow.xib */ = { isa = PBXVariantGroup; children = ( diff --git a/de.lproj/QEMULauncher-InfoPlist.strings b/de.lproj/QEMULauncher-InfoPlist.strings new file mode 100644 index 000000000..f15d4a358 --- /dev/null +++ b/de.lproj/QEMULauncher-InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "QEMU-Launcher"; + From 262847be3a5484b0c9fff5972a3d24ba240a3931 Mon Sep 17 00:00:00 2001 From: conath Date: Mon, 17 Oct 2022 01:57:08 +0200 Subject: [PATCH 3/5] Fix non-localized strings in two places There were similar issues in VM Icon Selection and Welcome Views. I have implemented a fix in each slightly differently. A decision should be made on how to handle localized strings in the future. I prefer the way of creating an extension on String/NSLocalizedString. --- Platform/Shared/VMConfigInfoView.swift | 23 ++++++++++++++++------- Platform/Shared/VMPlaceholderView.swift | 25 ++++++++++++++++++------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/Platform/Shared/VMConfigInfoView.swift b/Platform/Shared/VMConfigInfoView.swift index 790d7a3ae..7b9ef050b 100644 --- a/Platform/Shared/VMConfigInfoView.swift +++ b/Platform/Shared/VMConfigInfoView.swift @@ -17,12 +17,21 @@ import SwiftUI private enum IconStyle: String, Identifiable, CaseIterable { - case generic = "Generic" - case operatingSystem = "Operating System" - case custom = "Custom" + case generic + case operatingSystem + case custom - var localizedName: LocalizedStringKey { LocalizedStringKey(rawValue) } - var id: String { rawValue } + var text: Text { + get { + switch self { + case .generic: return Text("Generic"); + case .operatingSystem: return Text("Operating System") + case .custom: return Text("Custom") + } + } + } + + var id: String { get { self.rawValue } } } struct VMConfigInfoView: View { @@ -97,8 +106,8 @@ struct VMConfigInfoView: View { } Picker(selection: style.animation(), label: Text("Style")) { - ForEach(IconStyle.allCases, id: \.id) { value in - Text(value.localizedName) + ForEach(IconStyle.allCases, id: \.rawValue) { value in + value.text .tag(value) } } diff --git a/Platform/Shared/VMPlaceholderView.swift b/Platform/Shared/VMPlaceholderView.swift index dfa4a62f5..a6ec37f82 100644 --- a/Platform/Shared/VMPlaceholderView.swift +++ b/Platform/Shared/VMPlaceholderView.swift @@ -26,19 +26,19 @@ struct VMPlaceholderView: View { Text("Welcome to UTM").font(.title) } HStack { - TileButton(titleKey: "Create a New Virtual Machine", systemImage: "plus.circle") { + TileButton(Label(String.create, systemImage: "plus.circle")) { data.newVM() } - TileButton(titleKey: "Browse UTM Gallery", systemImage: "arrow.down.circle") { + TileButton(Label(String.browse, systemImage: "arrow.down.circle")) { openURL(URL(string: "https://mac.getutm.app/gallery/")!) } } HStack { /// Link to Mac sites on all platforms because they are more up to date - TileButton(titleKey: "User Guide", systemImage: "book.circle") { + TileButton(Label(String.guide, systemImage: "book.circle")) { openURL(URL(string: "https://mac.getutm.app/guide/")!) } - TileButton(titleKey: "Support", systemImage: "questionmark.circle") { + TileButton(Label(String.support, systemImage: "questionmark.circle")) { openURL(URL(string: "https://docs.getutm.app/")!) } } @@ -46,14 +46,25 @@ struct VMPlaceholderView: View { } } +fileprivate extension String { + static let create = NSLocalizedString("Create a New Virtual Machine", comment: "Welcome view") + static let browse = NSLocalizedString("Browse UTM Gallery", comment: "Welcome view") + static let guide = NSLocalizedString("User Guide", comment: "Welcome view") + static let support = NSLocalizedString("Support", comment: "Welcome view") +} + private struct TileButton: View { - let titleKey: LocalizedStringKey - let systemImage: String + let label: Label let action: () -> Void + init(_ label: Label, action: @escaping () -> Void) { + self.label = label + self.action = action + } + var body: some View { Button(action: action, label: { - Label(titleKey, systemImage: systemImage) + label .labelStyle(TileLabelStyle()) }).buttonStyle(BigButtonStyle(width: 150, height: 150)) } From e8cbb01f26fa38ba4bb66b55f759da37954a31c3 Mon Sep 17 00:00:00 2001 From: conath Date: Mon, 17 Oct 2022 02:24:04 +0200 Subject: [PATCH 4/5] Update German localization --- Platform/de.lproj/Localizable.strings | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Platform/de.lproj/Localizable.strings b/Platform/de.lproj/Localizable.strings index 31c49b006..b8f9c5b2c 100644 --- a/Platform/de.lproj/Localizable.strings +++ b/Platform/de.lproj/Localizable.strings @@ -130,6 +130,9 @@ /* No comment provided by engineer. */ "Bridged Settings" = "Bridge-Modus Einstellungen"; +/* Welcome view */ +"Browse UTM Gallery" = "UTM-Galerie besuchen"; + /* No comment provided by engineer. */ "Browse…" = "Durchsuchen…"; @@ -187,7 +190,7 @@ "Confirm Delete" = "Löschen bestätigen"; /* VMDisplayWindowController */ -"Confirmation" = "Bestätigung"; +"Confirmation" = "Warnung"; /* No comment provided by engineer. */ "Connection" = "Verbindung"; @@ -204,6 +207,9 @@ /* No comment provided by engineer. */ "Create" = "Erstellen"; +/* Welcome view */ +"Create a New Virtual Machine" = "Neue Virtuelle Maschine erstellen"; + /* No comment provided by engineer. */ "Custom" = "Eigene"; @@ -363,6 +369,9 @@ /* UTMQemuConstants */ "GDB Debug Stub" = "GDB Debug Stub"; +/* No comment provided by engineer. */ +"Generic" = "Standard"; + /* No comment provided by engineer. */ "Gesture and Cursor Settings" = "Gesten- und Zeiger-Einstellungen"; @@ -565,6 +574,9 @@ /* UTMQemuConstants */ "None (Advanced)" = "Keine (erweitert)"; +/* No comment provided by engineer. */ +"Note: Shared directories will not be saved and will be reset when UTM quits." = "Hinweis: freigegebene Ordner werden nicht gespeichert und beim Beenden von UTM zurückgesetzt."; + /* No comment provided by engineer. */ "Notes" = "Notizen"; @@ -795,7 +807,7 @@ /* No comment provided by engineer. */ "Summary" = "Zusammenfassung"; -/* No comment provided by engineer. */ +/* Welcome view */ "Support" = "Support"; /* UTMVirtualMachine */ @@ -945,6 +957,9 @@ /* No comment provided by engineer. */ "Use Command+Option (⌘+⌥) for input capture/release" = "Drücken Sie cmd+alt (⌘+⌥) um den Mauszeiger zu fangen oder freizugeben."; +/* Welcome view */ +"User Guide" = "Benutzerhandbuch"; + /* UTMQemuConstants */ "VirtFS" = "VirtFS"; From a1fbb7ad524efe65c52d5c6d86734d615e5fd16e Mon Sep 17 00:00:00 2001 From: osy <50960678+osy@users.noreply.github.com> Date: Wed, 19 Oct 2022 09:52:36 -0700 Subject: [PATCH 5/5] localization: missing Info.plist translation for macOS Copied from Platform/iOS/de.lproj/InfoPlist.strings --- Platform/de.lproj/InfoPlist.strings | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Platform/de.lproj/InfoPlist.strings b/Platform/de.lproj/InfoPlist.strings index f92878472..f66e8e7b7 100644 --- a/Platform/de.lproj/InfoPlist.strings +++ b/Platform/de.lproj/InfoPlist.strings @@ -1,14 +1,14 @@ /* Privacy - Location Always and When In Use Usage Description */ -"NSLocationAlwaysAndWhenInUseUsageDescription" = "由于iOS的机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; +"NSLocationAlwaysAndWhenInUseUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; /* Privacy - Location Always Usage Description */ -"NSLocationAlwaysUsageDescription" = "由于iOS的机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; +"NSLocationAlwaysUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; /* Privacy - Location When In Use Usage Description */ -"NSLocationWhenInUseUsageDescription" = "由于iOS的后台机制,后台保持虚拟机运行需要借助定位服务。您的位置信息将不会被发送。"; +"NSLocationWhenInUseUsageDescription" = "UTM verwendet den Ortungs-Zugriff nur, um die App im Hintergrund weiter auszuführen. Die Ortungsdaten werden nicht verwendet."; /* Privacy - Microphone Usage Description */ -"NSMicrophoneUsageDescription" = "UTM需要您的同意才能使用麦克风。"; +"NSMicrophoneUsageDescription" = "Für Mikrofonzugriff in der VM wird Ihre Erlaubnis benötigt."; /* (No Comment) */ -"UTM virtual machine" = "UTM虚拟机"; +"UTM virtual machine" = "Virtuelle Maschine (UTM)";