Repository: darkskyapp/forecast-io-translations
Pull request #159 (2017-09-27 19:25:33)

Add Danish Translation
I've created the appropriate files for the Danish language. The test was passed.


Patch:
diff --git a/lib/lang/da.js b/lib/lang/da.js
new file mode 100644
index 0000000..3449303
--- /dev/null
+++ b/lib/lang/da.js
@@ -0,0 +1,166 @@
+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 strip_prefix(period) {
+    return period.slice(0, 10) === "om natten"   ? period.slice(3) :
+           period.slice(0, 6)  === "under "      ? period.slice(6) :
+                                                 period;
+}
+
+function grammar(str) {
+    return str.replace(/på /gi, "om ")
+            .replace(/(man|tirs|ons|tors|fre|lør|søn)(dag)/gi, "$1dagen");
+}
+
+module.exports = require("../template")({
+  "clear": "klart",
+  "no-precipitation": "ingen målbar nedbør",
+  "mixed-precipitation": "blandet nedbør",
+  "possible-very-light-precipitation": "mulighed for meget let nedbør",
+  "very-light-precipitation": "meget let nedbør",
+  "possible-light-precipitation": "mulighed for let nedbør",
+  "light-precipitation": "let nedbør",
+  "medium-precipitation": "nedbør",
+  "heavy-precipitation": "kraftig regn",
+  "possible-very-light-rain": "mulighed for let støvregn",
+  "very-light-rain": "støvregn",
+  "possible-light-rain": "mulighed for lette regnbyger",
+  "light-rain": "regnbyger",
+  "medium-rain": "regn",
+  "heavy-rain": "kraftige regnbyger",
+  "possible-very-light-sleet": "mulighed for meget let slud",
+  "very-light-sleet": "meget let slud",
+  "possible-light-sleet": "mulighed for let slud",
+  "light-sleet": "let slud",
+  "medium-sleet": "slud",
+  "heavy-sleet": "kraftig slud",
+  "possible-very-light-snow": "mulighed for meget let sne",
+  "very-light-snow": "meget let sne",
+  "possible-light-snow": "mulighed for let sne",
+  "light-snow": "let sne",
+  "medium-snow": "sne",
+  "heavy-snow": "rigelig med sne",
+  "possible-thunderstorm": "tordenvejr kan forekomme",
+  "thunderstorm": "tordenvejr",
+  "light-wind": "let vind",
+  "medium-wind": "stærk vind",
+  "heavy-wind": "storm",
+  "low-humidity": "tørt",
+  "high-humidity": "fugtigt",
+  "fog": "tåge",
+  "light-clouds": "let skyet",
+  "medium-clouds": "skyet",
+  "heavy-clouds": "overskyet",
+  "today-morning": "på formiddagen",
+  "later-today-morning": "senere på formiddagen",
+  "today-afternoon": "i eftermiddag",
+  "later-today-afternoon": "senere i eftermiddag",
+  "today-evening": "i aften",
+  "later-today-evening": "senere i aften",
+  "today-night": "i nat",
+  "later-today-night": "senere i nat",
+  "tomorrow-morning": "i morgen tidlig",
+  "tomorrow-afternoon": "i morgen eftermiddag",
+  "tomorrow-evening": "i morgen aften",
+  "tomorrow-night": "i morgen nat",
+  "morning": "om morgenen",
+  "afternoon": "om eftermiddagen",
+  "evening": "om aftenen",
+  "night": "om natten",
+  "today": "i dag",
+  "tomorrow": "i morgen",
+  "sunday": "på søndag",
+  "monday": "på mandag",
+  "tuesday": "på tirsdag",
+  "wednesday": "på onsdag",
+  "thursday": "på torsdag",
+  "friday": "på fredag",
+  "saturday": "på lørdag",
+  "next-sunday": "næste søndag",
+  "next-monday": "næste mandag",
+  "next-tuesday": "næste tirsdag",
+  "next-wednesday": "næste onsdag",
+  "next-thursday": "næste torsdag",
+  "next-friday": "næste fredag",
+  "next-saturday": "næste lørdag",
+  "minutes": "$1 min.",
+  "fahrenheit": "$1\u00B0F",
+  "celsius": "$1\u00B0C",
+  "inches": "$1 tommer",
+  "centimeters": "$1 cm",
+  "less-than": "under $1",
+  "and": function(a, b) {
+    return join_with_shared_prefix(
+      a,
+      b,
+      a.indexOf(",") !== -1 ? ", og " : " og "
+    );
+  },
+  "through": function(a, b) {
+    return join_with_shared_prefix(a, b, " indtil ");
+  },
+  "with": "$1, med $2",
+  "range": "$1\u2013$2",
+  "parenthetical": "$1 ($2)",
+  "for-hour": "$1 i løbet af de næste par timer",
+  "starting-in": "$1 om $2",
+  "stopping-in": "$1 der aftager om $2",
+  "starting-then-stopping-later": "$1 om $2, aftager $3 senere",
+  "stopping-then-starting-later": "$1 aftager om $2, begynder igen $3 senere",
+  "for-day": "$1 i løbet af dagen",
+  "starting": "$1 $2",
+  "until": function(condition, period) {
+      return condition + " indtil " + strip_prefix(period);
+  },
+  "until-starting-again": function(condition, a, b) {
+      return condition + " indtil " + strip_prefix(a) +
+           ", kommer igen " + b;
+  },
+  "starting-continuing-until": function(condition, a, b) {
+      return condition + " " + a + ", fortsætter indtil " +
+           strip_prefix(b);
+  },
+  "during": "$1 $2",
+  "for-week": "$1 i løbet af ugen",
+  "over-weekend": "$1 over weekenden",
+  "temperatures-peaking": function(a, b) {
+    return "temperaturer op til " + a + " " + grammar(b);
+  },
+  "temperatures-rising": function(a, b) {
+    return "temperaturer stigende til " + a + " " + grammar(b);
+  },
+  "temperatures-valleying": function(a, b) {
+    return "temperaturer der stopper ved " + a + " " + grammar(b);
+  },
+  "temperatures-falling": function(a, b) {
+    return "temperaturer faldende til " + a + " " + grammar(b);
+  },
+  /* Capitalize the sentence (but not each word). */
+  "title": function(str) {
+    return str.charAt(0).toUpperCase() + str.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;
+  }
+});
\ No newline at end of file


