Forráskód Böngészése

Added support for disable hwman

Toby Chui 1 éve
szülő
commit
39f4a011ab

+ 1 - 1
disk.go

@@ -120,7 +120,7 @@ func DiskServiceInit() {
 					})
 				*/
 
-				adminRouter.HandleFunc("/system/disk/smart/getSMART", smartListener.GetSMART)
+				authRouter.HandleFunc("/system/disk/smart/getSMART", smartListener.GetSMART)
 			}
 		}
 

+ 108 - 103
web/SystemAO/desktop/utils/diskoverview.html

@@ -44,126 +44,131 @@
         updateDiskSpaceOverview();
         function updateDiskSpaceOverview(){
             $("#diskspaceList").html(`<div style="text-align: center; margin-top: 2em;"><i class="ui loading spinner icon"></i></div>`);
-            $.get("./system/disk/diskmg/view", function(data){
-                if (data.error != undefined){
-                    //Unable to load API, hide the util
-                    $("#diskrender").hide();
-                    return;
-                }
-                if (data[0] && typeof(data[0]["blockdevices"]) != "undefined"){
-                    //This is a linux host
-                    $("#diskspaceList").html("");
-                    for (var i = 0; i < data[0]["blockdevices"].length; i++){
-                        let thisDiskInfo = data[0]["blockdevices"][i];
-                        let driveId = thisDiskInfo.name;
-                        let diskName = "";
-                        if (thisDiskInfo.children.length > 0){
-                            //Try to extract mountpoint as name
-                            let mountpoint = thisDiskInfo.children[0].mountpoint;
-                            if (mountpoint == null || mountpoint == undefined){
-                                mountpoint = "";
-                            }
+            $.ajax({
+                url: "./system/disk/diskmg/view", 
+                success: function(data){
+                    if (data.error != undefined){
+                        //Unable to load API, hide the util
+                        $("#diskrender").hide();
+                        return;
+                    }
+                    if (data[0] && typeof(data[0]["blockdevices"]) != "undefined"){
+                        //This is a linux host
+                        $("#diskspaceList").html("");
+                        for (var i = 0; i < data[0]["blockdevices"].length; i++){
+                            let thisDiskInfo = data[0]["blockdevices"][i];
+                            let driveId = thisDiskInfo.name;
+                            let diskName = "";
+                            if (thisDiskInfo.children.length > 0){
+                                //Try to extract mountpoint as name
+                                let mountpoint = thisDiskInfo.children[0].mountpoint;
+                                if (mountpoint == null || mountpoint == undefined){
+                                    mountpoint = "";
+                                }
 
-                            diskName = mountpoint;
-                        }
+                                diskName = mountpoint;
+                            }
 
-                        let remainingSpace = 0;
-                        let totalSpace = thisDiskInfo.size;
-                        //Try to get the remaining space from mounted partitions
-                        if (data[2].length > 0){
-                            let accumulateTotalSpace = 0;
-                            let accumulateRemainingSpace = 0;
-                            for (var j = 0; j < data[2].length; j++){
-                                //For each mounted partitions
-                                let thisPartInfo = data[2][j];
-                                let thisPartName = thisPartInfo[0]; //e.g. /dev/sdc1
-                                if (thisPartName.includes("/" + driveId)){
-                                    //Check if part name include drive id, e.g. /sdc
-                                    //If yes, add the parition remaining space to acc
-                                    accumulateRemainingSpace += thisPartInfo[3];
-                                    accumulateTotalSpace += thisPartInfo[1];
+                            let remainingSpace = 0;
+                            let totalSpace = thisDiskInfo.size;
+                            //Try to get the remaining space from mounted partitions
+                            if (data[2].length > 0){
+                                let accumulateTotalSpace = 0;
+                                let accumulateRemainingSpace = 0;
+                                for (var j = 0; j < data[2].length; j++){
+                                    //For each mounted partitions
+                                    let thisPartInfo = data[2][j];
+                                    let thisPartName = thisPartInfo[0]; //e.g. /dev/sdc1
+                                    if (thisPartName.includes("/" + driveId)){
+                                        //Check if part name include drive id, e.g. /sdc
+                                        //If yes, add the parition remaining space to acc
+                                        accumulateRemainingSpace += thisPartInfo[3];
+                                        accumulateTotalSpace += thisPartInfo[1];
+                                    }
                                 }
-                            }
 
-                            remainingSpace = accumulateRemainingSpace;
-                            totalSpace = accumulateTotalSpace;
-                        }
-                        
-                        let usedSpace = totalSpace - remainingSpace;
-                        let usedPercentage = (usedSpace / totalSpace) * 100;
-                        let colorClass = "";
-                        if (usedPercentage > 90){
-                            colorClass = "lowspace";
-                        }
+                                remainingSpace = accumulateRemainingSpace;
+                                totalSpace = accumulateTotalSpace;
+                            }
+                            
+                            let usedSpace = totalSpace - remainingSpace;
+                            let usedPercentage = (usedSpace / totalSpace) * 100;
+                            let colorClass = "";
+                            if (usedPercentage > 90){
+                                colorClass = "lowspace";
+                            }
 
-                        if (usedPercentage >= 100){
-                            //Prevent overflow
-                            usedPercentage = 100;
-                        }
+                            if (usedPercentage >= 100){
+                                //Prevent overflow
+                                usedPercentage = 100;
+                            }
 
-                        $("#diskspaceList").append(`<div class="item driveinfo">
-                            <img class="ui avatar image" src="img/system/drive.svg">
-                            <div class="content">
-                                <div class="header">${diskName} (${driveId})
-                                    <span style="float: right;font-size: 0.85em;">${usedPercentage.toFixed(1)}% | ${ao_module_utils.formatBytes(thisDiskInfo.size, 1)}</span>    
-                                </div>
-                                <div class="description">
-                                    <div class="ui active small fluid progress diskspace">
-                                        <div class="bar ${colorClass}" style="width: ${usedPercentage}%">
-                                        <div class="progress"></div>
+                            $("#diskspaceList").append(`<div class="item driveinfo">
+                                <img class="ui avatar image" src="img/system/drive.svg">
+                                <div class="content">
+                                    <div class="header">${diskName} (${driveId})
+                                        <span style="float: right;font-size: 0.85em;">${usedPercentage.toFixed(1)}% | ${ao_module_utils.formatBytes(thisDiskInfo.size, 1)}</span>    
+                                    </div>
+                                    <div class="description">
+                                        <div class="ui active small fluid progress diskspace">
+                                            <div class="bar ${colorClass}" style="width: ${usedPercentage}%">
+                                            <div class="progress"></div>
+                                            </div>
                                         </div>
                                     </div>
                                 </div>
-                            </div>
-                            </div>`);
-                    }
-                }else if (data[0].length == 7){
-                    //This is a Window hosts
-                    $("#diskspaceList").html("");
-                    for (var i = 0; i < data.length; i++){
-                        let thisDiskInfo = data[i];
-                        let driveId = thisDiskInfo[0].replace("\\\\", "\\");
-                        let diskName = thisDiskInfo[2];
-                        let remainingSpace = thisDiskInfo[5];
-                        let totalSpace = thisDiskInfo[6];
-                        let usedSpace = totalSpace - remainingSpace;
-                        let usedPercentage = (usedSpace / totalSpace) * 100;
-                        let colorClass = "";
-                        if (usedPercentage > 90){
-                            colorClass = "lowspace";
+                                </div>`);
                         }
+                    }else if (data[0].length == 7){
+                        //This is a Window hosts
+                        $("#diskspaceList").html("");
+                        for (var i = 0; i < data.length; i++){
+                            let thisDiskInfo = data[i];
+                            let driveId = thisDiskInfo[0].replace("\\\\", "\\");
+                            let diskName = thisDiskInfo[2];
+                            let remainingSpace = thisDiskInfo[5];
+                            let totalSpace = thisDiskInfo[6];
+                            let usedSpace = totalSpace - remainingSpace;
+                            let usedPercentage = (usedSpace / totalSpace) * 100;
+                            let colorClass = "";
+                            if (usedPercentage > 90){
+                                colorClass = "lowspace";
+                            }
 
-                        if (usedPercentage >= 100){
-                            //Prevent overflow
-                            usedPercentage = 100;
-                        }
+                            if (usedPercentage >= 100){
+                                //Prevent overflow
+                                usedPercentage = 100;
+                            }
 
-                        $("#diskspaceList").append(`<div class="item driveinfo">
-                            <img class="ui avatar image" src="img/system/drive.svg">
-                            <div class="content">
-                                <div class="header">
-                                    ${diskName} (${driveId})
-                                    <span style="float: right;font-size: 0.85em;">${usedPercentage.toFixed(1)}% | ${ao_module_utils.formatBytes(totalSpace, 1)}</span>
-                                </div>
-                                <div class="description">
-                                    <div class="ui active small fluid progress diskspace">
-                                        <div class="bar ${colorClass}" style="width: ${usedPercentage}%">
-                                        <div class="progress"></div>
+                            $("#diskspaceList").append(`<div class="item driveinfo">
+                                <img class="ui avatar image" src="img/system/drive.svg">
+                                <div class="content">
+                                    <div class="header">
+                                        ${diskName} (${driveId})
+                                        <span style="float: right;font-size: 0.85em;">${usedPercentage.toFixed(1)}% | ${ao_module_utils.formatBytes(totalSpace, 1)}</span>
+                                    </div>
+                                    <div class="description">
+                                        <div class="ui active small fluid progress diskspace">
+                                            <div class="bar ${colorClass}" style="width: ${usedPercentage}%">
+                                            <div class="progress"></div>
+                                            </div>
                                         </div>
                                     </div>
                                 </div>
-                            </div>
-                            </div>`);
+                                </div>`);
+                        }
+                    }else{
+                        //Something else
+                        $("#diskrender").text("Platform not supported");
                     }
-                }else{
-                    //Something else
-                    $("#diskrender").text("Platform not supported");
-                }
 
-                //Update themecolor, see desktop.system setThemeColor();
-                $("#diskrender .progress .bar").css({
-                    "background-color": desktopThemeColor
-                });
+                    //Update themecolor, see desktop.system setThemeColor();
+                    $("#diskrender .progress .bar").css({
+                        "background-color": desktopThemeColor
+                    });
+                }, error: function(){
+                    $("#diskspaceList").html(`<div style="text-align: center; margin-top: 1em; height: 2em;"><i class="ui red ban icon"></i><i class="ui grey hdd icon"></i></div>`);
+                }
             });
         }
     </script>

+ 24 - 1
web/SystemAO/desktop/utils/sysoverview.html

@@ -110,6 +110,29 @@
             
         });
 
+        //Get disk SMART info
+        $.ajax({
+            url: "system/disk/smart/getSMART",
+            success: function(data){
+                if (data.error != undefined){
+                    //Something went wrong. Assume all green
+                    updateSystemOverviewStatusText(0);
+                }else{
+                    if (data.healthy == "Normal"){
+                        updateSystemOverviewStatusText(0);
+                    }else if (data.healthy == "Attention"){
+                        updateSystemOverviewStatusText(1);
+                    }else if (data.healthy == "Failing"){
+                        updateSystemOverviewStatusText(2);
+                    }
+                }
+            },
+            error: function(){
+                //Something went wrong. Assume all green
+                updateSystemOverviewStatusText(0);
+            }
+        });
+
 
         //Update system status warning, 0 = good, 1 = warning, 2 = error
         function updateSystemOverviewStatusText(warningStatus=0){
@@ -136,7 +159,7 @@
                 statusIconEle.attr('src', 'img/desktop/system_icon/error.svg');
             }
         }
-        updateSystemOverviewStatusText(0);
+        
 
     </script>
 </div>

+ 13 - 1
web/SystemAO/locale/authreq.json

@@ -66,8 +66,20 @@
                 "Username": "ユーザー名",
                 "Password": "パスワード"
             }
