Browse Source

Added support for disable hwman

Toby Chui 1 year ago
parent
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)"
+
+            }
         }
     }
 }