diff --git a/.travis.yml b/.travis.yml index fb19907..1ff94bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,15 +2,14 @@ group: travis_latest language: python cache: pip python: - - 2.7 - 3.7 install: - pip install flake8 -r requirements.txt before_script: # stop the build if there are Python syntax errors or undefined names - - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + - flake8 bin lib --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - flake8 bin lib --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics script: - true # pytest --capture=sys # add other tests here notifications: diff --git a/README.md b/README.md index d17c384..5c4c470 100644 --- a/README.md +++ b/README.md @@ -77,12 +77,13 @@ You can override this behavior by adding `?u` or `?m` to a URL like this: ## Supported output formats -wttr.in currently supports three output formats: +wttr.in currently supports four output formats: * ANSI for the terminal; * ANSI for the terminal, one-line mode; * HTML for the browser; -* PNG for the graphical viewers. +* PNG for the graphical viewers; +* JSON for scripts and APIs. The ANSI and HTML formats are selected basing on the User-Agent string. The PNG format can be forced by adding `.png` to the end of the query: @@ -112,6 +113,57 @@ In this example: ![Picture with weather data](https://pbs.twimg.com/media/C69-wsIW0AAcAD5.jpg) +You can embed a special wttr.in widget, that displays the weather condition for the current or a selected location, into a HTML page using the [wttr-switcher](https://github.com/midzer/wttr-switcher). That is how it looks like: [wttr-switcher-example](https://midzer.github.io/wttr-switcher/) or on a real world web site: https://feuerwehr-eisolzried.de/. + +![Embedded wttr.in example at feuerwehr-eisolzried.de](https://user-images.githubusercontent.com/3875145/65265457-50eac180-db11-11e9-8f9b-2e1711dfc436.png) + +## JSON output + +The JSON format is a feature providing access to wttr.in data through an easy-to-parse format, without requiring the user to create a complex script to reinterpret wttr.in's graphical output. + +To fetch information in JSON format, use the following syntax: + + $ curl wttr.in/Detroit?format=j1 + +This will fetch information on the Detroit region in JSON format. The j1 format code is used to allow for the use of other layouts for the JSON output. + +The result will look something like the following: + + { + "current_condition": [ + { + "FeelsLikeC": "25", + "FeelsLikeF": "76", + "cloudcover": "100", + "humidity": "76", + "observation_time": "04:08 PM", + "precipMM": "0.2", + "pressure": "1019", + "temp_C": "22", + "temp_F": "72", + "uvIndex": 5, + "visibility": "16", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "20", + "windspeedKmph": "7", + "windspeedMiles": "4" + } + ], + ... + +Most of these values are self-explanatory, aside from `weatherCode`. The `weatherCode` is an enumeration which you can find at either [the WorldWeatherOnline website](https://www.worldweatheronline.com/developer/api/docs/weather-icons.aspx) or [in the wttr.in source code](https://github.com/chubin/wttr.in/blob/master/lib/constants.py). + ## One-line output For one-line output format, specify additional URL parameter `format`: @@ -150,6 +202,7 @@ To specify your own custom output format, use the special `%`-notation: m Moonphase 🌑🌒🌓🌔🌕🌖🌗🌘, M Moonday, p precipitation (mm), + o Probability of Precipitation, P pressure (hPa), ``` diff --git a/bin/proxy.py b/bin/proxy.py index 96d22a3..d38244f 100644 --- a/bin/proxy.py +++ b/bin/proxy.py @@ -63,7 +63,6 @@ def load_translations(): return translations TRANSLATIONS = load_translations() - def _find_srv_for_query(path, query): # pylint: disable=unused-argument return 'http://api.worldweatheronline.com' @@ -206,8 +205,8 @@ def proxy(path): if response: headers = {} headers['Content-Type'] = response.headers['content-type'] + _save_content_and_headers(path, query_string, response.content, headers) content = add_translations(response.content, lang) - _save_content_and_headers(path, query_string, content, headers) else: content = "{}" diff --git a/lib/spark.py b/lib/spark.py index 47c935d..0c7baef 100644 --- a/lib/spark.py +++ b/lib/spark.py @@ -42,8 +42,9 @@ import constants import translations import wttr_line -reload(sys) -sys.setdefaultencoding("utf-8") +if not sys.version_info >= (3, 0): + reload(sys) # noqa: F821 + sys.setdefaultencoding("utf-8") # data processing {{{ @@ -302,22 +303,9 @@ def draw_wind(data, color_data): def _color_code_for_wind_speed(wind_speed): color_codes = [ - (3, 82), # 82 - (6, 118), # 118 - (9, 154), # 154 - (12, 250), # 190 - (15, 246), # 226 - (19, 253), # 220 - (23, 214), - (27, 208), - (31, 202), - (-1, 196) - ] - - color_codes = [ - (3, 241), # 82 - (6, 242), # 118 - (9, 243), # 154 + (3, 241), # 82 + (6, 242), # 118 + (9, 243), # 154 (12, 246), # 190 (15, 250), # 226 (19, 253), # 220 diff --git a/lib/translations.py b/lib/translations.py index ac91dfd..0dc381c 100644 --- a/lib/translations.py +++ b/lib/translations.py @@ -5,19 +5,19 @@ Translation of almost everything. """ FULL_TRANSLATION = [ - "af", "da", "de", "el", "et", + "af", "be", "ca", "da", "de", "el", "et", "fr", "fa", "hu", "id", "it", "nb", "nl", "pl", "pt-br", "ro", - "ru", "tr", "uk", "vi" + "ru", "tr", "th", "uk", "vi", "zh-cn", "zh-tw" ] PARTIAL_TRANSLATION = [ - "az", "be", "bg", "bs", "ca", "cy", "cs", + "az", "bg", "bs", "cy", "cs", "eo", "es", "fi", "ga", "hi", "hr", "hy", "is", "ja", "jv", "ka", "kk", "ko", "ky", "lt", "lv", "mk", "ml", "nl", "fy", "nn", "pt", "pt-br", "sk", "sl", "sr", "sr-lat", - "sv", "sw", "th", "te", "uz", + "sv", "sw", "te", "uz", "zh", "zu", "he", ] @@ -27,8 +27,8 @@ PROXY_LANGS = [ "fy", "he", "hr", "hu", "hy", "id", "is", "it", "ja", "kk", "lv", "mk", "nb", "nn", "ro", - "ru", "sl", "pt-br", "uk", "uz", - "vi", + "ru", "sl", "th", "pt-br", "uk", "uz", + "vi", "zh-cn", "zh-tw", ] SUPPORTED_LANGS = FULL_TRANSLATION + PARTIAL_TRANSLATION @@ -96,7 +96,7 @@ asi que hemos decidido enseñarte el tiempo en Oymyakon, uno de los sitios más fríos y permanentemente deshabitados del planeta. """, 'fa': u""" -ما نتونستیم مکان شما رو پیدا کنیم. به همین خاطر شما رو به om بردیم +ما نتونستیم مکان شما رو پیدا کنیم. به همین خاطر شما رو به اویمیاکن بردیم ، یکی از سردترین مکان های روی زمین که اصلا قابل سکونت نیست! """, 'fi': u""" @@ -224,6 +224,9 @@ Umarız sizin olduğunuz yerde havalar daha iyidir! మేము మీ స్థానాన్ని కనుగొనలేకపోయాము కనుక మనం "ఓమాయకాన్కు" తీసుకొని వచ్చాము, భూమిపై అత్యల్ప శాశ్వతంగా నివసించే స్థానిక ప్రదేశాలలో ఒకటి. +""", + 'th': u""" +เราไม่สามารถหาตำแหน่งของคุณได้เราจึงนำคุณไปสู่ Oymyakon หมู่บ้านที่หนาวที่สุดในโลก! """, 'uk': u""" Ми не змогли визначити Ваше місцезнаходження, @@ -254,6 +257,11 @@ mis on üks kõige külmemaid püsivalt asustatud paiku planeedil. Chúng tôi không tìm thấy địa điểm của bạn vì vậy chúng tôi đưa bạn đến Oymyakon, một trong những nơi lạnh nhất có người sinh sống trên trái đất. +""", + 'zh-tw': u""" +我們找不到您的位置 +所以我們帶您到奧伊米亞康, +這個星球上有人類定居最冷之處。 """, }, @@ -298,10 +306,12 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ 'sv': u'Okänd plats', 'te': u'తెలియని ప్రదేశం', 'tr': u'Bilinmeyen konum', + 'th': u'ไม่สามารถระบุตำแหน่งได้', 'uk': u'Невідоме місце', 'uz': u'Аникланмаган худуд', 'zh': u'未知地点', 'vi': u'Địa điểm không xác định', + 'zh-tw': u'未知位置', }, 'LOCATION': { @@ -346,8 +356,10 @@ một trong những nơi lạnh nhất có người sinh sống trên trái đ 'zh': u'地点', 'te': u'స్థానము', 'tr': u'Konum', + 'th': u'ตำแหน่ง', 'uk': u'Місцезнаходження', 'vi': u'Địa điểm', + 'zh-tw': u'位置', }, 'CAPACITY_LIMIT_REACHED': { @@ -394,7 +406,7 @@ Pots seguir https://twitter.com/igor_chubin per noves actualitzacions. """, 'de': u""" Entschuldigung, wir können momentan den Wetterdienst nicht erreichen. -Dafür zeigen wir Ihnen das Wetter an einem Beispielort, damit Sie sehen wie die Seite das Wetter anzeigt. +Dafür zeigen wir Ihnen das Wetter an einem Beispielort, damit Sie sehen, wie die Seite das Wetter anzeigt. Wir werden versuchen das Problem so schnell wie möglich zu beheben. Folgen Sie https://twitter.com/igor_chubin für Updates. ====================================================================================== @@ -408,7 +420,7 @@ Gellir dilyn https://twitter.com/igor_chubin i gael newyddion pellach. """, 'es': u""" Lo siento, hemos alcanzado el límite de peticiones al servicio de previsión del tiempo en este momento. -A continuación, la previsión del tiempo para una ciudad estándar (solo para que puedas ver que aspecto tiene el informe). +A continuación, la previsión del tiempo para una ciudad estándar (solo para que puedas ver el formato del reporte). Muy pronto volveremos a tener acceso a las peticiones. Puedes seguir https://twitter.com/igor_chubin para estar al tanto de la situación. ====================================================================================== @@ -487,7 +499,7 @@ Du kan følge https://twitter.com/igor_chubin for oppdateringer. 抱歉,当前天气服务不可用。 以下显示默认城市(只对您可见)。 我们将会尽快获取新数据。 -您可以通过https://twitter.com/igor_chubin 获取最新动态。 +您可以通过 https://twitter.com/igor_chubin 获取最新动态。 ====================================================================================== """, 'nl': u""" @@ -545,6 +557,13 @@ Varsayılan şehir için hava durumu bilgisini görüyorsunuz (neye benzediğini Mümkün olan en kısa sürede servise yeniden sorgu yapmaya başlayacağız. Gelişmeler için https://twitter.com/igor_chubin adresini takip edebilirsiniz. ====================================================================================== +""", + 'th': u""" +ขออภัย การเรียกค้นหาระบบสภาพอากาศของเราหมดชั่วคราว +เราจึงแสดงข้อมูลของเมืองตัวอย่าง (เพื่อที่จะแสดงให้คุณเห็นว่าหน้าตาเป็นยังไง) +เราจะเรียกค้นหาใหม่โดยเร็วที่สุด +คุณสามารถติดตามการอัพเดทได้ที่ https://twitter.com/igor_chubin +====================================================================================== """, 'da': u""" Beklager, men vi er ved at løbe tør for forespørgsler til vejr-servicen lige nu. @@ -573,6 +592,13 @@ Xin lỗi, hiện tại chúng tôi đã hết lượt yêu cầu thông tin th Chung tôi sẽ có thêm lượt truy vấn sớm nhất có thể Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật thông tin mới nhất. ====================================================================================== +""", + 'zh-tw': u""" +抱歉,目前天氣服務的查詢請求太多了。 +這裡是預設城市的天氣報告(只是為您展示它的外觀)。 +我們將盡快取得新的資料。 +您可以追蹤 https://twitter.com/igor_chubin 以取得更新。 +====================================================================================== """, }, @@ -587,7 +613,7 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th 'bg': u'Нова функционалност: многоезични имена на места\033[92mwttr.in/станция+Восток\033[0m (в UTF-8) и в търсенето \033[92mwttr.in/~Kilimanjaro\033[0m (добавете ~ преди)', 'bs': u'XXXXXXXXXXXXXXXXXXXX: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX\033[92mwttr.in/станция+Восток\033[0m (XX UTF-8) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'ca': u'Noves funcionalitats: noms d\'ubicació multilingües \033[92mwttr.in/станция+Восток\033[0m (en UTF-8) i la ubicació de recerca \033[92mwttr.in/~Kilimanjaro\033[0m (només cal afegir ~ abans)', - 'es': u'Nuevas funcionalidades: los nombres de las ubicaciones en vários idiomas \033[92mwttr.in/станция+Восток\033[0m (em UTF-8) y la búsqueda por ubicaciones \033[92mwttr.in/~Kilimanjaro\033[0m (tan solo inserte ~ en frente)', + 'es': u'Nuevas funcionalidades: los nombres de las ubicaciones en varios idiomas \033[92mwttr.in/станция+Восток\033[0m (em UTF-8) y la búsqueda por ubicaciones \033[92mwttr.in/~Kilimanjaro\033[0m (tan solo inserte ~ en frente)', 'fa': u'قابلیت جدید: پشتیبانی از نام چند زبانه مکانها \033[92mwttr.in/станция+Восток\033[0m (در فرمت UTF-8) و جسجتوی مکان ها \033[92mwttr.in/~Kilimanjaro\033[0m (فقط قبل از اون ~ اضافه کنید)', 'fr': u'Nouvelles fonctionnalités: noms d\'emplacements multilingues \033[92mwttr.in/станция+Восток\033[0m (en UTF-8) et recherche d\'emplacement \033[92mwttr.in/~Kilimanjaro\033[0m (ajouter ~ devant)', 'mk': u'Нова функција: повеќе јазично локациски имиња \033[92mwttr.in/станция+Восток\033[0m (во UTF-8) и локациско пребарување \033[92mwttr.in/~Kilimanjaro\033[0m (just add ~ before)', @@ -612,10 +638,12 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th 'zh': u'新功能:多语言地点名称 \033[92mwttr.in/станция+Восток\033[0m (in UTF-8) 及地点搜索\033[92mwttr.in/~Kilimanjaro\033[0m (只需在名称前加~)', 'tr': u'Yeni özellik: çok dilli konum isimleri \033[92mwttr.in/станция+Восток\033[0m (UTF-8 ile) ve konum arama \033[92mwttr.in/~Kilimanjaro\033[0m (sadece önüne ~ ekleyin)', 'te': u'క్రొత్త లక్షణం: బహుభాషా స్థాన పేర్లు \ 033 [92mwttr.in/stancelя+Vostок\033 [0 U (UTF-8 లో) మరియు స్థానం శోధన \ 033 [92mwttr.in/~kilimanjaro\033 [0m (కేవలం ~ ముందుకి జోడించండి)', + 'th': u'ฟีเจอร์ใหม่: แสดงที่ตั้งได้หลายภาษา \033[92mwttr.in/станция+Восток\033[0m (ใน UTF-8) และการค้นหาที่ตั้ง \033[92mwttr.in/~Kilimanjaro\033[0m (เพียงเพิ่ม ~ ข้างหน้า)', 'da': u'Ny funktion: flersprogede lokationsnavne \033[92mwttr.in/станция+Восток\033[0m (som UTF-8) og lokations søgning \033[92mwttr.in/~Kilimanjaro\033[0m (bare tilføj ~ inden)', 'et': u'Uus funktsioon: mitmekeelsed asukohanimed \033[92mwttr.in/станция+Восток\033[0m (UTF-8 vormingus) ja asukoha otsing \033[92mwttr.in/~Kilimanjaro\033[0m (lisa ~ enne)', 'uk': u'Спробуйте: назви місць будь-якою мовою \033[92mwttr.in/станція+Восток\033[0m (в UTF-8) та пошук місць \033[92mwttr.in/~Kilimanjaro\033[0m (потрібно додати ~ спочатку)', 'vi': u'Chức năng mới: tên địa điểm đa ngôn ngữ \033[92mwttr.in/станция+Восток\033[0m (dùng UTF-8) và tìm kiếm địa điểm \033[92mwttr.in/~Kilimanjaro\033[0m (chỉ cần thêm ~ phía trước)', + 'zh-tw': u'新功能:多語言地點名稱 \033[92mwttr.in/станция+Восток\033[0m (使用 UTF-8 編碼)與位置搜尋 \033[92mwttr.in/~Kilimanjaro\033[0m (只要在地點前加 ~ 就可以了)', }, 'FOLLOW_ME': { @@ -649,10 +677,12 @@ Bạn có thể theo dõi https://twitter.com/igor_chubin để cập nhật th 'zh': u'关注 \033[46m\033[30m@igor_chubin\033[0m 获取 wttr.in 动态', 'te': u'అనుసరించండి \ 033 [46m \ 033 [30m @ igor_chubin \ 033 [wttr.in నవీకరణలను కోసం', 'tr': u'wttr.in ile ilgili gelişmeler için \033[46m\033[30m@igor_chubin\033[0m adresini takip edin', + 'th': u'ติดตาม \033[46m\033[30m@igor_chubin\033[0m สำหรับการอัพเดท wttr.in', 'da': u'Følg \033[46m\033[30m@igor_chubin\033[0m for at få wttr.in opdateringer', 'et': u'Jälgi \033[46m\033[30m@igor_chubin\033[0m wttr.in uudiste tarbeks', 'uk': u'Нові можливості wttr.in публікуються тут: \033[46m\033[30m@igor_chubin\033[0m', 'vi': u'Theo dõi \033[46m\033[30m@igor_chubin\033[0m để cập nhật thông tin về wttr.in', + 'zh-tw': u'追蹤 \033[46m\033[30m@igor_chubin\033[0m 以取得更多 wttr.in 的動態', }, } @@ -671,9 +701,9 @@ CAPTION = { "el": u"Πρόγνωση καιρού για:", "en": u"weather report for:", "eo": u"Veterprognozo por:", - "es": u"El tiempo en:", + "es": u"El reporte del tiempo en:", "et": u"Ilmaprognoos:", - "fa": u"ﺍﻮﻫ ﻭ ﺏﺁ ﺕیﻊﺿﻭ ﺵﺭﺍﺯگ", + "fa": u"گزارش آب و هئا برای شما:", "fi": u"Säätiedotus:", "fr": u"Prévisions météo pour:", "fy": u"Waarberjocht foar:", @@ -715,11 +745,14 @@ CAPTION = { "uk": u"Прогноз погоди для:", "uz": u"Ob-havo bashorati:", "vi": u"Báo cáo thời tiết:", - "zh": u"天氣預報:", + "zh": u"天气预报:", "zu": u"Isimo sezulu:", + "zh-tw": u"天氣報告:", } def get_message(message_name, lang): + if lang == 'zh-cn': + lang = 'zh' if message_name not in MESSAGE: return '' message_dict = MESSAGE[message_name] diff --git a/lib/translations_v2.py b/lib/translations_v2.py new file mode 100644 index 0000000..2aa38a1 --- /dev/null +++ b/lib/translations_v2.py @@ -0,0 +1,70 @@ +# vim: fileencoding=utf-8 + +""" +Translation of v2 +""" + +# pylint: disable=line-too-long,bad-whitespace +V2_TRANSLATION = { + "en": ("Weather report for:", "Weather", "Timezone", "Now", "Dawn", "Sunrise", "Zenith", "Sunset", "Dusk"), + "af": ("Weer verslag vir:", "", "", "", "", "", "", "", ""), + "ar": ("تقرير حالة ألطقس", "", "", "", "", "", "", "", ""), + "az": ("Hava proqnozu:", "", "", "", "", "", "", "", ""), + "be": ("Прагноз надвор'я для:", "", "", "", "", "", "", "", ""), + "bg": ("Прогноза за времето в:", "", "", "", "", "", "", "", ""), + "bs": ("Vremenske prognoze za:", "", "", "", "", "", "", "", ""), + "ca": ("Informe del temps per a:", "", "", "", "", "", "", "", ""), + "cs": ("Předpověď počasí pro:", "", "", "", "", "", "", "", ""), + "cy": ("Adroddiad tywydd ar gyfer:", "", "", "", "", "", "", "", ""), + "da": ("Vejret i:", "", "", "", "", "", "", "", ""), + "de": ("Wetterbericht für:", "Wetter", "Zeitzone", "Jetzt", "Morgendämmerung", "Sonnenaufgang","Zenit", "Sonnenuntergang", "Abenddämmerung"), + "el": ("Πρόγνωση καιρού για:", "", "", "", "", "", "", "", ""), + "eo": ("Veterprognozo por:", "Vetero", "Horzono", "Nun", "Tagiĝo", "Sunleviĝo", "Zenito", "Sunsubiro", "Krepusko"), + "es": ("El tiempo en:", "", "", "", "", "", "", "", ""), + "et": ("Ilmaprognoos:", "", "", "", "", "", "", "", ""), + "fa": ("اوه و بآ تیعضو شرازگ", "", "", "", "", "", "", "", ""), + "fi": ("Säätiedotus:", "", "", "", "", "", "", "", ""), + "fr": ("Prévisions météo pour:", "", "", "", "", "", "", "", ""), + "fy": ("Waarberjocht foar:", "", "", "", "", "", "", "", ""), + "ga": ("Réamhaisnéis na haimsire do:", "", "", "", "", "", "", "", ""), + "he": (":ריוואה גזמ תיזחת", "", "", "", "", "", "", "", ""), + "hr": ("Vremenska prognoza za:", "", "", "", "", "", "", "", ""), + "hu": ("Időjárás előrejelzés:", "", "", "", "", "", "", "", ""), + "hy": ("Եղանակի տեսություն:", "", "", "", "", "", "", "", ""), + "id": ("Prakiraan cuaca:", "", "", "", "", "", "", "", ""), + "it": ("Previsioni meteo:", "", "", "", "", "", "", "", ""), + "is": ("Veðurskýrsla fyrir:", "", "", "", "", "", "", "", ""), + "ja": ("天気予報:", "天気", "タイムゾーン", "今", "夜明け", "日の出", "天頂", "日の入", "日暮れ"), + "jv": ("Weather forecast for:", "", "", "", "", "", "", "", ""), + "ka": ("ამინდის პროგნოზი:", "", "", "", "", "", "", "", ""), + "kk": ("Ауа райы:", "", "", "", "", "", "", "", ""), + "ko": ("일기 예보:", "", "", "", "", "", "", "", ""), + "ky": ("Аба ырайы:", "", "", "", "", "", "", "", ""), + "lt": ("Orų prognozė:", "", "", "", "", "", "", "", ""), + "lv": ("Laika ziņas:", "", "", "", "", "", "", "", ""), + "mk": ("Прогноза за времето во:", "", "", "", "", "", "", "", ""), + "ml": ("കാലാവസ്ഥ റിപ്പോർട്ട്:", "", "", "", "", "", "", "", ""), + "nb": ("Værmelding for:", "", "", "", "", "", "", "", ""), + "nl": ("Weerbericht voor:", "Weer", "Tijdzone", "Nu", "Dageraad", "Zonsopkomst", "Zenit", "Zonsondergang", "Schemering"), + "nn": ("Vêrmelding for:", "", "", "", "", "", "", "", ""), + "pl": ("Pogoda w:", "", "", "", "", "", "", "", ""), + "pt": ("Previsão do tempo para:", "Tempo", "Fuso horário", "Agora", "Alvorada", "Nascer do sol", "Zénite", "Pôr do sol", "Crepúsculo"), + "pt-br": ("Previsão do tempo para:", "Tempo", "Fuso horário", "Agora", "Alvorada", "Nascer do sol", "Zénite", "Pôr do sol", "Crepúsculo"), + "ro": ("Prognoza meteo pentru:", "", "", "", "", "", "", "", ""), + "ru": ("Прогноз погоды:", "Погода", "Часовой пояс", "Сейчас", "Рассвет", "Восход", "Зенит", "Закат", "Сумерки"), + "sk": ("Predpoveď počasia pre:", "", "", "", "", "", "", "", ""), + "sl": ("Vremenska napoved za", "", "", "", "", "", "", "", ""), + "sr": ("Временска прогноза за:", "", "", "", "", "", "", "", ""), + "sr-lat": ("Vremenska prognoza za:", "", "", "", "", "", "", "", ""), + "sv": ("Väderleksprognos för:", "", "", "", "", "", "", "", ""), + "sw": ("Ripoti ya hali ya hewa, jiji la:", "", "", "", "", "", "", "", ""), + "te": ("వాతావరణ సమాచారము:", "", "", "", "", "", "", "", ""), + "th": ("รายงานสภาพอากาศ:", "", "", "", "", "", "", "", ""), + "tr": ("Hava beklentisi:", "", "", "", "", "", "", "", ""), + "uk": ("Прогноз погоди для:", "Погода", "Часовий пояс", "Зараз", "Світанок", "Схід сонця", "Зеніт", "Захід сонця", "Сутінки"), + "uz": ("Ob-havo bashorati:", "", "", "", "", "", "", "", ""), + "vi": ("Báo cáo thời tiết:", "", "", "", "", "", "", "", ""), + "zh": ("天气预报:", "天气", "时区", "当前", "黎明", "日出", "正午", "日落", "黄昏"), + "zh-tw": ("天氣預報:", "天氣", "時區", "目前", "黎明", "日出", "日正當中", "日落", "黃昏"), + "zu": ("Isimo sezulu:", "", "", "", "", "", "", "", ""), + } diff --git a/lib/wttr_line.py b/lib/wttr_line.py index 5ede450..48fb6a1 100644 --- a/lib/wttr_line.py +++ b/lib/wttr_line.py @@ -101,6 +101,16 @@ def render_precipitation(data, query): answer += 'mm' return answer +def render_precipitation_chance(data, query): + """ + precipitation chance (o) + """ + + answer = data.get('chanceofrain', '') + if answer: + answer += '%' + return answer + def render_pressure(data, query): """ pressure (P) @@ -189,6 +199,7 @@ FORMAT_SYMBOL = { 'M': render_moonday, 's': render_sunset, 'p': render_precipitation, + 'o': render_precipitation_chance, 'P': render_pressure, } diff --git a/lib/wttr_srv.py b/lib/wttr_srv.py index e389e6d..a55c934 100644 --- a/lib/wttr_srv.py +++ b/lib/wttr_srv.py @@ -301,14 +301,14 @@ def wttr(location, request): return _wrap_response(output, html_output) - except RuntimeError as exception: - if 'Malformed response' in str(exception) \ - or 'API key has reached calls per day allowed limit' in str(exception): + except Exception as exception: + # if 'Malformed response' in str(exception) \ + # or 'API key has reached calls per day allowed limit' in str(exception): if html_output: return _wrap_response(MALFORMED_RESPONSE_HTML_PAGE, html_output) return _wrap_response(get_message('CAPACITY_LIMIT_REACHED', lang).encode('utf-8'), html_output) - logging.error("Exception has occured", exc_info=1) - return "ERROR" + # logging.error("Exception has occured", exc_info=1) + # return "ERROR" if __name__ == "__main__": import doctest diff --git a/share/translation.txt b/share/translation.txt index 63be4c7..213524a 100644 --- a/share/translation.txt +++ b/share/translation.txt @@ -3,58 +3,63 @@ wttr.in is translated in NUMBER_OF_LANGUAGES languages: SUPPORTED_LANGUAGES Translated/improved/corrected by: - - * Afrikaans: Casper Labuschage @casperl (on github) - * Armenian: Aram Bayadyan @aramix, Mikayel Ghazaryan @mkdotam, Grigor Khachatryan @grigortw - * Azerbaijani: Dmytro Nikitiuk, Elsevar Abbasov - * Belarusian: Igor Chubin, Anton Zhavoronkov @edogby (on github) - * Bosnian: Ismar Kunc @ismarkunc - * Bulgarian: Vladimir Vitkov @zeridon (on github) - * Brazilian-PT: Tupã Negreiros @TupaNegreiros (on github) - * Catalan: Angel Jarabo @legna29A - * Croatian: Siniša Kusić @ku5ic - * Czech: Juraj Kakody - * Danish: Kim Schulz @kimusan (on github) - * Dutch: Youri Claes - * Frisian: Anne Douwe Bouma @anned20 (on github) - * Esperanto: Igor Chubin - * Estonian: Jaan Jänesmäe @janesmae (on github) - * Finnish: @Maxifi - * French: Igor Chubin, @daftaupe - * German: Igor Chubin, @MAGICC (https://kthx.at) - * Greek: Panayotis Vryonis and @Petewg (on github) - * Hebrew: E.R. - * Hungarian: Mark Petruska - * Italian: Diego Maniacco - * Icelandic: Óli G. @dvergur, Skúli Arnlaugsson @Arnlaugsson - * Indonesian: Andria Arisal @andria009 - * Japanese: @ryunix - * Kazakh: Akku Tutkusheva, Oleg Tropinin - * Korean: Jeremy Bae @opt9, Jung Winter @res_tin - * Latvian: Gunārs Danovskis - * Macedonian: Matej Plavevski @MatejMecka - * Norwegian: Fredrik Fjeld @fredrikfjeld - * Nynorsk: Kevin Brubeck Unhammer (https://unhammer.org/k/) - * Persian: Javad @threadripper_ - * Polish: Wojtek Łukasiewicz @wojtuch (on github) - * Portuguese: Fernando Bitti Loureiro @fbitti (on github) - * Romanian: Gabriel Moruz - * Russian: Igor Chubin - * Spanish: Fernando Bitti Loureiro @fbitti (on github) - * Slovak: Juraj Kakody - * Slovenian: B.S. - * Swedish: John Eriksson - * Serbian: Milan Stevanović @FathVader - * Swahili: Joel Mukuthu - * Turkish: Atabey Kaygun, Yilmaz @edigu, Volkan Tokmak(@volkanto) - * Ukrainian: Igor Chubin, Serhiy @pavse - * Uzbek: Shukhrat Mukimov - * Welsh: Daniel Thomas - * Vietnamese: Lưu Vĩnh Phúc @phuclv90 (on github) + + * Afrikaans: Casper Labuschage @casperl (on github) + * Armenian: Aram Bayadyan @aramix, Mikayel Ghazaryan @mkdotam, + Grigor Khachatryan @grigortw + * Azerbaijani: Dmytro Nikitiuk, Elsevar Abbasov + * Belarusian: Igor Chubin, Anton Zhavoronkov @edogby (on github) + * Bosnian: Ismar Kunc @ismarkunc + * Bulgarian: Vladimir Vitkov @zeridon (on github) + * Brazilian-PT: Tupã Negreiros @TupaNegreiros (on github) + * Catalan: Angel Jarabo @legna29A + * Chinese(Traditional): Jeff Huang + * Chinese(Simplified): YouthLin Chen(@YouthLin on github), Junhan (@junhan-z on github), + Felix Wong (@gnowxilef on github) + * Croatian: Siniša Kusić @ku5ic + * Czech: Juraj Kakody + * Danish: Kim Schulz @kimusan (on github) + * Dutch: Youri Claes + * Esperanto: Igor Chubin + * Estonian: Jaan Jänesmäe @janesmae (on github) + * Finnish: @Maxifi + * French: Igor Chubin, @daftaupe, @iago-lito + * Frisian: Anne Douwe Bouma @anned20 (on github) + * German: Igor Chubin, @MAGICC (https://kthx.at) + * Greek: Panayotis Vryonis and @Petewg (on github) + * Hebrew: E.R. + * Hungarian: Mark Petruska + * Icelandic: Óli G. @dvergur, Skúli Arnlaugsson @Arnlaugsson + * Indonesian: Andria Arisal @andria009 + * Italian: Diego Maniacco + * Japanese: @ryunix + * Kazakh: Akku Tutkusheva, Oleg Tropinin + * Korean: Jeremy Bae @opt9, Jung Winter @res_tin + * Latvian: Gunārs Danovskis + * Macedonian: Matej Plavevski @MatejMecka + * Norwegian: Fredrik Fjeld @fredrikfjeld + * Nynorsk: Kevin Brubeck Unhammer (https://unhammer.org/k/) + * Persian: Javad @threadripper_ + * Polish: Wojtek Łukasiewicz @wojtuch (on github) + * Portuguese: Fernando Bitti Loureiro @fbitti (on github) + * Romanian: Gabriel Moruz + * Russian: Igor Chubin + * Serbian: Milan Stevanović @FathVader + * Slovak: Juraj Kakody + * Slovenian: B.S. + * Spanish: Fernando Bitti Loureiro @fbitti (on github) + * Swedish: John Eriksson + * Swahili: Joel Mukuthu + * Turkish: Atabey Kaygun, Yilmaz @edigu, Volkan Tokmak(@volkanto) + * Thai: Vatunyoo Suwannapisit @kerlos + * Ukrainian: Igor Chubin, Serhiy @pavse + * Uzbek: Shukhrat Mukimov + * Vietnamese: Lưu Vĩnh Phúc @phuclv90 (on github) + * Welsh: Daniel Thomas and many many others. -In the not likely case wttr.in is not yet translated in your language +In the not likely case wttr.in is not yet translated in your language you can help with the translation. Please start with one of the following steps: diff --git a/share/translations/be-help.txt b/share/translations/be-help.txt new file mode 100644 index 0000000..7373c94 --- /dev/null +++ b/share/translations/be-help.txt @@ -0,0 +1,69 @@ +Выкарыстанне: + + $ curl wttr.in # надвор'е ў вашым месцы + $ curl wttr.in/msq # надвор'е ў аэрапорце Мінск + +Магчымыя тыпы месцазнаходжання: + + /novaja-mysz # населены пункт + /~dipgorodok # якое-небудзь месца + /жабінка # назва якога-небудзь месца юнікодам на нейкай мове + /gme # трохлітарны код аэрапорта + /@osm.by # даменнае імя + /220121 # паштовы індэкс + /53.953994,27.537774 # каардынаты GPS + +Адмысловыя месцазнаходжанні: + + /moon # Фаза месяца (дадайце ,+US або ,+France для горада Moon у ЗША або ў Францыі) + /moon@2016-10-25 # Фаза Месяца для гэтай даты (@2016-10-25) + +Адзінкі вымярэння: + + m # метрычная (СІ) (звычайна ўжываецца паўсюль акрамя ЗША) + u # USCS (ўжываецца ў ЗША) + M # паказваць хуткасць ветру ў м/с + +Опцыі прагляду: + + 0 # толькі надвор'е цяпер + 1 # надвор'е цяпер + 1 дзень + 2 # надвор'е цяпер + 2 дні + A # не зважаць на User-Agent і мусова ўжываць фармат вываду ANSI (як у тэрмінале) + F # не паказваць радок "Сачыце за навінамі" + n # вузкая версія (толькі дзень і ноч) + q # ціхая версія (без тэксту "Прагноз надвор'я для") + Q # надта ціхая версія (без "Прагноз надвор'я для", без назвы месца) + T # выключыць паслядоўнасці тэрміналу (без колераў) + +Опцыі PNG: + + /szklow.png # выдаць файл PNG + p # дадаць рамку вакол + t # празрыстасць 150 + transparency=... # празрыстасць ад 0 да 255 (255 = непразрыста) + +Опцыі можна спалучаць: + + /iuje?pq + /dzvinsk?0pq&lang=be + /bielastok_0pq.png # для PNG опцыі падаюцца пасля знаку _ + /turau_0pq_lang=be.png # доўгія опцыі адасабляюцца знакам _ + +Лакалізацыя: + + $ curl be.wttr.in/Minsk + $ curl wttr.in/minsk?lang=be + $ curl -H "Accept-Language: be" wttr.in/minsk + +Даступныя мовы: + + FULL_TRANSLATION (падтрымліваюцца) + PARTIAL_TRANSLATION (не цалкам) + +Адмысловыя адрасы: + + /:help # паказаць гэтую старонку + /:bash.function # паказаць рэкамендаваную функцыю bash wttr() + /:translation # паказаць спіс перакладаў + diff --git a/share/translations/be.txt b/share/translations/be.txt index aac7c7e..0ca117d 100644 --- a/share/translations/be.txt +++ b/share/translations/be.txt @@ -7,24 +7,24 @@ 176: Месцамі дождж : Patchy rain possible : 179: Месцамі снег : Patchy snow possible : 182: Месцамі дождж са снегам : Patchy sleet possible : -185: Месцамі студзёная імжа : Patchy freezing drizzle possible : +185: Месцамі сцюдзёная імжа : Patchy freezing drizzle possible : 200: Месцамі навальніцы : Thundery outbreaks possible : 227: Нізавая завіруха : Blowing snow : 230: Мяцеліца : Blizzard : 248: Туман : Fog : -260: Студзёны туман : Freezing fog : +260: Сцюдзёны туман : Freezing fog : 263: Месцамі невялікая імжа : Patchy light drizzle : 266: Невялікая імжа : Light drizzle : -281: Студзёная імжа : Freezing drizzle : -284: Моцная студзёная імжа : Heavy freezing drizzle : +281: Сцюдзёная імжа : Freezing drizzle : +284: Моцная сцюдзёная імжа : Heavy freezing drizzle : 293: Месцамі невялікі дождж : Patchy light rain : 296: Невялікі дождж : Light rain : 299: Часам умераны дождж : Moderate rain at times : 302: Умераны дождж : Moderate rain : 305: Часам моцны дождж : Heavy rain at times : 308: Моцны дождж : Heavy rain : -311: Невялікі студзёны дождж : Light freezing rain : -314: Умераны ці моцны студзёны дождж : Moderate or heavy freezing rain : +311: Невялікі сцюдзёны дождж : Light freezing rain : +314: Умераны ці моцны сцюдзёны дождж : Moderate or heavy freezing rain : 317: Невялікі дождж са снегам : Light sleet : 320: Умераны ці моцны дождж са снегам : Moderate or heavy sleet : 323: Месцамі невялікі снег : Patchy light snow : diff --git a/share/translations/ca-help.txt b/share/translations/ca-help.txt new file mode 100644 index 0000000..e7be16e --- /dev/null +++ b/share/translations/ca-help.txt @@ -0,0 +1,66 @@ +Instruccions: + + $ curl wttr.in # el clima de la ubicació actual + $ curl wttr.in/muc # el clima de l'aeroport de Múnich + +Tipus d'ubicacions suportades: + + /paris # el nom d'una ciutat + /~Eiffel+tower # el nom de qualsevol lloc famós + /Москва # el nom Unicode de qualsevol lloc en qualsevol idioma + /muc # el codi d'un aeroport (3 lletres) + /@stackoverflow.com # el nom d'un domini web + /94107 # un codi d'àrea + /-78.46,106.79 # coordenades de GPS + +Llocs especials: + + /moon # la fase de la lluna (afegeix ,+US o ,+France per a aquests països) + /moon@2016-10-25 # la fase de la lluna en una data especfica (@2016-10-25) + +Unitats: + + ?m # mètriques (SI) (l'estàndard a tots els llocs excepte als EEUU) + ?u # Sistema Unificat de Classificació del Sòl o USCS (l'estàndard als EEUU) + ?M # mostrar la velocitat del vent en m/s + +Opcions de visualització: + + ?0 # noms el clima actual + ?1 # el clima actual + la previsió d'1 dia + ?2 # el clima actual + la previsió de 2 dies + ?n # versió curta (només el dia i la nit) + ?q # versió silenciosa (sense el text de "El temps a") + ?Q # versió supersilenciosa (ni "El temps a" ni el nom de la ciutat) + ?T # desactiva les seqüències del terminal (sense colors) + +Opcions de PNG: + + /paris.png # genera una imatge PNG + ?p # afegeix una vora al voltant de la imatge + ?t # transparència 150 + transparency=... # transparència de 0 a 255 (255 = sense transparència) + +Les opcions es poden utilitzar conjuntament: + + /Paris?0pq + /Paris?0pq&lang=fr + /Paris_0pq.png # amb PNG les opcions s'especifiquen després del caràcter _ + /Rome_0pq_lang=it.png # una llarga seqüència d'opcions es poden separar amb el caràcter _ + +Ubicació: + + $ curl fr.wttr.in/Paris + $ curl wttr.in/paris?lang=fr + $ curl -H "Accept-Language: fr" wttr.in/paris + +Idiomes suportats: + + FULL_TRANSLATION (soportados) + PARTIAL_TRANSLATION (en progreso) + +URLs especials: + + /:help # mostra aquesta pàgina + /:bash.function # suggereix una funció wttr() en bash + /:translation # mostra informació sobre els traductors diff --git a/share/translations/fr.txt b/share/translations/fr.txt new file mode 100644 index 0000000..87614e0 --- /dev/null +++ b/share/translations/fr.txt @@ -0,0 +1,50 @@ +: Pluie : Rain +: Pluie légère, Averses : Light Rain, Rain Shower +: Averses : Rain Shower +113 : Temps clair : Clear +113 : Ensoleillé : Sunny +116 : Partiellement couvert : Partly cloudy +119 : Nuageux : Cloudy +122 : Couvert : Overcast +143 : Brumeux : Mist +176 : Pluies éparses possibles : Patchy rain possible +179 : Chutes de neige éparses possibles : Patchy snow possible +182 : Chutes éparses de neige fondue possibles : Patchy sleet possible +185 : Bruines givrantes éparses possibles : Patchy freezing drizzle possible +200 : Orages possibles : Thundery outbreaks possible +227 : Poudrerie : Blowing snow +230 : Blizzard : Blizzard +248 : Brouillard : Fog +260 : Brouillard givrant : Freezing fog +263 : Bruines éparses et légères : Patchy light drizzle +266 : Bruine légère : Light drizzle +281 : Bruine givrante : Freezing drizzle +284 : Forte bruine givrante : Heavy freezing drizzle +293 : Pluies éparses et légères : Patchy light rain +296 : Pluie légère : Light rain +299 : Pluie modérée intermittente : Moderate rain at times +302 : Pluie modérée : Moderate rain +305 : Forte pluie intermittente : Heavy rain at times +308 : Forte pluie : Heavy rain +311 : Pluie verglaçante légère : Light freezing rain +314 : Pluie verglaçante modérée à forte : Moderate or heavy freezing rain +317 : Chutes légères de neige fondue : Light sleet +320 : Chutes de neige fondue modérées à fortes : Moderate or heavy sleet +323 : Chutes de neige éparses et légères : Patchy light snow +326 : Chutes de neige légères : Light snow +329 : Chutes de neige éparses et modérées : Patchy moderate snow +332 : Chutes de neige modérées : Moderate snow +335 : Fortes chutes de neige éparses : Patchy heavy snow +338 : Fortes chutes de neige : Heavy snow +350 : Grésil : Ice pellets +353 : Averses légères : Light rain shower +356 : Averses modérées à fortes : Moderate or heavy rain shower +359 : Averses torrentielles : Torrential rain shower +362 : Averses légères de neige fondue : Light sleet showers +365 : Averses de neige fondue modérées à fortes : Moderate or heavy sleet showers +368 : Averses de neige légères : Light snow showers +371 : Averses de neige modérées à fortes : Moderate or heavy snow showers +386 : Pluies orageuses légères et éparses : Patchy light rain with thunder +389 : Pluies orageuses modérées à fortes : Moderate or heavy rain with thunder +392 : Chutes de neige orageuses légères et éparses : Patchy light snow with thunder +395 : Chutes de neige orageuses modérées à fortes : Moderate or heavy snow with thunder diff --git a/share/translations/th-help.txt b/share/translations/th-help.txt new file mode 100644 index 0000000..2e0dfb4 --- /dev/null +++ b/share/translations/th-help.txt @@ -0,0 +1,69 @@ +วิธีใช้: + + $ curl wttr.in # ตำแหน่งปัจจุบัน + $ curl wttr.in/muc # สภาพอากาศที่สนามบินมิวนิค + +รองรับสถานที่หลายรูปแบบ: + + /paris # ชื่อเมือง + /~Eiffel+tower # สถานที่ใดก็ได้ + /Москва # ชื่อ Unicode ของสถานที่และภาษาใดก็ได้ + /muc # รหัสสนามบิน (3 ตัวอักษร) + /@stackoverflow.com # โดเมนเนม + /94107 # รหัสพื้นที่ + /-78.46,106.79 # ตำแหน่ง GPS + +สถานที่พิเศษ: + + /moon # จันทรคติ (เพิ่ม ,+US หรือ ,+France สำหรับเมือง) + /moon@2016-10-25 # จันทรคติ สำหรับวันที่ (@2016-10-25) + +หน่วย: + + m # เมตริก (SI) (ใช้กับทุกที่ยกเว้นประเทศอเมริกา) + u # USCS (ใช้ในประเทศอเมริกา) + M # แสดงความเร็วลม เมตร/วินาที + +ดูตัวเลือก: + + 0 # เฉพาะสภาพอากาศปัจจุบัน + 1 # สภาพอากาศของวันพรุ่งนี้ + 2 # สภาพอากาศของวันมะรืน + A # ไม่สนใจ User-Agent และบังคับใช้ฟอร์แมต ANSI (terminal) + F # ไม่แสดงบรรทัดติดตาม + n # แสดงผลแบบแคบ (เฉพาะตอนเช้าและค่ำ) + q # แสดงผลแบบเงียบ (ไม่แสดงรายงานสภาพอากาศ) + Q # แสดงผลแบบเงียบที่สุด (ไม่แสดงรายงานสภาพอากาศและชื่อเมือง) + T # ปิดการทำงาน terminal sequences (ไม่มีสี) + +ตัวเลือก PNG: + + /paris.png # สร้างไฟล์ PNG + p # เพิ่มกรอบรอบๆไฟล์ที่สร้าง + t # โปร่งใส 150 + transparency=... # โปร่งใส จาก 0 ถึง 255 (255 = ไม่โปร่งใส) + +ตัวเลือกสามารถรวมกันได้: + + /Paris?0pq + /Paris?0pq&lang=fr + /Paris_0pq.png # สำหรับการสร้าง PNG ให้เพิ่มตัวเลือกต่อท้าย _ + /Rome_0pq_lang=it.png # ตัวเลือกหลายตัวให้ต่อด้วย _ + +ตัวเลือกภาษา: + + $ curl fr.wttr.in/Paris + $ curl wttr.in/paris?lang=fr + $ curl -H "Accept-Language: fr" wttr.in/paris + +ภาษาที่รองรับ: + + FULL_TRANSLATION (รองรับ) + PARTIAL_TRANSLATION (อยู่ระหว่างการแปล) + +URL พิเศษ: + + /:help # แสดงหน้านี้ + /:bash.function # แสดงคำแนะนำ bash function wttr() + /:translation # แสดงข้อมูลของผู้ร่วมแปล + diff --git a/share/translations/th.txt b/share/translations/th.txt new file mode 100644 index 0000000..8d7a6b2 --- /dev/null +++ b/share/translations/th.txt @@ -0,0 +1,81 @@ +113: ฟ้าโปร่ง : Clear : +113: แดดจัด : Sunny : +116: มีเมฆบางส่วน : Partly cloudy : +119: มีเมฆมาก : Cloudy : +122: มืดครึ้ม : Overcast : +143: มีหมอก : Mist : +176: มีโอกาสฝนตกเป็นหย่อม ๆ : Patchy rain possible : +179: มีโอกาสหิมะตกเป็นหย่อม ๆ : Patchy snow possible : +182: มีโอกาสลูกเห็บตกเป็นหย่อม ๆ : Patchy sleet possible : +185: มีโอกาสละอองฝนเยือกแข็งตกเป็นหย่อม ๆ : Patchy freezing drizzle possible : +200: มีโอกาสฟ้าผ่า : Thundery outbreaks possible : +227: หิมะพัดผ่าน : Blowing snow : +230: พายุหิมะ : Blizzard : +248: หมอก : Fog : +260: หมอกเยือกแข็ง : Freezing fog : +263: ละอองฝนเป็นหย่อม ๆ : Patchy light drizzle : +266: ฝนพรำ : Light drizzle : +281: ละอองฝนเยือกแข็ง : Freezing drizzle : +284: ละอองฝนเยือกแข็งอย่างหนัก : Heavy freezing drizzle : +293: ฝนตกเบาบางเป็นหย่อม ๆ : Patchy light rain : +296: ฝนตกเล็กน้อย : Light rain : +299: ฝนตกปานกลางในช่วงเวลานั้น : Moderate rain at times : +302: ฝนตกปานกลาง : Moderate rain : +305: ฝนตกหนักในช่วงเวลานั้น : Heavy rain at times : +308: ฝนตกหนัก : Heavy rain : +311: ฝนเยือกแข็งเบาบาง : Light freezing rain : +314: ฝนเยือกแข็งปานกลางหรือหนัก : Moderate or heavy freezing rain : +317: ลูกเห็บเบาบาง : Light sleet : +320: ลูกเห็บปานกลางหรือหนัก : Moderate or heavy sleet : +323: หิมะตกโปรยปรายเป็นหย่อม ๆ : Patchy light snow : +326: หิมะตกเบาบาง : Light snow : +329: หิมะตกปานกลางเป็นหย่อม ๆ : Patchy moderate snow : +332: หิมะตกปานกลาง : Moderate snow : +335: หิมะตกหนักเป็นหย่อม ๆ : Patchy heavy snow : +338: หิมะตกหนัก : Heavy snow : +350: มีเกล็ดน้ำแข็ง : Ice pellets : +353: ฝนตกโปรยปราย : Light rain shower : +356: ฝนตกปานกลางหรือหนัก : Moderate or heavy rain shower : +359: ฝนตกชุก : Torrential rain shower : +362: ลูกเห็บตกเบาบาง : Light sleet showers : +365: ลูกเห็บตกปานกลางหรือหนัก : Moderate or heavy sleet showers : +368: หิมะตกโปรยปราย : Light snow showers : +371: หิมะตกปานกลางหรือหนัก : Moderate or heavy snow showers : +386: ฝนตกและมีฟ้าผ่าเป็นหย่อม ๆ : Patchy light rain with thunder : +389: ฝนตกและมีฟ้าผ่าปานกลางหรือหนัก : Moderate or heavy rain with thunder : +392: หิมะตกและมีฟ้าผ่าเป็นหย่อม ๆ : Patchy light snow with thunder : +395: หิมะตกและมีฟ้าผ่าปานกลางหรือหนัก : Moderate or heavy snow with thunder : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/translations/zh-cn-help.txt b/share/translations/zh-cn-help.txt new file mode 100644 index 0000000..d0894fb --- /dev/null +++ b/share/translations/zh-cn-help.txt @@ -0,0 +1,69 @@ +用法: + + $ curl wttr.in # 当前位置 + $ curl wttr.in/pek # 机场三字码 + +支持的位置类型: + + /paris # 城市名称 + /~Eiffel+tower # 任意地点 + /北京 # 任意语言的任意地点 + /PEK # 机场三字码 + /@stackoverflow.com # 域名 + /94107 # 区域代码 + /-78.46,106.79 # GPS 坐标 + +特殊位置: + + /moon # 月相(加上 ,+US 或 ,+France 以察看特定城市的月相) + /moon@2016-10-25 # 特定日期的月相(@2016-10-25) + +单位: + + m # 公制(国际单位制)(除美国外该单位制为默认值) + u # USCS(美国默认单位制) + M # 以米/秒为单位显示风速 + +查看选项: + + 0 # 仅当前天气 + 1 # 当前天气 + 未来 1 天 + 2 # 当前天气 + 未来 2 天 + A # 忽略代理(User-Agent)并强制使用 ANSI 输出格式(终端模式) + F # 不显示「关注」(Follow)那行 + n # 较窄模式(仅日夜) + q # 简练模式(无「天气预报」文字) + Q # 极简模式(无「天气预报」、无城市名称) + T # 关闭终端转义序列(无颜色) + +PNG 选项: + + /paris.png # 生成 PNG 文件 + p # 在输出图像周围增加缩进空白 + t # 透明度 150 + transparency=... # 透明度从 0 到 255(255 = 不透明) + +可合并使用的选项 + + /Paris?0pq + /Paris?0pq&lang=fr + /Paris_0pq.png # PNG 文件模式中在下划线 _ 后指定选项 + /Rome_0pq_lang=it.png # 用下划线分隔长选项 + +本地化: + + $ curl fr.wttr.in/Paris + $ curl wttr.in/paris?lang=fr + $ curl -H "Accept-Language: fr" wttr.in/paris + +支持的语言: + + FULL_TRANSLATION (supported) + PARTIAL_TRANSLATION (in progress) + +特殊 URL: + + /:help # 显示此页面 + /:bash.function # 显示建议的 bash 函数 wttr() + /:translation # 显示翻译者信息 + diff --git a/share/translations/zh-cn.txt b/share/translations/zh-cn.txt new file mode 100644 index 0000000..3caff46 --- /dev/null +++ b/share/translations/zh-cn.txt @@ -0,0 +1,81 @@ +113:晴 : Clear +113:晴 : Sunny +116:少云 : Partly cloudy +119:多云 : Cloudy +122:阴 : Overcast +143:轻雾 : Mist +176:可能下小雨 : Patchy rain possible +179:可能下小雪 : Patchy snow possible +182:可能有雨夹雪 : Patchy sleet possible +185:可能有冻毛毛雨 : Patchy freezing drizzle possible +200:可能打雷 : Thundery outbreaks possible +227:小雪 : Blowing snow +230:暴雪 : Blizzard +248:雾 : Fog +260:冻雾 : Freezing fog +263:局部毛毛雨 : Patchy light drizzle +266:毛毛雨 : Light drizzle +281:冻毛毛雨 : Freezing drizzle +284:大冻毛毛雨 : Heavy freezing drizzle +293:局部小雨 : Patchy light rain +296:小雨 : Light rain +299:有时中雨 : Moderate rain at times +302:中雨 : Moderate rain +305:有时大雨 : Heavy rain at times +308:大雨 : Heavy rain +311:小冻雨 : Light freezing rain +314:中或大冻雨 : Moderate or heavy freezing rain +317:小雨夹雪 : Light sleet +320:中或大雨夹雪 : Moderate or heavy sleet +323:局部小雪 : Patchy light snow +326:小雪 : Light snow +329:局部中雪 : Patchy moderate snow +332:中雪 : Moderate snow +335:局部大雪 : Patchy heavy snow +338:大雪 : Heavy snow +350:冰珠 : Ice pellets +353:小阵雨 : Light rain shower +356:中或大阵雨 : Moderate or heavy rain shower +359:暴阵雨 : Torrential rain shower +362:小阵雨夹雪 : Light sleet showers +365:中或大阵雨夹雪 : Moderate or heavy sleet showers +368:小阵雪 : Light snow showers +371:中或大阵雪 : Moderate or heavy snow showers +386:局部小雷阵雨 : Patchy light rain with thunder +389:中或大雷阵雨 : Moderate or heavy rain with thunder +392:小雷阵雪 : Patchy light snow with thunder +395:中或大雷阵雪 : Moderate or heavy snow with thunder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/translations/zh-tw-help.txt b/share/translations/zh-tw-help.txt new file mode 100644 index 0000000..3a3dcae --- /dev/null +++ b/share/translations/zh-tw-help.txt @@ -0,0 +1,69 @@ +使用方法 + + $ curl wttr.in # 目前位置 + $ curl wttr.in/muc # 慕尼黑機場的天氣 + +支援的位置類型: + + /paris # 城市名稱 + /~Eiffel+tower # 任意地點 + /Москва # 任意地點在任何語言的 Unicode 名稱 + /muc # 機場代碼(3個字母) + /@stackoverflow.com # 網域名稱 + /94107 # 區域代碼 + /-78.46,106.79 # GPS 座標 + +特殊位置: + + /moon # 月相(加入 ,+US 或 ,+France 來觀看這些地方的月相) + /moon@2016-10-25 # 特定日期的月相 (@2016-10-25) + +單位: + + m # 公制(國際單位制)(除了美國以外的地方皆預設使用此單位置) + u # USCS(美國預設使用) + M # 以公尺/秒為單位顯示風速 + +檢視選項: + + 0 # 僅目前的天氣 + 1 # 目前的天氣+未來1天 + 2 # 目前的天氣+未來2天 + A # 忽略使用者代理字串並強制使用 ANSI 輸出格式(終端機) + F # 不要顯示「追蹤」那行 + n # 窄版(僅日夜) + q # 安靜版(無「天氣報告」文字) + Q # 超安靜版(無「天氣報告」、無城市名稱) + T # 關閉終端機序列(無色彩) + +PNG 選項: + + /paris.png # 生成 PNG 檔案 + p # 在輸出周圍新增框架 + t # 透明度 150 + transparency=... # 透明度從 0 到 255(255 = 不透明) + +可合併使用的選項 + + /Paris?0pq + /Paris?0pq&lang=fr + /Paris_0pq.png # PNG 檔案模式於 _ 後指定 + /Rome_0pq_lang=it.png # 以底線分隔長選項 + +在地化: + + $ curl fr.wttr.in/Paris + $ curl wttr.in/paris?lang=fr + $ curl -H "Accept-Language: fr" wttr.in/paris + +支援的語言: + + FULL_TRANSLATION (supported) + PARTIAL_TRANSLATION (in progress) + +特殊 URL: + + /:help # 顯示此頁面 + /:bash.function # 顯示建議的 bash 函式 wttr() + /:translation # 顯示關於譯者的資訊 + diff --git a/share/translations/zh-tw.txt b/share/translations/zh-tw.txt new file mode 100644 index 0000000..80b716c --- /dev/null +++ b/share/translations/zh-tw.txt @@ -0,0 +1,81 @@ +113: 晴朗 : Clear : +113: 陽光充足 : Sunny : +116: 部份有雲 : Partly cloudy : +119: 多雲 : Cloudy : +122: 陰天 : Overcast : +143: 薄霧 : Mist : +176: 可能下小雨 : Patchy rain possible : +179: 可能下小雪 : Patchy snow possible : +182: 可能有雨夾雪 : Patchy sleet possible : +185: 可能有凍毛毛雨 : Patchy freezing drizzle possible : +200: 可能打雷 : Thundery outbreaks possible : +227: 吹雪 : Blowing snow : +230: 雪暴 : Blizzard : +248: 霧 : Fog : +260: 凍霧 : Freezing fog : +263: 部份毛毛細雨 : Patchy light drizzle : +266: 毛毛細雨 : Light drizzle : +281: 凍毛毛雨 : Freezing drizzle : +284: 重凍毛毛雨 : Heavy freezing drizzle : +293: 部份小雨 : Patchy light rain : +296: 小雨 : Light rain : +299: 有時中雨 : Moderate rain at times : +302: 中雨 : Moderate rain : +305: 有時大雨 : Heavy rain at times : +308: 大雨 : Heavy rain : +311: 小凍雨 : Light freezing rain : +314: 中或大凍雨 : Moderate or heavy freezing rain : +317: 小雨夾雪 : Light sleet : +320: 中或大雨夾雪 : Moderate or heavy sleet : +323: 部份小雪 : Patchy light snow : +326: 小雪 : Light snow : +329: 部份中雪 : Patchy moderate snow : +332: 中雪 : Moderate snow : +335: 部份大雪 : Patchy heavy snow : +338: 大雪 : Heavy snow : +350: 冰珠 : Ice pellets : +353: 小陣雨 : Light rain shower : +356: 中或大陣雨 : Moderate or heavy rain shower : +359: 豪陣雨 : Torrential rain shower : +362: 小陣雨夾雪 : Light sleet showers : +365: 中或大陣雨夾雪 : Moderate or heavy sleet showers : +368: 小陣雪 : Light snow showers : +371: 中或大陣雪 : Moderate or heavy snow showers : +386: 部份小雷雨 : Patchy light rain with thunder : +389: 中或大雷雨 : Moderate or heavy rain with thunder : +392: 可能會打雷的小陣雪 : Patchy light snow with thunder : +395: 可能會打雷的中或大陣雪 : Moderate or heavy snow with thunder : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +