언어 모델 관리: 한 번 다운로드하고 어디서나 번역
각 ML Kit 언어 모델은 대략 1050MB의 디스크 공간을 차지하며 앱 재시작을 거쳐 지속됩니다. 모델 관리자 페이지는 지원되는 19개 언어를 모두 다운로드 상태와 함께 나열하고 각 언어를 다운로드하거나 삭제할 수 있게 합니다. 이 게시물은 페이지를 사용할 시기, 모델 상태의 의미, 예상되는 저장 공간을 설명합니다.\n\n## 모델 관리자를 방문할 시기\n\n대부분의 사용자에게 모델 관리자 페이지는 필요하지 않습니다. 카메라 페이지 또는 텍스트 번역 페이지에서 언어를 선택하면 앱은 처음으로 번역할 때 해당 모델을 온디맨드로 다운로드합니다. 모델은 이후 모든 번역을 위해 기기에 유지됩니다.\n\n모델 관리자 페이지는 다음을 수행하려는 사용자를 위한 것입니다:\n\n- 오프라인 여행을 위한 사전 다운로드. 여행 전에 필요한 모든 언어 쌍을 다운로드하세요. 그러면 비행기, 공항, 호텔, 기차에서 번역이 작동합니다.\n- 저장 공간 감사. 어떤 언어가 다운로드되었는지 각각 얼마나 많은 공간을 사용하는지 확인하세요.\n- 사용하지 않는 언어 삭제. 더 이상 필요하지 않은 모델을 삭제하여 저장 공간을 회수하세요.\n\n## 모델 상태\n\n각 언어는 네 가지 상태 중 하나입니다:\n\n- 다운로드되지 않음. 다운로드 버튼이 표시됩니다. 탭하여 다운로드를 시작합니다.\n- 다운로드 중. 불확정 스피너가 표시됩니다. ML Kit은 진행률 콜백을 노출하지 않고 완료만 노출합니다. 스피너는 다운로드됨 또는 실패로 해결됩니다.\n- 다운로드됨. 삭제 버튼이 있는 배지가 표시됩니다. 탭하여 모델을 제거하고 저장 공간을 회수합니다.\n- 실패. 재시도 버튼이 다운로드를 대체합니다. 일반적인 원인: 네트워크 없음, 셀룰러 차단, 디스크 공간 부족. 근본 문제가 해결되면 재시도하세요.\n\n## 순차 다운로드\n\n빠르게 연속되는 여러 다운로드 요청은 병렬화되지 않고 대기열에 추가됩니다. 네이티브 iOS 플러그인은 동시 50MB.\n- 19개 언어 모두. 대략 300~600MB.\n- 역할. 모델은 소스 또는 타겟 역할을 할 수 있습니다. 하나의 모델이 언어에 대한 두 역할을 모두 지원합니다.\n\n## 모델 삭제\n\n삭제는 최종적입니다. 저장 공간은 즉시 회수됩니다. 해당 언어를 다시 번역하려면 다음 번역이 새 다운로드를 트리거합니다. 자동 정리는 없습니다. 모델은 삭제하거나 앱을 제거할 때까지 유지되며, 둘 다 다운로드된 모든 모델을 제거합니다.\n\n## 프라이버시\n\n모델은 ML Kit의 배포 서버에서 다운로드됩니다. 다운로드는 언어당 일회성 작업입니다. 어떤 모델을 다운로드하는지에 대한 분석은 없고, 집계 카운터 외의 원격 측정도 없으며, 사용자별 추적도 없습니다.\n\n## 실용적인 워크플로\n\n1. 설정 페이지에서 모델 관리자 페이지를 엽니다.\n2. 원하는 각 언어 옆에 다운로드를 탭합니다.\n3. 각 행의 스피너가 다운로드됨으로 해결될 때까지 기다립니다.\n4. 오프라인으로 번역합니다 — 이 언어에 대해서는 더 이상의 다운로드가 필요하지 않습니다.\n5. 돌아올 때 더 이상 필요하지 않은 언어를 삭제하여 저장 공간을 회수합니다.\n\n1회성 여행의 경우 이 작업은 1분이 걸립니다. 영구적인 다국어 사용의 경우 자주 사용하는 언어를 다운로드된 상태로 두고 나머지는 삭제하세요.manageModel 호출을 깔끔하게 처리하지 않습니다: 두 번째 요청이 첫 번째를 취소합니다. 앱은 단일 체이닝된 Future를 통해 다운로드를 직렬화하므로 동시 요청은 차례로 해결됩니다. UI는 불확정 상태에서 활성 다운로드만 표시합니다. 대기 중인 요청은 차례를 기다립니다.\n\niOS에서 낮은 네트워크 조건에서 다운로드 콜백을 놓치면 다운로드 Future가 중단될 수 있습니다. 앱은 30초 시간 제한으로 이를 방지합니다. 시간 제한이 발생하면 앱은 isModelDownloaded를 통해 디스크를 직접 폴링하여 성공 또는 실패를 보고하기 전에 모델이 실제로 저장되었는지 확인합니다.\n\n## 저장 공간 비용\n\n- 모델당. 언어에 따라 10