diff --git a/i18next-parser.config.ts b/i18next-parser.config.ts index e16bf8d3..5d69e1cf 100644 --- a/i18next-parser.config.ts +++ b/i18next-parser.config.ts @@ -1,6 +1,6 @@ export default { output: "src/locales/$LOCALE/$NAMESPACE.json", - locales: [ "de", "fr", "he", "it","ja", "zh" ], + locales: ["de", "fr", "he", "it", "ja", "ko", "zh"], // Because some keys are dynamically generated, i18next-parser can't detect them. // We add these keys manually, so we don't want to remove them. diff --git a/src/i18n.ts b/src/i18n.ts index 23a9744d..f2552c90 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -10,6 +10,7 @@ export const supportedLanguages = { "he": "עברית", "it": "Italiano", "ja": "日本語", + "ko": "한국어", "zh": "简体中文" } as const; diff --git a/src/locales/README.md b/src/locales/README.md index 4188a973..812dcc59 100644 --- a/src/locales/README.md +++ b/src/locales/README.md @@ -49,9 +49,10 @@ The following users can help you with the relevant languages: | de | German | [@josxha](https://github.com/josxha) | | en | English | [@HarelM](https://github.com/HarelM) | | fr | French | [@lhapaipai](https://github.com/lhapaipai) | -| hr | Hebrew | [@HarelM](https://github.com/HarelM) | +| he | Hebrew | [@HarelM](https://github.com/HarelM) | | it | Italian | [@napo](https://github.com/napo) | | ja | Japanese | [@keichan34](https://github.com/keichan34) | +| ko | Korean | [@jinifor](https://github.com/jinifor) | | zh | Simplified Chinese | [@jieme](https://github.com/jieme) | You can test the UI in different languages using the dropdown in the top menu diff --git a/src/locales/ko/translation.json b/src/locales/ko/translation.json new file mode 100644 index 00000000..5adee444 --- /dev/null +++ b/src/locales/ko/translation.json @@ -0,0 +1,210 @@ +{ + "Input value": "입력 값", + "Data value": "데이터 값", + "Output value": "값", + "Function": "함수", + "Select a type of data scale (default is 'categorical').": "데이터 스케일 유형을 선택하세요 (기본값 'categorical')", + "Base": "베이스", + "Input a data property to base styles off of.": "스타일의 기준이 될 데이터 속성을 입력하세요.", + "Default": "기본값", + "Stops": "기준점", + "Zoom": "줌", + "Add stop": "기준점 추가", + "Convert to expression": "표현식으로 변환", + "Remove zoom level from stop": "기준점에서 줌 레벨 제거", + "Revert from expression": "표현식에서 되돌리기", + "Delete expression": "표현식 삭제", + "Convert property into a zoom function": "속성을 줌 함수로 변환", + "Convert property to data function": "속성을 데이터 함수로 변환", + "Convert property into a elevation function": "속성을 고도 함수로 변환", + "Layer <1>{formatLayerId(layerId)}: {parsed.data.message}": "레이어 <1>{formatLayerId(layerId)}: {parsed.data.message}", + "switch to layer": "레이어 전환", + "Map": "맵", + "Inspect": "검사", + "Deuteranopia filter": "녹색맹 필터", + "Protanopia filter": "적색맹 필터", + "Tritanopia filter": "청색맹 필터", + "Achromatopsia filter": "전색맹 필터", + "Layers list": "레이어 목록", + "Layer editor": "레이어 편집기", + "Map view": "맵 뷰", + "Maputnik on GitHub": "GitHub의 Maputnik", + "Open": "열기", + "Save": "저장", + "Code Editor": "코드 편집기", + "Data Sources": "데이터 소스", + "Style Settings": "스타일 설정", + "Global State": "전역 상태", + "View": "보기", + "Color accessibility": "색상 접근성", + "Help": "도움말", + "Close": "닫기", + "Click to close the editor": "편집기를 닫으려면 클릭하세요", + "Comments for the current layer. This is non-standard and not in the spec.": "현재 레이어에 대한 설명입니다. 이것은 비표준이며 사양에 포함되지 않습니다.", + "Comments": "주석", + "Comment...": "주석 입력...", + "Max Zoom": "최대 줌", + "Min Zoom": "최소 줌", + "Source": "소스", + "Source Layer": "소스 레이어", + "Type": "유형", + "Nested filters are not supported.": "중첩 필터는 지원되지 않습니다.", + "Upgrade to expression": "표현식으로 업그레이드", + "Filter": "필터", + "every filter matches": "모든 필터 일치", + "no filter matches": "필터 불일치", + "any filter matches": "일부 필터 일치", + "Add filter": "필터 추가", + "You've entered an old style filter.": "이전 스타일 필터를 입력했습니다.", + "Switch to filter editor.": "필터 편집기로 전환합니다.", + "Delete filter block": "필터 블록 삭제", + "Add value": "값 추가", + "Remove array item": "배열 항목 제거", + "Must provide protocol: <1>https://": "프로토콜을 포함해주세요: <1>https://", + "Must provide protocol: <1>http:// or <3>https://": "프로토콜을 포함해주세요: <1>http:// 또는 <3>https://", + "CORS policy won't allow fetching resources served over http from https, use a <1>https:// domain": "CORS 정책으로 인해 https에서 http 리소스를 가져올 수 없습니다. <1>https:// 도메인을 사용하세요", + "General layout properties": "일반 레이아웃 속성", + "Text layout properties": "텍스트 레이아웃 속성", + "Icon layout properties": "아이콘 레이아웃 속성", + "Text paint properties": "텍스트 페인트 속성", + "Icon paint properties": "아이콘 페인트 속성", + "Paint properties": "페인트 속성", + "Layout properties": "레이아웃 속성", + "Layer": "레이어", + "JSON Editor": "JSON 편집기", + "Delete": "삭제", + "Duplicate": "복제", + "Show": "표시", + "Hide": "숨기기", + "Move layer up": "레이어 위로 이동", + "Move layer down": "레이어 아래로 이동", + "Layer: {{layerId}}": "레이어: {{layerId}}", + "Layers": "레이어", + "Collapse": "접기", + "Expand": "펼치기", + "Add Layer": "레이어 추가", + "Search": "검색", + "Zoom:": "줌:", + "Close popup": "팝업 닫기", + "cursor:": "커서:", + "center:": "중심:", + "rotation:": "회전:", + "Close modal": "모달 닫기", + "Layer ID already exists": "레이어 ID가 이미 존재합니다", + "Debug": "디버그", + "Options": "옵션", + "Links": "링크", + "<0>Open in OSM. Opens the current view on openstreetmap.org": "<0>OSM에서 열기. 현재 뷰를 openstreetmap.org에서 엽니다", + "Save Style": "스타일 저장", + "Save the JSON style to your computer.": "JSON 스타일을 컴퓨터에 저장합니다.", + "Save as": "다른 이름으로 저장", + "Create HTML": "HTML 생성", + "Key": "키", + "Value": "값", + "Remove variable": "변수 제거", + "Global State Variables": "전역 상태 변수", + "No global state variables defined. Add variables to create reusable values in your style.": "전역 상태 변수가 정의되지 않았습니다. 스타일에서 재사용 가능한 값을 생성하려면 변수를 추가하세요.", + "Add Variable": "변수 추가", + "Cancel": "취소", + "Open Style": "스타일 열기", + "Open local Style": "로컬 스타일 열기", + "Open a local JSON style from your computer.": "컴퓨터에서 로컬 JSON 스타일을 엽니다.", + "Load from URL": "URL에서 불러오기", + "Load from a URL. Note that the URL must have <1>CORS enabled.": "URL에서 불러옵니다. URL은 <1>CORS가 활성화되어 있어야 합니다.", + "Style URL": "스타일 URL", + "Enter URL...": "URL 입력...", + "Gallery Styles": "갤러리 스타일", + "Open one of the publicly available styles to start from.": "공개 스타일 중 하나를 선택하여 시작하세요.", + "Loading style": "스타일 로딩 중", + "Loading: {{requestUrl}}": "로딩: {{requestUrl}}", + "Name": "이름", + "Owner": "소유자", + "Owner ID of the style. Used by Mapbox or future style APIs.": "스타일 소유자의 ID입니다. Mapbox 또는 향후 스타일 API에서 사용됩니다.", + "Sprite URL": "스프라이트 URL", + "Glyphs URL": "글리프 URL", + "Center": "중심 좌표", + "Bearing": "방위각", + "Pitch": "경사각", + "Light anchor": "라이트 고정점", + "Light color": "라이트 색상", + "Light intensity": "라이트 강도", + "Light position": "라이트 위치", + "Terrain source": "터레인 소스", + "Terrain exaggeration": "터레인 고도 배율", + "Transition delay": "전환 지연", + "Transition duration": "전환 지속시간", + "Projection": "투영법", + "Open Layers (experimental)": "레이어 열기 (실험적)", + "Shortcuts menu": "단축키 메뉴", + "Open modal": "모달 열기", + "Export modal": "모달 내보내기", + "Data Sources modal": "데이터 소스 모달", + "Style Settings modal": "스타일 설정 모달", + "Toggle inspect": "검사 전환", + "Focus map": "포커스 맵", + "Debug modal": "디버그 모달", + "Increase the zoom level by 1.": "줌 레벨을 1 증가시킵니다.", + "Increase the zoom level by 2.": "줌 레벨을 2 증가시킵니다.", + "Decrease the zoom level by 1.": "줌 레벨을 1 감소시킵니다.", + "Decrease the zoom level by 2.": "줌 레벨을 2 감소시킵니다.", + "Pan up by 100 pixels.": "100픽셀 위로 이동합니다.", + "Pan down by 100 pixels.": "100픽셀 아래로 이동합니다.", + "Pan left by 100 pixels.": "100픽셀 왼쪽으로 이동합니다.", + "Pan right by 100 pixels.": "100픽셀 오른쪽으로 이동합니다.", + "Increase the rotation by 15 degrees.": "회전을 15도 증가시킵니다.", + "Decrease the rotation by 15 degrees.": "회전을 15도 감소시킵니다.", + "Increase the pitch by 10 degrees.": "경사각을 10도 증가시킵니다.", + "Decrease the pitch by 10 degrees.": "경사각을 10도 감소시킵니다.", + "Shortcuts": "단축키", + "Press <1>ESC to lose focus of any active elements, then press one of:": "<1>ESC를 눌러 활성 요소의 포커스를 해제한 후, 다음 중 하나를 누르세요:", + "If the Map is in focused you can use the following shortcuts": "맵에 포커스가 맞춰진 경우 다음 단축키를 사용할 수 있습니다", + "Remove '{{sourceId}}' source": "'{{sourceId}}' 소스 제거", + "Source ID": "소스 ID", + "Unique ID that identifies the source and is used in the layer to reference the source.": "소스를 식별하고 레이어에서 소스를 참조하는 데 사용되는 고유 ID입니다.", + "Source Type": "소스 유형", + "GeoJSON (JSON)": "GeoJSON (JSON)", + "GeoJSON (URL)": "GeoJSON (URL)", + "Vector (TileJSON URL)": "벡터 (TileJSON URL)", + "Vector (Tile URLs)": "벡터 (Tile URLs)", + "Raster (TileJSON URL)": "래스터 (TileJSON URL)", + "Raster (Tile URLs)": "래스터 (Tile URLs)", + "Raster DEM (TileJSON URL)": "래스터 DEM (TileJSON URL)", + "Raster DEM (XYZ URLs)": "래스터 DEM (XYZ URLs)", + "Vector (PMTiles)": "벡터 (PMTiles)", + "Image": "이미지", + "Video": "비디오", + "Add Source": "소스 추가", + "Sources": "소스", + "Active Sources": "활성 소스", + "Choose Public Source": "공개 소스 선택", + "Add one of the publicly available sources to your style.": "공개적으로 사용 가능한 소스 중 하나를 스타일에 추가하세요.", + "Add New Source": "새 소스 추가", + "Add a new source to your style. You can only choose the source type and id at creation time!": "스타일에 새 소스를 추가합니다. 소스 유형과 ID는 생성 시에만 선택할 수 있습니다!", + "TileJSON URL": "TileJSON URL", + "Tile URL": "타일 URL", + "Scheme Type": "스키마 유형", + "Coord top left": "좌상단 좌표", + "Coord top right": "우상단 좌표", + "Coord bottom right": "우하단 좌표", + "Coord bottom left": "좌하단 좌표", + "Image URL": "이미지 URL", + "Video URL": "비디오 URL", + "GeoJSON URL": "GeoJSON URL", + "GeoJSON": "GeoJSON", + "Cluster": "클러스터", + "PMTiles URL": "PMTiles URL", + "Tile Size": "타일 크기", + "Encoding": "인코딩", + "Error:": "오류:", + "MapTiler Access Token": "MapTiler 액세스 토큰", + "Public access token for MapTiler Cloud.": "MapTiler Cloud용 공개 액세스 토큰입니다.", + "Learn More": "자세히 알아보기", + "Thunderforest Access Token": "Thunderforest 액세스 토큰", + "Public access token for Thunderforest services.": "Thunderforest 서비스용 공개 액세스 토큰입니다.", + "Stadia Maps API Key": "Stadia Maps API 키", + "API key for Stadia Maps.": "Stadia Maps용 API 키 입니다.", + "LocationIQ Access Token": "LocationIQ 액세스 토큰", + "Public access token for LocationIQ services.": "LocationIQ 서비스용 공개 액세스 토큰입니다.", + "Style Renderer": "스타일 렌더러", + "Choose the default Maputnik renderer for this style.": "이 스타일의 기본 Maputnik 렌더러를 선택하세요." +}