Commit 7490e108825862a4e92cfc7417cf6ca3728d73a1

Authored by SeungJu Lee
Committed by Kwon, Yeong-Eon
1 parent 315757ff

check browser locale and add locale setting to profile

... ... @@ -15,6 +15,7 @@
15 15 */
16 16 import injectTapEventPlugin from 'react-tap-event-plugin';
17 17 import UrlHandler from './url.handler';
  18 +import addLocaleKorean from './locale/locale.constant-ko';
18 19
19 20 /* eslint-disable import/no-unresolved, import/default */
20 21
... ... @@ -48,6 +49,14 @@ export default function AppConfig($provide,
48 49 $translateProvider.useMissingTranslationHandlerLog();
49 50 $translateProvider.addInterpolation('$translateMessageFormatInterpolation');
50 51
  52 + addLocaleKorean(locales);
  53 + var $window = angular.injector(['ng']).get('$window');
  54 + var lang = $window.navigator.language || $window.navigator.userLanguage;
  55 + if (lang === 'ko') {
  56 + $translateProvider.useSanitizeValueStrategy(null);
  57 + $translateProvider.preferredLanguage('ko_KR');
  58 + }
  59 +
51 60 for (var langKey in locales) {
52 61 var translationTable = locales[langKey];
53 62 $translateProvider.translations(langKey, translationTable);
... ...
... ... @@ -14,767 +14,769 @@
14 14 * limitations under the License.
15 15 */
16 16
17   -export default angular.module('thingsboard.locale', [])
18   - .constant('locales',
19   - {
20   - 'ko_KR': {
21   - "access": {
22   - "unauthorized": "권한 없음.",
23   - "unauthorized-access": "허가되지 않은 접근",
24   - "unauthorized-access-text": "이 리소스에 접근하려면 로그인해야 합니다!",
25   - "access-forbidden": "접근 금지",
26   - "access-forbidden-text": "접근 권한이 없습니다.!<br/> 만일 이 페이지에 계속 접근하려면 다른 사용자로 로그인 하세요.",
27   - "refresh-token-expired": "세션이 만료되었습니다.",
28   - "refresh-token-failed": "세션을 새로 고칠 수 없습니다."
29   - },
30   - "action": {
31   - "activate": "활설화",
32   - "suspend": "비활성화",
33   - "save": "저장",
34   - "saveAs": "다른 이름으로 저장",
35   - "cancel": "취소",
36   - "ok": "확인",
37   - "delete": "삭제",
38   - "add": "추가",
39   - "yes": "네",
40   - "no": "아니오",
41   - "update": "업데이트",
42   - "remove": "제거",
43   - "search": "검색",
44   - "assign": "할당",
45   - "unassign": "비할당",
46   - "apply": "적용",
47   - "apply-changes": "변경사항 적용",
48   - "edit-mode": "수정 모드",
49   - "enter-edit-mode": "수정 모드 진입",
50   - "decline-changes": "변경사항 포기",
51   - "close": "닫기",
52   - "back": "뒤로",
53   - "run": "실행",
54   - "sign-in": "로그인!",
55   - "edit": "수정",
56   - "view": "보기",
57   - "create": "만들기",
58   - "drag": "끌기",
59   - "refresh": "새로고침",
60   - "undo": "취소",
61   - "copy": "복사",
62   - "paste": "붙여넣기",
63   - "import": "가져오기",
64   - "export": "내보내기"
65   - },
66   - "aggregation": {
67   - "aggregation": "집합",
68   - "function": "데이터 집합 함수",
69   - "limit": "최대 값",
70   - "group-interval": "그룹 간격",
71   - "min": "최소",
72   - "max": "최대",
73   - "avg": "평균",
74   - "sum": "합계",
75   - "count": "숫자",
76   - "none": "없음"
77   - },
78   - "admin": {
79   - "general": "일반",
80   - "general-settings": "일반 설정",
81   - "outgoing-mail": "메일 전송",
82   - "outgoing-mail-settings": "메일 전송 설정",
83   - "system-settings": "시스템 설정",
84   - "test-mail-sent": "테스트 메일이 성공적으로 전송되었습니다!",
85   - "base-url": "기본 URL",
86   - "base-url-required": "기본 URL을 입력해야 합니다.",
87   - "mail-from": "보내는 사람",
88   - "mail-from-required": "보내는 사람을 입력해야 합니다.",
89   - "smtp-protocol": "SMTP 프로토콜",
90   - "smtp-host": "SMTP 호스트",
91   - "smtp-host-required": "SMTP 호스트를 입력해야 합니다.",
92   - "smtp-port": "SMTP 포트",
93   - "smtp-port-required": "SMTP 포트를 입력해야 합니다.",
94   - "smtp-port-invalid": "올바른 SMTP 포트가 아닙니다.",
95   - "timeout-msec": "제한시간 (msec)",
96   - "timeout-required": "제한시간을 입력해야 합니다.",
97   - "timeout-invalid": "올바른 제한시간이 아닙니다.",
98   - "enable-tls": "TLS 사용",
99   - "send-test-mail": "테스트 메일 보내기"
100   - },
101   - "attribute": {
102   - "attributes": "속성",
103   - "latest-telemetry": "최근 데이터",
104   - "attributes-scope": "디바이스 속성 범위",
105   - "scope-latest-telemetry": "최근 데이터",
106   - "scope-client": "클라이언트 속성",
107   - "scope-server": "서버 속성",
108   - "scope-shared": "공유 속성",
109   - "add": "속성 추가",
110   - "key": "Key",
111   - "key-required": "속성 key를 입력하세요.",
112   - "value": "Value",
113   - "value-required": "속성 value를 입력하세요.",
114   - "delete-attributes-title": "{ count, select, 1 {속성} other {여러 속성들을} } 삭제하시겠습니까??",
115   - "delete-attributes-text": "모든 선택된 속성들이 제거 될 것이므로 주의하십시오.",
116   - "delete-attributes": "속성 삭제",
117   - "enter-attribute-value": "속성 값 입력",
118   - "show-on-widget": "위젯 보기",
119   - "widget-mode": "위젯 모드",
120   - "next-widget": "다음 위젯",
121   - "prev-widget": "이전 위젯",
122   - "add-to-dashboard": "대시보드에 추가",
123   - "add-widget-to-dashboard": "대시보드에 위젯 추가",
124   - "selected-attributes": "{ count, select, 1 {속성 1개} other {속성 #개} } 선택됨",
125   - "selected-telemetry": "{ count, select, 1 {최근 데이터 1개} other {최근 데이터 #개} } 선택됨"
126   - },
127   - "confirm-on-exit": {
128   - "message": "변경 사항을 저장하지 않았습니다. 이 페이지를 나가시겠습니까?",
129   - "html-message": "변경 사항을 저장하지 않았습니다.<br/>이 페이지를 나가시겠습니까?",
130   - "title": "저장되지 않은 변경사항"
131   - },
132   - "contact": {
133   - "country": "국가",
134   - "city": "시",
135   - "state": "도",
136   - "postal-code": "우편 번호",
137   - "postal-code-invalid": "숫자만 입력하세요.",
138   - "address": "주소",
139   - "address2": "상세주소",
140   - "phone": "전화번호",
141   - "email": "Email",
142   - "no-address": "주소 정보 없음"
143   - },
144   - "common": {
145   - "username": "사용자명",
146   - "password": "비밀번호",
147   - "enter-username": "사용자명을 입력하세요.",
148   - "enter-password": "비밀번호를 입력하세요.",
149   - "enter-search": "검색어 입력"
150   - },
151   - "customer": {
152   - "customers": "커스터머",
153   - "management": "커스터머 관리",
154   - "dashboard": "커스터머 대시보드",
155   - "dashboards": "커스터머 대시보드",
156   - "devices": "커스터머 디바이스",
157   - "add": "커스터머 추가",
158   - "delete": "커스터머 삭제",
159   - "manage-customer-users": "커스터머 사용자 관리",
160   - "manage-customer-devices": "커스터머 디바이스 관리",
161   - "manage-customer-dashboards": "커스터머 대시보드 관리",
162   - "add-customer-text": "커스터머 추가",
163   - "no-customers-text": "커스터머가 없습니다.",
164   - "customer-details": "커스터머 상세정보",
165   - "delete-customer-title": "'{{customerTitle}}' 커스터머를 삭제하시겠습니까?",
166   - "delete-customer-text": "커스터머 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
167   - "delete-customers-title": "{ count, select, 1 {커스터머 1개} other {커스터머 #개} }를 삭제하시겠습니까?",
168   - "delete-customers-action-title": "{ count, select, 1 {커스터머 1개} other {커스터머 #개} } 삭제",
169   - "delete-customers-text": "선택된 커스터머는 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
170   - "manage-users": "사용자 관리",
171   - "manage-devices": "디바이스 관리",
172   - "manage-dashboards": "대시보드 관리",
173   - "title": "타이틀",
174   - "title-required": "타이틀을 입력하세요.",
175   - "description": "설명"
176   - },
177   - "datetime": {
178   - "date-from": "시작 날짜",
179   - "time-from": "시작 시간",
180   - "date-to": "종료 날짜",
181   - "time-to": "종료 시간"
182   - },
183   - "dashboard": {
184   - "dashboard": "대시보드",
185   - "dashboards": "대시보드",
186   - "management": "대시보드 관리",
187   - "view-dashboards": "대시보드 보기",
188   - "add": "대시보드 추가",
189   - "assign-dashboard-to-customer": "대시보드 커스터머 선택",
190   - "assign-dashboard-to-customer-text": "대시보드 커스터머를 선택하세요.",
191   - "assign-to-customer-text": "대시보드 커스터머를 선택하세요.",
192   - "assign-to-customer": "커스터머 선택",
193   - "unassign-from-customer": "커스터머 해제",
194   - "no-dashboards-text": "대시보드가 없습니다",
195   - "no-widgets": "설정된 위젯 없음",
196   - "add-widget": "위젯 추가",
197   - "title": "타이틀",
198   - "select-widget-title": "위젯 선택",
199   - "select-widget-subtitle": "사용가능한 위젯 타입 목록",
200   - "delete": "대시보드 삭제",
201   - "title-required": "타이틀을 입력하세요.",
202   - "description": "설명",
203   - "details": "상세",
204   - "dashboard-details": "대시보드 상세정보",
205   - "add-dashboard-text": "대시보드 추가",
206   - "assign-dashboards": "대시보드 지정",
207   - "assign-new-dashboard": "새 대시보드 할당",
208   - "assign-dashboards-text": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 커스터머 할당",
209   - "delete-dashboards": "대시보드 삭제",
210   - "unassign-dashboards": "대시보드 할당 취소",
211   - "unassign-dashboards-action-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 커스터머 할당 취소",
212   - "delete-dashboard-title": "'{{dashboardTitle}}' 대시보드를 삭제하시겠습니까?",
213   - "delete-dashboard-text": "대시보드 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
214   - "delete-dashboards-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 삭제하시겠습니까?",
215   - "delete-dashboards-action-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} } 삭제",
216   - "delete-dashboards-text": "선택된 대시보드가 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
217   - "unassign-dashboard-title": "'{{dashboardTitle}}' 대시보드 할당을 해제하시겠습니까?",
218   - "unassign-dashboard-text": "대시보드가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
219   - "unassign-dashboard": "대시보드 할달 취소",
220   - "unassign-dashboards-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }의 할당을 취소하시겠습니까?",
221   - "unassign-dashboards-text": "선택된 대시보드가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
222   - "select-dashboard": "대시보드 선택",
223   - "no-dashboards-matching": "'{{dashboard}}'와 일치하는 대시보드가 없습니다.",
224   - "dashboard-required": "대시보드를 입력하세요.",
225   - "select-existing": "기존 대시보드 선택",
226   - "create-new": "대시보드 생성",
227   - "new-dashboard-title": "새로운 대시보드 타이틀",
228   - "open-dashboard": "대시보드 열기",
229   - "set-background": "대시보드 설정",
230   - "background-color": "배경색",
231   - "background-image": "배경 이미지",
232   - "background-size-mode": "배경 사이즈 모드",
233   - "no-image": "이미지 없음",
234   - "drop-image": "이곳에 이미지를 끌어다놓거나 이곳을 클릭하여 파일을 선택하고 업로드하세요.",
235   - "settings": "설정",
236   - "columns-count": "열 개수",
237   - "columns-count-required": "열 개수를 입력하세요.",
238   - "min-columns-count-message": "열 개수를 최소 10 이상 입력하세요.",
239   - "max-columns-count-message": "열 개수를 최대 100 이하로 입력하세요.",
240   - "widgets-margins": "위젯 사이 여백 크기",
241   - "horizontal-margin": "세로 여백",
242   - "horizontal-margin-required": "세로 여백 값을 입력하세요.",
243   - "min-horizontal-margin-message": "세로 여백 값을 최소 0 이상 입력하세요.",
244   - "max-horizontal-margin-message": "세로 여백 값을 최대 50 이하로 입력하세요.",
245   - "vertical-margin": "가로 여백",
246   - "vertical-margin-required": "가로 여백 값을 입력하세요.",
247   - "min-vertical-margin-message": "가로 여백 값을 최소 0 이상 입력하세요.",
248   - "max-vertical-margin-message": "가로 여백 값을 최대 50 이하로 입력하세요.",
249   - "display-title": "대시보드 타이틀 표시",
250   - "title-color": "타이틀 색상",
251   - "import": "대시보드 가져오기",
252   - "export": "대시보드 내보내기",
253   - "export-failed-error": "대시보드 내보내기를 할 수 없습니다.: {error}",
254   - "create-new-dashboard": "대시보드 생성",
255   - "dashboard-file": "대시보드 파일",
256   - "invalid-dashboard-file-error": "대시보드 가져오기를 할 수 없습니다.: 대시보드 데이터 구조가 잘못되었습니다.",
257   - "dashboard-import-missing-aliases-title": "대시보드 앨리어스를 위해 누락 된 디바이스 선택",
258   - "create-new-widget": "새로운 위젯 생성",
259   - "import-widget": "위젯 가져오기",
260   - "widget-file": "위젯 파일",
261   - "invalid-widget-file-error": "위젯 가져오기를 할 수 없습니다: 위젯 데이터 구조가 잘못되었습니다.",
262   - "widget-import-missing-aliases-title": "위젯에서 사용하는 누락 된 디바이스 선택",
263   - "open-toolbar": "대시보드 툴바 열기",
264   - "close-toolbar": "툴바 닫기",
265   - "configuration-error": "구성 오류",
266   - "alias-resolution-error-title": "대시보드 앨리어스 구성 오류",
267   - "invalid-aliases-config": "일부 앨리어스 필터와 일치하는 디바이스를 찾을 수 없습니다.<br/>" +
268   - "이 문제를 해결하려면 관리자에게 문의하십시오.",
269   - "select-devices": "디바이스 선택",
270   - "assignedToCustomer": "커스터머에 할당됨"
271   - },
272   - "datakey": {
273   - "settings": "설정",
274   - "advanced": "고급",
275   - "label": "Label",
276   - "color": "색상",
277   - "data-generation-func": "데이터 생성 기능",
278   - "use-data-post-processing-func": "데이터 후처리 기능 사용",
279   - "configuration": "데이터 key 구성",
280   - "timeseries": "Timeseries",
281   - "attributes": "Attributes",
282   - "timeseries-required": "디바이스 timeseries 를 입력하세요.",
283   - "timeseries-or-attributes-required": "디바이스 timeseries/attributes 를 입력하세요.",
284   - "function-types": "함수 유형",
285   - "function-types-required": "함수 유형을 입력하세요."
286   - },
287   - "datasource": {
288   - "type": "데이터소스 유형",
289   - "add-datasource-prompt": "데이터소스를 추가하세요."
290   - },
291   - "details": {
292   - "edit-mode": "편집 모드",
293   - "toggle-edit-mode": "편집 모드 전환"
294   - },
295   - "device": {
296   - "device": "디바이스",
297   - "device-required": "디바이스를 입력하세요.",
298   - "devices": "디바이스",
299   - "management": "디바이스 관리",
300   - "view-devices": "디바이스 보기",
301   - "device-alias": "디바이스 앨리어스",
302   - "aliases": "디바이스 앨리어스",
303   - "no-alias-matching": "'{{alias}}' 를 찾을 수 없습니다.",
304   - "no-aliases-found": "앨리어스가 없습니다.",
305   - "no-key-matching": "'{{key}}' 를 찾을 수 없습니다.",
306   - "no-keys-found": "Key가 없습니다.",
307   - "create-new-alias": "새로 만들기!",
308   - "create-new-key": "새로 만들기!",
309   - "duplicate-alias-error": "중복된 '{{alias}}' 앨리어스가 있습니다.<br> 디바이스 앨리어스는 대시보드 내에서 고유해야 합니다.",
310   - "configure-alias": "'{{alias}}' 앨리어스 구성",
311   - "no-devices-matching": "'{{device}}'와 일치하는 디바이스를 찾을 수 없습니다.",
312   - "alias": "앨리어스",
313   - "alias-required": "디바이스 앨리어스를 입력하세요.",
314   - "remove-alias": "디바이스 앨리어스 삭제",
315   - "add-alias": "디바이스 앨리어스 추가",
316   - "name-starts-with": "시작되는 이름",
317   - "device-list": "디바이스 리스트",
318   - "use-device-name-filter": "필터 사용",
319   - "device-list-empty": "선택된 디바이스가 없습니다.",
320   - "device-name-filter-required": "디바이스 필터 이름을 입력하세요.",
321   - "device-name-filter-no-device-matched": "'{{device}}' 로 시작되는 디바이스를 찾을 수 없습니다.",
322   - "add": "디바이스 추가",
323   - "assign-to-customer": "커스터머에게 할당",
324   - "assign-device-to-customer": "디바이스를 커스터머에게 할당",
325   - "assign-device-to-customer-text": "고객에게 할당할 디바이스를 선택하십시오.",
326   - "no-devices-text": "디바이스 없음",
327   - "assign-to-customer-text": "디바이스를 할당할 커스터머를 선택하세요.",
328   - "device-details": "디바이스 상세정보",
329   - "add-device-text": "디바이스 추가",
330   - "credentials": "크리덴셜",
331   - "manage-credentials": "크리덴셜 관리",
332   - "delete": "디바이스 삭제",
333   - "assign-devices": "디바이스 할당",
334   - "assign-devices-text": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 커서터머에 할당",
335   - "delete-devices": "디바이스 삭제",
336   - "unassign-from-customer": "커스터머 할당 해제",
337   - "unassign-devices": "디바이스 할당 취소",
338   - "unassign-devices-action-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 커스터머에게서 할당 해제",
339   - "assign-new-device": "새로운 디바이스 할당",
340   - "view-credentials": "크리덴셜 보기",
341   - "delete-device-title": "'{{deviceName}}' 디바이스를 삭제하시겠습니까?",
342   - "delete-device-text": "디바이스 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
343   - "delete-devices-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 삭제하시겠습니까?",
344   - "delete-devices-action-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} } 삭제",
345   - "delete-devices-text": "선택된 디바이스가 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
346   - "unassign-device-title": "'{{deviceName}}' 디바이스 할당을 해제하시겠습니까?",
347   - "unassign-device-text": "디바이스가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
348   - "unassign-device": "디바이스 할당 취소",
349   - "unassign-devices-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }의 할당을 해제하시겠습니까??",
350   - "unassign-devices-text": "선택된 디바이스가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
351   - "device-credentials": "디바이스 크리덴셜",
352   - "credentials-type": "크리덴셜 타입",
353   - "access-token": "억세스 토큰",
354   - "access-token-required": "액세스 토큰을 입력하세요.",
355   - "access-token-invalid": "액세스 토큰 길이는 1 - 20 자 여야합니다.",
356   - "rsa-key": "RSA public key",
357   - "rsa-key-required": "RSA public key 를 입력하세요.",
358   - "secret": "시크릿",
359   - "secret-required": "시크릿을 입력하세요.",
360   - "name": "이름",
361   - "name-required": "이름을 입력하세요.",
362   - "description": "설명",
363   - "events": "이벤트",
364   - "details": "상세",
365   - "copyId": "디바이스 아이디 복사",
366   - "copyAccessToken": "억세스 토큰 복사",
367   - "idCopiedMessage": "디바이스 아이디가 클립보드에 복사되었습니다.",
368   - "accessTokenCopiedMessage": "디바이스 억세스 토큰이 클립보드에 복사되었습니다.",
369   - "assignedToCustomer": "커스터머에 할당됨",
370   - "unable-delete-device-alias-title": "디바이스 앨리어스를 삭제할 수 없습니다.",
371   - "unable-delete-device-alias-text": "'{{deviceAlias}}' 디바이스 앨리어스를 삭제할 수 없습니다. 다음 위젯에서 사용하고 있습니다.<br/>{{widgetsList}}",
372   - "is-gateway": "게이트웨이 여부"
373   - },
374   - "dialog": {
375   - "close": "다이얼로그 닫기"
376   - },
377   - "error": {
378   - "unable-to-connect": "서버에 연결할 수 없습니다! 인터넷 연결을 확인하십시오.",
379   - "unhandled-error-code": "처리되지 않은 오류 코드: {{errorCode}}",
380   - "unknown-error": "알 수 없는 오류"
381   - },
382   - "event": {
383   - "event-type": "이벤트 타입",
384   - "type-alarm": "알람",
385   - "type-error": "에러",
386   - "type-lc-event": "주기적 이벤트",
387   - "type-stats": "통계",
388   - "no-events-prompt": "이벤트 없음",
389   - "error": "에러",
390   - "alarm": "알람",
391   - "event-time": "이벤트 발생 시간",
392   - "server": "서버",
393   - "body": "Body",
394   - "method": "Method",
395   - "event": "이벤트",
396   - "status": "상태",
397   - "success": "성공",
398   - "failed": "실패",
399   - "messages-processed": "처리된 메시지",
400   - "errors-occurred": "오류가 발생했습니다"
401   - },
402   - "fullscreen": {
403   - "expand": "전체화면으로 확장",
404   - "exit": "전체화면 종료",
405   - "toggle": "전체화면 모드 전환",
406   - "fullscreen": "전체화면"
407   - },
408   - "function": {
409   - "function": "기능"
410   - },
411   - "grid": {
412   - "delete-item-title": "이 항목을 삭제 하시겠습니까?",
413   - "delete-item-text": "항목과 모든 관련 데이터를 복구 할 수 없으므로 주의하십시오.",
414   - "delete-items-title": "{ count, select, 1 {아이템 1개} other {아이템 #개} }를 삭제하시겠습니까?",
415   - "delete-items-action-title": "{ count, select, 1 {아이템 1개} other {아이템 #개} } 삭제",
416   - "delete-items-text": "선택한 모든 아이템이 제거되고 관련된 모든 데이터는 복구 할 수 없으므로 주의하십시오.",
417   - "add-item-text": "새로운 아이템 추가",
418   - "no-items-text": "아이템이 없습니다.",
419   - "item-details": "아이템 상세",
420   - "delete-item": "아이템 삭제",
421   - "delete-items": "아이템 삭제",
422   - "scroll-to-top": "스크롤 맨 위로"
423   - },
424   - "help": {
425   - "goto-help-page": "도움"
426   - },
427   - "home": {
428   - "home": "홈",
429   - "profile": "프로파일",
430   - "logout": "로그아웃",
431   - "menu": "메뉴",
432   - "avatar": "Avatar",
433   - "open-user-menu": "사용자 메뉴 열기"
434   - },
435   - "import": {
436   - "no-file": "선택된 파일이 없습니다.",
437   - "drop-file": "JSON 파일을 끌어다 놓거나 클릭하여 업로드 할 파일을 선택하십시오."
438   - },
439   - "item": {
440   - "selected": "선택됨"
441   - },
442   - "js-func": {
443   - "no-return-error": "함수는 값을 반환해야 합니다!",
444   - "return-type-mismatch": "함수는 '{{type}}' 유형의 값을 반환해야 합니다!"
445   - },
446   - "legend": {
447   - "position": "범례 위치",
448   - "show-max": "최대값 표시",
449   - "show-min": "최소값 표시",
450   - "show-avg": "평균값 표시",
451   - "show-total": "총합 표시",
452   - "settings": "범례 설정",
453   - "min": "최소",
454   - "max": "최대",
455   - "avg": "평균",
456   - "total": "합계"
457   - },
458   - "login": {
459   - "login": "로그인",
460   - "request-password-reset": "비밀번호 재설정",
461   - "reset-password": "비밀번호 재설정",
462   - "create-password": "비밀번호 생성",
463   - "passwords-mismatch-error": "입력된 비밀번호는 같아야 합니다!",
464   - "password-again": "비밀번호 확인",
465   - "sign-in": "로그인",
466   - "username": "사용자명 (이메일)",
467   - "remember-me": "아이디 저장",
468   - "forgot-password": "비밀번호찾기",
469   - "password-reset": "비밀번호 재설정",
470   - "new-password": "새 비밀번호",
471   - "new-password-again": "새 비밀번호 확인",
472   - "password-link-sent-message": "비밀번호 재설정 링크가 성공적으로 전송되었습니다!",
473   - "email": "이메일"
474   - },
475   - "plugin": {
476   - "plugins": "플러그인",
477   - "delete": "플러그인 삭제",
478   - "activate": "플러그인 활성화",
479   - "suspend": "플러그인 비활성화",
480   - "active": "활성화",
481   - "suspended": "비활성화",
482   - "name": "이름",
483   - "name-required": "이름을 입력하세요.",
484   - "description": "설명",
485   - "add": "플러그인 추가",
486   - "delete-plugin-title": "'{{pluginName}}' 플러그인을 삭제하시겠습니까?",
487   - "delete-plugin-text": "플러그인과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
488   - "delete-plugins-title": "{ count, select, 1 {플러그인 1개} other {플러그인 #개} }를 삭제하시겠습니까?",
489   - "delete-plugins-action-title": "{ count, select, 1 {플러그인 1개} other {플러그인 #개} } 삭제",
490   - "delete-plugins-text": "선택된 플러그인이 삭제되고 관련된 모든 데이터가 없어지므로 주의하십시오.",
491   - "add-plugin-text": "새로운 플러그인 추가",
492   - "no-plugins-text": "플러그인이 없습니다.",
493   - "plugin-details": "플러그인 상세정보",
494   - "api-token": "API 토큰",
495   - "api-token-required": "API 토큰을 입력하세요.",
496   - "type": "플러그인 종류",
497   - "type-required": "플러그인 종류를 선택해주세요.",
498   - "configuration": "플러그인 구성",
499   - "system": "시스템",
500   - "select-plugin": "플러그인 선택",
501   - "plugin": "플러그인",
502   - "no-plugins-matching": "'{{plugin}}'과 일치하는 플러그인을 찾을 수 없습니다.",
503   - "plugin-required": "플러그인을 입력하세요.",
504   - "plugin-require-match": "기존의 플러그인을 선택해주세요.",
505   - "events": "이벤트",
506   - "details": "상세",
507   - "import": "플러그인 가져오기",
508   - "export": "플러그인 내보내기",
509   - "export-failed-error": "플러그인을 내보내기 할 수 없습니다.: {{error}}",
510   - "create-new-plugin": "새로운 플러그인 생성",
511   - "plugin-file": "플러그인 파일",
512   - "invalid-plugin-file-error": "플러그인을 가져오기 할 수 없습니다.: 잘못된 플러그인 데이터 구조입니다."
513   - },
514   - "position": {
515   - "top": "상단",
516   - "bottom": "하단",
517   - "left": "왼쪽",
518   - "right": "오른쪽"
519   - },
520   - "profile": {
521   - "profile": "프로파일",
522   - "change-password": "비밀번호 변경",
523   - "current-password": "현재 비밀번호"
524   - },
525   - "rule": {
526   - "rules": "규칙",
527   - "delete": "규칙 삭제",
528   - "activate": "규칙 활성화",
529   - "suspend": "규칙 비활성화",
530   - "active": "활성화",
531   - "suspended": "비활성화",
532   - "name": "이름",
533   - "name-required": "이름을 입력하세요.",
534   - "description": "설명",
535   - "add": "규칙 추가",
536   - "delete-rule-title": "'{{ruleName}}' 규칙을 삭제하시겠습니까?",
537   - "delete-rule-text": "규칙과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
538   - "delete-rules-title": "{ count, select, 1 {규칙 1개} other {규칙 #개} }를 삭제하시겠습니까?",
539   - "delete-rules-action-title": "{ count, select, 1 {규칙 1개} other {규칙 #개} } 삭제",
540   - "delete-rules-text": "선택된 규칙이 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
541   - "add-rule-text": "규칙 추가",
542   - "no-rules-text": "규칙이 없습니다.",
543   - "rule-details": "규칙 상세정보",
544   - "filters": "필터",
545   - "filter": "필터",
546   - "add-filter-prompt": "필터를 추가해 주세요.",
547   - "remove-filter": "필터 삭제",
548   - "add-filter": "필터 추가",
549   - "filter-name": "필터 이름",
550   - "filter-type": "필터 종류",
551   - "edit-filter": "필터 수정",
552   - "view-filter": "필터 보기",
553   - "component-name": "이름",
554   - "component-name-required": "이름을 입력하세요.",
555   - "component-type": "종류",
556   - "component-type-required": "타입을 입력하세요.",
557   - "processor": "프로세서",
558   - "no-processor-configured": "프로세서가 구성되지 않았습니다.",
559   - "create-processor": "프로세서 생성",
560   - "processor-name": "프로세서 이름",
561   - "processor-type": "프로세서 종류",
562   - "plugin-action": "플러그인 액션",
563   - "action-name": "액션 이름",
564   - "action-type": "액션 종류",
565   - "create-action-prompt": "액션을 만들어 주세요",
566   - "create-action": "액션 생성",
567   - "details": "상세",
568   - "events": "이벤트",
569   - "system": "시스템",
570   - "import": "규칙 가져오기",
571   - "export": "규칙 내보내기",
572   - "export-failed-error": "규칙을 내보내기 할 수 없습니다.: {{error}}",
573   - "create-new-rule": "새로운 규칙 생성",
574   - "rule-file": "규칙 파일",
575   - "invalid-rule-file-error": "규칙을 가져오기 할 수 없습니다.: 잘못된 데이터 구조입니다."
576   - },
577   - "rule-plugin": {
578   - "management": "규칙 및 플러그인 관리"
579   - },
580   - "tenant": {
581   - "tenants": "테넌트",
582   - "management": "테넌트 관리",
583   - "add": "테넌트 추가",
584   - "admins": "Admins",
585   - "manage-tenant-admins": "테넌트 관리자 관리",
586   - "delete": "테넌트 삭제",
587   - "add-tenant-text": "테넌트 추가",
588   - "no-tenants-text": "테넌트가 없습니다.",
589   - "tenant-details": "테넌트 상세정보",
590   - "delete-tenant-title": "'{{tenantTitle}}' 테넌트를 삭제하시겠습니까?",
591   - "delete-tenant-text": "테넌트와 관련된 모든 정보를 복구할 수 없으므로 주의하십시오.",
592   - "delete-tenants-title": "{ count, select, 1 {테넌트 1개} other {테넌트 #개} }를 삭제하시겠습니까?",
593   - "delete-tenants-action-title": "{ count, select, 1 {테넌트 1개} other {테넌트 #개} } 삭제",
594   - "delete-tenants-text": "선택된 테넌트가 삭제되고 관련된 모든 정보를 복구할 수 없으므로 주의하십시오.",
595   - "title": "타이틀",
596   - "title-required": "타이틀을 입력하세요.",
597   - "description": "설명"
598   - },
599   - "timeinterval": {
600   - "seconds-interval": "{ seconds, select, 1 {1 second} other {# seconds} }",
601   - "minutes-interval": "{ minutes, select, 1 {1 minute} other {# minutes} }",
602   - "hours-interval": "{ hours, select, 1 {1 hour} other {# hours} }",
603   - "days-interval": "{ days, select, 1 {1 day} other {# days} }",
604   - "days": "Days",
605   - "hours": "Hours",
606   - "minutes": "Minutes",
607   - "seconds": "Seconds",
608   - "advanced": "고급"
609   - },
610   - "timewindow": {
611   - "days": "{ days, select, 1 { day } other {# days } }",
612   - "hours": "{ hours, select, 0 { hour } 1 {1 hour } other {# hours } }",
613   - "minutes": "{ minutes, select, 0 { minute } 1 {1 minute } other {# minutes } }",
614   - "seconds": "{ seconds, select, 0 { second } 1 {1 second } other {# seconds } }",
615   - "realtime": "Realtime",
616   - "history": "History",
617   - "last-prefix": "last",
618   - "period": "from {{ startTime }} to {{ endTime }}",
619   - "edit": "타임윈도우 편집",
620   - "date-range": "날짜 범위",
621   - "last": "Last",
622   - "time-period": "기간"
623   - },
624   - "user": {
625   - "users": "사용자",
626   - "customer-users": "커스터머 사용자",
627   - "tenant-admins": "테넌트 관리자",
628   - "sys-admin": "시스템 관리자",
629   - "tenant-admin": "테넌트 관리자",
630   - "customer": "커스터머",
631   - "anonymous": "Anonymous",
632   - "add": "사용자 추가",
633   - "delete": "사용자 삭제",
634   - "add-user-text": "새로운 사용자 추가",
635   - "no-users-text": "사용자가 없습니다.",
636   - "user-details": "사용자 상세정보",
637   - "delete-user-title": "'{{userEmail}}' 사용자를 삭제하시겠습니까?",
638   - "delete-user-text": "사용자와 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
639   - "delete-users-title": "{ count, select, 1 {사용자 1명} other {사용자 #명} }을 삭제하시겠니까?",
640   - "delete-users-action-title": "{ count, select, 1 {사용자 1명} other {사용자 #명} } 삭제",
641   - "delete-users-text": "선택된 사용자가 삭제된고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
642   - "activation-email-sent-message": "활성화 이메일을 보냈습니다!",
643   - "resend-activation": "활성화 재전송",
644   - "email": "Email",
645   - "email-required": "Email을 입력하세요.",
646   - "first-name": "이름",
647   - "last-name": "성",
648   - "description": "설명",
649   - "default-dashboard": "기본 대시보드",
650   - "always-fullscreen": "항상 전체화면"
651   - },
652   - "value": {
653   - "type": "Value type",
654   - "string": "String",
655   - "string-value": "String value",
656   - "integer": "Integer",
657   - "integer-value": "Integer value",
658   - "invalid-integer-value": "Invalid integer value",
659   - "double": "Double",
660   - "double-value": "Double value",
661   - "boolean": "Boolean",
662   - "boolean-value": "Boolean value",
663   - "false": "False",
664   - "true": "True"
665   - },
666   - "widget": {
667   - "widget-library": "위젯 저장소",
668   - "widget-bundle": "위젯 번들",
669   - "select-widgets-bundle": "위젯 번들 선택",
670   - "management": "위젯 관리",
671   - "editor": "위젯 편집기",
672   - "widget-type-not-found": "위젯 구성을 로드하는 중 문제가 발생했습니다.<br>연결된 위젯 타입이 삭제되었습니다.",
673   - "widget-type-load-error": "다음과 같은 오류로 인해 위젯이로드되지 않았습니다:",
674   - "remove": "위젯 삭제",
675   - "edit": "위젯 수정",
676   - "remove-widget-title": "'{{widgetTitle}}' 위젯을 삭제하시겠습니까?",
677   - "remove-widget-text": "위젯과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
678   - "timeseries": "Time series",
679   - "latest-values": "Latest values",
680   - "rpc": "Control 위젯",
681   - "static": "Static 위젯",
682   - "select-widget-type": "위젯 타입 선택",
683   - "missing-widget-title-error": "위젯 타이틀을 입력하세요!",
684   - "widget-saved": "위젯이 저장되었습니다.",
685   - "unable-to-save-widget-error": "위젯을 저장할 수 없습니다! 위젯에 오류가 있습니다!",
686   - "save": "위젯 저장",
687   - "saveAs": "다른 이름으로 위젯 저장",
688   - "save-widget-type-as": "다른 이름으로 위젯 타입 저장",
689   - "save-widget-type-as-text": "새로운 위젯 이름과 위젯 번들을 선택하세요.",
690   - "toggle-fullscreen": "전체화면 전환",
691   - "run": "위젯 실행",
692   - "title": "위젯 타이틀",
693   - "title-required": "위젯 타이틀을 입력하세요.",
694   - "type": "위젯 타입",
695   - "resources": "리소스",
696   - "resource-url": "JavaScript/CSS URI",
697   - "remove-resource": "리소스 삭제",
698   - "add-resource": "리소스 추가",
699   - "html": "HTML",
700   - "tidy": "Tidy",
701   - "css": "CSS",
702   - "settings-schema": "스키마 설정",
703   - "datakey-settings-schema": "데이터 키 설정 스키마",
704   - "javascript": "Javascript",
705   - "remove-widget-type-title": "'{{widgetName}}' 위젯 타입을 삭제하시겠습니까?",
706   - "remove-widget-type-text": "위젯 타입과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
707   - "remove-widget-type": "위젯 타입 삭제",
708   - "add-widget-type": "새로운 위젯 타입 추가",
709   - "widget-type-load-failed-error": "위젯 타입을 로드하지 못했습니다!",
710   - "widget-template-load-failed-error": "위젯 템플릿을 로드하지 못했습니다!",
711   - "add": "위젯 추가",
712   - "undo": "위젯 변경사항 취소",
713   - "export": "위젯 내보내기"
714   - },
715   - "widgets-bundle": {
716   - "current": "현재 번들",
717   - "widgets-bundles": "위젯 번들",
718   - "add": "위젯 번들 추가",
719   - "delete": "위젯 번들 삭제",
720   - "title": "타이틀",
721   - "title-required": "타이틀을 입력하세요.",
722   - "add-widgets-bundle-text": "위젯 번들 추가",
723   - "no-widgets-bundles-text": "위젯 번들이 없습니다.",
724   - "empty": "위젯 번들이 비어있습니다.",
725   - "details": "상세",
726   - "widgets-bundle-details": "위젯 번들 상세정보",
727   - "delete-widgets-bundle-title": "'{{widgetsBundleTitle}}' 위젯 번들을 삭제하시겠습니까?",
728   - "delete-widgets-bundle-text": "위젯 번들과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
729   - "delete-widgets-bundles-title": "{ count, select, 1 {위젯 번들 1개} other {위젯 번들 #개} }를 삭제하시겠습니까?",
730   - "delete-widgets-bundles-action-title": "{ count, select, 1 {위젯 번들 1개} other {위젯 번들 #개} } 삭제",
731   - "delete-widgets-bundles-text": "선택된 위젯 번들이 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
732   - "no-widgets-bundles-matching": "'{{widgetsBundle}}' 와(과) 일치하는 위젯 번들을 찾을 수 없습니다.",
733   - "widgets-bundle-required": "위젯 번들을 입력하세요.",
734   - "system": "시스템",
735   - "import": "위젯 번들 가져오기",
736   - "export": "위젯 번들 내보내기",
737   - "export-failed-error": "위젯 번들을 내보내기 할 수 없습니다.: {{error}}",
738   - "create-new-widgets-bundle": "새로운 위젯 번들 생성",
739   - "widgets-bundle-file": "위젯 번들 파일",
740   - "invalid-widgets-bundle-file-error": "위젯 번들을 가져오기 할 수 없습니다.: 잘못된 위젯 번들 데이터 구조입니다."
741   - },
742   - "widget-config": {
743   - "data": "데이터",
744   - "settings": "설정",
745   - "advanced": "고급",
746   - "title": "타이틀",
747   - "general-settings": "일반 설정",
748   - "display-title": "타이틀 표시",
749   - "drop-shadow": "그림자",
750   - "enable-fullscreen": "전체화면 사용 ",
751   - "background-color": "배경 색",
752   - "text-color": "글자 색",
753   - "padding": "패딩",
754   - "title-style": "타이틀 스타일",
755   - "mobile-mode-settings": "모바일 모드 설정",
756   - "order": "순서",
757   - "height": "높이",
758   - "units": "값 옆에 표시할 특수 기호",
759   - "decimals": "소수점 이하 자릿수",
760   - "timewindow": "타임윈도우",
761   - "use-dashboard-timewindow": "대시보드 타임윈도우",
762   - "display-legend": "범례 표시",
763   - "datasources": "데이터소스",
764   - "datasource-type": "유형",
765   - "datasource-parameters": "파라미터",
766   - "remove-datasource": "데이터소스 삭제",
767   - "add-datasource": "데이터소스 추가",
768   - "target-device": "대상 디바이스"
769   - },
770   - "widget-type": {
771   - "import": "위젯 타입 가져오기",
772   - "export": "위젯 타입 내보내기",
773   - "export-failed-error": "위젯 타입을 내보내기 할 수 없습니다.: {{error}}",
774   - "create-new-widget-type": "새로운 위젯 타입 생성",
775   - "widget-type-file": "위젯 타입 파일",
776   - "invalid-widget-type-file-error": "위젯 타입을 가져오기 할 수 없습니다.: 잘못된 위젯 타입 데이터 구조입니다."
777   - }
778   - }
  17 +export default function addLocaleKorean(locales) {
  18 + var ko_KR = {
  19 + "access": {
  20 + "unauthorized": "권한 없음.",
  21 + "unauthorized-access": "허가되지 않은 접근",
  22 + "unauthorized-access-text": "이 리소스에 접근하려면 로그인해야 합니다!",
  23 + "access-forbidden": "접근 금지",
  24 + "access-forbidden-text": "접근 권한이 없습니다.!<br> 만일 이 페이지에 계속 접근하려면 다른 사용자로 로그인 하세요.",
  25 + "refresh-token-expired": "세션이 만료되었습니다.",
  26 + "refresh-token-failed": "세션을 새로 고칠 수 없습니다."
  27 + },
  28 + "action": {
  29 + "activate": "활설화",
  30 + "suspend": "비활성화",
  31 + "save": "저장",
  32 + "saveAs": "다른 이름으로 저장",
  33 + "cancel": "취소",
  34 + "ok": "확인",
  35 + "delete": "삭제",
  36 + "add": "추가",
  37 + "yes": "네",
  38 + "no": "아니오",
  39 + "update": "업데이트",
  40 + "remove": "제거",
  41 + "search": "검색",
  42 + "assign": "할당",
  43 + "unassign": "비할당",
  44 + "apply": "적용",
  45 + "apply-changes": "변경사항 적용",
  46 + "edit-mode": "수정 모드",
  47 + "enter-edit-mode": "수정 모드 진입",
  48 + "decline-changes": "변경사항 포기",
  49 + "close": "닫기",
  50 + "back": "뒤로",
  51 + "run": "실행",
  52 + "sign-in": "로그인!",
  53 + "edit": "수정",
  54 + "view": "보기",
  55 + "create": "만들기",
  56 + "drag": "끌기",
  57 + "refresh": "새로고침",
  58 + "undo": "취소",
  59 + "copy": "복사",
  60 + "paste": "붙여넣기",
  61 + "import": "가져오기",
  62 + "export": "내보내기"
  63 + },
  64 + "aggregation": {
  65 + "aggregation": "집합",
  66 + "function": "데이터 집합 함수",
  67 + "limit": "최대 값",
  68 + "group-interval": "그룹 간격",
  69 + "min": "최소",
  70 + "max": "최대",
  71 + "avg": "평균",
  72 + "sum": "합계",
  73 + "count": "숫자",
  74 + "none": "없음"
  75 + },
  76 + "admin": {
  77 + "general": "일반",
  78 + "general-settings": "일반 설정",
  79 + "outgoing-mail": "메일 전송",
  80 + "outgoing-mail-settings": "메일 전송 설정",
  81 + "system-settings": "시스템 설정",
  82 + "test-mail-sent": "테스트 메일이 성공적으로 전송되었습니다!",
  83 + "base-url": "기본 URL",
  84 + "base-url-required": "기본 URL을 입력해야 합니다.",
  85 + "mail-from": "보내는 사람",
  86 + "mail-from-required": "보내는 사람을 입력해야 합니다.",
  87 + "smtp-protocol": "SMTP 프로토콜",
  88 + "smtp-host": "SMTP 호스트",
  89 + "smtp-host-required": "SMTP 호스트를 입력해야 합니다.",
  90 + "smtp-port": "SMTP 포트",
  91 + "smtp-port-required": "SMTP 포트를 입력해야 합니다.",
  92 + "smtp-port-invalid": "올바른 SMTP 포트가 아닙니다.",
  93 + "timeout-msec": "제한시간 (msec)",
  94 + "timeout-required": "제한시간을 입력해야 합니다.",
  95 + "timeout-invalid": "올바른 제한시간이 아닙니다.",
  96 + "enable-tls": "TLS 사용",
  97 + "send-test-mail": "테스트 메일 보내기"
  98 + },
  99 + "attribute": {
  100 + "attributes": "속성",
  101 + "latest-telemetry": "최근 데이터",
  102 + "attributes-scope": "디바이스 속성 범위",
  103 + "scope-latest-telemetry": "최근 데이터",
  104 + "scope-client": "클라이언트 속성",
  105 + "scope-server": "서버 속성",
  106 + "scope-shared": "공유 속성",
  107 + "add": "속성 추가",
  108 + "key": "Key",
  109 + "key-required": "속성 key를 입력하세요.",
  110 + "value": "Value",
  111 + "value-required": "속성 value를 입력하세요.",
  112 + "delete-attributes-title": "{ count, select, 1 {속성} other {여러 속성들을} } 삭제하시겠습니까??",
  113 + "delete-attributes-text": "모든 선택된 속성들이 제거 될 것이므로 주의하십시오.",
  114 + "delete-attributes": "속성 삭제",
  115 + "enter-attribute-value": "속성 값 입력",
  116 + "show-on-widget": "위젯 보기",
  117 + "widget-mode": "위젯 모드",
  118 + "next-widget": "다음 위젯",
  119 + "prev-widget": "이전 위젯",
  120 + "add-to-dashboard": "대시보드에 추가",
  121 + "add-widget-to-dashboard": "대시보드에 위젯 추가",
  122 + "selected-attributes": "{ count, select, 1 {속성 1개} other {속성 #개} } 선택됨",
  123 + "selected-telemetry": "{ count, select, 1 {최근 데이터 1개} other {최근 데이터 #개} } 선택됨"
  124 + },
  125 + "confirm-on-exit": {
  126 + "message": "변경 사항을 저장하지 않았습니다. 이 페이지를 나가시겠습니까?",
  127 + "html-message": "변경 사항을 저장하지 않았습니다.<br/>이 페이지를 나가시겠습니까?",
  128 + "title": "저장되지 않은 변경사항"
  129 + },
  130 + "contact": {
  131 + "country": "국가",
  132 + "city": "시",
  133 + "state": "도",
  134 + "postal-code": "우편 번호",
  135 + "postal-code-invalid": "숫자만 입력하세요.",
  136 + "address": "주소",
  137 + "address2": "상세주소",
  138 + "phone": "전화번호",
  139 + "email": "Email",
  140 + "no-address": "주소 정보 없음"
  141 + },
  142 + "common": {
  143 + "username": "사용자명",
  144 + "password": "비밀번호",
  145 + "enter-username": "사용자명을 입력하세요.",
  146 + "enter-password": "비밀번호를 입력하세요.",
  147 + "enter-search": "검색어 입력"
  148 + },
  149 + "customer": {
  150 + "customers": "커스터머",
  151 + "management": "커스터머 관리",
  152 + "dashboard": "커스터머 대시보드",
  153 + "dashboards": "커스터머 대시보드",
  154 + "devices": "커스터머 디바이스",
  155 + "add": "커스터머 추가",
  156 + "delete": "커스터머 삭제",
  157 + "manage-customer-users": "커스터머 사용자 관리",
  158 + "manage-customer-devices": "커스터머 디바이스 관리",
  159 + "manage-customer-dashboards": "커스터머 대시보드 관리",
  160 + "add-customer-text": "커스터머 추가",
  161 + "no-customers-text": "커스터머가 없습니다.",
  162 + "customer-details": "커스터머 상세정보",
  163 + "delete-customer-title": "'{{customerTitle}}' 커스터머를 삭제하시겠습니까?",
  164 + "delete-customer-text": "커스터머 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  165 + "delete-customers-title": "{ count, select, 1 {커스터머 1개} other {커스터머 #개} }를 삭제하시겠습니까?",
  166 + "delete-customers-action-title": "{ count, select, 1 {커스터머 1개} other {커스터머 #개} } 삭제",
  167 + "delete-customers-text": "선택된 커스터머는 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  168 + "manage-users": "사용자 관리",
  169 + "manage-devices": "디바이스 관리",
  170 + "manage-dashboards": "대시보드 관리",
  171 + "title": "타이틀",
  172 + "title-required": "타이틀을 입력하세요.",
  173 + "description": "설명"
  174 + },
  175 + "datetime": {
  176 + "date-from": "시작 날짜",
  177 + "time-from": "시작 시간",
  178 + "date-to": "종료 날짜",
  179 + "time-to": "종료 시간"
  180 + },
  181 + "dashboard": {
  182 + "dashboard": "대시보드",
  183 + "dashboards": "대시보드",
  184 + "management": "대시보드 관리",
  185 + "view-dashboards": "대시보드 보기",
  186 + "add": "대시보드 추가",
  187 + "assign-dashboard-to-customer": "대시보드 커스터머 선택",
  188 + "assign-dashboard-to-customer-text": "대시보드 커스터머를 선택하세요.",
  189 + "assign-to-customer-text": "대시보드 커스터머를 선택하세요.",
  190 + "assign-to-customer": "커스터머 선택",
  191 + "unassign-from-customer": "커스터머 해제",
  192 + "no-dashboards-text": "대시보드가 없습니다",
  193 + "no-widgets": "설정된 위젯 없음",
  194 + "add-widget": "위젯 추가",
  195 + "title": "타이틀",
  196 + "select-widget-title": "위젯 선택",
  197 + "select-widget-subtitle": "사용가능한 위젯 타입 목록",
  198 + "delete": "대시보드 삭제",
  199 + "title-required": "타이틀을 입력하세요.",
  200 + "description": "설명",
  201 + "details": "상세",
  202 + "dashboard-details": "대시보드 상세정보",
  203 + "add-dashboard-text": "대시보드 추가",
  204 + "assign-dashboards": "대시보드 지정",
  205 + "assign-new-dashboard": "새 대시보드 할당",
  206 + "assign-dashboards-text": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 커스터머 할당",
  207 + "delete-dashboards": "대시보드 삭제",
  208 + "unassign-dashboards": "대시보드 할당 취소",
  209 + "unassign-dashboards-action-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 커스터머 할당 취소",
  210 + "delete-dashboard-title": "'{{dashboardTitle}}' 대시보드를 삭제하시겠습니까?",
  211 + "delete-dashboard-text": "대시보드 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  212 + "delete-dashboards-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }를 삭제하시겠습니까?",
  213 + "delete-dashboards-action-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} } 삭제",
  214 + "delete-dashboards-text": "선택된 대시보드가 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  215 + "unassign-dashboard-title": "'{{dashboardTitle}}' 대시보드 할당을 해제하시겠습니까?",
  216 + "unassign-dashboard-text": "대시보드가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
  217 + "unassign-dashboard": "대시보드 할달 취소",
  218 + "unassign-dashboards-title": "{ count, select, 1 {대시보드 1개} other {대시보드 #개} }의 할당을 취소하시겠습니까?",
  219 + "unassign-dashboards-text": "선택된 대시보드가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
  220 + "select-dashboard": "대시보드 선택",
  221 + "no-dashboards-matching": "'{{dashboard}}'와 일치하는 대시보드가 없습니다.",
  222 + "dashboard-required": "대시보드를 입력하세요.",
  223 + "select-existing": "기존 대시보드 선택",
  224 + "create-new": "대시보드 생성",
  225 + "new-dashboard-title": "새로운 대시보드 타이틀",
  226 + "open-dashboard": "대시보드 열기",
  227 + "set-background": "대시보드 설정",
  228 + "background-color": "배경색",
  229 + "background-image": "배경 이미지",
  230 + "background-size-mode": "배경 사이즈 모드",
  231 + "no-image": "이미지 없음",
  232 + "drop-image": "이곳에 이미지를 끌어다놓거나 이곳을 클릭하여 파일을 선택하고 업로드하세요.",
  233 + "settings": "설정",
  234 + "columns-count": "열 개수",
  235 + "columns-count-required": "열 개수를 입력하세요.",
  236 + "min-columns-count-message": "열 개수를 최소 10 이상 입력하세요.",
  237 + "max-columns-count-message": "열 개수를 최대 100 이하로 입력하세요.",
  238 + "widgets-margins": "위젯 사이 여백 크기",
  239 + "horizontal-margin": "세로 여백",
  240 + "horizontal-margin-required": "세로 여백 값을 입력하세요.",
  241 + "min-horizontal-margin-message": "세로 여백 값을 최소 0 이상 입력하세요.",
  242 + "max-horizontal-margin-message": "세로 여백 값을 최대 50 이하로 입력하세요.",
  243 + "vertical-margin": "가로 여백",
  244 + "vertical-margin-required": "가로 여백 값을 입력하세요.",
  245 + "min-vertical-margin-message": "가로 여백 값을 최소 0 이상 입력하세요.",
  246 + "max-vertical-margin-message": "가로 여백 값을 최대 50 이하로 입력하세요.",
  247 + "display-title": "대시보드 타이틀 표시",
  248 + "title-color": "타이틀 색상",
  249 + "import": "대시보드 가져오기",
  250 + "export": "대시보드 내보내기",
  251 + "export-failed-error": "대시보드 내보내기를 할 수 없습니다.: {error}",
  252 + "create-new-dashboard": "대시보드 생성",
  253 + "dashboard-file": "대시보드 파일",
  254 + "invalid-dashboard-file-error": "대시보드 가져오기를 할 수 없습니다.: 대시보드 데이터 구조가 잘못되었습니다.",
  255 + "dashboard-import-missing-aliases-title": "대시보드 앨리어스를 위해 누락 된 디바이스 선택",
  256 + "create-new-widget": "새로운 위젯 생성",
  257 + "import-widget": "위젯 가져오기",
  258 + "widget-file": "위젯 파일",
  259 + "invalid-widget-file-error": "위젯 가져오기를 할 수 없습니다: 위젯 데이터 구조가 잘못되었습니다.",
  260 + "widget-import-missing-aliases-title": "위젯에서 사용하는 누락 된 디바이스 선택",
  261 + "open-toolbar": "대시보드 툴바 열기",
  262 + "close-toolbar": "툴바 닫기",
  263 + "configuration-error": "구성 오류",
  264 + "alias-resolution-error-title": "대시보드 앨리어스 구성 오류",
  265 + "invalid-aliases-config": "일부 앨리어스 필터와 일치하는 디바이스를 찾을 수 없습니다.<br>이 문제를 해결하려면 관리자에게 문의하십시오.",
  266 + "select-devices": "디바이스 선택",
  267 + "assignedToCustomer": "커스터머에 할당됨"
  268 + },
  269 + "datakey": {
  270 + "settings": "설정",
  271 + "advanced": "고급",
  272 + "label": "Label",
  273 + "color": "색상",
  274 + "data-generation-func": "데이터 생성 기능",
  275 + "use-data-post-processing-func": "데이터 후처리 기능 사용",
  276 + "configuration": "데이터 key 구성",
  277 + "timeseries": "Timeseries",
  278 + "attributes": "Attributes",
  279 + "timeseries-required": "디바이스 timeseries 를 입력하세요.",
  280 + "timeseries-or-attributes-required": "디바이스 timeseries/attributes 를 입력하세요.",
  281 + "function-types": "함수 유형",
  282 + "function-types-required": "함수 유형을 입력하세요."
  283 + },
  284 + "datasource": {
  285 + "type": "데이터소스 유형",
  286 + "add-datasource-prompt": "데이터소스를 추가하세요."
  287 + },
  288 + "details": {
  289 + "edit-mode": "편집 모드",
  290 + "toggle-edit-mode": "편집 모드 전환"
  291 + },
  292 + "device": {
  293 + "device": "디바이스",
  294 + "device-required": "디바이스를 입력하세요.",
  295 + "devices": "디바이스",
  296 + "management": "디바이스 관리",
  297 + "view-devices": "디바이스 보기",
  298 + "device-alias": "디바이스 앨리어스",
  299 + "aliases": "디바이스 앨리어스",
  300 + "no-alias-matching": "'{{alias}}' 를 찾을 수 없습니다.",
  301 + "no-aliases-found": "앨리어스가 없습니다.",
  302 + "no-key-matching": "'{{key}}' 를 찾을 수 없습니다.",
  303 + "no-keys-found": "Key가 없습니다.",
  304 + "create-new-alias": "새로 만들기!",
  305 + "create-new-key": "새로 만들기!",
  306 + "duplicate-alias-error": "중복된 '{{alias}}' 앨리어스가 있습니다.<br> 디바이스 앨리어스는 대시보드 내에서 고유해야 합니다.",
  307 + "configure-alias": "'{{alias}}' 앨리어스 구성",
  308 + "no-devices-matching": "'{{device}}'와 일치하는 디바이스를 찾을 수 없습니다.",
  309 + "alias": "앨리어스",
  310 + "alias-required": "디바이스 앨리어스를 입력하세요.",
  311 + "remove-alias": "디바이스 앨리어스 삭제",
  312 + "add-alias": "디바이스 앨리어스 추가",
  313 + "name-starts-with": "시작되는 이름",
  314 + "device-list": "디바이스 리스트",
  315 + "use-device-name-filter": "필터 사용",
  316 + "device-list-empty": "선택된 디바이스가 없습니다.",
  317 + "device-name-filter-required": "디바이스 필터 이름을 입력하세요.",
  318 + "device-name-filter-no-device-matched": "'{{device}}' 로 시작되는 디바이스를 찾을 수 없습니다.",
  319 + "add": "디바이스 추가",
  320 + "assign-to-customer": "커스터머에게 할당",
  321 + "assign-device-to-customer": "디바이스를 커스터머에게 할당",
  322 + "assign-device-to-customer-text": "고객에게 할당할 디바이스를 선택하십시오.",
  323 + "no-devices-text": "디바이스 없음",
  324 + "assign-to-customer-text": "디바이스를 할당할 커스터머를 선택하세요.",
  325 + "device-details": "디바이스 상세정보",
  326 + "add-device-text": "디바이스 추가",
  327 + "credentials": "크리덴셜",
  328 + "manage-credentials": "크리덴셜 관리",
  329 + "delete": "디바이스 삭제",
  330 + "assign-devices": "디바이스 할당",
  331 + "assign-devices-text": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 커서터머에 할당",
  332 + "delete-devices": "디바이스 삭제",
  333 + "unassign-from-customer": "커스터머 할당 해제",
  334 + "unassign-devices": "디바이스 할당 취소",
  335 + "unassign-devices-action-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 커스터머에게서 할당 해제",
  336 + "assign-new-device": "새로운 디바이스 할당",
  337 + "view-credentials": "크리덴셜 보기",
  338 + "delete-device-title": "'{{deviceName}}' 디바이스를 삭제하시겠습니까?",
  339 + "delete-device-text": "디바이스 및 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  340 + "delete-devices-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }를 삭제하시겠습니까?",
  341 + "delete-devices-action-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} } 삭제",
  342 + "delete-devices-text": "선택된 디바이스가 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  343 + "unassign-device-title": "'{{deviceName}}' 디바이스 할당을 해제하시겠습니까?",
  344 + "unassign-device-text": "디바이스가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
  345 + "unassign-device": "디바이스 할당 취소",
  346 + "unassign-devices-title": "{ count, select, 1 {디바이스 1개} other {디바이스 #개} }의 할당을 해제하시겠습니까??",
  347 + "unassign-devices-text": "선택된 디바이스가 할당 해제되고 커스터머는 액세스 할 수 없게됩니다.",
  348 + "device-credentials": "디바이스 크리덴셜",
  349 + "credentials-type": "크리덴셜 타입",
  350 + "access-token": "억세스 토큰",
  351 + "access-token-required": "액세스 토큰을 입력하세요.",
  352 + "access-token-invalid": "액세스 토큰 길이는 1 - 20 자 여야합니다.",
  353 + "rsa-key": "RSA public key",
  354 + "rsa-key-required": "RSA public key 를 입력하세요.",
  355 + "secret": "시크릿",
  356 + "secret-required": "시크릿을 입력하세요.",
  357 + "name": "이름",
  358 + "name-required": "이름을 입력하세요.",
  359 + "description": "설명",
  360 + "events": "이벤트",
  361 + "details": "상세",
  362 + "copyId": "디바이스 아이디 복사",
  363 + "copyAccessToken": "억세스 토큰 복사",
  364 + "idCopiedMessage": "디바이스 아이디가 클립보드에 복사되었습니다.",
  365 + "accessTokenCopiedMessage": "디바이스 억세스 토큰이 클립보드에 복사되었습니다.",
  366 + "assignedToCustomer": "커스터머에 할당됨",
  367 + "unable-delete-device-alias-title": "디바이스 앨리어스를 삭제할 수 없습니다.",
  368 + "unable-delete-device-alias-text": "'{{deviceAlias}}' 디바이스 앨리어스를 삭제할 수 없습니다. 다음 위젯에서 사용하고 있습니다.<br/>{{widgetsList}}",
  369 + "is-gateway": "게이트웨이 여부"
  370 + },
  371 + "dialog": {
  372 + "close": "다이얼로그 닫기"
  373 + },
  374 + "error": {
  375 + "unable-to-connect": "서버에 연결할 수 없습니다! 인터넷 연결을 확인하십시오.",
  376 + "unhandled-error-code": "처리되지 않은 오류 코드: {{errorCode}}",
  377 + "unknown-error": "알 수 없는 오류"
  378 + },
  379 + "event": {
  380 + "event-type": "이벤트 타입",
  381 + "type-alarm": "알람",
  382 + "type-error": "에러",
  383 + "type-lc-event": "주기적 이벤트",
  384 + "type-stats": "통계",
  385 + "no-events-prompt": "이벤트 없음",
  386 + "error": "에러",
  387 + "alarm": "알람",
  388 + "event-time": "이벤트 발생 시간",
  389 + "server": "서버",
  390 + "body": "Body",
  391 + "method": "Method",
  392 + "event": "이벤트",
  393 + "status": "상태",
  394 + "success": "성공",
  395 + "failed": "실패",
  396 + "messages-processed": "처리된 메시지",
  397 + "errors-occurred": "오류가 발생했습니다"
  398 + },
  399 + "fullscreen": {
  400 + "expand": "전체화면으로 확장",
  401 + "exit": "전체화면 종료",
  402 + "toggle": "전체화면 모드 전환",
  403 + "fullscreen": "전체화면"
  404 + },
  405 + "function": {
  406 + "function": "기능"
  407 + },
  408 + "grid": {
  409 + "delete-item-title": "이 항목을 삭제 하시겠습니까?",
  410 + "delete-item-text": "항목과 모든 관련 데이터를 복구 할 수 없으므로 주의하십시오.",
  411 + "delete-items-title": "{ count, select, 1 {아이템 1개} other {아이템 #개} }를 삭제하시겠습니까?",
  412 + "delete-items-action-title": "{ count, select, 1 {아이템 1개} other {아이템 #개} } 삭제",
  413 + "delete-items-text": "선택한 모든 아이템이 제거되고 관련된 모든 데이터는 복구 할 수 없으므로 주의하십시오.",
  414 + "add-item-text": "새로운 아이템 추가",
  415 + "no-items-text": "아이템이 없습니다.",
  416 + "item-details": "아이템 상세",
  417 + "delete-item": "아이템 삭제",
  418 + "delete-items": "아이템 삭제",
  419 + "scroll-to-top": "스크롤 맨 위로"
  420 + },
  421 + "help": {
  422 + "goto-help-page": "도움"
  423 + },
  424 + "home": {
  425 + "home": "홈",
  426 + "profile": "프로파일",
  427 + "logout": "로그아웃",
  428 + "menu": "메뉴",
  429 + "avatar": "Avatar",
  430 + "open-user-menu": "사용자 메뉴 열기"
  431 + },
  432 + "import": {
  433 + "no-file": "선택된 파일이 없습니다.",
  434 + "drop-file": "JSON 파일을 끌어다 놓거나 클릭하여 업로드 할 파일을 선택하십시오."
  435 + },
  436 + "item": {
  437 + "selected": "선택됨"
  438 + },
  439 + "js-func": {
  440 + "no-return-error": "함수는 값을 반환해야 합니다!",
  441 + "return-type-mismatch": "함수는 '{{type}}' 유형의 값을 반환해야 합니다!"
  442 + },
  443 + "legend": {
  444 + "position": "범례 위치",
  445 + "show-max": "최대값 표시",
  446 + "show-min": "최소값 표시",
  447 + "show-avg": "평균값 표시",
  448 + "show-total": "총합 표시",
  449 + "settings": "범례 설정",
  450 + "min": "최소",
  451 + "max": "최대",
  452 + "avg": "평균",
  453 + "total": "합계"
  454 + },
  455 + "login": {
  456 + "login": "로그인",
  457 + "request-password-reset": "비밀번호 재설정",
  458 + "reset-password": "비밀번호 재설정",
  459 + "create-password": "비밀번호 생성",
  460 + "passwords-mismatch-error": "입력된 비밀번호는 같아야 합니다!",
  461 + "password-again": "비밀번호 확인",
  462 + "sign-in": "로그인",
  463 + "username": "사용자명 (이메일)",
  464 + "remember-me": "아이디 저장",
  465 + "forgot-password": "비밀번호찾기",
  466 + "password-reset": "비밀번호 재설정",
  467 + "new-password": "새 비밀번호",
  468 + "new-password-again": "새 비밀번호 확인",
  469 + "password-link-sent-message": "비밀번호 재설정 링크가 성공적으로 전송되었습니다!",
  470 + "email": "이메일"
  471 + },
  472 + "plugin": {
  473 + "plugins": "플러그인",
  474 + "delete": "플러그인 삭제",
  475 + "activate": "플러그인 활성화",
  476 + "suspend": "플러그인 비활성화",
  477 + "active": "활성화",
  478 + "suspended": "비활성화",
  479 + "name": "이름",
  480 + "name-required": "이름을 입력하세요.",
  481 + "description": "설명",
  482 + "add": "플러그인 추가",
  483 + "delete-plugin-title": "'{{pluginName}}' 플러그인을 삭제하시겠습니까?",
  484 + "delete-plugin-text": "플러그인과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  485 + "delete-plugins-title": "{ count, select, 1 {플러그인 1개} other {플러그인 #개} }를 삭제하시겠습니까?",
  486 + "delete-plugins-action-title": "{ count, select, 1 {플러그인 1개} other {플러그인 #개} } 삭제",
  487 + "delete-plugins-text": "선택된 플러그인이 삭제되고 관련된 모든 데이터가 없어지므로 주의하십시오.",
  488 + "add-plugin-text": "새로운 플러그인 추가",
  489 + "no-plugins-text": "플러그인이 없습니다.",
  490 + "plugin-details": "플러그인 상세정보",
  491 + "api-token": "API 토큰",
  492 + "api-token-required": "API 토큰을 입력하세요.",
  493 + "type": "플러그인 종류",
  494 + "type-required": "플러그인 종류를 선택해주세요.",
  495 + "configuration": "플러그인 구성",
  496 + "system": "시스템",
  497 + "select-plugin": "플러그인 선택",
  498 + "plugin": "플러그인",
  499 + "no-plugins-matching": "'{{plugin}}'과 일치하는 플러그인을 찾을 수 없습니다.",
  500 + "plugin-required": "플러그인을 입력하세요.",
  501 + "plugin-require-match": "기존의 플러그인을 선택해주세요.",
  502 + "events": "이벤트",
  503 + "details": "상세",
  504 + "import": "플러그인 가져오기",
  505 + "export": "플러그인 내보내기",
  506 + "export-failed-error": "플러그인을 내보내기 할 수 없습니다.: {{error}}",
  507 + "create-new-plugin": "새로운 플러그인 생성",
  508 + "plugin-file": "플러그인 파일",
  509 + "invalid-plugin-file-error": "플러그인을 가져오기 할 수 없습니다.: 잘못된 플러그인 데이터 구조입니다."
  510 + },
  511 + "position": {
  512 + "top": "상단",
  513 + "bottom": "하단",
  514 + "left": "왼쪽",
  515 + "right": "오른쪽"
  516 + },
  517 + "profile": {
  518 + "profile": "프로파일",
  519 + "change-password": "비밀번호 변경",
  520 + "current-password": "현재 비밀번호"
  521 + },
  522 + "rule": {
  523 + "rules": "규칙",
  524 + "delete": "규칙 삭제",
  525 + "activate": "규칙 활성화",
  526 + "suspend": "규칙 비활성화",
  527 + "active": "활성화",
  528 + "suspended": "비활성화",
  529 + "name": "이름",
  530 + "name-required": "이름을 입력하세요.",
  531 + "description": "설명",
  532 + "add": "규칙 추가",
  533 + "delete-rule-title": "'{{ruleName}}' 규칙을 삭제하시겠습니까?",
  534 + "delete-rule-text": "규칙과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  535 + "delete-rules-title": "{ count, select, 1 {규칙 1개} other {규칙 #개} }를 삭제하시겠습니까?",
  536 + "delete-rules-action-title": "{ count, select, 1 {규칙 1개} other {규칙 #개} } 삭제",
  537 + "delete-rules-text": "선택된 규칙이 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  538 + "add-rule-text": "규칙 추가",
  539 + "no-rules-text": "규칙이 없습니다.",
  540 + "rule-details": "규칙 상세정보",
  541 + "filters": "필터",
  542 + "filter": "필터",
  543 + "add-filter-prompt": "필터를 추가해 주세요.",
  544 + "remove-filter": "필터 삭제",
  545 + "add-filter": "필터 추가",
  546 + "filter-name": "필터 이름",
  547 + "filter-type": "필터 종류",
  548 + "edit-filter": "필터 수정",
  549 + "view-filter": "필터 보기",
  550 + "component-name": "이름",
  551 + "component-name-required": "이름을 입력하세요.",
  552 + "component-type": "종류",
  553 + "component-type-required": "타입을 입력하세요.",
  554 + "processor": "프로세서",
  555 + "no-processor-configured": "프로세서가 구성되지 않았습니다.",
  556 + "create-processor": "프로세서 생성",
  557 + "processor-name": "프로세서 이름",
  558 + "processor-type": "프로세서 종류",
  559 + "plugin-action": "플러그인 액션",
  560 + "action-name": "액션 이름",
  561 + "action-type": "액션 종류",
  562 + "create-action-prompt": "액션을 만들어 주세요",
  563 + "create-action": "액션 생성",
  564 + "details": "상세",
  565 + "events": "이벤트",
  566 + "system": "시스템",
  567 + "import": "규칙 가져오기",
  568 + "export": "규칙 내보내기",
  569 + "export-failed-error": "규칙을 내보내기 할 수 없습니다.: {{error}}",
  570 + "create-new-rule": "새로운 규칙 생성",
  571 + "rule-file": "규칙 파일",
  572 + "invalid-rule-file-error": "규칙을 가져오기 할 수 없습니다.: 잘못된 데이터 구조입니다."
  573 + },
  574 + "rule-plugin": {
  575 + "management": "규칙 및 플러그인 관리"
  576 + },
  577 + "tenant": {
  578 + "tenants": "테넌트",
  579 + "management": "테넌트 관리",
  580 + "add": "테넌트 추가",
  581 + "admins": "Admins",
  582 + "manage-tenant-admins": "테넌트 관리자 관리",
  583 + "delete": "테넌트 삭제",
  584 + "add-tenant-text": "테넌트 추가",
  585 + "no-tenants-text": "테넌트가 없습니다.",
  586 + "tenant-details": "테넌트 상세정보",
  587 + "delete-tenant-title": "'{{tenantTitle}}' 테넌트를 삭제하시겠습니까?",
  588 + "delete-tenant-text": "테넌트와 관련된 모든 정보를 복구할 수 없으므로 주의하십시오.",
  589 + "delete-tenants-title": "{ count, select, 1 {테넌트 1개} other {테넌트 #개} }를 삭제하시겠습니까?",
  590 + "delete-tenants-action-title": "{ count, select, 1 {테넌트 1개} other {테넌트 #개} } 삭제",
  591 + "delete-tenants-text": "선택된 테넌트가 삭제되고 관련된 모든 정보를 복구할 수 없으므로 주의하십시오.",
  592 + "title": "타이틀",
  593 + "title-required": "타이틀을 입력하세요.",
  594 + "description": "설명"
  595 + },
  596 + "timeinterval": {
  597 + "seconds-interval": "{ seconds, select, 1 {1 second} other {# seconds} }",
  598 + "minutes-interval": "{ minutes, select, 1 {1 minute} other {# minutes} }",
  599 + "hours-interval": "{ hours, select, 1 {1 hour} other {# hours} }",
  600 + "days-interval": "{ days, select, 1 {1 day} other {# days} }",
  601 + "days": "Days",
  602 + "hours": "Hours",
  603 + "minutes": "Minutes",
  604 + "seconds": "Seconds",
  605 + "advanced": "고급"
  606 + },
  607 + "timewindow": {
  608 + "days": "{ days, select, 1 { day } other {# days } }",
  609 + "hours": "{ hours, select, 0 { hour } 1 {1 hour } other {# hours } }",
  610 + "minutes": "{ minutes, select, 0 { minute } 1 {1 minute } other {# minutes } }",
  611 + "seconds": "{ seconds, select, 0 { second } 1 {1 second } other {# seconds } }",
  612 + "realtime": "Realtime",
  613 + "history": "History",
  614 + "last-prefix": "last",
  615 + "period": "from {{ startTime }} to {{ endTime }}",
  616 + "edit": "타임윈도우 편집",
  617 + "date-range": "날짜 범위",
  618 + "last": "Last",
  619 + "time-period": "기간"
  620 + },
  621 + "user": {
  622 + "users": "사용자",
  623 + "customer-users": "커스터머 사용자",
  624 + "tenant-admins": "테넌트 관리자",
  625 + "sys-admin": "시스템 관리자",
  626 + "tenant-admin": "테넌트 관리자",
  627 + "customer": "커스터머",
  628 + "anonymous": "Anonymous",
  629 + "add": "사용자 추가",
  630 + "delete": "사용자 삭제",
  631 + "add-user-text": "새로운 사용자 추가",
  632 + "no-users-text": "사용자가 없습니다.",
  633 + "user-details": "사용자 상세정보",
  634 + "delete-user-title": "'{{userEmail}}' 사용자를 삭제하시겠습니까?",
  635 + "delete-user-text": "사용자와 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  636 + "delete-users-title": "{ count, select, 1 {사용자 1명} other {사용자 #명} }을 삭제하시겠니까?",
  637 + "delete-users-action-title": "{ count, select, 1 {사용자 1명} other {사용자 #명} } 삭제",
  638 + "delete-users-text": "선택된 사용자가 삭제된고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  639 + "activation-email-sent-message": "활성화 이메일을 보냈습니다!",
  640 + "resend-activation": "활성화 재전송",
  641 + "email": "Email",
  642 + "email-required": "Email을 입력하세요.",
  643 + "first-name": "이름",
  644 + "last-name": "성",
  645 + "description": "설명",
  646 + "default-dashboard": "기본 대시보드",
  647 + "always-fullscreen": "항상 전체화면"
  648 + },
  649 + "value": {
  650 + "type": "Value type",
  651 + "string": "String",
  652 + "string-value": "String value",
  653 + "integer": "Integer",
  654 + "integer-value": "Integer value",
  655 + "invalid-integer-value": "Invalid integer value",
  656 + "double": "Double",
  657 + "double-value": "Double value",
  658 + "boolean": "Boolean",
  659 + "boolean-value": "Boolean value",
  660 + "false": "False",
  661 + "true": "True"
  662 + },
  663 + "widget": {
  664 + "widget-library": "위젯 저장소",
  665 + "widget-bundle": "위젯 번들",
  666 + "select-widgets-bundle": "위젯 번들 선택",
  667 + "management": "위젯 관리",
  668 + "editor": "위젯 편집기",
  669 + "widget-type-not-found": "위젯 구성을 로드하는 중 문제가 발생했습니다.<br>연결된 위젯 타입이 삭제되었습니다.",
  670 + "widget-type-load-error": "다음과 같은 오류로 인해 위젯이로드되지 않았습니다:",
  671 + "remove": "위젯 삭제",
  672 + "edit": "위젯 수정",
  673 + "remove-widget-title": "'{{widgetTitle}}' 위젯을 삭제하시겠습니까?",
  674 + "remove-widget-text": "위젯과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  675 + "timeseries": "Time series",
  676 + "latest-values": "Latest values",
  677 + "rpc": "Control 위젯",
  678 + "static": "Static 위젯",
  679 + "select-widget-type": "위젯 타입 선택",
  680 + "missing-widget-title-error": "위젯 타이틀을 입력하세요!",
  681 + "widget-saved": "위젯이 저장되었습니다.",
  682 + "unable-to-save-widget-error": "위젯을 저장할 수 없습니다! 위젯에 오류가 있습니다!",
  683 + "save": "위젯 저장",
  684 + "saveAs": "다른 이름으로 위젯 저장",
  685 + "save-widget-type-as": "다른 이름으로 위젯 타입 저장",
  686 + "save-widget-type-as-text": "새로운 위젯 이름과 위젯 번들을 선택하세요.",
  687 + "toggle-fullscreen": "전체화면 전환",
  688 + "run": "위젯 실행",
  689 + "title": "위젯 타이틀",
  690 + "title-required": "위젯 타이틀을 입력하세요.",
  691 + "type": "위젯 타입",
  692 + "resources": "리소스",
  693 + "resource-url": "JavaScript/CSS URI",
  694 + "remove-resource": "리소스 삭제",
  695 + "add-resource": "리소스 추가",
  696 + "html": "HTML",
  697 + "tidy": "Tidy",
  698 + "css": "CSS",
  699 + "settings-schema": "스키마 설정",
  700 + "datakey-settings-schema": "데이터 키 설정 스키마",
  701 + "javascript": "Javascript",
  702 + "remove-widget-type-title": "'{{widgetName}}' 위젯 타입을 삭제하시겠습니까?",
  703 + "remove-widget-type-text": "위젯 타입과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  704 + "remove-widget-type": "위젯 타입 삭제",
  705 + "add-widget-type": "새로운 위젯 타입 추가",
  706 + "widget-type-load-failed-error": "위젯 타입을 로드하지 못했습니다!",
  707 + "widget-template-load-failed-error": "위젯 템플릿을 로드하지 못했습니다!",
  708 + "add": "위젯 추가",
  709 + "undo": "위젯 변경사항 취소",
  710 + "export": "위젯 내보내기"
  711 + },
  712 + "widgets-bundle": {
  713 + "current": "현재 번들",
  714 + "widgets-bundles": "위젯 번들",
  715 + "add": "위젯 번들 추가",
  716 + "delete": "위젯 번들 삭제",
  717 + "title": "타이틀",
  718 + "title-required": "타이틀을 입력하세요.",
  719 + "add-widgets-bundle-text": "위젯 번들 추가",
  720 + "no-widgets-bundles-text": "위젯 번들이 없습니다.",
  721 + "empty": "위젯 번들이 비어있습니다.",
  722 + "details": "상세",
  723 + "widgets-bundle-details": "위젯 번들 상세정보",
  724 + "delete-widgets-bundle-title": "'{{widgetsBundleTitle}}' 위젯 번들을 삭제하시겠습니까?",
  725 + "delete-widgets-bundle-text": "위젯 번들과 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  726 + "delete-widgets-bundles-title": "{ count, select, 1 {위젯 번들 1개} other {위젯 번들 #개} }를 삭제하시겠습니까?",
  727 + "delete-widgets-bundles-action-title": "{ count, select, 1 {위젯 번들 1개} other {위젯 번들 #개} } 삭제",
  728 + "delete-widgets-bundles-text": "선택된 위젯 번들이 삭제되고 관련된 모든 데이터를 복구할 수 없으므로 주의하십시오.",
  729 + "no-widgets-bundles-matching": "'{{widgetsBundle}}' 와(과) 일치하는 위젯 번들을 찾을 수 없습니다.",
  730 + "widgets-bundle-required": "위젯 번들을 입력하세요.",
  731 + "system": "시스템",
  732 + "import": "위젯 번들 가져오기",
  733 + "export": "위젯 번들 내보내기",
  734 + "export-failed-error": "위젯 번들을 내보내기 할 수 없습니다.: {{error}}",
  735 + "create-new-widgets-bundle": "새로운 위젯 번들 생성",
  736 + "widgets-bundle-file": "위젯 번들 파일",
  737 + "invalid-widgets-bundle-file-error": "위젯 번들을 가져오기 할 수 없습니다.: 잘못된 위젯 번들 데이터 구조입니다."
  738 + },
  739 + "widget-config": {
  740 + "data": "데이터",
  741 + "settings": "설정",
  742 + "advanced": "고급",
  743 + "title": "타이틀",
  744 + "general-settings": "일반 설정",
  745 + "display-title": "타이틀 표시",
  746 + "drop-shadow": "그림자",
  747 + "enable-fullscreen": "전체화면 사용 ",
  748 + "background-color": "배경 색",
  749 + "text-color": "글자 색",
  750 + "padding": "패딩",
  751 + "title-style": "타이틀 스타일",
  752 + "mobile-mode-settings": "모바일 모드 설정",
  753 + "order": "순서",
  754 + "height": "높이",
  755 + "units": "값 옆에 표시할 특수 기호",
  756 + "decimals": "소수점 이하 자릿수",
  757 + "timewindow": "타임윈도우",
  758 + "use-dashboard-timewindow": "대시보드 타임윈도우",
  759 + "display-legend": "범례 표시",
  760 + "datasources": "데이터소스",
  761 + "datasource-type": "유형",
  762 + "datasource-parameters": "파라미터",
  763 + "remove-datasource": "데이터소스 삭제",
  764 + "add-datasource": "데이터소스 추가",
  765 + "target-device": "대상 디바이스"
  766 + },
  767 + "widget-type": {
  768 + "import": "위젯 타입 가져오기",
  769 + "export": "위젯 타입 내보내기",
  770 + "export-failed-error": "위젯 타입을 내보내기 할 수 없습니다.: {{error}}",
  771 + "create-new-widget-type": "새로운 위젯 타입 생성",
  772 + "widget-type-file": "위젯 타입 파일",
  773 + "invalid-widget-type-file-error": "위젯 타입을 가져오기 할 수 없습니다.: 잘못된 위젯 타입 데이터 구조입니다."
  774 + },
  775 + "language": {
  776 + "language": "언어",
  777 + "en_US": "영어",
  778 + "ko_KR": "한글"
779 779 }
780   - ).name;
\ No newline at end of file
  780 + };
  781 + angular.extend(locales, {'ko_KR': ko_KR});
  782 +}
\ No newline at end of file
... ...
... ... @@ -774,6 +774,11 @@ export default angular.module('thingsboard.locale', [])
774 774 "create-new-widget-type": "Create new widget type",
775 775 "widget-type-file": "Widget type file",
776 776 "invalid-widget-type-file-error": "Unable to import widget type: Invalid widget type data structure."
  777 + },
  778 + "language": {
  779 + "language": "Language",
  780 + "en_US": "English",
  781 + "ko_KR": "Korean"
777 782 }
778 783 }
779 784 }
... ...
... ... @@ -20,25 +20,29 @@ import changePasswordTemplate from './change-password.tpl.html';
20 20 /* eslint-enable import/no-unresolved, import/default */
21 21
22 22 /*@ngInject*/
23   -export default function ProfileController(userService, $scope, $document, $mdDialog) {
  23 +export default function ProfileController(userService, $scope, $document, $mdDialog, $translate) {
24 24 var vm = this;
25 25
26 26 vm.profileUser = {};
27 27
28 28 vm.save = save;
29 29 vm.changePassword = changePassword;
  30 + vm.languageList = {en_US: {value: "en_US", name: "language.en_US"}, ko_KR: {value : "ko_KR", name: "language.ko_KR"}};
30 31
31 32 loadProfile();
32 33
33 34 function loadProfile() {
34 35 userService.getUser(userService.getCurrentUser().userId).then(function success(user) {
35 36 vm.profileUser = user;
  37 + vm.profileUser.lang = $translate.use();
36 38 });
37 39 }
38 40
39 41 function save() {
40 42 userService.saveUser(vm.profileUser).then(function success(user) {
  43 + $translate.use(vm.profileUser.lang);
41 44 vm.profileUser = user;
  45 + vm.profileUser.lang = $translate.use();
42 46 $scope.theForm.$setPristine();
43 47 });
44 48 }
... ...
... ... @@ -40,6 +40,14 @@
40 40 <label translate>user.last-name</label>
41 41 <input name="lastName" ng-model="vm.profileUser.lastName">
42 42 </md-input-container>
  43 + <md-input-container class="md-block">
  44 + <label translate>language.language</label>
  45 + <md-select name="language" ng-model="vm.profileUser.lang">
  46 + <md-option ng-repeat="lang in vm.languageList" ng-value="lang.value">
  47 + {{lang.name | translate}}
  48 + </md-option>
  49 + </md-select>
  50 + </md-input-container>
43 51 <md-button ng-disabled="loading" ng-click="vm.changePassword($event)"
44 52 class="md-raised md-primary">{{ 'profile.change-password' | translate }}
45 53 </md-button>
... ...