Test patch:
diff --git a/test_cases/da.json b/test_cases/da.json
new file mode 100644
index 0000000..d1360ae
--- /dev/null
+++ b/test_cases/da.json
@@ -0,0 +1,250 @@
+{
+  "Klart":
+    ["title", "clear"],
+
+  "Mulighed for meget let nedbør":
+    ["title", "possible-very-light-precipitation"],
+
+  "Meget let nedbør":
+    ["title", "very-light-precipitation"],
+
+  "Mulighed for let nedbør":
+    ["title", "possible-light-precipitation"],
+
+  "Let nedbør":
+    ["title", "light-precipitation"],
+
+  "Nedbør":
+    ["title", "medium-precipitation"],
+
+  "Kraftig regn":
+    ["title", "heavy-precipitation"],
+
+  "Mulighed for let støvregn":
+    ["title", "possible-very-light-rain"],
+
+  "Støvregn":
+    ["title", "very-light-rain"],
+
+  "Mulighed for lette regnbyger":
+    ["title", "possible-light-rain"],
+
+  "Regnbyger":
+    ["title", "light-rain"],
+
+  "Regn":
+    ["title", "medium-rain"],
+
+  "Kraftige regnbyger":
+    ["title", "heavy-rain"],
+
+  "Mulighed for meget let slud":
+    ["title", "possible-very-light-sleet"],
+
+  "Meget let slud":
+    ["title", "very-light-sleet"],
+
+  "Mulighed for let slud":
+    ["title", "possible-light-sleet"],
+
+  "Let slud":
+    ["title", "light-sleet"],
+
+  "Slud":
+    ["title", "medium-sleet"],
+
+  "Kraftig slud":
+    ["title", "heavy-sleet"],
+
+  "Mulighed for meget let sne":
+    ["title", "possible-very-light-snow"],
+
+  "Meget let sne":
+    ["title", "very-light-snow"],
+
+  "Mulighed for let sne":
+    ["title", "possible-light-snow"],
+
+  "Let sne":
+    ["title", "light-snow"],
+
+  "Sne":
+    ["title", "medium-snow"],
+
+  "Rigelig med sne":
+    ["title", "heavy-snow"],
+
+  "Stærk vind":
+    ["title", "medium-wind"],
+
+  "Storm":
+    ["title", "heavy-wind"],
+
+  "Tåge":
+    ["title", "fog"],
+
+  "Skyet":
+    ["title", "medium-clouds"],
+
+  "Overskyet":
+    ["title", "heavy-clouds"],
+
+  "Tørt og let vind":
+    ["title", ["and", "low-humidity", "light-wind"]],
+
+  "Støvregn og storm":
+    ["title", ["and", "very-light-rain", "heavy-wind"]],
+
+  "Fugtigt og let skyet":
+    ["title", ["and", "high-humidity", "light-clouds"]],
+
+  "Klart i løbet af de næste par timer.":
+    ["sentence", ["for-hour", "clear"]],
+
+  "Meget let sne om 35 min.":
+    ["sentence", ["starting-in", "very-light-snow", ["minutes", 35]]],
+
+  "Regnbyger der aftager om 15 min.":
+    ["sentence", ["stopping-in", "light-rain", ["minutes", 15]]],
+
+  "Kraftig slud om 20 min., aftager 30 min. senere.":
+    ["sentence",
+      ["starting-then-stopping-later",
+        "heavy-sleet",
+        ["minutes", 20],
+        ["minutes", 30]]],
+
+  "Regn aftager om 25 min., begynder igen 8 min. senere.":
+    ["sentence",
+      ["stopping-then-starting-later",
+        "medium-rain",
+        ["minutes", 25],
+        ["minutes", 8]]],
+
+  "Skyet i løbet af dagen.":
+    ["sentence", ["for-day", "medium-clouds"]],
+
+  "Meget let slud om morgenen.":
+    ["sentence", ["starting", "very-light-sleet", "morning"]],
+
+  "Stærk vind indtil i nat.":
+    ["sentence", ["until", "medium-wind", "today-night"]],
+
+  "Kraftig regn indtil om eftermiddagen.":
+    ["sentence", ["until", "heavy-precipitation", "afternoon"]],
+
+  "Let vind om eftermiddagen.":
+    ["sentence", ["during", "light-wind", "afternoon"]],
+
+  "Sne senere i aften og i morgen tidlig.":
+    ["sentence", ["during",
+      "medium-snow",
+      ["and", "later-today-evening", "tomorrow-morning"]]],
+
+  "Kraftige regnbyger indtil senere på formiddagen, kommer igen i aften.":
+    ["sentence", ["until-starting-again",
+      "heavy-rain",
+      "later-today-morning",
+      "today-evening"]],
+
+  "Overskyet om aftenen, fortsætter indtil natten.":
+    ["sentence", ["starting-continuing-until",
+      "heavy-clouds",
+      "evening",
+      "night"]],
+
+  "Let slud senere i eftermiddag og tåge i morgen tidlig.":
+    ["sentence", ["and",
+      ["during", "light-sleet", "later-today-afternoon"],
+      ["during", "fog", "tomorrow-morning"]]],
+
+  "Storm på formiddagen, fortsætter indtil i eftermiddag, og slud i morgen tidlig.":
+    ["sentence", ["and",
+      ["starting-continuing-until",
+        "heavy-wind",
+        "today-morning",
+        "today-afternoon"],
+      ["during", "medium-sleet", "tomorrow-morning"]]],
+
+  "Overskyet senere i nat og rigelig med sne i morgen eftermiddag.":
+    ["sentence", ["and",
+      ["starting", "heavy-clouds", "later-today-night"],
+      ["during", "heavy-snow", "tomorrow-afternoon"]]],
+
+  "Tørt i nat og let nedbør i morgen aften, fortsætter indtil i morgen nat.":
+    ["sentence", ["and",
+      ["during", "low-humidity", "today-night"],
+      ["starting-continuing-until",
+        "light-precipitation",
+        "tomorrow-evening",
+        "tomorrow-night"]]],
+
+  "Sne (5 tommer) om natten.":
+    ["sentence", ["during",
+      ["parenthetical", "medium-snow", ["inches", 5]],
+      "night"]],
+
+  "Let sne (2 cm) senere på formiddagen.":
+    ["sentence", ["during",
+      ["parenthetical", "light-snow", ["centimeters", 2]],
+      "later-today-morning"]],
+
+  "Rigelig med sne (8\u201312 tommer) i løbet af dagen.":
+    ["sentence", ["for-day",
+      ["parenthetical", "heavy-snow", ["inches", ["range", 8, 12]]]]],
+
+  "Sne (under 1 cm) om eftermiddagen.":
+    ["sentence", ["during",
+      ["parenthetical", "medium-snow", ["less-than", ["centimeters", 1]]],
+      "afternoon"]],
+
+  "Ingen målbar nedbør i løbet af ugen, med temperaturer op til 85\u00B0F i morgen.":
+    ["sentence", ["with",
+      ["for-week", "no-precipitation"],
+      ["temperatures-peaking",
+        ["fahrenheit", 85],
+        "tomorrow"]]],
+
+  "Blandet nedbør over weekenden, med temperaturer stigende til 32\u00B0C om torsdagen.":
+    ["sentence", ["with",
+      ["over-weekend", "mixed-precipitation"],
+      ["temperatures-rising",
+        ["celsius", 32],
+        "thursday"]]],
+
+  "Støvregn på mandag, med temperaturer der stopper ved 15\u00B0F om fredagen.":
+    ["sentence", ["with",
+      ["during", "very-light-rain", "monday"],
+      ["temperatures-valleying",
+        ["fahrenheit", 15],
+        "friday"]]],
+
+  "Let sne på tirsdag og onsdag, med temperaturer faldende til 0\u00B0C om søndagen.":
+    ["sentence", ["with",
+      ["during", "light-snow", ["and", "tuesday", "wednesday"]],
+      ["temperatures-falling",
+        ["celsius", 0],
+        "sunday"]]],
+
+  "Nedbør i dag indtil på lørdag, med temperaturer op til 100\u00B0F om mandagen.":
+    ["sentence", ["with",
+      ["during",
+        "medium-precipitation",
+        ["through", "today", "saturday"]],
+      ["temperatures-peaking",
+        ["fahrenheit", 100],
+        "monday"]]],
+
+  "Let sne på tirsdag og næste onsdag, med temperaturer faldende til 0\u00B0C om søndagen.":
+    ["sentence", ["with",
+      ["during", "light-snow", ["and", "tuesday", "next-wednesday"]],
+      ["temperatures-falling",
+        ["celsius", 0],
+        "sunday"]]],
+
+  "Tordenvejr kan forekomme":
+    ["title", "possible-thunderstorm"],
+
+  "Kraftige regnbyger og tordenvejr":
+    ["title", ["and", "heavy-rain", "thunderstorm"]]
+}
\ No newline at end of file