diff --git a/VoidLink/Localization/Localizable.xcstrings b/VoidLink/Localization/Localizable.xcstrings index dc04ab40..c12b0448 100644 --- a/VoidLink/Localization/Localizable.xcstrings +++ b/VoidLink/Localization/Localizable.xcstrings @@ -225,7 +225,7 @@ }, "zh-Hant" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "\n\n您裝置的遠端工作階段連線被阻擋。在此網路上連線時,串流可能無法運作。" } }, @@ -2274,6 +2274,64 @@ } } }, + "localMousePointerModeStackDoc" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/zdf5l29s3vohs6iq?singleDoc#" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/yfao3s5bhl93rs01?singleDoc#" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/yfao3s5bhl93rs01?singleDoc#" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/yfao3s5bhl93rs01?singleDoc#" + } + } + } + }, + "localMousePointerModeStackTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "- Captured: mouse pointer captured & limited within app window\n\n- Hidden: local mouse pointer is hidden.\n\n- Visible: local mouse pointer is visible to reduce the feeling of latency\n\nDo not select hidden/visible for any game play that uses mouse for camera control." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "- 被窗口捕获:鼠标指针被限制在app窗口内。\n\n- 隐藏:不显示本地鼠标指针。\n\n- 可见:显示iOS本地鼠标指针,减少延迟感。\n\n请勿使用 隐藏/可见 模式操作任何使用鼠标控制视角的游戏。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "- 被視窗捕獲:滑鼠游標被限制在應用程式視窗內。\n\n- 隱藏:不顯示本機滑鼠游標。\n\n- 可見:顯示 iOS 本機滑鼠游標,減少延遲感。\n\n​​請勿使用「隱藏/可見」模式操作任何需用滑鼠控制視角的遊戲。​​" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "- 被視窗捕獲:滑鼠游標被限制在應用程式視窗內。\n\n- 隱藏:不顯示本機滑鼠游標。\n\n- 可見:顯示 iOS 本機滑鼠游標,減少延遲感。\n\n​​請勿使用「隱藏/可見」模式操作任何需用滑鼠控制視角的遊戲。​​" + } + } + } + }, "Manual_Add_Host_Fail" : { "extractionState" : "manual", "localizations" : { @@ -2827,6 +2885,58 @@ } } }, + "onScreenWidgetStackDoc" : { + "extractionState" : "manual", + "localizations" : { + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/zrg0ga93avz4s747?singleDoc# " + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/zrg0ga93avz4s747?singleDoc# " + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/zrg0ga93avz4s747?singleDoc# " + } + } + } + }, + "onScreenWidgetStackTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoidLink supports rich, powerful custom on screen widgets including keyboard buttons, gamepad button & joysticks, mouse touchpad & button. Check online document for detail." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoidLink具备丰富而强大的自定义屏显控件,类型包括:键盘按键、手柄按键和摇杆、鼠标触摸板和按键等。详见在线文档。 " + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "VoidLink 提供豐富且強大的自訂螢幕顯示元件,類型包含:鍵盤按鍵、手把按鍵與搖桿、滑鼠觸控板及按鍵等。詳細資訊請參考線上說明文件。" + } + } + } + }, "Open widget tool in streaming by:\nSliding from %@ screen edge to open cmd tool.\nOr tap %d fingers on stream view, number of fingers required:" : { "extractionState" : "manual", "localizations" : { @@ -2850,6 +2960,35 @@ } } }, + "optimizeGamesStackTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recommended to keep this option enabled. Sunshine relies on it to load preset parameters." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sunshine 依据该选项状态决定是否加载一些预置参数,建议保持开启。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sunshine 依據此選項的狀態決定是否載入一些預設參數,建議保持開啟。" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sunshine 依據此選項的狀態決定是否載入一些預設參數,建議保持開啟。" + } + } + } + }, "Options" : { "extractionState" : "manual", "localizations" : { @@ -3869,6 +4008,35 @@ } } }, + "slideToSettingsDistanceStackTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A sufficient sliding distance ensures the menu is not triggered by unintentional touches." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "手势所要求的滑动距离, 可有效防止因误触展开菜单。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "手勢所需的滑動距離,可有效避免因誤觸而展開選單。" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "手勢所需的滑動距離,可有效避免因誤觸而展開選單。" + } + } + } + }, "Slow connection to PC, Reduce your bitrate" : { "extractionState" : "manual", "localizations" : { @@ -3893,7 +4061,33 @@ } }, "softKeyboardGestureStackDoc" : { - "extractionState" : "manual" + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/rgc9if4xrf352555?singleDoc#" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/ok4egvu4lt37wc1f?singleDoc#" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/ok4egvu4lt37wc1f?singleDoc#" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/ok4egvu4lt37wc1f?singleDoc#" + } + } + } }, "softKeyboardGestureStackTip" : { "extractionState" : "manual", @@ -4425,6 +4619,35 @@ } } }, + "unlockDisplayOrientationStackTip" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iPad is unable to lock run-time display orientation due to stage manager support. If necessary please manually lock display orientation." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "为支持台前调度,iPad无法自动锁定显示方向。如有必要请手动锁定。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "為支援幕前調度,iPad 無法自動鎖定顯示方向。如有需要,請手動鎖定。" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "為支援幕前調度,iPad 無法自動鎖定顯示方向。如有需要,請手動鎖定。" + } + } + } + }, "Unsupported on this device" : { "extractionState" : "manual", "localizations" : { diff --git a/VoidLink/ViewControllers/SettingsViewController.m b/VoidLink/ViewControllers/SettingsViewController.m index de106087..e855b86d 100644 --- a/VoidLink/ViewControllers/SettingsViewController.m +++ b/VoidLink/ViewControllers/SettingsViewController.m @@ -595,8 +595,8 @@ BOOL isCustomResolution(CGSize res) { [self addSetting:self.unlockDisplayOrientationStack ofId:@"unlockDisplayOrientationStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; [self addSetting:self.backgroundSessionTimerStack ofId:@"backgroundSessionTimerStack" withInfoTag:NO withDynamicLabel:YES to:otherSection]; [self addSetting:self.optimizeGamesStack ofId:@"optimizeGamesStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; - [self addSetting:self.multiControllerStack ofId:@"multiControllerStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; - [self addSetting:self.softKeyboardToolbarStack ofId:@"softKeyboardToolbarStack" withInfoTag:YES withDynamicLabel:NO to:otherSection]; + [self addSetting:self.multiControllerStack ofId:@"multiControllerStack" withInfoTag:NO withDynamicLabel:NO to:otherSection]; + [self addSetting:self.softKeyboardToolbarStack ofId:@"softKeyboardToolbarStack" withInfoTag:NO withDynamicLabel:NO to:otherSection]; [otherSection addToParentStack:_parentStack]; [otherSection setExpanded:YES]; @@ -607,7 +607,7 @@ BOOL isCustomResolution(CGSize res) { if (@available(iOS 13.0, *)) { [experimentalSection setSectionWithIcon:[UIImage imageNamed:@"flask"] andSize:20]; } - [self addSetting:self.touchMoveEventIntervalStack ofId:@"touchMoveEventIntervalStack" withInfoTag:YES withDynamicLabel:YES to:experimentalSection]; + [self addSetting:self.touchMoveEventIntervalStack ofId:@"touchMoveEventIntervalStack" withInfoTag:NO withDynamicLabel:YES to:experimentalSection]; [experimentalSection addToParentStack:_parentStack]; [experimentalSection setExpanded:YES]; } @@ -943,7 +943,7 @@ BOOL isCustomResolution(CGSize res) { [stack addSubview:button]; [NSLayoutConstraint activateConstraints:@[ [button.trailingAnchor constraintEqualToAnchor:stack.trailingAnchor constant:-4], - [button.bottomAnchor constraintEqualToAnchor:stack.arrangedSubviews[0].bottomAnchor constant:0], + [button.centerYAnchor constraintEqualToAnchor:stack.arrangedSubviews[0].centerYAnchor constant:0], ]]; } @@ -985,12 +985,32 @@ BOOL isCustomResolution(CGSize res) { if([sender.superview.accessibilityIdentifier isEqualToString: @"softKeyboardGestureStack" ]){ tipText = [LocalizationHelper localizedStringForKey:@"softKeyboardGestureStackTip"]; showOnlineDocAction = true; - onlineDocLink = @"softKeyboardGestureStackDoc"; + onlineDocLink = [LocalizationHelper localizedStringForKey:@"softKeyboardGestureStackDoc"]; + } + if([sender.superview.accessibilityIdentifier isEqualToString: @"slideToSettingsDistanceStack" ]){ + tipText = [LocalizationHelper localizedStringForKey:@"slideToSettingsDistanceStackTip"]; + showOnlineDocAction = false; + } + if([sender.superview.accessibilityIdentifier isEqualToString: @"unlockDisplayOrientationStack" ]){ + tipText = [LocalizationHelper localizedStringForKey:@"unlockDisplayOrientationStackTip"]; + showOnlineDocAction = false; + } + if([sender.superview.accessibilityIdentifier isEqualToString: @"optimizeGamesStack" ]){ + tipText = [LocalizationHelper localizedStringForKey:@"optimizeGamesStackTip"]; + showOnlineDocAction = false; + } + if([sender.superview.accessibilityIdentifier isEqualToString: @"localMousePointerModeStack"]){ + tipText = [LocalizationHelper localizedStringForKey:@"localMousePointerModeStackTip"]; + showOnlineDocAction = true; + onlineDocLink = [LocalizationHelper localizedStringForKey:@"localMousePointerModeStackDoc"]; + } + if([sender.superview.accessibilityIdentifier isEqualToString: @"onScreenWidgetStack"]){ + tipText = [LocalizationHelper localizedStringForKey:@"onScreenWidgetStackTip"]; + showOnlineDocAction = true; + onlineDocLink = [LocalizationHelper localizedStringForKey:@"onScreenWidgetStackDoc"]; } - - UIAlertController *tipsAlertController = [UIAlertController alertControllerWithTitle: [LocalizationHelper localizedStringForKey:@"Tips"] message: [LocalizationHelper localizedStringForKey:@"%@", tipText] preferredStyle:UIAlertControllerStyleAlert];