diff --git a/lib/lang/ko.js b/lib/lang/ko.js new file mode 100644 index 00000000..57174bb1 --- /dev/null +++ b/lib/lang/ko.js @@ -0,0 +1,128 @@ +"use strict"; + +function join_with_shared_prefix(a, b, joiner) { + var i = 0; + + while(i !== a.length && + i !== b.length && + a.charCodeAt(i) === b.charCodeAt(i)) + ++i; + + while(i && a.charCodeAt(i - 1) !== 32) + --i; + + return a.slice(0, i) + a.slice(i) + joiner + b.slice(i); +} + +module.exports = { + "clear": "맑음", + "no-precipitation": "강수 없음", + "mixed-precipitation": "진눈깨비", + "possible-very-light-precipitation": "아주 약한 강수 가능성", + "very-light-precipitation": "아주 약한 강수", + "possible-light-precipitation": "약한 강수 가능성", + "light-precipitation": "약한 강수", + "medium-precipitation": "강수", + "heavy-precipitation": "강한 강수", + "possible-very-light-rain": "이슬비 가능성", + "very-light-rain": "이슬비", + "possible-light-rain": "가랑비 가능성", + "light-rain": "약한 비", + "medium-rain": "비", + "heavy-rain": "강한 비", + "possible-very-light-sleet": "아주 약한 진눈깨비 가능성", + "very-light-sleet": "아주 약한 진눈깨비", + "possible-light-sleet": "약한 진눈깨비 가능성", + "light-sleet": "약한 진눈깨비", + "medium-sleet": "진눈깨비", + "heavy-sleet": "강한 진눈깨비", + "possible-very-light-snow": "흩뿌리는 눈 가능성", + "very-light-snow": "아주 약한 눈", + "possible-light-snow": "약한 눈 가능성", + "light-snow": "약한 눈", + "medium-snow": "눈", + "heavy-snow": "강한 눈", + "possible-thunderstorm": "뇌우 가능성", + "thunderstorm": "뇌우", + "light-wind": "약한 바람", + "medium-wind": "바람", + "heavy-wind": "강한 바람", + "low-humidity": "건조", + "high-humidity": "습함", + "fog": "안개", + "light-clouds": "약간 흐림", + "medium-clouds": "흐림", + "heavy-clouds": "흐림", + "today-morning": "오늘 아침", + "later-today-morning": "오늘 오전", + "today-afternoon": "오늘 오후", + "later-today-afternoon": "오늘 오후", + "today-evening": "오늘 저녁", + "later-today-evening": "오늘 저녁", + "today-night": "오늘 밤", + "later-today-night": "오늘 밤", + "tomorrow-morning": "내일 아침", + "tomorrow-afternoon": "내일 오후", + "tomorrow-evening": "내일 저녁", + "tomorrow-night": "내일 밤", + "morning": "아침", + "afternoon": "오후", + "evening": "저녁", + "night": "밤", + "today": "오늘", + "tomorrow": "내일", + "sunday": "일요일", + "monday": "월요일", + "tuesday": "화요일", + "wednesday": "수요일", + "thursday": "목요일", + "friday": "금요일", + "saturday": "토요일", + "next-sunday": "다음주 일요일", + "next-monday": "다음주 월요일", + "next-tuesday": "다음주 화요일", + "next-wednesday": "다음주 수요일", + "next-thursday": "다음주 목요일", + "next-friday": "다음주 금요일", + "next-saturday": "다음주 토요일", + "minutes": "$1분", + "fahrenheit": "$1\u00B0F", + "celsius": "$1\u00B0C", + "inches": "$1인치", + "centimeters": "$1cm", + "less-than": "< $1", + "and": function(a, b) { + return join_with_shared_prefix( + a, + b, + a.indexOf(",") !== -1 ? ", " : ", " + ); + }, + "through": function(a, b) { + return join_with_shared_prefix(a, b, "부터 "); + }, + "with": "$1, $2", + "range": "$1\u2013$2", + "parenthetical": "$1($2)", + "for-hour": "한 시간 $1", + "starting-in": "$2 후 $1 시작", + "stopping-in": "$2 후 $1 멈춤", + "starting-then-stopping-later": "$2 후 $1 시작, $3 후 멈춤", + "stopping-then-starting-later": "$2 후 $1 멈춤, $3 후 다시 시작", + "for-day": "온종일 $1", + "starting": "$2에 $1 시작", + "until": "$2까지 $1", + "until-starting-again": "$2까지 $1, $3 다시 시작", + "starting-continuing-until": "$2 $1 시작, $3까지 이어짐", + "during": "$2동안 $1", + "for-week": "일주일 내내 $1", + "over-weekend": "주말 내내 $1", + "temperatures-peaking": "$2 최고기온 $1", + "temperatures-rising": "$2 $1까지 상승", + "temperatures-valleying": "$2 최저기온 $1", + "temperatures-falling": "$2 $1까지 하강", + /* Korean doesn't have capitalization */ + "title": "$1", + /* The period looks weird in Korean */ + "sentence": "$1", +}; diff --git a/package.json b/package.json index dd3ec4bf..69f521c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "translations", - "version": "2.0.0", + "version": "2.1.0", "description": "translate the Dark Sky API into any language", "author": { "name": "The Dark Sky Company", @@ -230,6 +230,11 @@ "name": "AndyTempel", "email": "andraz@korenc.eu", "web": "https://ksoft.si" + }, + { + "name": "Hyejin Ahn", + "email": "hyejinahn0619@gmail.com", + "web": "https://github.com/powerwlsl" } ], "repository": { diff --git a/test_cases/ko.json b/test_cases/ko.json new file mode 100644 index 00000000..c3fe3fd6 --- /dev/null +++ b/test_cases/ko.json @@ -0,0 +1,261 @@ +{ + "맑음": + ["title", "clear"], + + "아주 약한 강수 가능성": + ["title", "possible-very-light-precipitation"], + + "아주 약한 강수": + ["title", "very-light-precipitation"], + + "약한 강수 가능성": + ["title", "possible-light-precipitation"], + + "약한 강수": + ["title", "light-precipitation"], + + "강수": + ["title", "medium-precipitation"], + + "강한 강수": + ["title", "heavy-precipitation"], + + "이슬비 가능성": + ["title", "possible-very-light-rain"], + + "이슬비": + ["title", "very-light-rain"], + + "가랑비 가능성": + ["title", "possible-light-rain"], + + "약한 비": + ["title", "light-rain"], + + "비": + ["title", "medium-rain"], + + "강한 비": + ["title", "heavy-rain"], + + "약한 진눈깨비 가능성": + ["title", "possible-very-light-sleet"], + + "약한 진눈깨비": + ["title", "very-light-sleet"], + + "약한 진눈깨비 가능성": + ["title", "possible-light-sleet"], + + "약한 진눈깨비": + ["title", "light-sleet"], + + "진눈깨비": + ["title", "medium-sleet"], + + "강한 진눈깨비": + ["title", "heavy-sleet"], + + "흩뿌리는 눈 가능성": + ["title", "possible-very-light-snow"], + + "아주 약한 눈": + ["title", "very-light-snow"], + + "약한 눈 가능성": + ["title", "possible-light-snow"], + + "약한 눈": + ["title", "light-snow"], + + "눈": + ["title", "medium-snow"], + + "강한 눈": + ["title", "heavy-snow"], + + "바람": + ["title", "medium-wind"], + + "강한 바람": + ["title", "heavy-wind"], + + "안개": + ["title", "fog"], + + "흐림": + ["title", "medium-clouds"], + + "흐림": + ["title", "heavy-clouds"], + + "건조, 약한 바람": + ["title", ["and", "low-humidity", "light-wind"]], + + "이슬비, 강한 바람": + ["title", ["and", "very-light-rain", "heavy-wind"]], + + "습함, 약간 흐림": + ["title", ["and", "high-humidity", "light-clouds"]], + + + "한 시간 맑음": + ["sentence", ["for-hour", "clear"]], + + "35분 후 아주 약한 눈 시작": + ["sentence", ["starting-in", "very-light-snow", ["minutes", 35]]], + + "15분 후 약한 비 멈춤": + ["sentence", ["stopping-in", "light-rain", ["minutes", 15]]], + + "20분 후 강한 진눈깨비 시작, 30분 후 멈춤": + ["sentence", + ["starting-then-stopping-later", + "heavy-sleet", + ["minutes", 20], + ["minutes", 30]]], + + "25분 후 비 멈춤, 8분 후 다시 시작": + ["sentence", + ["stopping-then-starting-later", + "medium-rain", + ["minutes", 25], + ["minutes", 8]]], + + + "온종일 흐림": + ["sentence", ["for-day", "medium-clouds"]], + + "아침에 아주 약한 진눈깨비 시작": + ["sentence", ["starting", "very-light-sleet", "morning"]], + + "오늘 밤까지 바람": + ["sentence", ["until", "medium-wind", "today-night"]], + + "오후까지 강한 강수": + ["sentence", ["until", "heavy-precipitation", "afternoon"]], + + "오후동안 약한 바람": + ["sentence", ["during", "light-wind", "afternoon"]], + + "오늘 저녁, 내일 아침동안 눈": + ["sentence", ["during", + "medium-snow", + ["and", "later-today-evening", "tomorrow-morning"]]], + + "오늘 오전까지 강한 비, 오늘 저녁 다시 시작": + ["sentence", ["until-starting-again", + "heavy-rain", + "later-today-morning", + "today-evening"]], + + "저녁 흐림 시작, 밤까지 이어짐": + ["sentence", ["starting-continuing-until", + "heavy-clouds", + "evening", + "night"]], + + "오늘 오후동안 약한 진눈깨비, 내일 아침동안 안개": + ["sentence", ["and", + ["during", "light-sleet", "later-today-afternoon"], + ["during", "fog", "tomorrow-morning"]]], + + "오늘 아침 강한 바람 시작, 오늘 오후까지 이어짐, 내일 아침동안 진눈깨비": + ["sentence", ["and", + ["starting-continuing-until", + "heavy-wind", + "today-morning", + "today-afternoon"], + ["during", "medium-sleet", "tomorrow-morning"]]], + + "오늘 밤에 흐림 시작, 내일 오후동안 강한 눈": + ["sentence", ["and", + ["starting", "heavy-clouds", "later-today-night"], + ["during", "heavy-snow", "tomorrow-afternoon"]]], + + "오늘 밤동안 건조, 내일 저녁 약한 강수 시작, 내일 밤까지 이어짐": + ["sentence", ["and", + ["during", "low-humidity", "today-night"], + ["starting-continuing-until", + "light-precipitation", + "tomorrow-evening", + "tomorrow-night"]]], + + "밤동안 눈(5인치)": + ["sentence", ["during", + ["parenthetical", "medium-snow", ["inches", 5]], + "night"]], + + "오늘 오전동안 약한 눈(2cm)": + ["sentence", ["during", + ["parenthetical", "light-snow", ["centimeters", 2]], + "later-today-morning"]], + + "온종일 강한 눈(8–12인치)": + ["sentence", ["for-day", + ["parenthetical", "heavy-snow", ["inches", ["range", 8, 12]]]]], + + "오후동안 눈(< 1cm)": + ["sentence", ["during", + ["parenthetical", "medium-snow", ["less-than", ["centimeters", 1]]], + "afternoon"]], + + + "일주일 내내 강수 없음, 내일 최고기온 85°F": + ["sentence", ["with", + ["for-week", "no-precipitation"], + ["temperatures-peaking", + ["fahrenheit", 85], + "tomorrow"]]], + + "주말 내내 진눈깨비, 목요일 32°C까지 상승": + ["sentence", ["with", + ["over-weekend", "mixed-precipitation"], + ["temperatures-rising", + ["celsius", 32], + "thursday"]]], + + "월요일동안 이슬비, 금요일 최저기온 15°F": + ["sentence", ["with", + ["during", "very-light-rain", "monday"], + ["temperatures-valleying", + ["fahrenheit", 15], + "friday"]]], + + "화요일, 다음주 수요일동안 약한 눈, 일요일 0°C까지 하강": + ["sentence", ["with", + ["during", "light-snow", ["and", "tuesday", "next-wednesday"]], + ["temperatures-falling", + ["celsius", 0], + "sunday"]]], + + "오늘부터 토요일동안 강수, 월요일 최고기온 100°F": + ["sentence", ["with", + ["during", + "medium-precipitation", + ["through", "today", "saturday"]], + ["temperatures-peaking", + ["fahrenheit", 100], + "monday"]]], + + "온종일 진눈깨비(1–3인치)": + ["sentence", + ["for-day", + ["parenthetical", "mixed-precipitation", ["inches", ["range", 1, 3]]]]], + + "강한 눈(1–3인치)": + ["title", ["parenthetical", "heavy-snow", ["inches", ["range", 1, 3]]]], + + "강한 눈(3–5cm)": + ["title", ["parenthetical", "heavy-snow", ["centimeters", ["range", 3, 5]]]], + + "뇌우 가능성": + ["title", "possible-thunderstorm"], + + "강한 비, 뇌우": + ["title", ["and", "heavy-rain", "thunderstorm"]], + + "< 1분 후 이슬비 시작": + ["sentence", + ["starting-in", "very-light-rain", ["less-than", ["minutes", 1]]]] +}