فهرست منبع

fix(i18n): strip unnecessary quote escapes in ko.ts and tr.ts

  ESLint no-useless-escape flagged 156 errors (153 in ko.ts, 3 in tr.ts):
  \" inside single-quoted Korean strings and \' inside double-quoted
  Turkish strings. The escapes weren't needed because the surrounding
  quote style differs from the escaped quote. Visible-text unchanged;
  i18n parity green at 5007 leaves × 10 locales.
maziggy 23 ساعت پیش
والد
کامیت
bd26050fad
3فایلهای تغییر یافته به همراه71 افزوده شده و 72 حذف شده
  1. 69 70
      frontend/src/i18n/locales/ko.ts
  2. 2 2
      frontend/src/i18n/locales/tr.ts
  3. 0 0
      static/assets/index-x75Gd_Ii.js

+ 69 - 70
frontend/src/i18n/locales/ko.ts

@@ -149,7 +149,7 @@ export default {
     },
     progress: '{{percent}}% 완료',
     timeRemaining: '{{time}} 남음',
-    deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+    deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
     maintenanceOk: '유지보수 정상',
     maintenanceWarning: '{{count}}개 경고',
     maintenanceWarning_plural: '{{count}}개 경고',
@@ -382,32 +382,32 @@ export default {
       waitForLayer: '객체를 건너뛰려면 2층 이상을 기다리세요 (현재 {{layer}}층)',
       skip: '건너뛰기',
       confirmTitle: '객체를 건너뛰시겠습니까?',
-      confirmMessage: '\"{{name}}\"을(를) 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.'
+      confirmMessage: '"{{name}}"을(를) 건너뛰시겠습니까? 이 작업은 취소할 수 없습니다.'
     },
     confirm: {
       deleteTitle: '프린터 삭제',
-      deleteMessage: '\"{{name}}\"을(를) 삭제하시겠습니까? 모든 연결 설정이 제거됩니다.',
+      deleteMessage: '"{{name}}"을(를) 삭제하시겠습니까? 모든 연결 설정이 제거됩니다.',
       deleteArchivesNote: '이 프린터의 모든 인쇄 기록이 영구적으로 삭제됩니다.',
       keepArchivesNote: '인쇄 기록은 유지되지만 이 프린터와 연결이 해제됩니다.',
       stopTitle: '인쇄 정지',
-      stopMessage: '\"{{name}}\"의 현재 인쇄를 정지하시겠습니까? 인쇄 작업이 취소됩니다.',
+      stopMessage: '"{{name}}"의 현재 인쇄를 정지하시겠습니까? 인쇄 작업이 취소됩니다.',
       stopButton: '인쇄 정지',
       pauseTitle: '인쇄 일시정지',
-      pauseMessage: '\"{{name}}\"의 현재 인쇄를 일시정지하시겠습니까?',
+      pauseMessage: '"{{name}}"의 현재 인쇄를 일시정지하시겠습니까?',
       pauseButton: '인쇄 일시정지',
       resumeTitle: '인쇄 재개',
-      resumeMessage: '\"{{name}}\"의 인쇄를 재개하시겠습니까?',
+      resumeMessage: '"{{name}}"의 인쇄를 재개하시겠습니까?',
       resumeButton: '인쇄 재개',
       powerOnTitle: '프린터 전원 켜기',
-      powerOnMessage: '\"{{name}}\"의 전원을 켜시겠습니까?',
+      powerOnMessage: '"{{name}}"의 전원을 켜시겠습니까?',
       powerOnButton: '전원 켜기',
       powerOffTitle: '프린터 전원 끄기',
-      powerOffMessage: '\"{{name}}\"의 전원을 끄시겠습니까?',
-      powerOffWarning: '경고: \"{{name}}\"이(가) 현재 인쇄 중입니다! 전원을 끄시겠습니까? 인쇄가 중단되고 프린터가 손상될 수 있습니다.',
+      powerOffMessage: '"{{name}}"의 전원을 끄시겠습니까?',
+      powerOffWarning: '경고: "{{name}}"이(가) 현재 인쇄 중입니다! 전원을 끄시겠습니까? 인쇄가 중단되고 프린터가 손상될 수 있습니다.',
       powerOffButton: '전원 끄기',
-      haToggleTitle: '\"{{name}}\" 토글',
+      haToggleTitle: '"{{name}}" 토글',
       haToggleMessage: 'Home Assistant 엔티티 {{entity}}를 토글하시겠습니까? 현재 켜져 있으면 전원이 꺼질 수 있습니다.',
-      haToggleWarning: '경고: \"{{name}}\"이(가) 현재 인쇄 중입니다! {{entity}}를 토글하면 전원이 차단되어 인쇄가 중단될 수 있습니다. 계속하시겠습니까?',
+      haToggleWarning: '경고: "{{name}}"이(가) 현재 인쇄 중입니다! {{entity}}를 토글하면 전원이 차단되어 인쇄가 중단될 수 있습니다. 계속하시겠습니까?',
       haToggleButton: '토글'
     },
     bulk: {
@@ -787,15 +787,15 @@ export default {
     },
     modal: {
       deleteArchive: '아카이브 삭제',
-      deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
+      deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
       deleteButton: '삭제',
       removeSource3mf: '소스 3MF 제거',
-      removeSource3mfConfirm: '\"{{name}}\"에서 소스 3MF 파일을 제거하시겠습니까? 원본 슬라이서 프로젝트 파일이 삭제됩니다.',
+      removeSource3mfConfirm: '"{{name}}"에서 소스 3MF 파일을 제거하시겠습니까? 원본 슬라이서 프로젝트 파일이 삭제됩니다.',
       removeButton: '제거',
       removeF3d: 'F3D 제거',
-      removeF3dConfirm: '\"{{name}}\"에서 Fusion 360 디자인 파일을 제거하시겠습니까?',
+      removeF3dConfirm: '"{{name}}"에서 Fusion 360 디자인 파일을 제거하시겠습니까?',
       removeTimelapse: '타임랩스 제거',
-      removeTimelapseConfirm: '\"{{name}}\"에서 타임랩스 영상을 제거하시겠습니까?',
+      removeTimelapseConfirm: '"{{name}}"에서 타임랩스 영상을 제거하시겠습니까?',
       timelapse: '{{name}} - 타임랩스',
       selectTimelapse: '타임랩스 선택',
       selectTimelapseDesc: '자동 일치 항목 없음. 이 인쇄의 타임랩스를 선택하세요:',
@@ -980,7 +980,7 @@ export default {
     },
     empty: {
       title: '예약된 인쇄 없음',
-      description: '아카이브 페이지의 컨텍스트 메뉴에서 \"예약\" 옵션을 사용하거나 파일을 드래그 앤 드롭하여 시작하세요.'
+      description: '아카이브 페이지의 컨텍스트 메뉴에서 "예약" 옵션을 사용하거나 파일을 드래그 앤 드롭하여 시작하세요.'
     },
     time: {
       asap: '즉시',
@@ -1021,11 +1021,11 @@ export default {
     },
     confirm: {
       cancelTitle: '예약된 인쇄 취소',
-      cancelMessage: '\"{{name}}\"을(를) 취소하시겠습니까?',
+      cancelMessage: '"{{name}}"을(를) 취소하시겠습니까?',
       stopTitle: '인쇄 정지',
-      stopMessage: '\"{{name}}\"의 현재 인쇄를 정지하시겠습니까? 프린터의 인쇄 작업이 취소됩니다.',
+      stopMessage: '"{{name}}"의 현재 인쇄를 정지하시겠습니까? 프린터의 인쇄 작업이 취소됩니다.',
       removeTitle: '기록에서 제거',
-      removeMessage: '대기열 기록에서 \"{{name}}\"을(를) 제거하시겠습니까?',
+      removeMessage: '대기열 기록에서 "{{name}}"을(를) 제거하시겠습니까?',
       clearHistoryTitle: '기록 지우기',
       clearHistoryMessage: '기록에서 {{count}}개 항목을 모두 제거하시겠습니까?',
       cancelButton: '인쇄 취소',
@@ -1312,9 +1312,9 @@ export default {
     printHoursUpdated: '인쇄 시간이 업데이트되었습니다',
     printerAssigned: '프린터가 할당되었습니다',
     printerRemoved: '프린터가 제거되었습니다',
-    deleteTypeConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+    deleteTypeConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
     deleteSystemTypeTitle: '기본 유지보수 작업을 삭제하시겠습니까?',
-    deleteSystemTypeMessage: '기본 유지보수 작업 \"{{name}}\"을(를) 삭제하시겠습니까?',
+    deleteSystemTypeMessage: '기본 유지보수 작업 "{{name}}"을(를) 삭제하시겠습니까?',
     noPermissionUpdate: '유지보수 항목을 업데이트할 권한이 없습니다',
     noPermissionPerform: '유지보수를 수행할 권한이 없습니다',
     noPermissionEditTypes: '유지보수 유형을 편집할 권한이 없습니다',
@@ -1359,7 +1359,7 @@ export default {
       unregisterSuccess: '기기 등록 해제됨',
       unregisterError: '기기 등록 해제 실패',
       confirmTitle: 'SpoolBuddy 기기를 등록 해제하시겠습니까?',
-      confirmBody: '데이터베이스에서 \"{{hostname}}\" ({{deviceId}})를 제거합니다. 기기가 온라인이면 다음 하트비트에서 자동으로 재등록됩니다.',
+      confirmBody: '데이터베이스에서 "{{hostname}}" ({{deviceId}})를 제거합니다. 기기가 온라인이면 다음 하트비트에서 자동으로 재등록됩니다.',
       ipAddress: 'IP 주소',
       firmware: '펌웨어',
       lastSeen: '마지막 확인',
@@ -1373,19 +1373,19 @@ export default {
       disk: '디스크',
       update: '업데이트',
       updateConfirmTitle: 'Spoolbuddy 데몬을 업데이트하시겠습니까?',
-      updateConfirmBody: '\"{{hostname}}\"에서 소프트웨어 업데이트를 실행하시겠습니까? 업데이트가 적용되면 데몬이 재시작됩니다.',
+      updateConfirmBody: '"{{hostname}}"에서 소프트웨어 업데이트를 실행하시겠습니까? 업데이트가 적용되면 데몬이 재시작됩니다.',
       restartBrowser: '브라우저 재시작',
       restartBrowserConfirmTitle: '키오스크 브라우저를 재시작하시겠습니까?',
-      restartBrowserConfirmBody: '\"{{hostname}}\"의 키오스크 브라우저를 재시작하시겠습니까? 화면이 잠시 꺼집니다.',
+      restartBrowserConfirmBody: '"{{hostname}}"의 키오스크 브라우저를 재시작하시겠습니까? 화면이 잠시 꺼집니다.',
       restartDaemon: '데몬 재시작',
       restartDaemonConfirmTitle: 'Spoolbuddy 데몬을 재시작하시겠습니까?',
-      restartDaemonConfirmBody: '\"{{hostname}}\"의 Spoolbuddy 데몬을 재시작하시겠습니까? 기기가 몇 초 동안 오프라인 상태가 됩니다.',
+      restartDaemonConfirmBody: '"{{hostname}}"의 Spoolbuddy 데몬을 재시작하시겠습니까? 기기가 몇 초 동안 오프라인 상태가 됩니다.',
       reboot: '재부팅',
       rebootConfirmTitle: '기기를 재부팅하시겠습니까?',
-      rebootConfirmBody: '\"{{hostname}}\"을(를) 재부팅하시겠습니까? 기기가 약 1분 동안 오프라인 상태가 됩니다.',
+      rebootConfirmBody: '"{{hostname}}"을(를) 재부팅하시겠습니까? 기기가 약 1분 동안 오프라인 상태가 됩니다.',
       shutdown: '종료',
       shutdownConfirmTitle: '기기를 종료하시겠습니까?',
-      shutdownConfirmBody: '\"{{hostname}}\"을(를) 종료하시겠습니까? 다시 켜려면 물리적 접근이 필요합니다.',
+      shutdownConfirmBody: '"{{hostname}}"을(를) 종료하시겠습니까? 다시 켜려면 물리적 접근이 필요합니다.',
       commandConfirm: '확인',
       commandQueued: '명령이 대기열에 추가됨',
       commandError: '명령 전송 실패',
@@ -1589,7 +1589,7 @@ export default {
     syncInfoAutoCreate: '새 스풀은 첫 번째 동기화 시 Spoolman에 자동 생성됨',
     syncInfoThirdPartySkipped: '비 Bambu Lab 스풀 (서드파티, 리필)은 건너뜀',
     linkingExistingSpools: '기존 스풀 연결',
-    linkingExistingSpoolsDesc: '기존 Spoolman 스풀을 AMS에 연결하려면 AMS 슬롯 위에 마우스를 올리고 \"Spoolman에 연결\"을 클릭하세요.',
+    linkingExistingSpoolsDesc: '기존 Spoolman 스풀을 AMS에 연결하려면 AMS 슬롯 위에 마우스를 올리고 "Spoolman에 연결"을 클릭하세요.',
     syncMode: '동기화 모드',
     syncModeAuto: '자동',
     syncModeManual: '수동만',
@@ -1802,7 +1802,7 @@ export default {
     preferredSlicerDescription: '파일을 열 슬라이서 앱을 선택하세요',
     orcaslicerKnownIssuesWarning: 'OrcaSlicer 2.3.2 / 2.4.0-dev에는 Bambu 제작 3MF 파일 슬라이싱을 차단하는 알려진 CLI 버그가 있습니다. 업스트림 수정이 출시될 때까지 Bambu Studio를 사용하는 것이 좋습니다.',
     useSlicerApi: '슬라이서 API 사용',
-    useSlicerApiDescription: '켜면 \"슬라이스\" 작업이 앱 내 슬라이서 모달을 열고 슬라이서 API 사이드카를 호출합니다. 끄면 URI 스킴을 통해 데스크톱 슬라이서로 전달합니다.',
+    useSlicerApiDescription: '켜면 "슬라이스" 작업이 앱 내 슬라이서 모달을 열고 슬라이서 API 사이드카를 호출합니다. 끄면 URI 스킴을 통해 데스크톱 슬라이서로 전달합니다.',
     slicerCard: '슬라이서',
     orcaslicerApiUrl: 'OrcaSlicer 사이드카 URL',
     bambuStudioApiUrl: 'Bambu Studio 사이드카 URL',
@@ -1821,7 +1821,7 @@ export default {
       deleteSuccess: '번들 제거됨',
       deleteError: '번들 삭제 실패: {{message}}',
       confirmDeleteTitle: '이 번들을 제거하시겠습니까?',
-      confirmDeleteMessage: '\"{{name}}\"을(를) 참조하는 슬라이스 요청은 번들이 재가져오기될 때까지 실패합니다.'
+      confirmDeleteMessage: '"{{name}}"을(를) 참조하는 슬라이스 요청은 번들이 재가져오기될 때까지 실패합니다.'
     },
     externalCameras: '외부 카메라',
     costTracking: '비용 추적',
@@ -1901,7 +1901,7 @@ export default {
       noMatch: '검색에 일치하는 항목 없음',
       empty: '카탈로그에 항목 없음',
       deleteEntry: '항목 삭제',
-      deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+      deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
       resetCatalog: '카탈로그 초기화',
       resetConfirm: '카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 항목이 제거됩니다.',
       loadFailed: '스풀 카탈로그 로드 실패',
@@ -1951,7 +1951,7 @@ export default {
       noMatch: '검색에 일치하는 색상 없음',
       empty: '카탈로그에 색상 없음',
       deleteColor: '색상 삭제',
-      deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+      deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
       resetCatalog: '색상 카탈로그 초기화',
       resetConfirm: '카탈로그를 기본값으로 초기화하시겠습니까? 모든 사용자 지정 색상이 제거됩니다.',
       sync: '동기화',
@@ -2181,7 +2181,7 @@ export default {
       updated: '제공자가 업데이트되었습니다.',
       deleted: '제공자가 삭제되었습니다.',
       deleteTitle: '제공자 삭제',
-      deleteMessage: '\"{{name}}\"을(를) 삭제하시겠습니까? 연결된 모든 사용자 계정의 연결이 해제됩니다.',
+      deleteMessage: '"{{name}}"을(를) 삭제하시겠습니까? 연결된 모든 사용자 계정의 연결이 해제됩니다.',
       form: {
         name: '표시 이름',
         issuerUrl: '발급자 URL',
@@ -2298,7 +2298,7 @@ export default {
     title: 'MQTT 디버그 로그',
     searchPlaceholder: '토픽 또는 페이로드 검색...',
     noMessages: '아직 기록된 메시지 없음',
-    startLoggingHint: '\"로깅 시작\"을 클릭하여 MQTT 메시지 캡처 시작',
+    startLoggingHint: '"로깅 시작"을 클릭하여 MQTT 메시지 캡처 시작',
     noMessagesMatch: '필터에 일치하는 메시지 없음',
     adjustFilterHint: '검색 또는 필터 기준을 조정해 보세요',
     incoming: '수신',
@@ -2320,7 +2320,7 @@ export default {
     filterPlaceholder: '파일 필터...',
     deleteButton: '삭제',
     deleteFiles: '{{count}}개 파일 삭제',
-    deleteFileConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
+    deleteFileConfirm: '"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
     deleteFilesConfirm: '선택된 {{count}}개 파일을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
     noFiles: '프린터에 파일 없음',
     loadingFiles: '파일 로딩 중...',
@@ -2601,7 +2601,7 @@ export default {
       fillRequired: '모든 필수 항목을 입력해 주세요',
       passwordsDoNotMatch: '비밀번호가 일치하지 않습니다',
       passwordTooShort: '비밀번호는 최소 6자 이상이어야 합니다',
-      ldapProvisioned: 'LDAP 사용자 \"{{username}}\"이(가) 생성되었습니다'
+      ldapProvisioned: 'LDAP 사용자 "{{username}}"이(가) 생성되었습니다'
     },
     modal: {
       createUser: '사용자 생성',
@@ -2642,7 +2642,7 @@ export default {
       groups: '그룹',
       optional: '선택사항',
       autoGeneratedPassword: '안전한 비밀번호가 자동으로 생성되어 사용자에게 이메일로 전송됩니다.',
-      passwordManagedByAdvancedAuth: '비밀번호는 고급 인증에 의해 관리됩니다. \"비밀번호 재설정\"을 사용하여 이메일로 새 비밀번호를 전송하세요.',
+      passwordManagedByAdvancedAuth: '비밀번호는 고급 인증에 의해 관리됩니다. "비밀번호 재설정"을 사용하여 이메일로 새 비밀번호를 전송하세요.',
       resetPassword: '비밀번호 재설정',
       resettingPassword: '비밀번호 재설정 중...'
     },
@@ -2759,7 +2759,7 @@ export default {
       editable: '편집 가능',
       failedToLoadDetails: '프리셋 세부 정보 불러오기 실패',
       deleteConfirm: '이 프리셋을 삭제하시겠습니까?',
-      deleteWarning: 'Bambu 클라우드에서 \"{{name}}\"을(를) 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.',
+      deleteWarning: 'Bambu 클라우드에서 "{{name}}"을(를) 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.',
       noDuplicatePermission: '프리셋 복제 권한이 없습니다',
       noEditPermission: '프리셋 편집 권한이 없습니다',
       noDeletePermission: '프리셋 삭제 권한이 없습니다',
@@ -2773,7 +2773,7 @@ export default {
         created: '프리셋 생성됨',
         updated: '프리셋 업데이트됨',
         duplicated: '프리셋 복제됨',
-        fieldAdded: '\"{{key}}\" 필드 추가됨',
+        fieldAdded: '"{{key}}" 필드 추가됨',
         exported: '프리셋 내보냄'
       },
       baseLabel: '기본: {{name}}',
@@ -2852,7 +2852,7 @@ export default {
       typeFilter: '유형:',
       deleteTitle: '템플릿 삭제',
       deleteWarning: '이 작업은 취소할 수 없습니다',
-      deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+      deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
       namePlaceholder: '템플릿 이름',
       descriptionPlaceholder: '설명',
       settingsJson: '설정 (JSON)',
@@ -2892,12 +2892,12 @@ export default {
     folderNamePlaceholder: '예: 기능성 부품',
     renameFile: '파일 이름 바꾸기',
     renameFolder: '폴더 이름 바꾸기',
-    invalidFilenameChar: '\"{{char}}\" 문자는 인쇄 파일 이름에 허용되지 않습니다. 프린터 SD 카드가 거부하는 문자: < > : \" / \\ | ? *',
+    invalidFilenameChar: '"{{char}}" 문자는 인쇄 파일 이름에 허용되지 않습니다. 프린터 SD 카드가 거부하는 문자: < > : " / \\ | ? *',
     moveFiles: '{{count}}개 파일 이동',
     rootNoFolder: '루트 (폴더 없음)',
     current: '현재',
     linkFolder: '폴더 연결',
-    linkFolderDescription: '\"{{name}}\"을(를) 프로젝트 또는 아카이브에 연결하여 빠른 접근.',
+    linkFolderDescription: '"{{name}}"을(를) 프로젝트 또는 아카이브에 연결하여 빠른 접근.',
     project: '프로젝트',
     archive: '아카이브',
     noProjectsFound: '프로젝트를 찾을 수 없음',
@@ -3188,7 +3188,7 @@ export default {
       sourcingUrlPlaceholder: '구매 URL (선택사항)',
       remarksPlaceholder: '비고 (선택사항)',
       deletePart: '부품 삭제',
-      deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까?',
+      deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까?',
       noUpdatePermission: '부품 업데이트 권한이 없습니다',
       noEditPermission: '부품 편집 권한이 없습니다',
       noDeletePermission: '부품 삭제 권한이 없습니다',
@@ -3410,7 +3410,7 @@ export default {
     subtype: '하위 유형',
     brand: '브랜드',
     searchBrand: '브랜드 검색...',
-    useCustomBrand: '\"{{brand}}\" 사용',
+    useCustomBrand: '"{{brand}}" 사용',
     useCustomMaterial: '사용자 지정 재료 사용: {{material}}',
     colorName: '색상 이름',
     colorNamePlaceholder: '제이드 화이트, 파이어 레드...',
@@ -3605,10 +3605,10 @@ export default {
     fillSourceLabel: '(재고)',
     lowStockThresholdError: '임계값은 0.1에서 99.9 사이여야 합니다',
     assignMismatchTitle: '재료 불일치',
-    assignMismatchMessage: '선택한 스풀 재료 \"{{spoolMaterial}}\"이(가) {{location}}의 트레이 재료 \"{{trayMaterial}}\"과(와) 일치하지 않습니다. 그래도 할당하시겠습니까?',
+    assignMismatchMessage: '선택한 스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 트레이 재료 "{{trayMaterial}}"과(와) 일치하지 않습니다. 그래도 할당하시겠습니까?',
     assignMismatchConfirm: '그래도 할당',
-    assignPartialMismatchMessage: '스풀 재료 \"{{spoolMaterial}}\"이(가) {{location}}의 \"{{trayMaterial}}\"과(와) 유사하지만 정확히 일치하지 않습니다. 계속하시겠습니까?',
-    assignProfileMismatchMessage: '스풀 프로필 \"{{spoolProfile}}\"이(가) {{location}}의 트레이 프로필 \"{{trayProfile}}\"과(와) 일치하지 않습니다. 계속하시겠습니까?',
+    assignPartialMismatchMessage: '스풀 재료 "{{spoolMaterial}}"이(가) {{location}}의 "{{trayMaterial}}"과(와) 유사하지만 정확히 일치하지 않습니다. 계속하시겠습니까?',
+    assignProfileMismatchMessage: '스풀 프로필 "{{spoolProfile}}"이(가) {{location}}의 트레이 프로필 "{{trayProfile}}"과(와) 일치하지 않습니다. 계속하시겠습니까?',
     assignReconfigureNote: 'AMS 슬롯이 스풀의 프로필을 사용하도록 재구성됩니다.',
     spoolmanFilamentCatalog: 'Spoolman 필라멘트 카탈로그',
     pickFromSpoolmanCatalog: 'Spoolman 카탈로그에서 선택…',
@@ -3625,7 +3625,7 @@ export default {
     resetUsageConfirm: '이 스풀의 소비된 그램 카운터를 0으로 초기화하시겠습니까? 이후 인쇄는 처음부터 추적됩니다. 스풀 자체, 잔여 무게 계산 및 설정은 변경되지 않습니다.',
     resetAllUsage: '모든 스풀 사용량 초기화',
     resetAllUsageTooltip: '모든 스풀의 소비된 그램 카운터를 0으로 초기화합니다',
-    resetAllUsageConfirm: '{{count}}개 스풀(아카이브 포함)의 소비된 그램 카운터를 모두 0으로 초기화하시겠습니까? 이는 \"총 소비량\" 통계를 지워 이후 인쇄가 처음부터 추적되도록 합니다. 스풀과 잔여 무게는 변경되지 않습니다.',
+    resetAllUsageConfirm: '{{count}}개 스풀(아카이브 포함)의 소비된 그램 카운터를 모두 0으로 초기화하시겠습니까? 이는 "총 소비량" 통계를 지워 이후 인쇄가 처음부터 추적되도록 합니다. 스풀과 잔여 무게는 변경되지 않습니다.',
     usageReset: '스풀 사용량이 0으로 초기화되었습니다',
     allUsageReset: '{{count}}개 스풀 초기화됨',
     resetUsageFailed: '스풀 사용량 초기화 실패'
@@ -3808,7 +3808,7 @@ export default {
     restoreReplacesAll: '복원은 모든 데이터를 교체합니다.',
     restoreReplacesAllDetail: '현재 데이터베이스와 파일이 완전히 교체됩니다. 복원 후 재시작이 필요합니다.',
     restoreConfirmTitle: '백업 복원',
-    restoreConfirmMessage: '\"{{filename}}\"에서 복원하시겠습니까? 현재 데이터베이스와 모든 파일이 완전히 교체됩니다. 복원 후 애플리케이션을 재시작해야 합니다.',
+    restoreConfirmMessage: '"{{filename}}"에서 복원하시겠습니까? 현재 데이터베이스와 모든 파일이 완전히 교체됩니다. 복원 후 애플리케이션을 재시작해야 합니다.',
     restoreConfirmButton: '백업 복원',
     uploadingFile: '백업 파일 업로드 중...',
     backupRestoredRestart: '백업 복원됨. Bambuddy를 재시작하세요.',
@@ -3939,7 +3939,7 @@ export default {
     tags: '태그',
     tagsPlaceholder: '태그 추가...',
     addMoreTags: '더 많은 태그 추가...',
-    matchingTags: '\"{{query}}\"와 일치',
+    matchingTags: '"{{query}}"와 일치',
     existingTags: '기존 태그',
     clickToAdd: '(클릭하여 추가)',
     status: '상태',
@@ -4033,7 +4033,7 @@ export default {
     deleteConfirm: {
       title: '프로필 삭제',
       cannotUndo: '이 작업은 취소할 수 없습니다',
-      message: '프린터에서 \"{{name}}\"을(를) 삭제하시겠습니까?'
+      message: '프린터에서 "{{name}}"을(를) 삭제하시겠습니까?'
     },
     bulkDelete: {
       title: '프로필 삭제',
@@ -4074,7 +4074,7 @@ export default {
     },
     enable: {
       title: '가상 프린터 활성화',
-      visibleInSlicer: '슬라이서 검색에서 \"Bambuddy\"로 표시됨',
+      visibleInSlicer: '슬라이서 검색에서 "Bambuddy"로 표시됨',
       proxyingTo: '{{name}}으로 프록시 중',
       notActive: '활성화되지 않음'
     },
@@ -4137,14 +4137,14 @@ export default {
     },
     archiveNameSource: {
       title: '아카이브 이름 출처',
-      description: '가상 프린터를 통해 파일이 도착할 때 새 아카이브의 이름 지정 방법을 선택합니다. \"메타데이터\"는 3MF의 슬라이서 내장 제목을 사용합니다(기본값). \"파일 이름\"은 Bambu Studio가 FTP를 통해 전송한 파일 이름을 사용합니다.',
+      description: '가상 프린터를 통해 파일이 도착할 때 새 아카이브의 이름 지정 방법을 선택합니다. "메타데이터"는 3MF의 슬라이서 내장 제목을 사용합니다(기본값). "파일 이름"은 Bambu Studio가 FTP를 통해 전송한 파일 이름을 사용합니다.',
       metadata: '메타데이터',
       filename: '파일 이름'
     },
     howItWorks: {
       title: '작동 방식',
       step1: '같은 LAN에서 가상 프린터는 검색을 통해 슬라이서(Bambu Studio / OrcaSlicer)에 자동으로 나타납니다. 다른 네트워크에서는 IP 주소와 액세스 코드로 수동으로 추가하세요.',
-      step2: '아카이브, 검토, 대기열 모드에서 슬라이서의 \"전송\" 버튼을 사용하여 3MF 파일을 Bambuddy에 업로드하세요. 슬라이서는 \"인쇄 성공\"을 표시하지만 파일은 저장되고 인쇄되지 않습니다.',
+      step2: '아카이브, 검토, 대기열 모드에서 슬라이서의 "전송" 버튼을 사용하여 3MF 파일을 Bambuddy에 업로드하세요. 슬라이서는 "인쇄 성공"을 표시하지만 파일은 저장되고 인쇄되지 않습니다.',
       step3: '프록시 모드에서 가상 프린터는 모든 트래픽을 실제 프린터로 릴레이합니다 — 직접 연결된 것처럼 즉시 인쇄가 시작됩니다.'
     },
     status: {
@@ -4196,7 +4196,7 @@ export default {
     },
     deleteConfirm: {
       title: '가상 프린터 삭제',
-      message: '\"{{name}}\"을(를) 삭제하시겠습니까? 이 프린터의 모든 서비스가 중지됩니다.'
+      message: '"{{name}}"을(를) 삭제하시겠습니까? 이 프린터의 모든 서비스가 중지됩니다.'
     },
     caCert: {
       title: '슬라이서 인증서',
@@ -4305,10 +4305,10 @@ export default {
     tempThreshold: '온도 임계값 (°C)',
     tempThresholdDescription: '노즐이 이 온도 이하로 냉각될 때 끄기',
     edit: '편집',
-    deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
-    turnOnConfirm: '\"{{name}}\"을(를) 켜시겠습니까?',
-    turnOffConfirm: '\"{{name}}\"을(를) 끄시겠습니까? 연결된 장치의 전원이 차단됩니다.',
-    failedToTurn: '\"{{name}}\" {{action}} 실패',
+    deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
+    turnOnConfirm: '"{{name}}"을(를) 켜시겠습니까?',
+    turnOffConfirm: '"{{name}}"을(를) 끄시겠습니까? 연결된 장치의 전원이 차단됩니다.',
+    failedToTurn: '"{{name}}" {{action}} 실패',
     unknown: '알 수 없음',
     addTitle: '스마트 플러그 추가',
     editTitle: '스마트 플러그 편집',
@@ -4352,7 +4352,7 @@ export default {
     loadingEntities: '엔티티 불러오는 중...',
     loading: '불러오는 중...',
     failedToLoadEntities: '엔티티 불러오기 실패: {{error}}',
-    noEntitiesMatching: '\"{{search}}\"과 일치하는 엔티티를 찾을 수 없음',
+    noEntitiesMatching: '"{{search}}"과 일치하는 엔티티를 찾을 수 없음',
     noEntitiesAvailable: '사용 가능한 엔티티 없음',
     searchingEntities: '모든 엔티티 검색 중 ({{count}}개 발견)',
     showingEntities: 'switch, light, input_boolean 표시 중 ({{count}}개 사용 가능)',
@@ -4375,9 +4375,9 @@ export default {
     jsonPath: 'JSON 경로',
     multiplier: '배수',
     onValue: 'ON 값',
-    mqttPowerHint: 'JSON 경로는 JSON 페이로드에서 값을 추출합니다 (예: \"power_l1\"). 토픽이 원시 숫자 값을 게시하면 비워두세요.\nmW→W에는 배수 0.001, kW→W에는 1000을 사용하세요.',
+    mqttPowerHint: 'JSON 경로는 JSON 페이로드에서 값을 추출합니다 (예: "power_l1"). 토픽이 원시 숫자 값을 게시하면 비워두세요.\nmW→W에는 배수 0.001, kW→W에는 1000을 사용하세요.',
     mqttEnergyHint: 'JSON 경로는 JSON 페이로드에서 값을 추출합니다. 원시 값에는 비워두세요.\nWh→kWh에는 배수 0.001, MWh→kWh에는 1000을 사용하세요.',
-    mqttStateHint: 'JSON 경로는 JSON 페이로드에서 값을 추출합니다. 원시 값에는 비워두세요.\nON 값: \"ON\"을 의미하는 정확한 문자열. 자동 감지(ON, true, 1)를 위해 비워두세요.',
+    mqttStateHint: 'JSON 경로는 JSON 페이로드에서 값을 추출합니다. 원시 값에는 비워두세요.\nON 값: "ON"을 의미하는 정확한 문자열. 자동 감지(ON, true, 1)를 위해 비워두세요.',
     restControl: '제어',
     restOnUrl: '켜기 URL',
     restOffUrl: '끄기 URL',
@@ -4395,8 +4395,8 @@ export default {
     restEnergyPath: '에너지 JSON 경로',
     restEnergyMultiplier: '에너지 배수',
     restUrlRequired: 'REST 플러그에는 URL(ON 또는 OFF) 중 하나 이상이 필요합니다',
-    restHeadersHint: '예: {\"Authorization\": \"Bearer your-token\"}',
-    restBodyHint: '예: ON, {\"state\": \"on\"}',
+    restHeadersHint: '예: {"Authorization": "Bearer your-token"}',
+    restBodyHint: '예: ON, {"state": "on"}',
     restStatusHint: '현재 상태를 폴링할 URL',
     restPathHint: '예: state 또는 data.power.status',
     restPowerUrlHint: '전력 데이터의 별도 URL (비어 있으면 상태 URL 사용)',
@@ -4405,7 +4405,7 @@ export default {
     testConnection: '연결 테스트',
     connectionSuccess: '연결 성공',
     noSwitchesInSwitchbar: '스위치바에 스위치 없음',
-    enableSwitchbarHint: '설정 > 스마트 플러그에서 \"스위치바에 표시\"를 활성화하세요',
+    enableSwitchbarHint: '설정 > 스마트 플러그에서 "스위치바에 표시"를 활성화하세요',
     autoOffAfterDrying: '건조 후 자동 끄기',
     autoOffAfterDryingDescription: 'AMS 건조가 완료되면 끄기',
     delayAfterDryingMinutes: '건조 후 지연 (분)'
@@ -4516,7 +4516,7 @@ export default {
     editProviderToChangeDigestTime: '요약 시간을 변경하려면 제공자를 편집하세요',
     edit: '편집',
     deleteProvider: '알림 제공자 삭제',
-    deleteConfirm: '\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
+    deleteConfirm: '"{{name}}"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.',
     delete: '삭제',
     addTitle: '알림 제공자 추가',
     editTitle: '알림 제공자 편집',
@@ -5420,7 +5420,7 @@ export default {
     loading: '불러오는 중…',
     confirmRevoke: {
       title: '이 토큰을 취소하시겠습니까?',
-      body: '\"{{name}}\"을(를) 사용하는 모든 장치가 즉시 접근을 잃습니다. 이 작업은 취소할 수 없습니다.',
+      body: '"{{name}}"을(를) 사용하는 모든 장치가 즉시 접근을 잃습니다. 이 작업은 취소할 수 없습니다.',
       cancel: '취소',
       confirm: '취소'
     },
@@ -5599,7 +5599,7 @@ export default {
       network_mode: {
         title: 'Docker 네트워크 모드',
         pass: '호스트 네트워크 모드로 실행 중입니다.',
-        warn: 'Bambuddy가 Docker 브리지 네트워킹으로 실행 중입니다. 프린터 검색과 가상 프린터에는 호스트 네트워크 모드가 필요합니다 — \"network_mode: host\"로 컨테이너를 재생성하세요.',
+        warn: 'Bambuddy가 Docker 브리지 네트워킹으로 실행 중입니다. 프린터 검색과 가상 프린터에는 호스트 네트워크 모드가 필요합니다 — "network_mode: host"로 컨테이너를 재생성하세요.',
         skip: 'Docker에서 실행 중이 아닙니다 — 해당 없음.'
       },
       subnet: {
@@ -5664,7 +5664,7 @@ export default {
       },
       "database-locked": {
         name: '데이터베이스 쓰기 경합',
-        cause: 'SQLite 데이터베이스에 부하 시 \"database is locked\" 오류가 발생합니다 — 여러 프린터를 동시에 실행할 때 흔한 문제입니다.',
+        cause: 'SQLite 데이터베이스에 부하 시 "database is locked" 오류가 발생합니다 — 여러 프린터를 동시에 실행할 때 흔한 문제입니다.',
         fix: 'Bambuddy를 외부 PostgreSQL 데이터베이스로 전환하세요. 설명서의 PostgreSQL 가이드를 참고하세요.'
       }
     }
@@ -5722,4 +5722,3 @@ export default {
     }
   }
 };
-

+ 2 - 2
frontend/src/i18n/locales/tr.ts

@@ -2200,7 +2200,7 @@ export default {
     updateAvailableVersion: 'Güncelleme mevcut: v{{version}}',
     releaseNotes: 'Sürüm Notları',
     updateViaDocker: 'Docker Compose ile güncelle:',
-    updateViaHomeAssistant: "Güncellemeler Home Assistant Supervisor tarafından yönetilir. Yeni sürümü yüklemek için Home Assistant'ta Ayarlar → Eklentiler → Bambuddy\'ye gidin.",
+    updateViaHomeAssistant: "Güncellemeler Home Assistant Supervisor tarafından yönetilir. Yeni sürümü yüklemek için Home Assistant'ta Ayarlar → Eklentiler → Bambuddy'ye gidin.",
     installUpdate: 'Güncellemeyi Yükle',
     latestVersionRunning: 'En son sürümü çalıştırıyorsunuz',
     failedToCheckUpdates: 'Güncellemeler kontrol edilemedi: {{error}}',
@@ -3548,7 +3548,7 @@ export default {
     subtitle: 'Makaralarınızı yönetin',
     spoolmanMixedContentTitle: 'Spoolman HTTPS üzerinden yüklenemiyor — tarayıcınız tarafından karışık içerik engellendi',
     spoolmanMixedContentBody: 'Bambuddy HTTPS üzerinden sunuluyor (ters proxy\'niz aracılığıyla), ancak Spoolman URL\'niz hâlâ düz HTTP. Tarayıcılar güvenlik için karışık içeriği engeller, bu nedenle gömülü Spoolman arayüzü oluşturulamaz. Bunun çalışması için Spoolman\'in HTTPS üzerinden erişilebilir olması gerekiyor.',
-    spoolmanMixedContentFixReverseProxy: "Spoolman'i Bambuddy ile aynı ters proxy\'nin (Traefik / Nginx / Caddy) arkasına HTTPS ile koyun, ardından Ayarlardaki Spoolman URL\'sini yeni HTTPS adresine güncelleyin.",
+    spoolmanMixedContentFixReverseProxy: "Spoolman'i Bambuddy ile aynı ters proxy'nin (Traefik / Nginx / Caddy) arkasına HTTPS ile koyun, ardından Ayarlardaki Spoolman URL'sini yeni HTTPS adresine güncelleyin.",
     spoolmanMixedContentFixOpenNewTab: 'Geçici bir çözüm olarak, Spoolman\'i HTTP üzerinden yeni bir tarayıcı sekmesinde açın — karışık içerik kuralları yalnızca gömülü çerçevelere uygulanır, bu nedenle bağımsız bir sekme yine çalışır.',
     spoolmanOpenInNewTab: 'Spoolman\'i yeni sekmede aç',
     labels: {

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
static/assets/index-x75Gd_Ii.js


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است