Repository: darkskyapp/forecast-io-translations
Pull request #87 (2017-01-31 14:50:03)

Add Bulgarian translation
Added Bulgarian translation to the project.


Patch:
diff --git a/lib/lang/bg.js b/lib/lang/bg.js
new file mode 100644
index 0000000..235e7e9
--- /dev/null
+++ b/lib/lang/bg.js
@@ -0,0 +1,175 @@
+function join_with_shared_prefix(a, b, joiner) {
+  var m = a,
+      i = 0,
+      j;
+
+  while(i !== m.length &&
+        i !== b.length &&
+        m.charCodeAt(i) === b.charCodeAt(i))
+    ++i;
+
+  while(i && m.charCodeAt(i - 1) !== 32)
+    --i;
+
+  return a + joiner + b.slice(i);
+}
+
+function time2(time)
+{
+  switch(time) {
+    case "в неделя":
+      time = "неделя";
+      break;
+    case "в понеделник":
+      time = "понеделник";
+      break;
+    case "във вторник":
+      time = "вторник";
+      break;
+    case "в сряда":
+      time = "сряда";
+      break;
+    case "в четвъвтък":
+      time = "четвъвтък";
+      break;
+    case "в петък":
+      time = "петък";
+      break;
+    case "в събота":
+      time = "събота";
+      break;
+  };
+  return time;
+}
+
+module.exports = require("../template")({
+  "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": "силен снеговалеж",
+  "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": "в събота",
+  "minutes": "$1 мин",
+  "fahrenheit": "$1\u00B0F",
+  "celsius": "$1\u00B0C",
+  "inches": "$1 in.",
+  "centimeters": "$1 см.",
+  "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, time2(b), " до ");
+    return "от " + a + " до " + time2(b);
+  },
+  "with": "$1, с $2",
+  "range": "$1\u2013$2",
+  "parenthetical": "$1 ($2)",
+  "for-hour": "$1 през следващия час",
+  "starting-in": "$1 започва до $2",
+  "stopping-in": "$1 приключва до $2",
+  "starting-then-stopping-later": "$1 започва до $2, и приключва до $3",
+  "stopping-then-starting-later": "$1 приключва до $2, и започва отново до $3",
+  "for-day": "$1 през целият ден",
+  "starting": "$1 започва $2",
+  "until": function(condition, time) {
+    //return condition + " до " + time2(time);
+    return condition + " " + time;
+  },
+  "until-starting-again": function(condition, timeUntil, timeAgain){
+    //timeUntil = time2(timeUntil);
+    return condition + " до " + timeUntil + ", започва отново " + timeAgain;
+  },
+  "starting-continuing-until": function(condition, timeFrom, timeTo) {
+    //timeFrom = time2(timeFrom);
+    //timeTo = time2(timeTo);
+    return condition + ", започва от " + timeFrom + ", до " + timeTo;
+  },
+  "during": function(condition, time) {
+    return condition + " " + time;
+  },
+  "for-week": "$1 през седмицата",
+  "over-weekend": "$1 през уикенда",
+  "temperatures-peaking": "температури, покачващи се до максимум $1 $2",
+  "temperatures-rising": "температури, покачващи до $1 $2",
+  "temperatures-valleying": "температури, падащи до $1 $2",
+  "temperatures-falling": "температури, падащи до минимум $1 $2",
+  /* Capitalize the first letter of every word, except if that word is "e". */
+  "title": function(str) {
+    return str.replace(/\S+/g, function(word) {
+      return word === "и" ?
+        word :
+        word.charAt(0).toUpperCase() + word.slice(1);
+    });
+  },
+  /* Capitalize the first word of the sentence and end with a period. */
+  "sentence": function(str) {
+    /* Capitalize. */
+    str = str.charAt(0).toUpperCase() + str.slice(1);
+
+    /* Add a period if there isn't already one. */
+    if(str.charAt(str.length - 1) !== ".")
+      str += ".";
+
+    return str;
+  }
+});


Test patch:
diff --git a/test_cases/bg.json b/test_cases/bg.json
new file mode 100644
index 0000000..58e4b23
--- /dev/null
+++ b/test_cases/bg.json
@@ -0,0 +1,256 @@
+{
+  "Ясно":
+    ["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", "light-wind"],
+
+  "Умерен Вятър":
+    ["title", "medium-wind"],
+
+  "Силен Вятър":
+    ["title", "heavy-wind"],
+
+  "Сухо":
+    ["title", "low-humidity"],
+
+  "Влажно":
+    ["title", "high-humidity"],
+
+  "Мъгла":
+    ["title", "fog"],
+
+  "Незначителна Облачност":
+    ["title", "light-clouds"],
+
+  "Облачно":
+    ["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 мин, и започва отново до 80 мин.":
+    ["sentence",
+      ["stopping-then-starting-later",
+        "medium-rain",
+        ["minutes", 25],
+        ["minutes", 80]]],
+
+
+  "Облачно през целият ден.":
+    ["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",
+        "morning",
+        "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", ["centimeters", 5]],
+      "night"]],
+
+  "Слаб сняг (2 см.) по-късно тази сутрин.":
+    ["sentence", ["during",
+      ["parenthetical", "light-snow", ["centimeters", 2]],
+      "later-today-morning"]],
+
+  "Силен снеговалеж (8–12 in.) през целият ден.":
+    ["sentence", ["for-day",
+      ["parenthetical", "heavy-snow", ["inches", ["range", 8, 12]]]]],
+	  
+  "Снеговалеж (по-малко 1 см.) следобед.":
+    ["sentence", ["during",
+      ["parenthetical", "medium-snow", ["less-than", ["centimeters", 1]]],
+      "afternoon"]],
+
+  "Без превалявания през седмицата, с температури, покачващи се до максимум 35°F утре.":
+    ["sentence", ["with",
+      ["for-week", "no-precipitation"],
+      ["temperatures-peaking",
+        ["fahrenheit", 35],
+        "tomorrow"]]],
+
+  "Временни превалявания през уикенда, с температури, покачващи до 32°C в четвъвтък.":
+    ["sentence", ["with",
+      ["over-weekend", "mixed-precipitation"],
+      ["temperatures-rising",
+        ["celsius", 32],
+        "thursday"]]],
+
+  "Слаб дъжд в понеделник, с температури, падащи до 15°C в петък.":
+    ["sentence", ["with",
+      ["during", "very-light-rain", "monday"],
+      ["temperatures-valleying",
+        ["celsius", 15],
+        "friday"]]],
+
+  "Слаб сняг във вторник и в сряда, с температури, падащи до минимум 0°C в неделя.":
+    ["sentence", ["with",
+      ["during", "light-snow", ["and", "tuesday", "wednesday"]],
+      ["temperatures-falling",
+        ["celsius", 0],
+        "sunday"]]],
+
+  "Превалявания от днес до събота, с температури, покачващи се до максимум 37°C в понеделник.":
+    ["sentence", ["with",
+      ["during",
+        "medium-precipitation",
+        ["through", "today", "saturday"]],
+      ["temperatures-peaking",
+        ["celsius", 37],
+        "monday"]]],
+		
+  "Временни превалявания (1–3 in.) през целият ден.":
+    ["sentence",
+      ["for-day",
+        ["parenthetical", "mixed-precipitation", ["inches", ["range", 1, 3]]]]]
+
+}