+        },
+        "ko_kr": {
+            "fontFamily": "",
+            "strings": {
+                "page/title": "관리자 인증",
+                "button/confirm": "확인",
+                "button/cancel": "취소",
+                "": ""
+            },
+            "placeholder": {
+                "Username": "사용자 이름",
+                "Password": "비밀번호"
+            }
         }
         
-        
     }
 }

+ 21 - 0
web/SystemAO/locale/defaultOpener.json

@@ -90,8 +90,29 @@
             },
             "titles": {},
             "placeholder": {}
+        },
+        "ko_kr": {
+            "fwtitle": "기본 웹 애플리케이션 선택",
+            "fontFamily": "",
+            "strings": {
+                "message/select": "열기로 사용할 웹 페이지 애플리케이션을 선택하세요",
+                "message/files": " 파일의 기본 웹 애플리케이션",
+        
+                "button/showAll": "모든 애플리케이션 표시",
+                "button/showRelevent": "관련 애플리케이션 표시",
+                "button/cancel": "취소",
+                "button/confirm": "확인",
+                "": ""
+            },
+            "titles": {
+        
+            },
+            "placeholder": {
+        
+            }
         }
         
         
+        
     }
 }

+ 128 - 3
web/SystemAO/locale/desktop.json

@@ -517,11 +517,11 @@
                 "quickAccess/restart": "サーバーの再起動",
                 "quickAccess/poweroff": "サーバーのシャットダウン",
                 "quickAccess/overview/status/healthy": "健康",
