Skip to content

Commit d2b8d38

Browse files
committed
Merge remote-tracking branch 'betaflight/master' into 2025.12-maintenance
2 parents 76c88af + 9b47048 commit d2b8d38

26 files changed

+1727
-1521
lines changed

locales/ko/messages.json

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,9 @@
515515
"reportProblemsDialogFooter": {
516516
"message": "<span class=\"message-negative\"><strong>당신의 기체를 날리기 전에 이 문제들을 해결할 필요가 있습니다<\/span><\/strong>."
517517
},
518+
"reportProblemsDialogAPI_VERSION_MAX_SUPPORTED": {
519+
"message": "<span class=\"message-negative\">사용된 앱 버전($1)은 펌웨어 $2를 지원하지 않습니다<\/strong><\/span>.<br>$t(configuratorUpdateHelp.message)"
520+
},
518521
"reportProblemsDialogMOTOR_PROTOCOL_DISABLED": {
519522
"message": "<strong>선택된 모터 출력 프로토콜이 없습니다<\/strong>.<br>'$t(tabMotorTesting.message)' 탭의 '$t(configurationEscFeatures.message)'에서 ESC에 적합한 모터 출력 프로토콜을 선택하십시오.<br> $t(escProtocolDisabledMessage.message)"
520523
},
@@ -569,7 +572,7 @@
569572
"message": "설정 탭을 보기 전에 먼저 <strong>연결<\/strong>이 필요합니다."
570573
},
571574
"tabSwitchWaitForOperation": {
572-
"message": "지금 당장 이것을 실행할 수 <span class=\"message-negative\">없습니다<\/span>. 현재 작업이 완료될 때까지 기다려 주십시오 ..."
575+
"message": "지금 당장 이것을 실행할 수 <span class=\"message-negative\">없습니다<\/span>, 현재 작업이 완료될 때까지 기다려 주십시오 ..."
573576
},
574577
"tabSwitchUpgradeRequired": {
575578
"message": "$1 탭을 사용하기 전에 베타플라이트의 최신버전으로 펌웨어를 <strong>업그레이드<\/strong> 하여야 합니다."
@@ -1970,12 +1973,35 @@
19701973
"receiverRcSmoothingManual": {
19711974
"message": "수동"
19721975
},
1976+
"receiverRcSmoothingAutoFactor": {
1977+
"message": "설정점 자동 인자",
1978+
"description": "Setpoint Auto Factor parameter for RC smoothing"
1979+
},
1980+
"receiverRcSmoothingAutoFactorHelp": {
1981+
"message": "설정점 자동 인자 계산을 조정하며, 10은 기본 환경인자 대 지연 비율입니다. 숫자를 늘리면 RC 입력이 더 부드러워지는 동시에 지연도 더해집니다. 이것은 신뢰할 수 없는 RC 연결 또는 시네마틱 비행에 유용할 수 있습니다.<br>숫자가 50에 가까워지면 입력 지연이 눈에 띄게 됩니다.<br>TX와 RX가 전원이 공급되는 동안 CLI 명령 rc_smoothing_info를 사용하여 자동으로 계산된 RC 스무딩 컷오프를 확인하십시오.",
1982+
"description": "Setpoint Auto Factor parameter help message"
1983+
},
1984+
"receiverRcSmoothingAutoFactorHelp2": {
1985+
"message": "설정점 RC 스무딩을 조정합니다. 30이 기본값입니다. 예를 들어 HD 프리스타일의 경우 60, 씨네마틱 비행의 경우 90-120과 같이 높은 값이 매끄러운 RC 입력을 더 부드럽게 합니다. 참고: 값이 50을 초과하면 상당한 스틱 지연이 발생합니다. 예를 들어 20-25와 같이 낮은 값은 일부 RC 제어 단계를 모터 신호로 전달하여 모터 열을 약간 증가시키지만 RC 지연을 약간 감소시킵니다. 이것은 레이싱에 유용할 수 있습니다.",
1986+
"description": "Setpoint Auto Factor parameter help message"
1987+
},
1988+
"receiverRcSmoothingAutoFactorThrottle": {
1989+
"message": "스로틀 자동 인자",
1990+
"description": "Throttle Auto Factor parameter for RC smoothing"
1991+
},
1992+
"receiverRcSmoothingAutoFactorThrottleHelp": {
1993+
"message": "스로틀 자동 인자 계산을 조정하며, 10은 기본 환경인자 대 지연 비율입니다. 숫자를 늘리면 스로틀 입력이 더 부드러워지는 동시에 지연도 더해집니다. 이것은 신뢰할 수 없는 RC 연결 또는 시네마틱 비행에 유용할 수 있습니다.<br>숫자가 50에 가까워지면 입력 지연이 눈에 띄게 됩니다.<br>TX와 RX가 전원이 공급되는 동안 CLI 명령 rc_smoothing_info를 사용하여 자동으로 계산된 RC 스무딩 컷오프를 확인하십시오.",
1994+
"description": "Throttle Auto Factor parameter help message"
1995+
},
19731996
"receiverRcFeedforwardTypeSelect": {
19741997
"message": "피드포워드 컷오프 형식"
19751998
},
19761999
"receiverRcSetpointTypeSelect": {
19772000
"message": "셋포인트 컷오프 형식"
19782001
},
2002+
"receiverThrottleTypeSelect": {
2003+
"message": "스로틀 컷오프 형식"
2004+
},
19792005
"receiverRcSmoothingInterpolation": {
19802006
"message": "보간"
19812007
},
@@ -1997,9 +2023,18 @@
19972023
"receiverRcSmoothingFeedforwardManual": {
19982024
"message": "피드포워드 필터 컷오프 주파수를 자동으로 계산할지(권장) 사용자가 수동으로 선택할지 선택합니다. \"수동\"을 사용하는 것은 Crossfire와 같은 비행 중 변경될 수 있는 수신 프로토콜에 권장되지 않습니다."
19992025
},
2026+
"receiverRcSmoothingThrottleManual": {
2027+
"message": "RC 스무딩을 자동으로 계산할지(권장) 사용자가 수동으로 선택할지 선택합니다. \"수동\"을 사용하는 것은 Crossfire와 같은 비행 중 변경될 수 있는 수신 프로토콜에 권장되지 않습니다."
2028+
},
2029+
"rcSmoothingThrottleCutoffHelp": {
2030+
"message": "스로틀 스무딩 필터에 의해 사용되는 컷오프 주파수 (Hz)입니다. 낮은 값을 사용하면 입력이 부드러워지고 느린 수신기 프로토콜에 더 적합합니다. 대부분의 사용자는 이 값을 \"자동\"에 해당하는 0에 두어야합니다."
2031+
},
20002032
"receiverRcSmoothingSetpointHz": {
20012033
"message": "셋포인트 컷오프 주파수"
20022034
},
2035+
"receiverRcSmoothingThrottleCutoffHz": {
2036+
"message": "스로틀 컷오프 주파수"
2037+
},
20032038
"receiverRcSmoothingFeedforwardCutoff": {
20042039
"message": "피드포워드 컷오프 주파수"
20052040
},
@@ -3437,6 +3472,10 @@
34373472
"dataflashSaveFileDepreciationHint": {
34383473
"message": "이 방법은 속도가 느리고 본질적으로 오류\/파일이 손상되기 쉽습니다. MSP 연결 자체는 파일 전송에 적합하지 않은 본질적이고 근본적인 한계를 가지고 있기 때문입니다. 그것은 작은 로그 파일에만 사용할 수 있습니다. 이 방법을 사용하여 저장할 때 파일 전송이 실패하면 지원 요청을 생성하지 마십시오. 권장 방법은 '<b>$t(onboardLoggingRebootMscText.message)<\/b>'(아래)를 사용하여 대용량 저장 모드를 활성화하고, 비행 컨트롤러를 저장 장치로 액세스하여 로그 파일을 다운로드 하십시오."
34393474
},
3475+
"dataflashButtonSaveAndErase": {
3476+
"message": "저장 & 삭제",
3477+
"description": "Button text to save blackbox logs to file and then erase the flash"
3478+
},
34403479
"dataflashButtonErase": {
34413480
"message": "플래시 삭제"
34423481
},
@@ -4324,6 +4363,10 @@
43244363
"message": "D 텀 슬라이더 사용",
43254364
"description": "Disable or enable D Term Filter Tuning Slider"
43264365
},
4366+
"pidTuningPidSlidersHelp": {
4367+
"message": "기체 비행 특성(PID 게인)을 조정하는 슬라이더<br \/><br \/>댐핑 (D 게인): 빠른 움직임에 저항하고, P 진동을 최소화합니다.<br \/><br \/>추적 (P 및 I 게인): 기체의 응답성을 강화시킵니다; 너무 높으면, 떨림이나 진동이 발생할 수 있습니다.<br \/><br \/>스틱 응답 (피드포워드): 더 빠른 스틱 움직임에 대한 기체의 응답성을 증가시킵니다.<br \/><br \/>드리프트 - 워블(I 게인, 전문가): I의 미세 조정.<br \/><br \/>다이나믹 D (D 최대, 전문가): 빠른 이동 중에 D가 부스트될 수 있는 최대 양을 설정합니다.<br \/><br \/>피치 댐핑 (피치:롤 D 비율, 전문가): 롤에 대한 피치의 댐핑 양을 증가시킵니다.<br \/><br \/>피치 추적 (피치:롤 P, I 및 F 비율, 전문가): 롤에 대한 피치의 안정화 강도를 증가시킵니다.<br \/><br \/>마스터 승수 (모든 게인, 전문가): 비율을 일정하게 유지하면서 모든 PID 게인을 높이거나 낮춥니다.",
4368+
"description": "Overall helpicon message for PID tuning sliders"
4369+
},
43274370
"pidTuningSliderWarning": {
43284371
"message": "<span class=\"message-negative\">주의<\/span>: 현재 슬라이더 위치는 기체가 멀리 날아가거나, 모터 손상 또는 안전하지 않은 기체 동작이 발생할 수 있습니다. 신중하게 진행하십시오.",
43294372
"description": "Warning shown when tuning slider are above safe limits"
@@ -5943,6 +5986,13 @@
59435986
"osdDescElementEscRpm": {
59445987
"message": "ESC 텔레메트리에 의해 보고된 RPM"
59455988
},
5989+
"osdTextElementRemainingTimeEstimate": {
5990+
"message": "타이머: 남은 시간 추정",
5991+
"description": "One of the elements of the OSD"
5992+
},
5993+
"osdDescElementRemainingTimeEstimate": {
5994+
"message": "남은 비행시간 예상"
5995+
},
59465996
"osdTextElementRtcDateTime": {
59475997
"message": "RTC 날짜 및 시간",
59485998
"description": "One of the elements of the OSD"
@@ -7581,6 +7631,15 @@
75817631
"firmwareFlasherOSDProtocolNotSelectedContinue": {
75827632
"message": "OSD 프로토콜 없이 계속 진행"
75837633
},
7634+
"firmwareFlasherOptionLabelVerifiedPartner": {
7635+
"message": "인증된 파트너"
7636+
},
7637+
"firmwareFlasherOptionLabelVendorCommunity": {
7638+
"message": "공급자 \/ 커뮤니티"
7639+
},
7640+
"firmwareFlasherOptionLabelLegacy": {
7641+
"message": "레거시"
7642+
},
75847643
"coreBuild": {
75857644
"message": "코어 빌드"
75867645
},

src/components/tabs/BaseTab.vue

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<template>
2+
<div :class="[`tab-${tabName}`, extraClass]">
3+
<slot></slot>
4+
</div>
5+
</template>
6+
7+
<script>
8+
import { defineComponent, onMounted, onUnmounted, inject } from "vue";
9+
import GUI from "../../js/gui";
10+
11+
/**
12+
* BaseTab provides common tab lifecycle management for Vue tabs.
13+
*
14+
* Usage:
15+
* <BaseTab tab-name="help" @mounted="onTabMounted">
16+
* <template>...content...</template>
17+
* </BaseTab>
18+
*/
19+
export default defineComponent({
20+
name: "BaseTab",
21+
props: {
22+
tabName: {
23+
type: String,
24+
required: true,
25+
},
26+
extraClass: {
27+
type: String,
28+
default: "",
29+
},
30+
},
31+
emits: ["mounted", "cleanup"],
32+
setup(props, { emit }) {
33+
// Access the global reactive model
34+
const model = inject("betaflightModel", null);
35+
36+
onMounted(() => {
37+
GUI.active_tab = props.tabName;
38+
emit("mounted");
39+
});
40+
41+
onUnmounted(() => {
42+
// Clean up any intervals/timeouts when tab is destroyed
43+
// Global cleanup removed to allow tabs to manage their own intervals individually
44+
// GUI.interval_kill_all();
45+
// GUI.timeout_kill_all();
46+
emit("cleanup");
47+
});
48+
49+
return { model };
50+
},
51+
});
52+
</script>

src/components/tabs/HelpTab.vue

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<template>
2+
<BaseTab tab-name="help">
3+
<div class="content_wrapper grid-row">
4+
<div class="grid-col col8">
5+
<div class="gui_box">
6+
<div class="gui_box_titlebar">
7+
<div class="spacer_box_title" v-html="$t('defaultDocumentationHead')"></div>
8+
</div>
9+
<div class="spacer">
10+
<p v-html="$t('defaultDocumentation')"></p>
11+
<ul>
12+
<li>
13+
<span v-html="$t('defaultDocumentation1')"></span>
14+
</li>
15+
<li>
16+
<span v-html="$t('defaultDocumentation2')"></span>
17+
</li>
18+
</ul>
19+
</div>
20+
</div>
21+
</div>
22+
<div class="grid-col col4">
23+
<div class="gui_box">
24+
<div class="gui_box_titlebar">
25+
<div class="spacer_box_title" v-html="$t('defaultSupportHead')"></div>
26+
</div>
27+
<div class="spacer">
28+
<p v-html="$t('defaultSupport')"></p>
29+
<div class="subline">
30+
<strong v-html="$t('defaultSupportSubline1')"></strong>
31+
</div>
32+
<ul>
33+
<li>
34+
<span v-html="$t('defaultSupport1')"></span>
35+
</li>
36+
<li>
37+
<span v-html="$t('defaultSupport2')"></span>
38+
</li>
39+
<li>
40+
<span v-html="$t('defaultSupport3')"></span>
41+
</li>
42+
</ul>
43+
<div class="subline">
44+
<strong v-html="$t('defaultSupportSubline2')"></strong>
45+
</div>
46+
<ul>
47+
<li>
48+
<span v-html="$t('defaultSupport4')"></span>
49+
</li>
50+
<li>
51+
<span v-html="$t('defaultSupport5')"></span>
52+
</li>
53+
</ul>
54+
</div>
55+
</div>
56+
</div>
57+
</div>
58+
</BaseTab>
59+
</template>
60+
61+
<script>
62+
import { defineComponent } from "vue";
63+
import BaseTab from "./BaseTab.vue";
64+
import GUI from "../../js/gui";
65+
66+
export default defineComponent({
67+
name: "HelpTab",
68+
components: {
69+
BaseTab,
70+
},
71+
setup() {
72+
// Called after tab is ready - equivalent to old content_ready callback
73+
function onTabReady() {
74+
GUI.content_ready();
75+
}
76+
77+
return { onTabReady };
78+
},
79+
mounted() {
80+
this.onTabReady();
81+
},
82+
});
83+
</script>
84+
85+
<style scoped>
86+
/* Inherit styles from existing help.html via global CSS */
87+
</style>

0 commit comments

Comments
 (0)