commit
0e276955d1
19 changed files with 892 additions and 99 deletions
|
|
@ -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:
|
||||
|
|
|
|||
57
README.md
57
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:
|
|||
|
||||

|
||||
|
||||
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/.
|
||||
|
||||

|
||||
|
||||
## 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),
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = "{}"
|
||||
|
||||
|
|
|
|||
24
lib/spark.py
24
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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
70
lib/translations_v2.py
Normal file
70
lib/translations_v2.py
Normal file
|
|
@ -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:", "", "", "", "", "", "", "", ""),
|
||||
}
|
||||
|
|
@ -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,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
69
share/translations/be-help.txt
Normal file
69
share/translations/be-help.txt
Normal file
|
|
@ -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 # паказаць спіс перакладаў
|
||||
|
||||
|
|
@ -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 :
|
||||
|
|
|
|||
66
share/translations/ca-help.txt
Normal file
66
share/translations/ca-help.txt
Normal file
|
|
@ -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
|
||||
50
share/translations/fr.txt
Normal file
50
share/translations/fr.txt
Normal file
|
|
@ -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
|
||||
69
share/translations/th-help.txt
Normal file
69
share/translations/th-help.txt
Normal file
|
|
@ -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 # แสดงข้อมูลของผู้ร่วมแปล
|
||||
|
||||
81
share/translations/th.txt
Normal file
81
share/translations/th.txt
Normal file
|
|
@ -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 :
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
69
share/translations/zh-cn-help.txt
Normal file
69
share/translations/zh-cn-help.txt
Normal file
|
|
@ -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 # 显示翻译者信息
|
||||
|
||||
81
share/translations/zh-cn.txt
Normal file
81
share/translations/zh-cn.txt
Normal file
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
69
share/translations/zh-tw-help.txt
Normal file
69
share/translations/zh-tw-help.txt
Normal file
|
|
@ -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 # 顯示關於譯者的資訊
|
||||
|
||||
81
share/translations/zh-tw.txt
Normal file
81
share/translations/zh-tw.txt
Normal file
|
|
@ -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 :
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Reference in a new issue