diff --git a/messages.pot b/messages.pot new file mode 100644 index 0000000..82593bf --- /dev/null +++ b/messages.pot @@ -0,0 +1,528 @@ +# Translations template for PROJECT. +# Copyright (C) 2021 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2021. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2021-03-25 16:51-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.8.1\n" + +#: scisat.py:263 scisat.py:1553 +msgid "Acetone" +msgstr "" + +#: scisat.py:264 scisat.py:1554 +msgid "Acetylene" +msgstr "" + +#: scisat.py:265 scisat.py:1555 +msgid "Ethane" +msgstr "" + +#: scisat.py:266 scisat.py:1557 +msgid "Trichlorofluoromethane" +msgstr "" + +#: scisat.py:267 scisat.py:1558 +msgid "Carbon tetrachloride" +msgstr "" + +#: scisat.py:269 scisat.py:1561 +msgid "Carbon tetrafluoride" +msgstr "" + +#: scisat.py:270 scisat.py:1562 +msgid "Trichlorotrifluoroethane" +msgstr "" + +#: scisat.py:271 scisat.py:1563 +msgid "Chloromethane" +msgstr "" + +#: scisat.py:272 scisat.py:1564 +msgid "Acetonitrite" +msgstr "" + +#: scisat.py:273 scisat.py:1565 +msgid "Methanol" +msgstr "" + +#: scisat.py:274 scisat.py:1566 +msgid "Methane" +msgstr "" + +#: scisat.py:276 scisat.py:1568 +msgid "Methane 212" +msgstr "" + +#: scisat.py:277 scisat.py:1569 +msgid "Methane 311" +msgstr "" + +#: scisat.py:278 scisat.py:1570 +msgid "Difluorochloromethane" +msgstr "" + +#: scisat.py:279 scisat.py:1571 +msgid "Trifluoromethane" +msgstr "" + +#: scisat.py:280 scisat.py:1572 +msgid "Chlorine monoxide" +msgstr "" + +#: scisat.py:281 scisat.py:1573 +msgid "Chlorine nitrate" +msgstr "" + +#: scisat.py:283 scisat.py:1575 +msgid "Carbon monoxide" +msgstr "" + +#: scisat.py:284 scisat.py:1576 +msgid "Carbon dioxide" +msgstr "" + +#: scisat.py:285 scisat.py:1577 +msgid "Carbon dioxide 627" +msgstr "" + +#: scisat.py:286 scisat.py:1578 +msgid "Carbon dioxide 628" +msgstr "" + +#: scisat.py:287 scisat.py:1579 +msgid "Carbon dioxide 636" +msgstr "" + +#: scisat.py:288 scisat.py:1580 +msgid "Carbon dioxide 637" +msgstr "" + +#: scisat.py:291 scisat.py:1583 +msgid "Carbon dioxide 638" +msgstr "" + +#: scisat.py:292 scisat.py:1584 +msgid "Phosgene" +msgstr "" + +#: scisat.py:293 +msgid "Carbonyl chlorine fluoride" +msgstr "" + +#: scisat.py:294 scisat.py:1586 +msgid "Carbonyl fluoride" +msgstr "" + +#: scisat.py:295 scisat.py:1587 +msgid "Carbon monoxide 27" +msgstr "" + +#: scisat.py:296 scisat.py:1588 +msgid "Carbon monoxide 28" +msgstr "" + +#: scisat.py:298 scisat.py:1590 +msgid "Carbon monoxide 36" +msgstr "" + +#: scisat.py:299 scisat.py:1591 +msgid "Carbon monoxide 38" +msgstr "" + +#: scisat.py:300 scisat.py:1592 +msgid "GLC" +msgstr "" + +#: scisat.py:301 scisat.py:1593 +msgid "Formaldehyde" +msgstr "" + +#: scisat.py:302 scisat.py:1594 +msgid "Water" +msgstr "" + +#: scisat.py:303 scisat.py:1595 +msgid "Hydrogen peroxide" +msgstr "" + +#: scisat.py:306 scisat.py:1598 +msgid "Water 162" +msgstr "" + +#: scisat.py:307 scisat.py:1599 +msgid "Water 171" +msgstr "" + +#: scisat.py:308 scisat.py:1600 +msgid "Water 181" +msgstr "" + +#: scisat.py:309 scisat.py:1601 +msgid "Water 182" +msgstr "" + +#: scisat.py:310 scisat.py:1602 +msgid "Hydrochlorofluorocarbon 141b" +msgstr "" + +#: scisat.py:311 scisat.py:1603 +msgid "Hydrochlorofluorocarbon 142b" +msgstr "" + +#: scisat.py:312 scisat.py:1604 +msgid "Hydrochloric acid" +msgstr "" + +#: scisat.py:316 scisat.py:1606 +msgid "Hydrogen cyanide" +msgstr "" + +#: scisat.py:317 scisat.py:1607 +msgid "Formic acid" +msgstr "" + +#: scisat.py:318 scisat.py:1608 +msgid "Hydrogen fluoride" +msgstr "" + +#: scisat.py:319 scisat.py:1609 +msgid "Hydrofluorocarbon 134a" +msgstr "" + +#: scisat.py:320 scisat.py:1610 +msgid "Nitric acid" +msgstr "" + +#: scisat.py:321 scisat.py:1611 +msgid "Nitric acid 156" +msgstr "" + +#: scisat.py:324 scisat.py:1614 +msgid "Peroxynitric acid" +msgstr "" + +#: scisat.py:325 scisat.py:1615 +msgid "Nitrogen" +msgstr "" + +#: scisat.py:326 scisat.py:1616 +msgid "Nitrous oxide" +msgstr "" + +#: scisat.py:327 scisat.py:1617 +msgid "Dinitrogen pentaoxide" +msgstr "" + +#: scisat.py:328 scisat.py:1618 +msgid "Nitrous oxide 447" +msgstr "" + +#: scisat.py:329 scisat.py:1619 +msgid "Nitrous oxide 448" +msgstr "" + +#: scisat.py:331 scisat.py:1621 +msgid "Nitrous oxide 456" +msgstr "" + +#: scisat.py:332 scisat.py:1622 +msgid "Nitrous oxide 546" +msgstr "" + +#: scisat.py:333 scisat.py:1623 +msgid "Nitrous monoxide 447" +msgstr "" + +#: scisat.py:334 scisat.py:1624 +msgid "Nitrogen dioxide" +msgstr "" + +#: scisat.py:335 scisat.py:1625 +msgid "Nitrogen dioxide 656" +msgstr "" + +#: scisat.py:336 scisat.py:1626 +msgid "Oxygen" +msgstr "" + +#: scisat.py:339 scisat.py:1629 +msgid "Ozone" +msgstr "" + +#: scisat.py:340 scisat.py:1630 +msgid "Ozone 667" +msgstr "" + +#: scisat.py:341 scisat.py:1631 +msgid "Ozone 668" +msgstr "" + +#: scisat.py:342 scisat.py:1632 +msgid "Ozone 676" +msgstr "" + +#: scisat.py:343 scisat.py:1633 +msgid "Ozone 686" +msgstr "" + +#: scisat.py:344 scisat.py:1634 +msgid "Carbonyl sulfide" +msgstr "" + +#: scisat.py:345 scisat.py:1635 +msgid "Carbonyl sulfide 623" +msgstr "" + +#: scisat.py:348 scisat.py:1638 +msgid "Carbonyl sulfide 624" +msgstr "" + +#: scisat.py:349 scisat.py:1639 +msgid "Carbonyl sulfide 632" +msgstr "" + +#: scisat.py:350 scisat.py:1640 +msgid "Phosphorus" +msgstr "" + +#: scisat.py:351 scisat.py:1641 +msgid "Polyacrylonitrile" +msgstr "" + +#: scisat.py:352 scisat.py:1642 +msgid "Sulfur hexafluoride" +msgstr "" + +#: scisat.py:353 scisat.py:1643 +msgid "Sulfur dioxide" +msgstr "" + +#: scisat.py:946 +msgid "Altitude" +msgstr "" + +#: scisat.py:957 +msgid "Mean concentration distribution on altitude" +msgstr "" + +#: scisat.py:965 scisat.py:1216 +msgid "Concentration [ppv]" +msgstr "" + +#: scisat.py:972 +msgid "Altitude [km]" +msgstr "" + +#: scisat.py:1061 scisat.py:1094 +msgid "Gas Concentration [ppv] (mean on altitude and position) " +msgstr "" + +#: scisat.py:1106 +msgid "World graph of mean gas concentration" +msgstr "" + +#: scisat.py:1211 +msgid "Time Series" +msgstr "" + +#: scisat.py:1213 +msgid "Date" +msgstr "" + +#: scisat.py:1513 +msgid "SCISAT Data Visualisation" +msgstr "" + +#: scisat.py:1514 +msgid "Learn More About SCISAT" +msgstr "" + +#: scisat.py:1515 +msgid "Data selected" +msgstr "" + +#: scisat.py:1516 +msgid "" +"Launched on August 12, 2003, SCISAT helps a team of Canadian and " +"international scientists improve their understanding of the depletion of " +"the ozone layer, with a special emphasis on the changes occurring over " +"Canada and in the Arctic. " +msgstr "" + +#: scisat.py:1517 +msgid "" +"This application provides users the ability to select, download and " +"visualize SCISAT's data. The dataset can also be accessed in [CSA's Open " +"Government Portal](https://data.asc-csa.gc.ca/dataset/02969436-8c0b-4e6e-" +"ad40-781cdb43cf24)." +msgstr "" + +#: scisat.py:1518 +msgid "" +"The authoritative source data for the Atmospheric Chemistry Experiment " +"(ACE), also known as SCISAT, is available on the [ACE " +"site](http://www.ace.uwaterloo.ca/data.php) (external site only available" +" in English). " +msgstr "" + +#: scisat.py:1519 +msgid "" +"Please read this [Important Mission Information " +"Document](http://www.ace.uwaterloo.ca/ACE-" +"FTS_v2.2/ACEFTSPublicReleaseDocumentation.pdf) before using the " +"ACE/SCISAT data. Please refer to the relevant scientific literature when " +"interpreting SCISAT data." +msgstr "" + +#: scisat.py:1520 +msgid "Visit our Github page to learn more about our applications." +msgstr "" + +#: scisat.py:1521 +msgid "Select Data" +msgstr "" + +#: scisat.py:1522 +msgid "Update" +msgstr "" + +#: scisat.py:1523 +msgid "Update with selected data" +msgstr "" + +#: scisat.py:1524 +msgid "" +"Graph of the gas concentration in parts per volume (ppv) visualized on a " +"world map. Each dot represents the mean concentration on the selected " +"dates, the altitude column as well as the position. The color indicates " +"the mean gas concentration value." +msgstr "" + +#: scisat.py:1525 +msgid "" +"Graph showing the gas concentration in parts per volume (ppv) over the " +"selected altitude interval. The value represents the mean concentration " +"over the latitudes and longitudes selected, as well as the selected " +"dates." +msgstr "" + +#: scisat.py:1526 +msgid "" +"Time series showing the evolution of the gas concentration in parts per " +"volume (ppv). Each data point represents the daily overall mean " +"concentration." +msgstr "" + +#: scisat.py:1527 +msgid "Selection of the gas" +msgstr "" + +#: scisat.py:1528 +msgid "Selection of the range of latitude " +msgstr "" + +#: scisat.py:1529 +msgid "Selection of the range of longitude" +msgstr "" + +#: scisat.py:1530 +msgid "Date selection" +msgstr "" + +#: scisat.py:1531 +msgid "Download the selected dataset" +msgstr "" + +#: scisat.py:1532 +msgid "" +"Invalid values provided. Latitude values must be between -90 and 90. " +"Longitude values must be between -180 and 180. Minimum values must be " +"smaller than maximum values. All values must be round numbers that are " +"multiples of 5." +msgstr "" + +#: scisat.py:1533 +msgid "" +"Invalid dates provided. Try dates between 01/02/2004 (Feb. 1st 2004) and " +"05/05/2020 (May 5th 2020)." +msgstr "" + +#: scisat.py:1534 +msgid "" +"Missing data. The gas selected has no associated data. Please contact asc" +".donnees-data.csa@canada.ca." +msgstr "" + +#: scisat.py:1535 +msgid "" +"Invalid altitude range provided. Altitudes must be between 0 and 150. " +"Minimum altitude must be strictly lower than maximum altitude. Both " +"values must be round numbers." +msgstr "" + +#: scisat.py:1536 +msgid "Filter by Latitude (°):" +msgstr "" + +#: scisat.py:1537 +msgid "Minimum latitude" +msgstr "" + +#: scisat.py:1538 +msgid "Maximum latitude" +msgstr "" + +#: scisat.py:1539 +msgid "Filter by Longitude (°):" +msgstr "" + +#: scisat.py:1540 +msgid "Minimum longitude" +msgstr "" + +#: scisat.py:1541 +msgid "Maximum longitude" +msgstr "" + +#: scisat.py:1542 +msgid "Select Altitude Range (km):" +msgstr "" + +#: scisat.py:1543 +msgid "Select Date:" +msgstr "" + +#: scisat.py:1544 +msgid "Select Gas:" +msgstr "" + +#: scisat.py:1545 +msgid "Download Summary Data as CSV" +msgstr "" + +#: scisat.py:1546 +msgid "" +"Pressing the above button will download the data filtered based on the " +"longitude, latitude, dates and altitude selected." +msgstr "" + +#: scisat.py:1556 +msgid "Dichlorodifluoromethane" +msgstr "" + +#: scisat.py:1585 +msgid "Carbonyl chlorofluoride" +msgstr "" + diff --git a/scisat.py b/scisat.py index 663d208..8407c8d 100644 --- a/scisat.py +++ b/scisat.py @@ -471,9 +471,7 @@ def build_filtering(): html.Div( [ - html.H3( - id="select-data" - ), + ], style={"margin-top": "10px", "margin-left": "auto", "margin-right": "auto", "text-align": "center"}, className="twelve columns" @@ -484,159 +482,24 @@ def build_filtering(): html.Div( [ dbc.Alert(color="secondary", id="gas_alert", is_open=False, fade=False), - html.P( - id="gas-text", - className="control_label", - ), - html.Div([ - html.Label( - dcc.Dropdown( - id="gaz_list", - options= gaz_name_options, - multi=False, - value='ACEFTS_L2_v4p1_O3.nc', - className="dcc_control", - ) - ), - - html.Span(children=html.P(id="gas_selection"),className="wb-inv")])], style={"textAlign":"left"} + ], style={"textAlign":"left"} ), html.Div( dbc.Alert(color="secondary", id="pos_alert", is_open=False, fade=False, style={"margin-top":"0.5em"}), style={"textAlign":"left"}), - html.Div([ - html.Div( #Latitude picker - [ - html.P( - id="latitude-text", - className="control_label", - style={"textAlign":"left"} - ), - html.Div([ - html.Label( - id = "lat_min-text", - htmlFor = "lat_min", - hidden = True - ), - dcc.Input( - id="lat_min", - type='number', - value=-90.0, - placeholder="Min Latitude", - min=-90.0, - max=90.0, - step=5, - debounce=True - ), - html.Label( - id = "lat_max-text", - htmlFor = "lat_max", - hidden = True - ), - dcc.Input( - id="lat_max", - type='number', - value=90.0, - placeholder="Max Latitude", - min=-90.0, - max=90.0, - step=5, - debounce=True - ) - ]), - html.Span(children=html.P(id="lat_selection"),className="wb-inv")], className="one-third column", + html.Div( + dbc.Alert(color="secondary", id="alt_alert", is_open=False, fade=False, style={"margin-top":"0.5em"}), style={"textAlign":"left"} ), - html.Div( #longitude picker - [ - html.P( - id="longitude-text", - className="control_label", - style ={"textAlign":"center"} - ), - html.Div([ - html.Label( - htmlFor="lon_min", - id= "lon_min-text", - hidden = True - ), - dcc.Input( - id="lon_min", - type='number', - value=-180.0, - placeholder="Min Longitude", - min=-180.0, - max=180.0, - step=5, - debounce=True - ), - html.Label( - htmlFor="lon_max", - id= "lon_max-text", - hidden = True - ), - dcc.Input( - id="lon_max", - type='number', - value=180.0, - placeholder="Max Longitude", - min=-180.0, - max=180.0, - step=5, - debounce=True - ), - ]), - html.Span(children=html.P(id="lon_selection"),className="wb-inv") ], className="one-third column", style={"textAlign":"center"} - ), + html.Div([ html.Div( [ #Year selection + download button html.Div([ dbc.Alert(color="secondary", id="date_alert", is_open=False, fade=False, style={"margin-top":"0.5em"}), - ]), - html.P( - id="yearslider-text", - className="control_label", - style={"textAlign":"center"} - ), - - html.Div([ - html.Label( - dcc.DatePickerRange( - id='date_picker_range', - start_date=dt.datetime(2004, 2, 1), - end_date=dt.datetime(2020, 5, 5), - min_date_allowed=dt.datetime(2004, 2, 1), - max_date_allowed=dt.date.today(), - start_date_placeholder_text='Select start date', - end_date_placeholder_text='Select end date', - display_format="DD/MM/Y" - ), - ), - html.Div(id='output-container-date-picker-range') - , html.Span(children=html.P(id="date_selection"),className="wb-inv")] - ), + ]) ], className="one-third column", style={"margin-right":"4em", "textAlign":"right"} ) ], style={"textAlign":"left"}), html.Hr(), - html.Div([ #Choix altitude - html.P(id="altitude-text"), - dcc.RangeSlider( - id='alt_range', - marks = {i: "{}".format(i) for i in np.append(np.arange(0.5,149.5,10),149.5)}, - min=0, - max=150, - step=1, - value=[0, 150] , - # tooltip = { 'always_visible': True } - ), - html.Div(id='output-container-alt-picker-range'), - ],style={"margin-top":"75px"}), - html.Div([html.Div([ - html.A( - html.Button(id='generate-button', n_clicks=0, className="dash_button", style={'padding-left': '112px', 'padding-right':'112px'}), - id='generate', - target="_blank", - ), - html.Span(children=html.P(id="generate_selection"),className="wb-inv")], className="one-half column", style={"textAlign":"right"}),html.Div([ #Download button + html.Div([html.Div([ #Download button html.Div([ html.A( html.Button(id='download-button-1', n_clicks=0, className="dash_button", style={'padding': '0px 10px'}), @@ -645,15 +508,15 @@ def build_filtering(): href="", target="_blank", ), - html.Span(children=html.P(id="download_selection"),className="wb-inv")] - - ), + html.Span(children=html.P(id="download_selection"),className="wb-inv"), + html.P(id="download-description",style={"margin-top":"20px"}) + ]), ],id="cross-filter-options", className="one-half column")], style={"margin-top":"30px"}) ], className="pretty_container twelve column", style={"justify-content": "space-evenly"} ) - ]) + ], style={"padding-left":"10rem"}) # Builds the layout for the map displaying the time series @@ -705,8 +568,192 @@ def build_stats(): ]), html.Div(id='none', children=[], style={'display': 'none'}), # Placeholder element to trigger translations upon page load - ]) + ], style = {"padding-left": "10rem"}) +def build_sidebar(): + return html.Div([ + html.H3( + id="select-data", + style={"padding-left":"10px"} + ), + html.Hr(), + html.Div([ + html.P( + id="gas-text", + className="control_label", + ), + html.Div([ + html.Label( + dcc.Dropdown( + id="gaz_list", + options= gaz_name_options, + multi=False, + value='ACEFTS_L2_v4p1_O3.nc', + style={"width":"28rem"} + ) + ), + + html.Span(children=html.P(id="gas_selection"),className="wb-inv")]) + ]), + html.Div( #Latitude picker + [ + html.P( + id="latitude-text", + className="control_label" + ), + html.Div([ + html.Label( + id = "lat_min-text", + htmlFor = "lat_min", + hidden = True + ), + dcc.Input( + id="lat_min", + type='number', + value=-90.0, + placeholder="Min Latitude", + min=-90.0, + max=90.0, + step=5, + debounce=True, + style={"width":"95px"} + ), + html.Label( + id = "lat_max-text", + htmlFor = "lat_max", + hidden = True + ), + dcc.Input( + id="lat_max", + type='number', + value=90.0, + placeholder="Max Latitude", + min=-90.0, + max=90.0, + step=5, + debounce=True, + style={"width":"95px"} + ) + ]), + html.Span(children=html.P(id="lat_selection"),className="wb-inv")], + ), + html.Div( #longitude picker + [ + html.P( + id="longitude-text", + className="control_label", + ), + html.Div([ + html.Label( + htmlFor="lon_min", + id= "lon_min-text", + hidden = True + ), + dcc.Input( + id="lon_min", + type='number', + value=-180.0, + placeholder="Min Longitude", + min=-180.0, + max=180.0, + step=5, + debounce=True, + style={"width":"95px"} + ), + html.Label( + htmlFor="lon_max", + id= "lon_max-text", + hidden = True + ), + dcc.Input( + id="lon_max", + type='number', + value=180.0, + placeholder="Max Longitude", + min=-180.0, + max=180.0, + step=5, + debounce=True, + style={"width":"95px"} + ), + ]), + html.Span(children=html.P(id="lon_selection"),className="wb-inv") ], + ), + html.Div([ #Choix altitude + html.P(id="altitude-text", className="control_label"), + html.Label( + htmlFor="alt_min", + id= "alt_min-text", + hidden = True + ), + dcc.Input( + id="alt_min", + type='number', + value=0, + placeholder="Min Altitude", + min=0, + max=150, + step=1, + debounce=True, + style={"width":"95px"} + ), + html.Label( + htmlFor="alt_max", + id= "alt_max-text", + hidden = True + ), + dcc.Input( + id="alt_max", + type='number', + value=150, + placeholder="Max Longitude", + min=0, + max=150, + step=1, + debounce=True, + style={"width":"95px"} + ), + ]), + html.Div([ + html.P( + id="yearslider-text", + className="control_label", + ), + + html.Div([ + html.Label( + dcc.DatePickerRange( + id='date_picker_range', + start_date=dt.datetime(2004, 2, 1), + end_date=dt.datetime(2020, 5, 5), + min_date_allowed=dt.datetime(2004, 2, 1), + max_date_allowed=dt.date.today(), + start_date_placeholder_text='Select start date', + end_date_placeholder_text='Select end date', + display_format="DD/MM/Y" + ), + ), + html.Div(id='output-container-date-picker-range'), + html.Span(children=html.P(id="date_selection"),className="wb-inv")]), + html.Hr(), + html.Div([ + html.A( + html.Button(id='generate-button', n_clicks=0, className="dash_button", style={'padding-left': '75px', 'padding-right':'75px'}), + id='generate', + target="_blank", + ), + html.Span(children=html.P(id="generate_selection"),className="wb-inv")], style={"textAlign":"center"}) + ]) + + ], style = { + "position": "fixed", + "top": 0, + "left": 0, + "bottom": 0, + "width": "32rem", + "padding": "2rem 1rem", + "background-color": "#f8f9fa" + }) # Create app layout app.layout = html.Div( [ @@ -719,6 +766,7 @@ def build_stats(): build_header(), build_filtering(), build_stats(), + build_sidebar(), ], id="mainContainer", style={"display": "flex", "flex-direction": "column", "margin": "auto", "width":"75%"}, @@ -792,13 +840,17 @@ def update_gas(gaz_list, is_open): # Update altitude range. The output is used as a placeholder because Dash does not allow to have no output on callbacks. @app.callback( - Output("placeholder","value"), - [Input("alt_range", "value")] + Output("alt_alert","is_open"), + [Input("alt_min", "value"), Input("alt_max", "value")] ) -def update_alt(alt_range): +def update_alt(alt_min, alt_max): global ALT_RANGE - ALT_RANGE = alt_range - return "" + s = False + if alt_validation(alt_min, alt_max): + ALT_RANGE = [alt_min, alt_max] + else: + s = True + return s # Lat/long validation def pos_validation(lat_min,lat_max,lon_min,lon_max): @@ -829,6 +881,13 @@ def gas_validation(gaz_list): return False return True +def alt_validation(alt_min, alt_max): + try: + s = ((alt_min < alt_max) and (alt_min>=0) and (alt_min<=150) and (alt_max>=0) and (alt_max<=150)) + except TypeError: + s = False + return s + #======================================================================================================================= # This section is for graph generation. The 3 graphs are generated here. @@ -895,6 +954,7 @@ def make_count_figure(df): ] layout = dict( + title = _("Mean concentration distribution on altitude"), autosize=True, automargin=True, plot_bgcolor="#F9F9F9", @@ -1043,7 +1103,9 @@ def generate_geo_map(df): ) # We set the layout for margins and paddings fig.update_layout( - margin=dict(l=10, r=10, t=20, b=10, pad=5), + title=_("World graph of mean gas concentration"), + title_x=0.5, + margin=dict(l=10, r=10, t=40, b=10, pad=5), clickmode="event+select", hovermode="closest", mapbox=go.layout.Mapbox( @@ -1429,6 +1491,7 @@ def download_csv(): Output("pos_alert", "children"), Output("date_alert", "children"), Output("gas_alert", "children"), + Output("alt_alert", "children"), Output("latitude-text", "children"), Output("lat_min-text", "children"), Output("lat_max-text", "children"), @@ -1439,6 +1502,7 @@ def download_csv(): Output("yearslider-text", "children"), Output("gas-text", "children"), Output("download-button-1", "children"), + Output("download-description", "children"), Output("gaz_list", "options"), ], [Input('none', 'children')], # A placeholder to call the translations upon startup @@ -1468,16 +1532,18 @@ def translate_static(x): _("Invalid values provided. Latitude values must be between -90 and 90. Longitude values must be between -180 and 180. Minimum values must be smaller than maximum values. All values must be round numbers that are multiples of 5."), _("Invalid dates provided. Try dates between 01/02/2004 (Feb. 1st 2004) and 05/05/2020 (May 5th 2020)."), _("Missing data. The gas selected has no associated data. Please contact asc.donnees-data.csa@canada.ca."), - _("Filter by Latitude:"), + _("Invalid altitude range provided. Altitudes must be between 0 and 150. Minimum altitude must be strictly lower than maximum altitude. Both values must be round numbers."), + _("Filter by Latitude (°):"), _("Minimum latitude"), _("Maximum latitude"), - _("Filter by Longitude:"), + _("Filter by Longitude (°):"), _("Minimum longitude"), _("Maximum longitude"), - _("Select Altitude Range:"), + _("Select Altitude Range (km):"), _("Select Date:"), _("Select Gas:"), _('Download Summary Data as CSV'), + _("Pressing the above button will download the data filtered based on the longitude, latitude, dates and altitude selected."), #_('Download full data as netcdf'), # _("Select x-axis:"), # _("Select y-axis:"), diff --git a/translations/fr/LC_MESSAGES/messages.mo b/translations/fr/LC_MESSAGES/messages.mo index 1f1e8f5..7ef472c 100644 Binary files a/translations/fr/LC_MESSAGES/messages.mo and b/translations/fr/LC_MESSAGES/messages.mo differ diff --git a/translations/fr/LC_MESSAGES/messages.po b/translations/fr/LC_MESSAGES/messages.po index 4ad276e..644f000 100644 --- a/translations/fr/LC_MESSAGES/messages.po +++ b/translations/fr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2021-03-16 08:03-0700\n" +"POT-Creation-Date: 2021-03-25 16:51-0400\n" "PO-Revision-Date: 2020-07-10 16:35-0400\n" "Last-Translator: FULL NAME \n" "Language: fr\n" @@ -16,105 +16,105 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" +"Generated-By: Babel 2.8.1\n" -#: scisat.py:263 scisat.py:1494 +#: scisat.py:263 scisat.py:1553 msgid "Acetone" msgstr "Acétone" -#: scisat.py:264 scisat.py:1495 +#: scisat.py:264 scisat.py:1554 msgid "Acetylene" msgstr "Acétylène" -#: scisat.py:265 scisat.py:1496 +#: scisat.py:265 scisat.py:1555 msgid "Ethane" msgstr "Éthane" -#: scisat.py:266 scisat.py:1498 +#: scisat.py:266 scisat.py:1557 msgid "Trichlorofluoromethane" msgstr "Trichlorofluorométhane" -#: scisat.py:267 scisat.py:1499 +#: scisat.py:267 scisat.py:1558 msgid "Carbon tetrachloride" msgstr "Tétrachlorure de carbone" -#: scisat.py:269 scisat.py:1502 +#: scisat.py:269 scisat.py:1561 msgid "Carbon tetrafluoride" msgstr "Tétrafluorure de carbone" -#: scisat.py:270 scisat.py:1503 +#: scisat.py:270 scisat.py:1562 msgid "Trichlorotrifluoroethane" msgstr "Trichlorotrifluoroéthane" -#: scisat.py:271 scisat.py:1504 +#: scisat.py:271 scisat.py:1563 msgid "Chloromethane" msgstr "Chlorométhane" -#: scisat.py:272 scisat.py:1505 +#: scisat.py:272 scisat.py:1564 msgid "Acetonitrite" msgstr "Acétonitrile" -#: scisat.py:273 scisat.py:1506 +#: scisat.py:273 scisat.py:1565 msgid "Methanol" msgstr "Méthanol" -#: scisat.py:274 scisat.py:1507 +#: scisat.py:274 scisat.py:1566 msgid "Methane" msgstr "Méthane" -#: scisat.py:276 scisat.py:1509 +#: scisat.py:276 scisat.py:1568 msgid "Methane 212" msgstr "Méthane 212" -#: scisat.py:277 scisat.py:1510 +#: scisat.py:277 scisat.py:1569 msgid "Methane 311" msgstr "Méthane 311" -#: scisat.py:278 scisat.py:1511 +#: scisat.py:278 scisat.py:1570 msgid "Difluorochloromethane" msgstr "Difluorochlorométhane" -#: scisat.py:279 scisat.py:1512 +#: scisat.py:279 scisat.py:1571 msgid "Trifluoromethane" msgstr "Trifluorométhane" -#: scisat.py:280 scisat.py:1513 +#: scisat.py:280 scisat.py:1572 msgid "Chlorine monoxide" msgstr "Monoxyde de chlore" -#: scisat.py:281 scisat.py:1514 +#: scisat.py:281 scisat.py:1573 msgid "Chlorine nitrate" msgstr "Nitrate de chlore" -#: scisat.py:283 scisat.py:1516 +#: scisat.py:283 scisat.py:1575 msgid "Carbon monoxide" msgstr "Monoxyde de carbone" -#: scisat.py:284 scisat.py:1517 +#: scisat.py:284 scisat.py:1576 msgid "Carbon dioxide" msgstr "Dioxyde de carbone" -#: scisat.py:285 scisat.py:1518 +#: scisat.py:285 scisat.py:1577 msgid "Carbon dioxide 627" msgstr "Dioxyde de carbone 627" -#: scisat.py:286 scisat.py:1519 +#: scisat.py:286 scisat.py:1578 msgid "Carbon dioxide 628" msgstr "Dioxyde de carbone 628" -#: scisat.py:287 scisat.py:1520 +#: scisat.py:287 scisat.py:1579 msgid "Carbon dioxide 636" msgstr "Dioxyde de carbone 636" -#: scisat.py:288 scisat.py:1521 +#: scisat.py:288 scisat.py:1580 msgid "Carbon dioxide 637" msgstr "Dioxyde de carbone 637" -#: scisat.py:291 scisat.py:1524 +#: scisat.py:291 scisat.py:1583 msgid "Carbon dioxide 638" msgstr "Dioxyde de carbone 638" -#: scisat.py:292 scisat.py:1525 +#: scisat.py:292 scisat.py:1584 msgid "Phosgene" msgstr "Phosgène" @@ -122,231 +122,239 @@ msgstr "Phosgène" msgid "Carbonyl chlorine fluoride" msgstr "" -#: scisat.py:294 scisat.py:1527 +#: scisat.py:294 scisat.py:1586 msgid "Carbonyl fluoride" msgstr "Fluorure de carbonyle" -#: scisat.py:295 scisat.py:1528 +#: scisat.py:295 scisat.py:1587 msgid "Carbon monoxide 27" msgstr "Monoxyde de carbone 27" -#: scisat.py:296 scisat.py:1529 +#: scisat.py:296 scisat.py:1588 msgid "Carbon monoxide 28" msgstr "Monoxyde de carbone 28" -#: scisat.py:298 scisat.py:1531 +#: scisat.py:298 scisat.py:1590 msgid "Carbon monoxide 36" msgstr "Monoxyde de carbone 36" -#: scisat.py:299 scisat.py:1532 +#: scisat.py:299 scisat.py:1591 msgid "Carbon monoxide 38" msgstr "Monoxyde de carbone 38" -#: scisat.py:300 scisat.py:1533 +#: scisat.py:300 scisat.py:1592 msgid "GLC" msgstr "Géolocatisation" -#: scisat.py:301 scisat.py:1534 +#: scisat.py:301 scisat.py:1593 msgid "Formaldehyde" msgstr "Formaldéhyde" -#: scisat.py:302 scisat.py:1535 +#: scisat.py:302 scisat.py:1594 msgid "Water" msgstr "Eau" -#: scisat.py:303 scisat.py:1536 +#: scisat.py:303 scisat.py:1595 msgid "Hydrogen peroxide" msgstr "Peroxyde d'hydrogène" -#: scisat.py:306 scisat.py:1539 +#: scisat.py:306 scisat.py:1598 msgid "Water 162" msgstr "Eau 162" -#: scisat.py:307 scisat.py:1540 +#: scisat.py:307 scisat.py:1599 msgid "Water 171" msgstr "Eau 171" -#: scisat.py:308 scisat.py:1541 +#: scisat.py:308 scisat.py:1600 msgid "Water 181" msgstr "Eau 181" -#: scisat.py:309 scisat.py:1542 +#: scisat.py:309 scisat.py:1601 msgid "Water 182" msgstr "Eau 182" -#: scisat.py:310 scisat.py:1543 +#: scisat.py:310 scisat.py:1602 msgid "Hydrochlorofluorocarbon 141b" msgstr "Hydrochlorofluorocarbone 141b" -#: scisat.py:311 scisat.py:1544 +#: scisat.py:311 scisat.py:1603 msgid "Hydrochlorofluorocarbon 142b" msgstr "Hydrochlorofluorocarbone 142b" -#: scisat.py:312 scisat.py:1545 +#: scisat.py:312 scisat.py:1604 msgid "Hydrochloric acid" msgstr "Acide chlorydrique" -#: scisat.py:316 scisat.py:1547 +#: scisat.py:316 scisat.py:1606 msgid "Hydrogen cyanide" msgstr "Cyanure d'hydrogène" -#: scisat.py:317 scisat.py:1548 +#: scisat.py:317 scisat.py:1607 msgid "Formic acid" msgstr "Acide formique" -#: scisat.py:318 scisat.py:1549 +#: scisat.py:318 scisat.py:1608 msgid "Hydrogen fluoride" msgstr "Fluorure d'hydrogène" -#: scisat.py:319 scisat.py:1550 +#: scisat.py:319 scisat.py:1609 msgid "Hydrofluorocarbon 134a" msgstr "Hydrofluorocarbure 134a" -#: scisat.py:320 scisat.py:1551 +#: scisat.py:320 scisat.py:1610 msgid "Nitric acid" msgstr "Acide nitrique" -#: scisat.py:321 scisat.py:1552 +#: scisat.py:321 scisat.py:1611 msgid "Nitric acid 156" msgstr "Acide nitrique 156" -#: scisat.py:324 scisat.py:1555 +#: scisat.py:324 scisat.py:1614 msgid "Peroxynitric acid" msgstr "Acide perazotique" -#: scisat.py:325 scisat.py:1556 +#: scisat.py:325 scisat.py:1615 msgid "Nitrogen" msgstr "Azote" -#: scisat.py:326 scisat.py:1557 +#: scisat.py:326 scisat.py:1616 msgid "Nitrous oxide" msgstr "Protoxyde d'azote" -#: scisat.py:327 scisat.py:1558 +#: scisat.py:327 scisat.py:1617 msgid "Dinitrogen pentaoxide" msgstr "Pentaoxyde de diazote" -#: scisat.py:328 scisat.py:1559 +#: scisat.py:328 scisat.py:1618 msgid "Nitrous oxide 447" msgstr "Protoxyde d'azote 447" -#: scisat.py:329 scisat.py:1560 +#: scisat.py:329 scisat.py:1619 msgid "Nitrous oxide 448" msgstr "Protoxyde d'azote 448" -#: scisat.py:331 scisat.py:1562 +#: scisat.py:331 scisat.py:1621 msgid "Nitrous oxide 456" msgstr "Protoxyde d'azote 456" -#: scisat.py:332 scisat.py:1563 +#: scisat.py:332 scisat.py:1622 msgid "Nitrous oxide 546" msgstr "Protoxyde d'azote 546" -#: scisat.py:333 scisat.py:1564 +#: scisat.py:333 scisat.py:1623 msgid "Nitrous monoxide 447" msgstr "Monoxide d'azote 447" -#: scisat.py:334 scisat.py:1565 +#: scisat.py:334 scisat.py:1624 msgid "Nitrogen dioxide" msgstr "Dioxyde d'azote" -#: scisat.py:335 scisat.py:1566 +#: scisat.py:335 scisat.py:1625 msgid "Nitrogen dioxide 656" msgstr "Dioxyde d'azote 656" -#: scisat.py:336 scisat.py:1567 +#: scisat.py:336 scisat.py:1626 msgid "Oxygen" msgstr "Oxygène" -#: scisat.py:339 scisat.py:1570 +#: scisat.py:339 scisat.py:1629 msgid "Ozone" msgstr "Ozone" -#: scisat.py:340 scisat.py:1571 +#: scisat.py:340 scisat.py:1630 msgid "Ozone 667" msgstr "Ozone 667" -#: scisat.py:341 scisat.py:1572 +#: scisat.py:341 scisat.py:1631 msgid "Ozone 668" msgstr "Ozone 668" -#: scisat.py:342 scisat.py:1573 +#: scisat.py:342 scisat.py:1632 msgid "Ozone 676" msgstr "Ozone 676" -#: scisat.py:343 scisat.py:1574 +#: scisat.py:343 scisat.py:1633 msgid "Ozone 686" msgstr "Ozone 686" -#: scisat.py:344 scisat.py:1575 +#: scisat.py:344 scisat.py:1634 msgid "Carbonyl sulfide" msgstr "Sulfure de carbonyle" -#: scisat.py:345 scisat.py:1576 +#: scisat.py:345 scisat.py:1635 msgid "Carbonyl sulfide 623" msgstr "Sulfure de carbonyle 623" -#: scisat.py:348 scisat.py:1579 +#: scisat.py:348 scisat.py:1638 msgid "Carbonyl sulfide 624" msgstr "Sulfure de carbonyle 624" -#: scisat.py:349 scisat.py:1580 +#: scisat.py:349 scisat.py:1639 msgid "Carbonyl sulfide 632" msgstr "Sulfure de carbonyle 632" -#: scisat.py:350 scisat.py:1581 +#: scisat.py:350 scisat.py:1640 msgid "Phosphorus" msgstr "Phosphore" -#: scisat.py:351 scisat.py:1582 +#: scisat.py:351 scisat.py:1641 msgid "Polyacrylonitrile" msgstr "Polyacrylonitrile" -#: scisat.py:352 scisat.py:1583 +#: scisat.py:352 scisat.py:1642 msgid "Sulfur hexafluoride" msgstr "Hexafluorure de soufre" -#: scisat.py:353 scisat.py:1584 +#: scisat.py:353 scisat.py:1643 msgid "Sulfur dioxide" msgstr "Dioxyde de soufre" -#: scisat.py:884 +#: scisat.py:946 msgid "Altitude" msgstr "Altitude" -#: scisat.py:902 scisat.py:1161 +#: scisat.py:957 +msgid "Mean concentration distribution on altitude" +msgstr "Distribution des concentrations moyennes sur l'altitude" + +#: scisat.py:965 scisat.py:1216 msgid "Concentration [ppv]" msgstr "Concentration [ppv]" -#: scisat.py:909 +#: scisat.py:972 msgid "Altitude [km]" msgstr "Altitude [km]" -#: scisat.py:1008 scisat.py:1041 +#: scisat.py:1061 scisat.py:1094 msgid "Gas Concentration [ppv] (mean on altitude and position) " msgstr "Concentration du gaz [ppv] (moyenne sur l'altitude et la position)" -#: scisat.py:1156 +#: scisat.py:1106 +msgid "World graph of mean gas concentration" +msgstr "Concentration moyenne du gas dans le monde" + +#: scisat.py:1211 msgid "Time Series" msgstr "Série temporelle" -#: scisat.py:1158 +#: scisat.py:1213 msgid "Date" msgstr "Date" -#: scisat.py:1456 +#: scisat.py:1513 msgid "SCISAT Data Visualisation" msgstr "Visualisation des données de SCISAT" -#: scisat.py:1457 +#: scisat.py:1514 msgid "Learn More About SCISAT" msgstr "En apprendre plus sur SCISAT" -#: scisat.py:1458 +#: scisat.py:1515 msgid "Data selected" msgstr "Données sélectionnées" -#: scisat.py:1459 +#: scisat.py:1516 msgid "" "Launched on August 12, 2003, SCISAT helps a team of Canadian and " "international scientists improve their understanding of the depletion of " @@ -358,7 +366,7 @@ msgstr "" "compréhension de l'appauvrissement de la couche d'ozone, en étudiant " "spécialement ces changements au-dessus du Canada et de l'arctique." -#: scisat.py:1460 +#: scisat.py:1517 msgid "" "This application provides users the ability to select, download and " "visualize SCISAT's data. The dataset can also be accessed in [CSA's Open " @@ -366,21 +374,23 @@ msgid "" "ad40-781cdb43cf24)." msgstr "" "Cette application permet aux utilisateurs de sélectionner, télécharger et" -" visualiser les données de SCISAT. Ce jeu de données est également accessible " -"sur le [portail du gouvernement ouvert de l’ASC](https://data.asc-csa.gc.ca/fr/dataset/02969436-8c0b-4e6e-ad40-781cdb43cf24)." +" visualiser les données de SCISAT. Ce jeu de données est également " +"accessible sur le [portail du gouvernement ouvert de l’ASC](https://data" +".asc-csa.gc.ca/fr/dataset/02969436-8c0b-4e6e-ad40-781cdb43cf24)." -#: scisat.py:1461 +#: scisat.py:1518 msgid "" "The authoritative source data for the Atmospheric Chemistry Experiment " "(ACE), also known as SCISAT, is available on the [ACE " "site](http://www.ace.uwaterloo.ca/data.php) (external site only available" " in English). " msgstr "" -"La source autorisée pour les données de l’Expérience de chimie atmosphérique (ACE), " -"également connue sous le nom SCISAT, est disponible sur le [site du projet ACE](http://www.ace.uwaterloo.ca/data.php) " -"(site externe et seulement disponible en anglais). " +"La source autorisée pour les données de l’Expérience de chimie " +"atmosphérique (ACE), également connue sous le nom SCISAT, est disponible" +" sur le [site du projet ACE](http://www.ace.uwaterloo.ca/data.php) (site " +"externe et seulement disponible en anglais). " -#: scisat.py:1462 +#: scisat.py:1519 msgid "" "Please read this [Important Mission Information " "Document](http://www.ace.uwaterloo.ca/ACE-" @@ -388,26 +398,29 @@ msgid "" "ACE/SCISAT data. Please refer to the relevant scientific literature when " "interpreting SCISAT data." msgstr "" -"Veuillez lire ce [document d’informations importantes sur la mission](http://www.ace.uwaterloo.ca/ACE-FTS_v2.2/ACEFTSPublicReleaseDocumentation.pdf) " -" avant d’utiliser les données ACE/SCISAT. Veuillez vous référer à la littérature scientifique pertinente pour interpréter les données SCISAT. " +"Veuillez lire ce [document d’informations importantes sur la " +"mission](http://www.ace.uwaterloo.ca/ACE-" +"FTS_v2.2/ACEFTSPublicReleaseDocumentation.pdf) avant d’utiliser les " +"données ACE/SCISAT. Veuillez vous référer à la littérature scientifique " +"pertinente pour interpréter les données SCISAT. " -#: scisat.py:1463 +#: scisat.py:1520 msgid "Visit our Github page to learn more about our applications." msgstr "Visitez notre page Github pour en apprendre plus sur nos applications." -#: scisat.py:1464 +#: scisat.py:1521 msgid "Select Data" msgstr "Sélectionner les données" -#: scisat.py:1465 +#: scisat.py:1522 msgid "Update" msgstr "Mettre à jour" -#: scisat.py:1466 +#: scisat.py:1523 msgid "Update with selected data" msgstr "Mettre à jour avec les données séléctionnées" -#: scisat.py:1467 +#: scisat.py:1524 msgid "" "Graph of the gas concentration in parts per volume (ppv) visualized on a " "world map. Each dot represents the mean concentration on the selected " @@ -419,7 +432,7 @@ msgstr "" "choisies, la colonne d'altitude ainsi que la position, et la couleur " "indique la concentration moyenne." -#: scisat.py:1468 +#: scisat.py:1525 msgid "" "Graph showing the gas concentration in parts per volume (ppv) over the " "selected altitude interval. The value represents the mean concentration " @@ -430,7 +443,7 @@ msgstr "" "selon l'intervalle d'altitude sélectionnée. La moyenne est faite sur " "toutes les positions ainsi que toutes les dates sélectionnées." -#: scisat.py:1469 +#: scisat.py:1526 msgid "" "Time series showing the evolution of the gas concentration in parts per " "volume (ppv). Each data point represents the daily overall mean " @@ -440,27 +453,27 @@ msgstr "" "(ppv) sur les dates sélectionnées. Chaque point est une moyenne " "quotidienne sur l'altitude ainsi que la position." -#: scisat.py:1470 +#: scisat.py:1527 msgid "Selection of the gas" msgstr "Sélection du gaz" -#: scisat.py:1471 +#: scisat.py:1528 msgid "Selection of the range of latitude " msgstr "Sélection de la plage de latitude" -#: scisat.py:1472 +#: scisat.py:1529 msgid "Selection of the range of longitude" msgstr "Sélection de la plage de longitude" -#: scisat.py:1473 +#: scisat.py:1530 msgid "Date selection" msgstr "Sélection de la plage de date" -#: scisat.py:1474 +#: scisat.py:1531 msgid "Download the selected dataset" msgstr "Télécharger le jeu de données sélectionné" -#: scisat.py:1475 +#: scisat.py:1532 msgid "" "Invalid values provided. Latitude values must be between -90 and 90. " "Longitude values must be between -180 and 180. Minimum values must be " @@ -472,7 +485,7 @@ msgstr "" "valeurs minimum doivent être plus petites que les valeurs maximum. Toutes" " valeurs doivent être des chiffres entiers multiples de 5." -#: scisat.py:1476 +#: scisat.py:1533 msgid "" "Invalid dates provided. Try dates between 01/02/2004 (Feb. 1st 2004) and " "05/05/2020 (May 5th 2020)." @@ -480,7 +493,7 @@ msgstr "" "Dates reçues invalides. Essayez de sélectionner des dates entre " "01/02/2004 (1er fév. 2004) et 05/05/2020 (5 mai 2020)." -#: scisat.py:1477 +#: scisat.py:1534 msgid "" "Missing data. The gas selected has no associated data. Please contact asc" ".donnees-data.csa@canada.ca." @@ -488,51 +501,69 @@ msgstr "" "Données manquantes. Le gaz séléctionné ne possède pas de données " "associées. Veuillez contacter asc.donnees-data.csa@canada.ca." -#: scisat.py:1478 -msgid "Filter by Latitude:" -msgstr "Sélectionner par latitude" +#: scisat.py:1535 +msgid "" +"Invalid altitude range provided. Altitudes must be between 0 and 150. " +"Minimum altitude must be strictly lower than maximum altitude. Both " +"values must be round numbers." +msgstr "" +"Plage d'altitude reçue invalide. Les altitudes doivent être entre 0 et " +"150. L'altitude minimum doit être strictement plus petite que l'altitude " +"maximum. Les deux valeurs doivent être des chiffres entiers." + +#: scisat.py:1536 +msgid "Filter by Latitude (°):" +msgstr "Filtrer par Latitude (°):" -#: scisat.py:1479 +#: scisat.py:1537 msgid "Minimum latitude" msgstr "Latitude minimum" -#: scisat.py:1480 +#: scisat.py:1538 msgid "Maximum latitude" msgstr "Latitude maximum" -#: scisat.py:1481 -msgid "Filter by Longitude:" -msgstr "Sélectionner par longitude" +#: scisat.py:1539 +msgid "Filter by Longitude (°):" +msgstr "Filtrer par Longitude (°):" -#: scisat.py:1482 +#: scisat.py:1540 msgid "Minimum longitude" msgstr "Longitude minimum" -#: scisat.py:1483 +#: scisat.py:1541 msgid "Maximum longitude" msgstr "Longitude maximum" -#: scisat.py:1484 -msgid "Select Altitude Range:" -msgstr "Sélectionner l'intervalle d'altitudes" +#: scisat.py:1542 +msgid "Select Altitude Range (km):" +msgstr "Sélectionner la plage d'altitude (km):" -#: scisat.py:1485 +#: scisat.py:1543 msgid "Select Date:" msgstr "Sélectionner les dates :" -#: scisat.py:1486 +#: scisat.py:1544 msgid "Select Gas:" msgstr "Sélectionner le gaz :" -#: scisat.py:1487 +#: scisat.py:1545 msgid "Download Summary Data as CSV" msgstr "Télécharger les données en format CSV" -#: scisat.py:1497 +#: scisat.py:1546 +msgid "" +"Pressing the above button will download the data filtered based on the " +"longitude, latitude, dates and altitude selected." +msgstr "" +"Appuyer sur le bouton ci-haut télécharge les données filtrées en fonction" +" des longitudes, latitudes, dates et altitudes séléctionnées." + +#: scisat.py:1556 msgid "Dichlorodifluoromethane" msgstr "Dichlorodifluorométhane" -#: scisat.py:1526 +#: scisat.py:1585 msgid "Carbonyl chlorofluoride" msgstr "Chlorofluorure de carbonyle" @@ -583,13 +614,13 @@ msgstr "Chlorofluorure de carbonyle" #~ msgstr "Selection des données" #~ msgid "Filter by Latitude:" -#~ msgstr "Sélectionner par Latitude :" +#~ msgstr "Sélectionner par latitude" #~ msgid "Filter by Longitude:" -#~ msgstr "Sélectionner par Longitude :" +#~ msgstr "Sélectionner par longitude" #~ msgid "Select Altitude Range:" -#~ msgstr "Sélection de la plage d'altitude :" +#~ msgstr "Sélectionner l'intervalle d'altitudes" #~ msgid "Select Date:" #~ msgstr "Sélection des dates :"