-                "quickAccess/overview/status/healthy/desc": "サーバーは正常に動作しているようです",
+                "quickAccess/overview/status/healthy/desc": "正常に動作しているようです",
                 "quickAccess/overview/status/warning": "警告",
-                "quickAccess/overview/status/warning/desc": "サーバーにいくつかの小さな問題があるようです",
+                "quickAccess/overview/status/warning/desc": "ハードディスクの調子が悪い",
                 "quickAccess/overview/status/screwed": "劣化",
-                "quickAccess/overview/status/screwed/desc": "何かがちょっとおかしくなっているようです。。。",
+                "quickAccess/overview/status/screwed/desc": "ストレージの劣化が検出されました",
                 "quickAccess/overview/hostname": "サーバー名",
                 "quickAccess/overview/uptime": "稼働時間",
                 "quickAccess/overview/model": "機種",
@@ -598,6 +598,131 @@
             "placeholder":{
                 "Search": "検索"
             }
+        },
+        "ko_kr": {
+            "name":"한국어",
+            "fontFamily": "",
+            "strings": {
+                "topbar/welcome": "다시 오신 것을 환영합니다",
+                "topbar/arozos": "ArozOS 웹 데스크톱 모드",
+        
+                "notification/clear": "모두 지우기",
+                "notification/nonotification": "알림 없음",
+        
+                "listmenu/catergory/searchResults": "검색 결과",
+                "listmenu/catergory/all": "모두",
+                "listmenu/catergory/media": "미디어",
+                "listmenu/catergory/office": "오피스",
+                "listmenu/catergory/download": "다운로드",
+                "listmenu/catergory/files": "파일",
+                "listmenu/catergory/internet": "인터넷",
+                "listmenu/catergory/settings": "설정",
+                "listmenu/catergory/tools": "시스템 프로그램",
+                "listmenu/catergory/utils": "유틸리티",
+                "listmenu/catergory/other": "기타",
+                "listmenu/catergory/exit": "로그아웃",
+        
+                "error/connlost/title": "연결 끊김",
+                "error/connlost": "서버와의 연결이 끊겼습니다. 이 경고가 사라질 때까지 기다려 주세요.",
+                "error/connlost/recheck": "다시 시도",
+                "error/connlost/wait": "대기 중",
+                "error/connlost/readonly": "[읽기 전용] 계정",
+                "error/connlost/readonl/infoy": "이 계정이 읽기 전용 상태로 잠겨 있기 때문에 데스크톱에서 파일 작업을 할 수 없습니다.",
+        
+                "quickAccess/logout": "로그아웃",
+                "quickAccess/sysvol": "시스템 볼륨",
+                "quickAccess/brightness": "밝기",
+                "quickAccess/settings": "시스템 설정",
+                "quickAccess/fullscreen": "전체 화면 전환",
+                "quickAccess/restart": "서버 재시작",
+                "quickAccess/poweroff": "서버 종료",
+        
+                "quickAccess/overview/status/healthy": "정상",
+                "quickAccess/overview/status/healthy/desc": "서버가 원활하게 작동 중입니다!",
+                "quickAccess/overview/status/warning": "경고",
+                "quickAccess/overview/status/warning/desc": "서버에 일부 작은 문제가 있는 것 같습니다.",
+                "quickAccess/overview/status/screwed": "문제 발생",
+                "quickAccess/overview/status/screwed/desc": "뭔가가 조금 꼬였는 듯한 냄새가 나네요...",
+                "quickAccess/overview/hostname": "서버 이름",
+                "quickAccess/overview/uptime": "가동 시간",
+                "quickAccess/overview/model": "기계 모델",
+                "quickAccess/overview/uuid": "장치 식별자",
+        
+                "backgroundTasks/noTasks": "진행 중인 백그라운드 작업이 없습니다",
+                "backgroundTasks/refresh": "새로 고침",
+        
+                "contextmenu/New": "새로 만들기",
+                "contextmenu/Open": "열기",
+                "contextmenu/Open With": "다음으로 열기",
+                "contextmenu/Download in Zip": "압축 및 다운로드",
+                "contextmenu/Make a Copy": "복사본 만들기",
+                "contextmenu/Delete": "삭제",
+                "contextmenu/Properties": "속성",
+                "contextmenu/Share": "공유",
+                "contextmenu/Download": "다운로드",
+                "contextmenu/Copy": "복사",
+                "contextmenu/Cut": "잘라내기",
+                "contextmenu/Paste Here": "여기에 붙여넣기",
+                "contextmenu/Rename": "이름 바꾸기",
+                "contextmenu/Zip here": "여기에 압축",
+                "contextmenu/Open in New Tab": "새 탭에서 열기",
+                "contextmenu/Download as Zip": "압축하여 다운로드",
+                "contextmenu/Refresh": "새로 고침",
+                "contextmenu/Open File Manager": "파일 관리자 열기",
+                "contextmenu/Open File Location": "파일 위치 열기",
+                "contextmenu/Personalization": "개인화",
+                "contextmenu/Background": "배경 화면",
+                "contextmenu/Icon Size": "아이콘 크기",
+                "contextmenu/Exit": "로그아웃",
+                "contextmenu/Toggle FullScreen": "전체 화면 전환",
+                "contextmenu/Minimize": "최소화",
+                "contextmenu/Restore": "복원",
+                "contextmenu/Maximize": "최대화",
+                "contextmenu/Close": "닫기",
+                "contextmenu/Close All": "모두 닫기",
+                "contextmenu/Select Other WebApps": "다른 웹 앱 선택",
+                "contextmenu/Open Shared Link": "공유 링크 열기",
+                "contextmenu/Copy Link": "링크 복사",
+                "contextmenu/Copied": "복사됨",
+                "contextmenu/Change Share Settings": "공유 설정 변경",
+                "contextmenu/Share this File": "이 파일 공유",
+                "contextmenu/share/link": "링크를 가진 모든 사용자",
+                "contextmenu/share/signedin": "로그인한 모든 사용자",
+                "contextmenu/share/samegroup": "동일한 권한을 가진 사용자",
+                "contextmenu/share/openshare": "고급 공유 설정",
+                "contextmenu/Remove Share": "공유 제거",
+                "contextmenu/Small": "작게",
+                "contextmenu/Medium": "중간",
+                "contextmenu/Big": "크게",
+                "contextmenu/Folder": "폴더",
+                "contextmenu/Shortcut": "바로 가기",
+                "contextmenu/Upload": "업로드",
+        
+                "power/shutdown/title": "종료 - 확인을 위해 암호 입력",
+                "power/shutdown/text": "서버를 종료합니다",
+                "power/shutdown/instruction": "서버 종료 절차를 시작하려면 관리자 암호를 입력하세요",
+        
+                "power/restart/title": "재시작 - 확인을 위해 암호 입력",
+                "power/restart/text": "서버를 재시작합니다",
+                "power/restart/instruction": "서버 재시작을 확인하려면 관리자 암호를 입력하세요",
+        
+                "account/switch/logout/confirm": "이 브라우저에 저장된 다른 모든 계정에서 로그아웃 하시겠습니까?",
+                "account/switch/noAlternative": "이 브라우저에는 다른 저장된 계정이 없습니다",
+                "account/switch/sessionValid": "로그인 세션이 유효합니다",
+                "account/switch/sessionExpired": "로그인 세션이 만료되었습니다",
+                "account/switch/addAccount": "로컬 계정 추가",
+                "account/switch/signoutAll": "저장된 다른 모든 계정 로그아웃",
+        
+                "upload/message/uploading": "업로드 중...",
+                "upload/message/failed": "업로드 실패",
+        
+                "": ""
+            },
+            "placeholder": {
+                "Search": "검색"
+            }
         }
