Repository: darkskyapp/forecast-io-translations
Pull request #77 (2016-07-26 20:14:49)

Support for Azerbaijani Language


Patch:
diff --git a/lib/lang/az.js b/lib/lang/az.js
new file mode 100644
index 0000000..6be7858
--- /dev/null
+++ b/lib/lang/az.js
@@ -0,0 +1,112 @@
+module.exports = require("../template")({
+  "clear": "buludsuz",
+  "no-precipitation": "yağmursuz",
+  "mixed-precipitation": "qarışıq yağış",
+  "possible-very-light-precipitation": "yüngül yağış ehtimalı",
+  "very-light-precipitation": "yüngül yağış",
+  "possible-light-precipitation": "yüngül yağış ehtimalı",
+  "light-precipitation": "yüngül yağış",
+  "medium-precipitation": "yağış",
+  "heavy-precipitation": "güclü yağış",
+  "possible-very-light-rain": "çiskin yağış ehtimalı",
+  "very-light-rain": "çiskin",
+  "possible-light-rain": "yüngül yağış ehtimalı",
+  "light-rain": "yüngül yağış",
+  "medium-rain": "yağış",
+  "heavy-rain": "güclü yağış",
+  "possible-very-light-sleet": "yüngül sulu qar ehtimalı",
+  "very-light-sleet": "yüngül sulu qar",
+  "possible-light-sleet": "yüngül sulu qar ehtimalı",
+  "light-sleet": "yüngül sulu qar",
+  "medium-sleet": "sulu qar",
+  "heavy-sleet": "güclü sulu qar",
+  "possible-very-light-snow": "sulu qar ehtimalı",
+  "very-light-snow": "sulu qar",
+  "possible-light-snow": "yüngül qar ehtimalı",
+  "light-snow": "yüngül qar",
+  "medium-snow": "qar",
+  "heavy-snow": "güclü qar",
+  "light-wind": "sərin",
+  "medium-wind": "külək",
+  "heavy-wind": "güclü külək",
+  "low-humidity": "rütubətsiz",
+  "high-humidity": "rütubətli",
+  "fog": "dumanlı",
+  "light-clouds": "qismən buludlu",
+  "medium-clouds": "əsasən buludlu",
+  "heavy-clouds": "tutqun hava",
+  "today-morning": "bu gün səhər",
+  "later-today-morning": "bu gün səhərdən sonra",
+  "today-afternoon": "bu gün günortadan sonra",
+  "later-today-afternoon": "bu gün günortadan sonra",
+  "today-evening": "bu gün axşam",
+  "later-today-evening": "bu gün axşam",
+  "today-night": "bu gün gecə",
+  "later-today-night": "bu gün gecə",
+  "tomorrow-morning": "sabah səhər",
+  "tomorrow-afternoon": "sabah günortadan sonra",
+  "tomorrow-evening": "sabah axşam",
+  "tomorrow-night": "sabah gecə",
+  "morning": "səhər",
+  "afternoon": "günortadan sonra",
+  "evening": "axşam",
+  "night": "gecə",
+  "today": "bu gün",
+  "tomorrow": "sabah",
+  "sunday": "bazar günü",
+  "monday": "bazar ertəsi",
+  "tuesday": "çərşənbə axşamı",
+  "wednesday": "çərşənbə günü",
+  "thursday": "cümə axşamı",
+  "friday": "cümə günü",
+  "saturday": "şənbə günü",
+  "minutes": "$1 dəq.",
+  "fahrenheit": "$1\u00B0F",
+  "celsius": "$1\u00B0C",
+  "inches": "$1 düym",
+  "centimeters": "$1 sm.",
+  "less-than": "$1-dən aşağı",
+  "and": function(a, b) { return a + " və " + b; },
+  "through": function(a, b) { return a + " ilə " + b + " arası"; },
+  "with": "$1, $2",
+  "range": "$1\u2013$2",
+  "parenthetical": function(a, b) { return a + " (" + b + (a === "qarışıq yağış" ? " qar)" : ")"); },
+  "for-hour": "1 saat boyunca $1 olacaq",
+  "starting-in": "$2 sonra $1 başlayacaq",
+  "stopping-in": "$1 $2 sonra dayanacaq",
+  "starting-then-stopping-later": "$1 $2 sonra başlayacaq, $3 davam edib dayanacaq",
+  "stopping-then-starting-later": "$1 $2 sonra dayanacaq, $3 sonra yenidən başlayacaq",
+  "for-day": "gün boyu $1 olacaq",
+  "starting": "$2 $1 başlayacaq",
+  "until": function(condition, period) { return condition + " " + period + " dayanacaq"; },
+  "until-starting-again": function(condition, a, b) { return condition + " " + a + " dayanıb, " + b + " yenidən başlayacaq"; },
+  "starting-continuing-until": function(condition, a, b) { return a + " " + condition + " başlayıb, " + b + " dayanacaq"; },
+  "during": "$2 $1 olacaq",
+  "for-week": "həftə boyunca $1 olacaq",
+  "over-weekend": "həftə sonu $1 olacaq",
+  "temperatures-peaking": "$2 hava kəskin istiləşəcək və temperatur $1-yə qalxacaq",
+  "temperatures-rising": "$2 temperatur $1-yə qalxacaq",
+  "temperatures-valleying": "$2 hava kəskin soyuyacaq və temperatur $1-yə düşəcək",
+  "temperatures-falling": "$2 temperatur $1-yə düşəcək",
+  
+  /* Capitalize the first letter of every word, except if that word is
+   * "and". (This is a very crude bastardization of proper English titling
+   * rules, but it is adequate for the purposes of this module.) */
+  "title": function(str) {
+  	return str.replace(/([a-zA-ZÇçŞşIıƏəÖöĞğÜü.]+)/g, 
+  	function(txt) {
+  		if(txt === "və" | txt === "düym"| txt === "sm.") return txt;
+  		return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+  	});
+  },
+  /* 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/az.json b/test_cases/az.json
new file mode 100644
index 0000000..2ab3b76
--- /dev/null
+++ b/test_cases/az.json
@@ -0,0 +1,248 @@
+{
+  "Buludsuz":
+    ["title", "clear"],
+
+  "Yüngül Yağış Ehtimalı":
+    ["title", "possible-very-light-precipitation"],
+
+  "Yüngül Yağış":
+    ["title", "very-light-precipitation"],
+
+  "Yüngül Yağış Ehtimalı":
+    ["title", "possible-light-precipitation"],
+
+  "Yüngül Yağış":
+    ["title", "light-precipitation"],
+
+  "Yağış":
+    ["title", "medium-precipitation"],
+
+  "Güclü Yağış":
+    ["title", "heavy-precipitation"],
+
+  "Çiskin Yağış Ehtimalı":
+    ["title", "possible-very-light-rain"],
+
+  "Çiskin":
+    ["title", "very-light-rain"],
+
+  "Yüngül Yağış Ehtimalı":
+    ["title", "possible-light-rain"],
+
+  "Yüngül Yağış":
+    ["title", "light-rain"],
+
+  "Yağış":
+    ["title", "medium-rain"],
+
+  "Güclü Yağış":
+    ["title", "heavy-rain"],
+
+  "Yüngül Sulu Qar Ehtimalı":
+    ["title", "possible-very-light-sleet"],
+
+  "Yüngül Sulu Qar":
+    ["title", "very-light-sleet"],
+
+  "Yüngül Sulu Qar Ehtimalı":
+    ["title", "possible-light-sleet"],
+
+  "Yüngül Sulu Qar":
+    ["title", "light-sleet"],
+
+  "Sulu Qar":
+    ["title", "medium-sleet"],
+
+  "Güclü Sulu Qar":
+    ["title", "heavy-sleet"],
+
+  "Sulu Qar Ehtimalı":
+    ["title", "possible-very-light-snow"],
+
+  "Sulu Qar":
+    ["title", "very-light-snow"],
+
+  "Yüngül Qar Ehtimalı":
+    ["title", "possible-light-snow"],
+
+  "Yüngül Qar":
+    ["title", "light-snow"],
+
+  "Qar":
+    ["title", "medium-snow"],
+
+  "Güclü Qar":
+    ["title", "heavy-snow"],
+
+  "Külək":
+    ["title", "medium-wind"],
+
+  "Güclü Külək":
+    ["title", "heavy-wind"],
+
+  "Dumanlı":
+    ["title", "fog"],
+
+  "Əsasən Buludlu":
+    ["title", "medium-clouds"],
+
+  "Tutqun Hava":
+    ["title", "heavy-clouds"],
+
+  "Rütubətsiz və Sərin":
+    ["title", ["and", "low-humidity", "light-wind"]],
+
+  "Çiskin və Güclü Külək":
+    ["title", ["and", "very-light-rain", "heavy-wind"]],
+
+  "Rütubətli və Qismən Buludlu":
+    ["title", ["and", "high-humidity", "light-clouds"]],
+
+  "1 saat boyunca buludsuz olacaq.":
+    ["sentence", ["for-hour", "clear"]],
+
+  "35 dəq. sonra sulu qar başlayacaq.":
+    ["sentence", ["starting-in", "very-light-snow", ["minutes", 35]]],
+
+  "Yüngül yağış 15 dəq. sonra dayanacaq.":
+    ["sentence", ["stopping-in", "light-rain", ["minutes", 15]]],
+
+  "Güclü sulu qar 20 dəq. sonra başlayacaq, 30 dəq. davam edib dayanacaq.":
+    ["sentence",
+      ["starting-then-stopping-later",
+        "heavy-sleet",
+        ["minutes", 20],
+        ["minutes", 30]]],
+
+  "Yağış 25 dəq. sonra dayanacaq, 8 dəq. sonra yenidən başlayacaq.":
+    ["sentence",
+      ["stopping-then-starting-later",
+        "medium-rain",
+        ["minutes", 25],
+        ["minutes", 8]]],
+
+  "Gün boyu əsasən buludlu olacaq.":
+    ["sentence", ["for-day", "medium-clouds"]],
+
+  "Səhər yüngül sulu qar başlayacaq.":
+    ["sentence", ["starting", "very-light-sleet", "morning"]],
+
+  "Külək bu gün gecə dayanacaq.":
+    ["sentence", ["until", "medium-wind", "today-night"]],
+
+  "Güclü yağış günortadan sonra dayanacaq.":
+    ["sentence", ["until", "heavy-precipitation", "afternoon"]],
+
+  "Günortadan sonra sərin olacaq.":
+    ["sentence", ["during", "light-wind", "afternoon"]],
+
+  "Bu gün axşam və sabah səhər qar olacaq.":
+    ["sentence", ["during",
+      "medium-snow",
+      ["and", "later-today-evening", "tomorrow-morning"]]],
+
+  "Güclü yağış bu gün səhərdən sonra dayanıb, bu gün axşam yenidən başlayacaq.":
+    ["sentence", ["until-starting-again",
+      "heavy-rain",
+      "later-today-morning",
+      "today-evening"]],
+
+  "Axşam tutqun hava başlayıb, gecə dayanacaq.":
+    ["sentence", ["starting-continuing-until",
+      "heavy-clouds",
+      "evening",
+      "night"]],
+
+  "Bu gün günortadan sonra yüngül sulu qar olacaq və sabah səhər dumanlı olacaq.":
+    ["sentence", ["and",
+      ["during", "light-sleet", "later-today-afternoon"],
+      ["during", "fog", "tomorrow-morning"]]],
+
+  "Bu gün səhər güclü külək başlayıb, bu gün günortadan sonra dayanacaq və sabah səhər sulu qar olacaq.":
+    ["sentence", ["and",
+      ["starting-continuing-until",
+        "heavy-wind",
+        "today-morning",
+        "today-afternoon"],
+      ["during", "medium-sleet", "tomorrow-morning"]]],
+
+  "Bu gün gecə tutqun hava başlayacaq və sabah günortadan sonra güclü qar olacaq.":
+    ["sentence", ["and",
+      ["starting", "heavy-clouds", "later-today-night"],
+      ["during", "heavy-snow", "tomorrow-afternoon"]]],
+
+  "Bu gün gecə rütubətsiz olacaq və sabah axşam yüngül yağış başlayıb, sabah gecə dayanacaq.":
+    ["sentence", ["and",
+      ["during", "low-humidity", "today-night"],
+      ["starting-continuing-until",
+        "light-precipitation",
+        "tomorrow-evening",
+        "tomorrow-night"]]],
+
+  "Gecə qar (5 düym) olacaq.":
+    ["sentence", ["during",
+      ["parenthetical", "medium-snow", ["inches", 5]],
+      "night"]],
+
+  "Bu gün səhərdən sonra yüngül qar (2 sm.) olacaq.":
+    ["sentence", ["during",
+      ["parenthetical", "light-snow", ["centimeters", 2]],
+      "later-today-morning"]],
+
+  "Gün boyu güclü qar (8–12 düym) olacaq.":
+    ["sentence", ["for-day",
+      ["parenthetical", "heavy-snow", ["inches", ["range", 8, 12]]]]],
+
+  "Günortadan sonra qar (1 sm.-dən aşağı) olacaq.":
+    ["sentence", ["during",
+      ["parenthetical", "medium-snow", ["less-than", ["centimeters", 1]]],
+      "afternoon"]],
+
+  "Həftə boyunca yağmursuz olacaq, sabah hava kəskin istiləşəcək və temperatur 85°F-yə qalxacaq.":
+    ["sentence", ["with",
+      ["for-week", "no-precipitation"],
+      ["temperatures-peaking",
+        ["fahrenheit", 85],
+        "tomorrow"]]],
+
+  "Həftə sonu qarışıq yağış olacaq, cümə axşamı temperatur 32°C-yə qalxacaq.":
+    ["sentence", ["with",
+      ["over-weekend", "mixed-precipitation"],
+      ["temperatures-rising",
+        ["celsius", 32],
+        "thursday"]]],
+
+  "Bazar ertəsi çiskin olacaq, cümə günü hava kəskin soyuyacaq və temperatur 15°F-yə düşəcək.":
+    ["sentence", ["with",
+      ["during", "very-light-rain", "monday"],
+      ["temperatures-valleying",
+        ["fahrenheit", 15],
+        "friday"]]],
+
+  "Çərşənbə axşamı və çərşənbə günü yüngül qar olacaq, bazar günü temperatur 0°C-yə düşəcək.":
+    ["sentence", ["with",
+      ["during", "light-snow", ["and", "tuesday", "wednesday"]],
+      ["temperatures-falling",
+        ["celsius", 0],
+        "sunday"]]],
+
+  "Bu gün ilə şənbə günü arası yağış olacaq, bazar ertəsi hava kəskin istiləşəcək və temperatur 100°F-yə qalxacaq.":
+    ["sentence", ["with",
+      ["during",
+        "medium-precipitation",
+        ["through", "today", "saturday"]],
+      ["temperatures-peaking",
+        ["fahrenheit", 100],
+        "monday"]]],
+
+  "Gün boyu qarışıq yağış (1–3 düym qar) olacaq.":
+    ["sentence",
+      ["for-day",
+        ["parenthetical", "mixed-precipitation", ["inches", ["range", 1, 3]]]]],
+
+  "Güclü Qar (1–3 düym)":
+    ["title", ["parenthetical", "heavy-snow", ["inches", ["range", 1, 3]]]],
+
+  "Güclü Qar (3–5 sm.)":
+    ["title", ["parenthetical", "heavy-snow", ["centimeters", ["range", 3, 5]]]]
+}