+        
+
     }
 }

+ 34 - 0
web/SystemAO/locale/disk_properties.json

@@ -146,7 +146,41 @@
             },
             "titles": {},
             "placeholder": {}
+        },
+        "ko_kr": {
+            "fwtitle": "디스크 개요",
+            "fontFamily": "",
+            "strings": {
+                "title/title": "디스크 개요",
+                "title/desc": "가상 저장 장치에 대응하는 디스크 드라이브 마운트 포인트에 관한 정보",
+        
+                "diskinfo/physical": "물리적 디스크 드라이브",
+                "diskinfo/hierarchy": "저장 장치 구조 (포맷)",
+        
+                "hierarchy/User": "사용자 구분",
+                "hierarchy/Public": "공유 디스크 영역",
+                "hierarchy/Backup": "백업 디스크 영역",
+        
+                "spaceinfo/totalUsed": "사용 중인 디스크 공간",
+                "spaceinfo/userUsed": "사용자 디스크 공간",
+                "spaceinfo/Usable": "사용 가능한 디스크 공간",
+                "spaceinfo/Capacity": "디스크 용량",
+        
+                "unit/bytes": " 바이트",
+                "error/na": "【정보 없음】",
+        
+                "button/close": "확인",
+        
+                "": ""
+            },
+            "titles": {
+        
+            },
+            "placeholder": {
+        
             }
+        }
+        
         
     }
 }

+ 287 - 0
web/SystemAO/locale/file_explorer.json

@@ -1416,6 +1416,293 @@
                 "New Folder Name": "ここに新しいフォルダ名を入力してください",
                 "File Search (Start wildcard search with / , e.g. /.mp3)": "ファイル検索 (/ を付けてワイルドカード検索を開始、例:/.mp3)"
             }
+        },
+        "ko_kr": {
+            "name": "한국어",
+            "fontFamily": "\"Microsoft JhengHei\",\"SimHei\", \"Apple LiGothic Medium\", \"STHeiti\"",
+            "strings": {
+                "title/title": "파일 관리자",
+                "menu/button/download": "선택 항목 다운로드",
+                "menu/sort/asc": "파일 이름 정렬",
+                "menu/sort/desc": "파일 이름 역순 정렬",
+                "menu/sort/small": "작은 순으로",
+                "menu/sort/large": "큰 순으로",
+                "menu/sort/mostrecent": "최신순",
+                "menu/sort/leastrecent": "오래된 순",
+                "menu/sort/smart": "자연 숫자 순서",
+                "menu/sort/typeAsc": "확장자 순서",
+                "menu/sort/typeDes": "확장자 역순",
+        
+                "fileopr/Back": "이전 페이지",
+                "fileopr/Parent Folder": "상위 폴더로 이동",
+                "fileopr/Open": "열기",
+                "fileopr/Open with": "다음으로 열기",
+                "fileopr/Share": "공유",
+                "fileopr/Download": "다운로드",
+                "fileopr/Copy": "복사",
+                "fileopr/Paste": "붙여넣기",
+                "fileopr/Cut": "잘라내기",
+                "fileopr/Multi Select": "다중 선택 전환",
+                "fileopr/Select All": "모두 선택",
+                "fileopr/Clear Select": "선택 취소",
+                "fileopr/New File": "새 파일",
+                "fileopr/New Folder": "새 폴더",
+                "fileopr/Upload": "업로드",
+                "fileopr/Create Zip": "<span style='font-size: 0.9em;'>압축 파일 만들기</span>",
+                "fileopr/Unzip Here": "<span style='font-size: 0.9em;'>여기에 압축 해제</span>",
+                "fileopr/Rename": "이름 바꾸기",
+                "fileopr/Delete": "삭제",
+                "fileopr/Refresh": "새로고침",
+                "fileopr/Home": "홈 폴더",
+                "fileopr/File Info": "파일 정보",
+                "fileopr/Toggle Folder List": "홈 폴더 목록 토글",
+                "fileopr/Dark Theme": "다크 테마 전환",
+                "fileopr/Edit Path": "경로 편집",
+                "fileopr/Sorting Method": "파일 정렬",
+                "fileopr/Search": "검색",
+                "fileopr/Block View": "블록 뷰 표시",
+                "fileopr/List View": "리스트 뷰 표시",
+                "fileopr/Case Sensitive": "대소문자 구분",
+                "fileopr/Clear Search": "검색 결과 지우기",
+        
+                "view/details/folders": " 폴더",
+                "view/details/files": " 파일",
+                "view/details/ext": " 확장자",
+                "view/details/modTime": " 최종 수정 날짜",
+                "view/details/shared": " 공유됨",
+                "view/details/size": " 크기",
+        
+                "tooltip/filecount":" 개 항목",
+                "tooltip/selectedcount":" 개 선택됨",
+        
+                "sidebar/properties/expand": "속성 확장",
+                "sidebar/properties/shrink":"속성 축소",
+                "sidebar/properties/filesize":"파일 크기",
+                "sidebar/properties/modtime":"마지막 수정 날짜",
+                "sidebar/properties/mimetype":"미디어 타입",
+                "sidebar/properties/owner":"소유자",
+                "sidebar/properties/permission":"접근 권한",
+                "sidebar/properties/storepath":"저장 위치",
+                "sidebar/properties/vpath":"가상 위치",
+                "sidebar/default/nofileselected": "선택된 파일 없음",
+                "sidebar/default/instruction": "파일 목록에서 파일을 선택하여 자세한 내용을 확인하세요",
+        
+                "sidebar/vroot/user": "사용자",
+                "sidebar/vroot/fsh": "가상 저장 장치",
+        
+                "sidebar/vroot/desktop": "데스크톱",
+                "sidebar/vroot/document": "문서",
+                "sidebar/vroot/music": "음악",
+                "sidebar/vroot/photo": "사진",
+                "sidebar/vroot/video": "동영상",
+                "sidebar/vroot/trash": "휴지통",
+                "sidebar/vroot/download": "다운로드",
+                "sidebar/vroot/web": "웹",
+                "sidebar/vroot/model": "모델",
+                "sidebar/vroot/appdata": "앱 데이터",
+        
+                "func/search/typeToStart": "키워드를 입력하여 검색 시작",
+                "func/search/tip1": "키워드를 입력한 다음 '검색' 버튼을 클릭하여 검색을 시작하세요",
+                "func/search/tip2": "와일드카드를 사용하려면 먼저 / 문자를 입력하십시오. (예: /*.mp3)",
+        
+                "opr/overwrite/title": "파일 덮어쓰기, 유지 또는 건너뛰기 확인",
+                "opr/overwrite/copying": "복사 중",
+                "opr/overwrite/files": "개 파일. 소스:",
+                "opr/overwrite/to": " → 대상:",
+                "opr/overwrite/dest": "대상에 이미 ",
+                "opr/overwrite/samename": "개의 동일한 이름 파일이 있습니다",
+                "opr/overwrite/replace": "대상 파일 덮어쓰기",
+                "opr/overwrite/skip": "이 파일들 건너뛰기",
+                "opr/overwrite/keep": "이름 바꾸고 대상 파일 유지",
+        
+                "opr/pre-remove/title": "파일 영구 제거 확인",
+                "opr/pre-remove/questions": "다음 파일을 <u>영구적으로 제거</u>하시겠습니까?<br>제거 후 파일은 <u>복구할 수 없습니다</u>",
+                "opr/pre-remove/confirm": "선택한 파일 영구 제거 확인",
+                "opr/pre-remove/cancel": "취소",
+        
+                "opr/remove/title": "휴지통으로 이동 확인",
+                "opr/remove/question": "선택한 파일을 휴지통으로 이동하시겠습니까?",
+                "opr/remove/confirm": "확인",
+                "opr/remove/cancel": "취소",
+        
+                "opr/rename/title": "이름 바꾸기",
+                "opr/rename/instruction": "아래 입력란에 새 파일 이름을 입력하세요",
+                "opr/rename/ok": "확인",
+                "opr/rename/cancel": "취소",
+        
+                "opr/newfile/title": "파일 생성",
+                "opr/newfile/instruction": "추가할 파일 형식 샘플을 선택하거나 새로운 빈 파일 이름을 입력하세요",
+                "opr/newfile/newempty": "또는 새로운 빈 파일을 만들려면 파일 이름을 입력하세요",
+                "opr/newfile/create": "생성",
+                "opr/newfile/cancel": "취소",
+        
+                "opr/newfolder/title": "폴더 생성",
+                "opr/newfolder/desc": "아래 입력란에 새 폴더 이름을 입력하세요",
+                "opr/newfolder/alreadyExists": "이 폴더는 이미 존재합니다",
+                "opr/newfolder/create": "생성",
+                "opr/newfolder/cancel": "취소",
+        
+                "opr/share/title": "파일 공유",
+                "opr/share/settings": "공유 설정",
+                "opr/share/setdesc": "이 파일을 볼 수 있는 사용자 변경",
+                "opr/share/visableoption": "공유 대상:",
+                "opr/share/anyone": "연결된 사용자",
+                "opr/share/anyonedesc": "이 파일을 연결된 사용자가 다운로드할 수 있습니다",
+                "opr/share/signedin": "로그인한 사용자",
+                "opr/share/signedindesc": "로그인하고 연결된 사용자는 이 파일을 다운로드할 수 있습니다",
+                "opr/share/samegroup": "동일한 권한 그룹의 사용자",
+                "opr/share/samegroupdesc": "동일한 사용자 권한을 가진 사용자는 이 파일을 다운로드할 수 있습니다",
+                "opr/share/update": "권한 업데이트",
+                "opr/share/remove": "파일 공유 중지",
+                "opr/share/ok": "완료",
+        
+                "opr/openwith/title": "… 사용하여 열기",
+                "opr/openwith/desc": "이 파일을 열기 위해 웹 앱을 선택하세요",
+                "opr/openwith/loading": "로딩 중...",
+                "opr/openwith/openWithWebApp": "선택한 웹 앱으로 파일 열기",
+                "opr/openwith/openWithWebAppInNewWindow": "새 창에서 선택한 웹 앱으로 파일 열기",
+                "opr/openwith/openInNewWindow": "새 창에서 직접 열기",
+                "opr/openwith/cancel": "취소",
+                "opr/openwith/floatWindow":"플로팅 창",
+                "opr/openwith/embedded":"파일 입력",
+        
+                "opr/shorcut/title": "데스크톱에 바로 가기 만들기",
+                "opr/shorcut/ok": "바로 가기가 성공적으로 만들어졌습니다",
+                "opr/shorcut/error": "데스크톱에 바로 가기를 만들지 못했습니다",
+        
+                "opr/zip/zipping": "압축 중 ",
+                "opr/zip/unzipping": "압축 해제 중 ",
+                "opr/zip/nozipfile": "선택한 압축 파일 없음",
+                "opr/zip/file": " 파일",
+                "opr/zip/files": " 파일",
+        
+                "opr/confirmclose/title":"업로드 취소 확인",
+                "opr/confirmclose/desc":"이 파일 관리자 창은 현재 서버에 파일을 업로드 중입니다. 이 창을 닫으면 모든 업로드 작업이 취소됩니다.<br><b>업로드 취소 확인하고 창 닫기?</b>",
+                "opr/confirmclose/cancelAndExit":"업로드 취소 및 창 닫기",
+                "opr/confirmclose/continue": "계속 업로드",
+
+                "contextmenu/open": "열기",
+                "contextmenu/openWith": "...로 열기",
+                "contextmenu/openNewWindow": "새 창에서 열기",
+                "contextmenu/openNewWindowVroot": "새 창에서 열기",
+                "contextmenu/openFileLocation": "파일 위치 열기",
+                "contextmenu/Share": "공유",
+                "contextmenu/MuitSelect": "여러 선택 항목 전환",
+                "contextmenu/copy": "복사",
+                "contextmenu/paste": "붙여넣기",
+                "contextmenu/cut": "잘라내기",
+                "contextmenu/newFile": "새 파일",
+                "contextmenu/newFolder": "새 폴더",
+                "contextmenu/upload": "업로드",
+                "contextmenu/zip": "압축 파일 만들기",
+                "contextmenu/unzip": "여기에 압축을 푼다",
+                "contextmenu/rename": "이름 바꾸기",
+                "contextmenu/delete": "삭제",
+                "contextmenu/backup": "백업 및 복원",
+                "contextmenu/refresh": "새로고침",
+                "contextmenu/download": "다운로드",
+                "contextmenu/sharemanager": "공유 관리자",
+                "contextmenu/properties": "내용",
+
+                "upload/count/uploading": " 업로드 중",
+                "upload/count/pending": " 대기 중",
+
+                "message/rename/success": "이름 변경 성공",
+                "message/copy/success": " 파일이 복사되었습니다",
+                "message/move/success": " 파일이 이동되었습니다",
+                "message/share/removed": " 파일 공유가 중지되었습니다",
+                "message/paste/nothing": "붙여넣을 파일이 없습니다",
+                "message/remove/success": " 파일이 성공적으로 삭제되었습니다",
+                "message/recycle/success": " 파일이 성공적으로 리사이클 통으로 이동되었습니다",
+                "message/upload/started": "파일 업로드가 시작되었습니다",
+                "message/zip/fail": "파일 압축 실패: 알 수 없는 이유로",
+                "message/newfolder/success": "새 폴더가 성공적으로 생성되었습니다",
+                "message/newItem/success": " 생성이 완료되었습니다",
+                "message/nofileSelected": "선택된 파일이 없습니다",
+                "message/moduleNotSupport": "이 모듈은 파일을 열 수 없습니다",
+                "message/unknownSize": "알 수 없는 크기",
+                "message/loading": "로딩 중",
+                "message/initiating": "초기화 중",
+                "message/Permission Denied: You are not the file owner nor can write to this file": "액세스 거부: 파일 소유자도 아니며 이 파일에 쓸 수 없습니다",
+                "message/Invalid path given": "잘못된 파일 경로",
+                "message/Unknown path given": "알 수 없는 파일 경로",
+                "message/Invalid keyword given":"키워드가 유효하지 않습니다",
+                "message/This directory is Read Only": "이 디렉터리는 읽기 전용입니다",
+                "message/Access Denied":"액세스 거부",
+                "message/Given filename already exists":"지정한 파일 이름이 이미 존재합니다",
+                "message/Given folder already exists":"지정한 폴더 이름이 이미 존재합니다",
+                "message/Source file not exists":"소스 파일이 존재하지 않습니다",
+                "message/File already exists":"파일이 이미 존재합니다",
+                "message/Undefined dest location":"정의되지 않은 대상 위치",
+                "message/Dest folder not found":"대상 폴더를 찾을 수 없습니다",
+                "message/Invalid dir given":"유효하지 않은 디렉터리 경로",
+                "message/Storage Quota Full":"저장 공간 할당량이 가득 찼습니다",
+                "message/Unknown file opeartion given":"지원하지 않는 파일 작업 요청",
+                "message/No file selected": "선택된 파일이 없습니다",
+                "message/Preference value too long. Preference value can only store maximum 1024 characters.":"환경 설정 값이 너무 깁니다. 환경 설정 값은 최대 1024자까지 저장할 수 있습니다",
+                "message/User not logged in":"사용자가 로그인하지 않았습니다",
+                "message/Folder not exists":"폴더가 존재하지 않습니다",
+                "message/Failed to move file to trash":"파일을 휴지통으로 이동하는 데 실패했습니다",
+                "message/Incompatible File System Type: Try SHIFT + DELETE to delete file permanently":"호환되지 않는 파일 시스템 유형: 파일을 영구적으로 삭제하려면 SHIFT + DELETE를 시도하세요",
+                "message/Recursive copy operation.":"재귀 복사 작업",
+                "message/Source and destination paths are identical.":"소스 및 대상 경로가 동일합니다",
+                "message/Multiple files share is currently not supported":"현재 다중 파일 공유는 지원되지 않습니다",
+
+                "message/noMatchResults": "일치하는 파일을 찾을 수 없습니다",
+                "message/noMatchResultsDesc": "서버에서 이 키워드와 일치하는 파일을 찾을 수 없습니다",
+                "message/noMatchResultsInst": "키워드나 와일드카드를 올바르게 입력했는지 확인하십시오.",
+
+                "message/folderCannotOpen": "이 폴더를 열 수 없습니다",
+                "message/folderCannotOpen/codedesc": "서버 측에서 다음 오류 메시지를 반환했습니다: ",
+
+                "message/destIdentical": "소스 및 대상 경로가 동일합니다",
+                "message/decodeFilelistFail": "파일 목록을 읽을 수 없어 파일 로드 실패",
+                "message/uploadFailed": "파일 업로드 실패: 파일이 너무 크거나 대상 저장 장치가 가득 찼습니다",
+                "message/newFilenameIdentical": "이름 변경 실패: 새로운 파일 이름이 기존과 동일합니다"
+            },
+            "titles": {
+                "Back": "뒤로",
+                "Parent Folder": "상위 폴더로 이동",
+                "Open": "열기",
+                "Open with": "다음과 함께 열기",
+                "Share File": "파일 공유",
+                "Download": "다운로드",
+                "Copy": "복사",
+                "Paste": "붙여넣기",
+                "Cut": "잘라내기",
+                "New File": "새 파일",
+                "New Folder": "새 폴더",
+                "Upload": "업로드",
+                "Create Zip": "압축 파일 생성",
+                "Unzip Here": "여기에 압축 해제",
+                "Rename": "이름 변경",
+                "Delete": "삭제",
+                "Refresh": "새로 고침",
+                "Home": "홈",
+                "File Info": "파일 정보",
+                "Toggle Folder List": "폴더 목록 전환",
+                "Dark Theme": "다크 테마로 전환",
+                "Edit Path": "경로 편집",
+                "Sorting Method": "파일 정렬",
+                "Search": "검색",
+                "Multi Select": "다중 선택 전환",
+                "Select All": "모두 선택",
+                "Clear Selection": "선택 지우기",
+                "Block View": "블록 보기",
+                "List View": "리스트 보기",
+                "Detail View": "상세 정보 보기",
+                "Case Sensitive": "대소문자 구분",
+                "Clear Search": "검색 결과 지우기",
+                "Expand Properties Sidebar": "속성 사이드바 확장",
+                "Shrink Properties Sidebar": "속성 사이드바 축소",
+                "Show Properties": "속성 표시"
+            },
+            "placeholder": {
+                "New Filename": "새 파일 이름 입력",
+                "New Folder Name": "새 폴더 이름 입력",
+                "File Search (Start wildcard search with / , e.g. /*.mp3)": "파일 검색 (슬래시 (/)로 와일드카드 검색 시작, 예: /*.mp3)"
+
+            }
         }
     }
 }