superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maximebeauche...@apache.org
Subject [incubator-superset] branch master updated: js translation -- performance improvment (#3390)
Date Wed, 20 Sep 2017 19:37:38 GMT
This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 9af34ba  js translation -- performance improvment (#3390)
9af34ba is described below

commit 9af34ba51cdb23a2970e968d0cbdee82778c6799
Author: Grace Guo <grace.guo@airbnb.com>
AuthorDate: Wed Sep 20 12:37:33 2017 -0700

    js translation -- performance improvment (#3390)
    
    * Chinese page
    
    * Using react-intl-universal to improve multi language in react page
    
    * Using react-intl-universal to improve multi language in react page
    
    * react_intl_universal
    
    * change
    
    * change
    
    * change
    
    * change
    
    * change
    
    * change
    
    * change
    
    * merge
    
    * multiple page in js
    
    * merge
    
    * merge
    
    * merge
    
    * merge
    
    * Js Translations
    
    * JS Translation
    
    * JS Translations
    
    * Js translation
    
    * JS translations
    
    * JS translations
    
    * Js translaion
    
    * JS en Translation
    
    * JS Translation
    
    * upgrade document
    
    Fixing the damn build (#3179)
    
    * Fixing the build
    
    * Going deeper
    
    [bugfix] only filterable columns should show up in FilterBox list (#3105)
    
    * [bugfix] only filterable columns should show up in FilterBox list
    
    * Touchups
    
    Datasource cannot be empty (#3035)
    
    add title description to model view (#3045)
    
    * add title description to model view
    
    * add missing import
    
    Add 'show/hide totals' option to pivot table vis (#3101)
    
    [bugfix] numeric value for date fields in table viz (#3036)
    
    Bug was present only when using the NOT GROUPED BY option
    
    fixes https://github.com/ApacheInfra/superset/issues/3027
    
    fix hive.fetch_logs (#2968)
    
    add Zalando to the list of organizations (#3171)
    
    docs: fixup installation examples code indentation (#3169)
    
    [bugfix] fix bar order (#3180)
    
    [bugfix] visualize flow error: 'Metric x is not valid' (#3181)
    
    The metric name in the frontend doesn't match the one generated on the
    backend. It turns out the explore view will default to the first
    metric so specifying one isn't needed.
    
    Fix the segment interval for pulling metadata (#3174)
    
    The end of the interval would be on the truncated today date, which
    means that you will exclude today. If your realtime ingestion job
    runs shorter than a day, the metadata cannot be pulled from the
    druid cluster.
    
    Bump cryptography to 1.9 (#3065)
    
    As 1.7.2 doesn't compile here with openssl 1.1.0f
    
    Escaping the user's SQL in the explore view (#3186)
    
    * Escaping the user's SQL in the explore view
    
    When executing SQL from SQL Lab, we use a lower level API to the
    database which doesn't require escaping the SQL. When going through
    the explore view, the stack chain leading to the same method may need
    escaping depending on how the DBAPI driver is written, and that is the
    case for Presto (and perhaps other drivers).
    
    * Using regex to avoid doubling doubles
    
    [sqllab] improve Hive support (#3187)
    
    * [sqllab] improve Hive support
    
    * Fix "Transport not open" bug
    * Getting progress bar to show
    * Bump pyhive to 0.4.0
    * Getting [Track Job] button to show
    
    * Fix testzz
    
    Add BigQuery engine specifications (#3193)
    
    As contributed by @mxmzdlv on issue #945
    
    [bugfix] fix merge conflict that broke Hive support (#3196)
    
    Adding 'apache' to docs (#3194)
    
    [druid] Allow custom druid postaggregators (#3146)
    
    * [druid] Allow custom druid postaggregators
    
    Also, fix the postaggregation for approxHistogram quantiles so it adds
    the dependent field and that can show up in the graphs/tables.
    
    In general, postAggregators add significant power, we should probably
    support including custom postAggregators. Plywood has standard
    postAggregators here, and a customAggregator escape hatch that allows
    you to define custom postAggregators.
    
    This commit adds a similar capability for Superset and a additional
    field/fields/fieldName breakdown of the typical naming for dependent
    aggregations, which should make it significantly easier to develop
    approxHistogram and custom postAggregation-required dashboards.
    
    * [druid] Minor style cleanup in tests file.
    
    * [druid] Apply code review suggestions
    
    * break out CustomPostAggregator into separate class. This just cleans
      up the creation of the postaggregator a little bit.
    * minor style issues.
    * move the function around so the git diff is more readable
    
    add combine config for metrics in pivot table (#3086)
    
    * add combine config for metrics in pivot table
    
    * change method to stack/unstack
    
    * update backendSync
    
    Autofocus search input in VizTypeControl modal onEnter (#2929)
    
    Speed up JS build time (#3203)
    
    Also bumping a few related libs
    
    JS Translation
    
    JS translations
    
    js translation
    
    fix issue 3204 (#3205)
    
    [bugfix] capture Hive job_id pre-url transformation (#3213)
    
    js translation
    
    fix issue 3204 (#3205)
    
    [bugfix] capture Hive job_id pre-url transformation (#3213)
    
    [docs] update url in CONTRIBUTING.md (#3212)
    
    [sqllab/cosmetics] add margin-top for labels in query history (#3222)
    
    [explore] nvd3 sort values in rich tooltip (#3197)
    
    [sqllab] fix UI shows 'The query returned no results' momentarily (#3214)
    
    this is visible when running async queries between the fetching and
    success state as the rows are getting cached in the component
    
    [explore] DatasourceControl to pick datasource in modal (#3210)
    
    * [explore] DatasourceControl to pick datasource in modal
    
    Makes it easier to change datasource, also makes it such that the list
    of all datasources doesn't need to be loaded upfront.
    
    * Adding more metadata
    
    * Js translation
    
    * js tran
    
    * js trans
    
    * js trans
    
    * js tran
    
    * js trans
    
    * js trans
    
    * js tran
    
    * js translation
    
    * js trans
    
    * js translation
    
    * try load language pack async
    
    * Backend translations things
    
    * create language pack inside common data
    
    * performance improvement for js i18n.
    
    - js bundle should not contain localized content
    - we populate translation content from server-side, in boostrap.common.language_pack
    - in client-side, use promise to wrap around translation content. text will be translated after translation content arrived/parsed.
    - fix linting
    
    * fix Timer unit test
    
    * 1. add global hook for all tests, to make translation pack avaialble before each test starts.
    2. fix unit test for Timer component
    3. remove noused method get_locale, and modules
    4. fix page reload after user change page language
    
    * parse and build i18n dictionary as a module
    
    * fix sync-backend task, which should run without DOM
---
 CONTRIBUTING.md                                    |   14 +
 babel/babel.cfg                                    |    4 +
 babel/messages.pot                                 | 2814 +++++++++++++++--
 superset/assets/javascripts/SqlLab/actions.js      |   27 +-
 .../SqlLab/components/CopyQueryTabUrl.jsx          |    5 +-
 .../SqlLab/components/HighlightedSql.jsx           |    7 +-
 .../javascripts/SqlLab/components/QueryHistory.jsx |    3 +-
 .../javascripts/SqlLab/components/QuerySearch.jsx  |   17 +-
 .../javascripts/SqlLab/components/QueryTable.jsx   |   17 +-
 .../javascripts/SqlLab/components/ResultSet.jsx    |   19 +-
 .../SqlLab/components/RunQueryActionButton.jsx     |   11 +-
 .../javascripts/SqlLab/components/SaveQuery.jsx    |   17 +-
 .../javascripts/SqlLab/components/SouthPane.jsx    |    9 +-
 .../javascripts/SqlLab/components/SqlEditor.jsx    |    5 +-
 .../SqlLab/components/SqlEditorLeftBar.jsx         |   23 +-
 .../SqlLab/components/TabbedSqlEditors.jsx         |   13 +-
 .../javascripts/SqlLab/components/TableElement.jsx |   17 +-
 .../SqlLab/components/VisualizeModal.jsx           |   23 +-
 superset/assets/javascripts/SqlLab/constants.js    |   10 +-
 superset/assets/javascripts/SqlLab/reducers.js     |   25 +-
 .../javascripts/addSlice/AddSliceContainer.jsx     |   12 +-
 superset/assets/javascripts/common.js              |   11 +
 .../assets/javascripts/components/AsyncSelect.jsx  |    3 +-
 .../assets/javascripts/components/CachedLabel.jsx  |    7 +-
 .../javascripts/components/CopyToClipboard.jsx     |    9 +-
 .../javascripts/components/EditableTitle.jsx       |    5 +-
 .../assets/javascripts/components/FaveStar.jsx     |    3 +-
 .../assets/javascripts/dashboard/Dashboard.jsx     |   17 +-
 .../javascripts/dashboard/components/CodeModal.jsx |    3 +-
 .../javascripts/dashboard/components/Controls.jsx  |    7 +-
 .../javascripts/dashboard/components/CssEditor.jsx |    9 +-
 .../dashboard/components/RefreshIntervalModal.jsx  |   15 +-
 .../javascripts/dashboard/components/SaveModal.jsx |   19 +-
 .../dashboard/components/SliceAdder.jsx            |   13 +-
 .../javascripts/dashboard/components/SliceCell.jsx |   15 +-
 .../explore/components/ChartContainer.jsx          |    5 +-
 .../explore/components/ControlHeader.jsx           |    5 +-
 .../explore/components/ControlPanelsContainer.jsx  |    2 +-
 .../explore/components/DisplayQueryButton.jsx      |    5 +-
 .../explore/components/EmbedCodeButton.jsx         |    7 +-
 .../explore/components/ExploreActionButtons.jsx    |    5 +-
 .../javascripts/explore/components/SaveModal.jsx   |   28 +-
 .../explore/components/URLShortLinkButton.jsx      |    5 +-
 .../explore/components/controls/BoundsControl.jsx  |    9 +-
 .../components/controls/DatasourceControl.jsx      |   11 +-
 .../explore/components/controls/Filter.jsx         |    7 +-
 .../explore/components/controls/FilterControl.jsx  |    3 +-
 .../explore/components/controls/SelectControl.jsx  |    3 +-
 .../components/controls/TextAreaControl.jsx        |    5 +-
 .../explore/components/controls/VizTypeControl.jsx |    5 +-
 superset/assets/javascripts/explore/index.jsx      |    4 +-
 .../javascripts/explore/reducers/chartReducer.js   |   11 +-
 .../assets/javascripts/explore/stores/controls.jsx |  553 ++--
 .../assets/javascripts/explore/stores/visTypes.js  |  348 +-
 superset/assets/javascripts/i18n.jsx               |   32 +
 superset/assets/javascripts/locales.jsx            |  148 +
 superset/assets/javascripts/modules/superset.js    |   11 +-
 .../assets/javascripts/profile/components/App.jsx  |    9 +-
 .../profile/components/CreatedContent.jsx          |    9 +-
 .../javascripts/profile/components/Favorites.jsx   |    9 +-
 .../javascripts/profile/components/Security.jsx    |    7 +-
 .../javascripts/profile/components/UserInfo.jsx    |    7 +-
 superset/assets/javascripts/profile/index.jsx      |    2 +-
 superset/assets/package.json                       |    3 +
 .../javascripts/components/AsyncSelect_spec.jsx    |   16 +-
 .../javascripts/profile/EditableTitle_spec.jsx     |    2 +-
 .../spec/javascripts/sqllab/SaveQuery_spec.jsx     |    9 +-
 .../assets/spec/javascripts/sqllab/Timer_spec.jsx  |   13 +-
 .../spec/javascripts/sqllab/reducers_spec.js       |    6 +-
 superset/assets/visualizations/EventFlow.jsx       |    3 +-
 superset/assets/visualizations/filter_box.jsx      |    3 +-
 superset/config.py                                 |    4 +-
 superset/templates/appbuilder/navbar_right.html    |    2 +-
 superset/templates/superset/dashboard.html         |    1 +
 superset/translations/__init__.py                  |    0
 superset/translations/en/LC_MESSAGES/messages.json |    1 +
 superset/translations/en/LC_MESSAGES/messages.mo   |  Bin 0 -> 58211 bytes
 superset/translations/en/LC_MESSAGES/messages.po   | 3327 ++++++++++++++++++++
 superset/translations/es/LC_MESSAGES/messages.json |    1 +
 superset/translations/es/LC_MESSAGES/messages.mo   |  Bin 16501 -> 58211 bytes
 superset/translations/es/LC_MESSAGES/messages.po   | 3026 ++++++++++++++++--
 superset/translations/fr/LC_MESSAGES/messages.json |    1 +
 superset/translations/fr/LC_MESSAGES/messages.mo   |  Bin 24674 -> 0 bytes
 superset/translations/fr/LC_MESSAGES/messages.po   | 1383 --------
 superset/translations/it/LC_MESSAGES/messages.json |    1 +
 superset/translations/it/LC_MESSAGES/messages.mo   |  Bin 17303 -> 59013 bytes
 superset/translations/it/LC_MESSAGES/messages.po   | 3064 ++++++++++++++++--
 superset/translations/utils.py                     |   33 +
 superset/translations/zh/LC_MESSAGES/messages.json |    1 +
 superset/translations/zh/LC_MESSAGES/messages.mo   |  Bin 15904 -> 53786 bytes
 superset/translations/zh/LC_MESSAGES/messages.po   | 3206 ++++++++++++++++---
 superset/views/base.py                             |    5 +
 92 files changed, 15170 insertions(+), 3424 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0539ac3..da403d1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -331,6 +331,8 @@ key is to instrument the strings that need translation using
 a module, all you have to do is to `_("Wrap your strings")` using the
 underscore `_` "function".
 
+We use `import {t, tn, TCT} from locales;` in js, JSX file, locales is in `./superset/assets/javascripts/` directory.
+
 To enable changing language in your environment, you can simply add the
 `LANGUAGES` parameter to your `superset_config.py`. Having more than one
 options here will add a language selection dropdown on the right side of the
@@ -342,6 +344,10 @@ navigation bar.
         'zh': {'flag': 'cn', 'name': 'Chinese'},
     }
 
+We need to extract the string to be translated, run the following command:
+
+    pybabel extract -F ./babel/babel.cfg -k _ -k __ -k t -k tn -k tct -o ./babel/messages.pot .
+
 As per the [Flask AppBuilder documentation] about translation, to create a
 new language dictionary, run the following command:
 
@@ -358,6 +364,14 @@ to take effect, they need to be compiled using this command:
 
     fabmanager babel-compile --target superset/translations/
 
+In the case of JS translation, we need to convert the PO file into a JSON file, and we need the global download of the npm package po2json.
+We need to be compiled using this command:
+
+    npm install po2json -g
+
+Execute this command to convert the en PO file into a json file:
+
+    po2json -d superset -f jed1.x superset/translations/en/LC_MESSAGES/messages.po superset/translations/en/LC_MESSAGES/messages.json
 
 ## Adding new datasources
 
diff --git a/babel/babel.cfg b/babel/babel.cfg
index 790b262..762ac64 100644
--- a/babel/babel.cfg
+++ b/babel/babel.cfg
@@ -1,4 +1,8 @@
 [ignore: superset/assets/node_modules/**]
 [python: superset/**.py]
 [jinja2: superset/**/templates/**.html]
+[javascript: superset/assets/javascripts/**.js]
+[javascript: superset/assets/javascripts/**.jsx]
+[javascript: superset/assets/visualizations/**.js]
+[javascript: superset/assets/visualizations/**.jsx]
 encoding = utf-8
diff --git a/babel/messages.pot b/babel/messages.pot
index 5ebccd2..810ccb0 100755
--- a/babel/messages.pot
+++ b/babel/messages.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-08-17 03:23+0200\n"
+"POT-Creation-Date: 2017-09-12 20:55-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,76 +17,77 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.4.0\n"
 
+#: superset/assets/javascripts/explore/stores/controls.jsx:505
 #: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
 #: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
-#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
-#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
-#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
-#: superset/db_engine_specs.py:987
+#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:839
+#: superset/db_engine_specs.py:875 superset/db_engine_specs.py:907
+#: superset/db_engine_specs.py:953 superset/db_engine_specs.py:990
+#: superset/db_engine_specs.py:1016
 msgid "Time Column"
 msgstr ""
 
 #: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
-#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
-#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
-#: superset/db_engine_specs.py:962
+#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:372
+#: superset/db_engine_specs.py:840 superset/db_engine_specs.py:908
+#: superset/db_engine_specs.py:991
 msgid "second"
 msgstr ""
 
 #: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
-#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
-#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
-#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
-#: superset/db_engine_specs.py:963 superset/db_engine_specs.py:988
+#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:374
+#: superset/db_engine_specs.py:842 superset/db_engine_specs.py:876
+#: superset/db_engine_specs.py:910 superset/db_engine_specs.py:954
+#: superset/db_engine_specs.py:992 superset/db_engine_specs.py:1017
 msgid "minute"
 msgstr ""
 
 #: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
-#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
-#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
-#: superset/db_engine_specs.py:964 superset/db_engine_specs.py:989
+#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:376
+#: superset/db_engine_specs.py:848 superset/db_engine_specs.py:878
+#: superset/db_engine_specs.py:912 superset/db_engine_specs.py:960
+#: superset/db_engine_specs.py:993 superset/db_engine_specs.py:1018
 msgid "hour"
 msgstr ""
 
 #: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
 #: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
-#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
-#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
-#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
-#: superset/db_engine_specs.py:990
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:850
+#: superset/db_engine_specs.py:880 superset/db_engine_specs.py:914
+#: superset/db_engine_specs.py:962 superset/db_engine_specs.py:994
+#: superset/db_engine_specs.py:1019
 msgid "day"
 msgstr ""
 
 #: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
 #: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
-#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
-#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
-#: superset/db_engine_specs.py:966 superset/db_engine_specs.py:991
+#: superset/db_engine_specs.py:380 superset/db_engine_specs.py:852
+#: superset/db_engine_specs.py:882 superset/db_engine_specs.py:916
+#: superset/db_engine_specs.py:995 superset/db_engine_specs.py:1020
 msgid "week"
 msgstr ""
 
 #: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
 #: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
-#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
-#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
-#: superset/db_engine_specs.py:992
+#: superset/db_engine_specs.py:382 superset/db_engine_specs.py:854
+#: superset/db_engine_specs.py:884 superset/db_engine_specs.py:918
+#: superset/db_engine_specs.py:964 superset/db_engine_specs.py:996
+#: superset/db_engine_specs.py:1021
 msgid "month"
 msgstr ""
 
 #: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
-#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
-#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
-#: superset/db_engine_specs.py:968 superset/db_engine_specs.py:993
+#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:384
+#: superset/db_engine_specs.py:856 superset/db_engine_specs.py:886
+#: superset/db_engine_specs.py:920 superset/db_engine_specs.py:966
+#: superset/db_engine_specs.py:997 superset/db_engine_specs.py:1022
 msgid "quarter"
 msgstr ""
 
 #: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
-#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
-#: superset/db_engine_specs.py:969 superset/db_engine_specs.py:994
+#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:858
+#: superset/db_engine_specs.py:888 superset/db_engine_specs.py:968
+#: superset/db_engine_specs.py:998 superset/db_engine_specs.py:1023
 msgid "year"
 msgstr ""
 
@@ -94,27 +95,27 @@ msgstr ""
 msgid "week_start_monday"
 msgstr ""
 
-#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
+#: superset/db_engine_specs.py:386 superset/db_engine_specs.py:922
 msgid "week_ending_saturday"
 msgstr ""
 
-#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
+#: superset/db_engine_specs.py:389 superset/db_engine_specs.py:925
 msgid "week_start_sunday"
 msgstr ""
 
-#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
+#: superset/db_engine_specs.py:844 superset/db_engine_specs.py:956
 msgid "5 minute"
 msgstr ""
 
-#: superset/db_engine_specs.py:817
+#: superset/db_engine_specs.py:846
 msgid "half hour"
 msgstr ""
 
-#: superset/db_engine_specs.py:929
+#: superset/db_engine_specs.py:958
 msgid "10 minute"
 msgstr ""
 
-#: superset/utils.py:499
+#: superset/utils.py:503
 #, python-format
 msgid "[Superset] Access to the datasource %(name)s was granted"
 msgstr ""
@@ -123,237 +124,2569 @@ msgstr ""
 msgid "Viz is missing a datasource"
 msgstr ""
 
-#: superset/viz.py:158
+#: superset/viz.py:163
 msgid "From date cannot be larger than to date"
 msgstr ""
 
-#: superset/viz.py:322
+#: superset/assets/javascripts/explore/stores/visTypes.js:321
+#: superset/viz.py:328
 msgid "Table View"
 msgstr ""
 
-#: superset/viz.py:334
+#: superset/viz.py:340
 msgid "Pick a granularity in the Time section or uncheck 'Include Time'"
 msgstr ""
 
-#: superset/viz.py:344
+#: superset/viz.py:350
 msgid "Choose either fields to [Group By] and [Metrics] or [Columns], not both"
 msgstr ""
 
-#: superset/viz.py:378
+#: superset/assets/javascripts/explore/stores/visTypes.js:372
+#: superset/viz.py:384
 msgid "Pivot Table"
 msgstr ""
 
-#: superset/viz.py:392
+#: superset/viz.py:398
 msgid "Please choose at least one \"Group by\" field "
 msgstr ""
 
-#: superset/viz.py:394
-msgid "Please choose at least one metric"
+#: superset/viz.py:400
+msgid "Please choose at least one metric"
+msgstr ""
+
+#: superset/viz.py:404
+msgid "'Group By' and 'Columns' can't overlap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:359
+#: superset/viz.py:437
+msgid "Markup"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:397
+#: superset/viz.py:456
+msgid "Separator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:419
+#: superset/viz.py:468
+msgid "Word Cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:440
+#: superset/viz.py:491
+msgid "Treemap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:467
+#: superset/viz.py:517
+msgid "Calendar Heatmap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:488
+#: superset/viz.py:575
+msgid "Box Plot"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:509
+#: superset/viz.py:664
+msgid "Bubble Chart"
+msgstr ""
+
+#: superset/viz.py:688
+msgid "Pick a metric for x, y and size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:560
+#: superset/viz.py:714
+msgid "Bullet Chart"
+msgstr ""
+
+#: superset/viz.py:740
+msgid "Pick a metric to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:583
+#: superset/viz.py:763
+msgid "Big Number with Trendline"
+msgstr ""
+
+#: superset/viz.py:771 superset/viz.py:800
+msgid "Pick a metric!"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:608
+#: superset/viz.py:792
+msgid "Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:149
+#: superset/viz.py:819
+msgid "Time Series - Line Chart"
+msgstr ""
+
+#: superset/viz.py:866 superset/viz.py:1011
+msgid "Pick a time granularity for your time series"
+msgstr ""
+
+#: superset/viz.py:954
+msgid "Time Series - Dual Axis Line Chart"
+msgstr ""
+
+#: superset/viz.py:964
+msgid "Pick a metric for left axis!"
+msgstr ""
+
+#: superset/viz.py:966
+msgid "Pick a metric for right axis!"
+msgstr ""
+
+#: superset/viz.py:968
+msgid "Please choose different metrics on left and right axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:228
+#: superset/viz.py:1029
+msgid "Time Series - Bar Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:263
+#: superset/viz.py:1037
+msgid "Time Series - Percent Change"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:285
+#: superset/viz.py:1045
+msgid "Time Series - Stacked"
+msgstr ""
+
+#: superset/viz.py:1054
+msgid "Distribution - NVD3 - Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:633
+#: superset/viz.py:1072
+msgid "Histogram"
+msgstr ""
+
+#: superset/viz.py:1082
+msgid "Must have one numeric column specified"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:88
+#: superset/viz.py:1097
+msgid "Distribution - Bar Chart"
+msgstr ""
+
+#: superset/viz.py:1108
+msgid "Can't have overlap between Series and Breakdowns"
+msgstr ""
+
+#: superset/viz.py:1110
+msgid "Pick at least one metric"
+msgstr ""
+
+#: superset/viz.py:1112
+msgid "Pick at least one field for [Series]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:665
+#: superset/viz.py:1165
+msgid "Sunburst"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:702
+#: superset/viz.py:1198
+msgid "Sankey"
+msgstr ""
+
+#: superset/viz.py:1205
+msgid "Pick exactly 2 columns as [Source / Target]"
+msgstr ""
+
+#: superset/viz.py:1236
+msgid ""
+"There's a loop in your Sankey, please provide a tree. Here's a faulty "
+"link: {}"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:729
+#: superset/viz.py:1247 superset/viz.py:1268
+msgid "Directed Force Layout"
+msgstr ""
+
+#: superset/viz.py:1254
+msgid "Pick exactly 2 columns to 'Group By'"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:794
+#: superset/viz.py:1301
+msgid "Country Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:827
+#: superset/viz.py:1330
+msgid "World Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:72
+#: superset/viz.py:1380
+msgid "Filters"
+msgstr ""
+
+#: superset/viz.py:1388
+msgid "Pick at least one filter field"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:895
+#: superset/viz.py:1415
+msgid "iFrame"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:907
+#: superset/viz.py:1432
+msgid "Parallel Coordinates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:929
+#: superset/viz.py:1457
+msgid "Heatmap"
+msgstr ""
+
+#: superset/viz.py:1508
+msgid "Horizon Charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:974
+#: superset/viz.py:1519
+msgid "Mapbox"
+msgstr ""
+
+#: superset/viz.py:1534
+msgid "Must have a [Group By] column to have 'count' as the [Label]"
+msgstr ""
+
+#: superset/viz.py:1547
+msgid "Choice of [Label] must be present in [Group By]"
+msgstr ""
+
+#: superset/viz.py:1552
+msgid "Choice of [Point Radius] must be present in [Group By]"
+msgstr ""
+
+#: superset/viz.py:1557
+msgid "[Longitude] and [Latitude] columns must be present in [Group By]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1045
+#: superset/viz.py:1622
+msgid "Event flow"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:57
+msgid "Your query was saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:58
+msgid "Your query could not be saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:111
+msgid "Failed at retrieving results from the results backend"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:157
+msgid "Could not connect to server"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:162
+msgid "Your session timed out, please refresh your page and try again."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:181
+msgid "Query was stopped."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:184
+msgid "Failed at stopping query."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:297
+#: superset/assets/javascripts/SqlLab/actions.js:310
+msgid "Error occurred while fetching table metadata"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:364
+msgid "shared query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:372
+#: superset/assets/javascripts/SqlLab/actions.js:392
+msgid "The query couldn't be loaded"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:425
+msgid "An error occurred while creating the data source"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:30
+msgid "Pick a chart type!"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:31
+msgid "To use this chart type you need at least one column flagged as a date"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:32
+msgid "To use this chart type you need at least one dimension"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:33
+msgid "To use this chart type you need at least one aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
+#: superset/assets/javascripts/SqlLab/reducers.js:11
+msgid "Untitled Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/reducers.js:44
+#, python-format
+msgid "Copy of %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:30
+msgid "share query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:33
+msgid "copy URL to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:61
+msgid "Raw SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:71
+msgid "Source SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:83
+#: superset/assets/javascripts/explore/stores/visTypes.js:40
+msgid "SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryHistory.jsx:28
+msgid "No query history yet..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:106
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:66
+msgid "It seems you don't have access to any database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:154
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:89
+msgid "Search Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:160
+msgid "[From]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:170
+msgid "[To]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:179
+msgid "[Query Status]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:188
+msgid "Search"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:114
+msgid "Open in SQL Editor"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:133
+msgid "view results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:136
+msgid "Data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:176
+msgid "Visualize the data out of this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:182
+msgid "Overwrite text in editor with a query on this table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:188
+msgid "Run query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:193
+msgid "Remove query from log"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:67
+msgid ".CSV"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:78
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:241
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:280
+msgid "Visualize"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:162
+#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:136
+#: superset/connectors/sqla/views.py:214 superset/views/core.py:376
+msgid "Table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:162
+msgid "was created"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:169
+msgid "Query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:210
+msgid "Fetch data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:230
+msgid "Track Job"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:236
+msgid "Loading..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Selected Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+msgid "Run query asynchronously"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:57
+msgid "Stop"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+msgid "Undefined"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
+#: superset/views/sql_lab.py:53
+msgid "Label"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+msgid "Label for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
+#: superset/connectors/druid/views.py:107
+#: superset/connectors/druid/views.py:227 superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:132 superset/connectors/sqla/views.py:227
+#: superset/views/core.py:370 superset/views/sql_lab.py:56
+msgid "Description"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+msgid "Write a description for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:155
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:217
+msgid "Save"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/templates/superset/request_access.html:16
+msgid "Cancel"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+msgid "Save Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:52
+msgid "Run a query to display results here"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:57
+#, python-format
+msgid "Preview for %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:81
+msgid "Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:87
+msgid "Query History"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:120
+msgid "Create table as with query results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:128
+msgid "new table name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:90
+msgid "Error while fetching table list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:131
+msgid "Error while fetching schema list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:153
+msgid "Error while fetching database list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:159
+msgid "Database:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:163
+msgid "Select a database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:170
+#, python-format
+msgid "Select a schema (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:175
+msgid "Schema:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:190
+#, python-format
+msgid "Add a table (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:203
+msgid "Type to search ..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:226
+msgid "Reset State"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:105
+msgid "Enter a new title for the tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:124
+#, python-format
+msgid "Untitled Query %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:170
+msgid "close tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:173
+msgid "rename tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "expand tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "hide tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:75
+msgid "Copy partition query to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:94
+msgid "latest partition:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:110
+msgid "Keys for table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:119
+#, python-format
+msgid "View keys & indexes (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:135
+msgid "Sort columns alphabetically"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:136
+msgid "Original table column order"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:146
+msgid "Copy SELECT statement to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:152
+msgid "Remove table preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:90
+#, python-format
+msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:91
+msgid "AS my_alias"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:91
+msgid "using only alphanumeric characters and underscores"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:166
+msgid "Creating a data source and popping a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:196
+msgid "No results available for this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:248
+msgid "Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:251
+msgid "[Chart Type]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:259
+msgid "Datasource Name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:263
+msgid "datasource name"
+msgstr ""
+
+#: superset/assets/javascripts/components/AsyncSelect.jsx:20
+msgid "Select ..."
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:26
+msgid "Loaded data cached"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:28
+msgid "Loaded from cache"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:33
+msgid "Click to force-refresh"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+msgid "Copy to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+msgid "Not successful"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+msgid "Copied!"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:12
+#: superset/views/core.py:471 superset/views/core.py:538
+msgid "Title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "click to edit title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "You don't have the rights to alter this title."
+msgstr ""
+
+#: superset/assets/javascripts/components/FaveStar.jsx:32
+#: superset/assets/javascripts/modules/superset.js:33
+msgid "Click to favorite/unfavorite"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:42
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:59
+msgid "You have unsaved changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:59
+msgid "Click the"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:61
+msgid "button on the top right to save your changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:164
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:169
+msgid "Click to force refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:353
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:100
+msgid "Error"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:354
+#, python-format
+msgid "Sorry, there was an error adding slices to this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
+#, python-format
+msgid "Checkout this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
+msgid "Force refresh the whole dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
+msgid "Edit this dashboard's properties"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+msgid "Load a template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+msgid "Load a CSS template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
+#: superset/views/core.py:478
+msgid "CSS"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+msgid "Live CSS Editor"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
+msgid "Don't refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:20
+msgid "10 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:21
+msgid "30 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:22
+msgid "1 minute"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:23
+msgid "5 minutes"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:38
+msgid "Refresh Interval"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:41
+msgid "Choose the refresh frequency for this dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:63
+msgid "This dashboard was saved successfully."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:69
+msgid "Sorry, there was an error saving this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:101
+msgid "You must pick a name for the new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:115
+msgid "Save Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+#, python-format
+msgid "Overwrite Dashboard [%s]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:131
+msgid "Save as:"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:135
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:205
+msgid "[dashboard name]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:142
+#: superset/views/core.py:375
+msgid "Name"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:148
+msgid "Viz"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:157
+#: superset/views/core.py:476 superset/views/core.py:540
+#: superset/views/sql_lab.py:57
+msgid "Modified"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:167
+msgid "Add Slices"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:176
+msgid "Add a new slice to the dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:181
+msgid "Add Slices to Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:24
+msgid "Move chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:27
+msgid "Force refresh data"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:31
+msgid "Toggle chart description"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:41
+msgid "Edit chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:46
+msgid "Export CSV"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:49
+msgid "Explore chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:54
+msgid "Remove chart from dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:173
+#, python-format
+msgid "%s - untitled"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:280
+msgid "Edit slice properties"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:32
+msgid "description"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:42
+msgid "bolt"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:61
+msgid "Error..."
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:97
+#: superset/assets/javascripts/explore/stores/visTypes.js:49
+#: superset/assets/javascripts/explore/stores/visTypes.js:129
+#: superset/assets/javascripts/explore/stores/visTypes.js:375
+#: superset/assets/javascripts/explore/stores/visTypes.js:422
+#: superset/assets/javascripts/explore/stores/visTypes.js:443
+#: superset/assets/javascripts/explore/stores/visTypes.js:471
+#: superset/assets/javascripts/explore/stores/visTypes.js:491
+#: superset/assets/javascripts/explore/stores/visTypes.js:512
+#: superset/assets/javascripts/explore/stores/visTypes.js:564
+#: superset/assets/javascripts/explore/stores/visTypes.js:586
+#: superset/assets/javascripts/explore/stores/visTypes.js:611
+#: superset/assets/javascripts/explore/stores/visTypes.js:636
+#: superset/assets/javascripts/explore/stores/visTypes.js:668
+#: superset/assets/javascripts/explore/stores/visTypes.js:705
+#: superset/assets/javascripts/explore/stores/visTypes.js:732
+#: superset/assets/javascripts/explore/stores/visTypes.js:759
+#: superset/assets/javascripts/explore/stores/visTypes.js:797
+#: superset/assets/javascripts/explore/stores/visTypes.js:830
+#: superset/assets/javascripts/explore/stores/visTypes.js:867
+#: superset/assets/javascripts/explore/stores/visTypes.js:910
+#: superset/assets/javascripts/explore/stores/visTypes.js:977
+msgid "Query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+msgid "Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+msgid "Width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+msgid "Export to .json"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+msgid "Export to .csv format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:74
+msgid "Please enter a slice name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:89
+msgid "Please select a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:97
+msgid "Please enter a dashboard name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:130
+msgid "Save A Slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:151
+#, python-format
+msgid "Overwrite slice %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:160
+msgid "Save as"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
+msgid "[slice name]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:177
+msgid "Do not add to a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:185
+msgid "Add slice to existing dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:200
+msgid "Add to new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:226
+msgid "Save & go to dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#, python-format
+msgid "Check out this slice: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+msgid "`Min` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+msgid "`Max` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
+msgid "Min"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
+msgid "Max"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:70
+msgid "Something went wrong while fetching the datasource list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:95
+msgid "Click to point to another datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:106
+msgid "Edit the datasource's configuration"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:122
+msgid "Select a datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:132
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:120
+msgid "Search / Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:118
+msgid "Filter value"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:159
+msgid "Select operator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:70
+#: superset/templates/appbuilder/general/widgets/search.html:6
+msgid "Add Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:63
+msgid "textarea"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:81
+msgid "Edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:81
+msgid "in modal"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:110
+msgid "Select a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/chartReducer.js:32
+msgid "Updating chart was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/chartReducer.js:38
+#: superset/assets/javascripts/modules/superset.js:222
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/chartReducer.js:47
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is to large to be processed within"
+" the timeout range. If that is the case, we recommend that you summarize "
+"your data further."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/chartReducer.js:56
+msgid "Network error."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:36
+msgid "A reference to the [Time] configuration, taking granularity into account"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:44
+msgid "Group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:47
+msgid "One or many controls to group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:66
+#: superset/connectors/druid/views.py:45 superset/views/core.py:314
+#: superset/views/core.py:338 superset/views/core.py:369
+msgid "Datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:76
+#: superset/views/core.py:377
+msgid "Visualization Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:78
+msgid "The type of visualization to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:84
+msgid "Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:93
+#: superset/assets/javascripts/explore/stores/controls.jsx:110
+msgid "One or many metrics to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:97
+msgid "Y Axis Bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:100
+msgid ""
+"Bounds for the Y axis. When left empty, the bounds are dynamically "
+"defined based on the min/max of the data. Note that this feature will "
+"only expand the axis range. It won't narrow the data's extent."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:108
+msgid "Ordering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:118
+#: superset/assets/javascripts/explore/stores/visTypes.js:818
+#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:131
+msgid "Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:120
+msgid "Choose the metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:133
+msgid "Right Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:137
+msgid "Choose a metric for right axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:148
+msgid "Stacked Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:160
+msgid "Linear Color Scheme"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:177
+msgid "Normalize Across"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:184
+msgid ""
+"Color will be rendered based on a ratio of the cell against the sum of "
+"across this criteria"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:191
+msgid "Horizon Color Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:198
+msgid "Defines how the color are attributed."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
+msgid "Rendering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:209
+msgid ""
+"image-rendering CSS attribute of the canvas object that defines how the "
+"browser scales up the image"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:215
+msgid "XScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:218
+msgid "Number of steps to take between ticks when displaying the X scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:224
+msgid "YScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:227
+msgid "Number of steps to take between ticks when displaying the Y scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:233
+msgid "Include Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:234
+msgid "Whether to include the time granularity as defined in the time section"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:240
+msgid "Stacked Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:248
+msgid "Show totals"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:251
+msgid "Display total row/column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:256
+msgid "Show Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:259
+msgid "Show data points as circle markers on the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:264
+msgid "Bar Values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:267
+msgid "Show the value on top of the bar"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:272
+msgid "Sort Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:274
+msgid "Sort bars by x labels."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:279
+msgid "Combine Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:281
+msgid ""
+"Display metrics side by side within each column, as opposed to each "
+"column being displayed side by side for each metric."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:287
+msgid "Extra Controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:290
+msgid ""
+"Whether to show extra controls or not. Extra controls include things like"
+" making mulitBar charts stacked or side by side."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:297
+msgid "Reduce X ticks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:300
+msgid ""
+"Reduces the number of X axis ticks to be rendered. If true, the x axis "
+"wont overflow and labels may be missing. If false, a minimum width will "
+"be applied to columns and the width may overflow into an horizontal "
+"scroll."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:309
+msgid "Include Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:312
+msgid "Include series name as an axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:317
+msgid "Color Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:319
+msgid "A metric to use for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:326
+msgid "Country Name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:345
+msgid "The name of country that Superset should display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:349
+msgid "Country Field Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:357
+msgid ""
+"The country code standard that Superset should expect to find in the "
+"[country] column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:364
+#: superset/assets/javascripts/explore/stores/controls.jsx:371
+msgid "Columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:365
+msgid "One or many controls to pivot as columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:373
+#: superset/assets/javascripts/explore/stores/controls.jsx:383
+#: superset/assets/javascripts/explore/stores/controls.jsx:393
+msgid "Columns to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:402
+msgid "Origin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:408
+msgid ""
+"Defines the origin where time buckets start, accepts natural dates as in "
+"`now`, `sunday` or `1970-01-01`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
+msgid "Bottom Margin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:419
+msgid "Bottom margin, in pixels, allowing for more room for axis labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:425
+msgid "Left Margin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:429
+msgid "Left margin, in pixels, allowing for more room for axis labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:435
+msgid "Time Granularity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:452
+msgid ""
+"The time granularity for the visualization. Note that you can type and "
+"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:459
+msgid "Domain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:462
+msgid "The time unit used for the grouping of blocks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:467
+msgid "Subdomain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:470
+msgid ""
+"The time unit for each block. Should be a smaller unit than "
+"domain_granularity. Should be larger or equal to Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:477
+msgid "Link Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:480
+msgid "Link length in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:486
+msgid "Charge"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:500
+msgid "Charge in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:508
+msgid ""
+"The time column for the visualization. Note that you can define arbitrary"
+" expression that return a DATETIME column in the table or. Also note that"
+" the filter below is applied against this column or expression"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:520
+msgid "Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:522
+msgid ""
+"The time granularity for the visualization. This applies a date "
+"transformation to alter your time column and defines a new time "
+"granularity. The options here are defined on a per database engine basis "
+"in the Superset source code."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:535
+msgid "Resample Rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:538
+msgid "Pandas resample rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:544
+msgid "Resample How"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:547
+msgid "Pandas resample how"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:553
+msgid "Resample Fill Method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:556
+msgid "Pandas resample fill method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:562
+msgid "Since"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:563
+msgid "7 days ago"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:569
+msgid "Until"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:576
+msgid "Max Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:584
+msgid "Whisker/outlier options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:586
+msgid "Determines how whiskers and outliers are calculated."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:597
+msgid "Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:600
+msgid "Target aspect ratio for treemap tiles."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:606
+#: superset/assets/javascripts/explore/stores/visTypes.js:602
+#: superset/assets/javascripts/explore/stores/visTypes.js:627
+#: superset/assets/javascripts/explore/stores/visTypes.js:776
+msgid "Number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:616
+msgid "Row limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:624
+msgid "Series limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:627
+msgid "Limits the number of time series that get displayed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:632
+msgid "Sort By"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:634
+msgid "Metric used to define the top series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:642
+msgid "Rolling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:645
+msgid ""
+"Defines a rolling window function to apply, works along with the "
+"[Periods] text box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:651
+msgid "Periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:653
+msgid ""
+"Defines the size of the rolling window function, relative to the time "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:659
+msgid "Min Periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:661
+msgid ""
+"The minimum number of rolling periods required to show a value. For "
+"instance if you do a cumulative sum on 7 days you may want your \"Min "
+"Period\" to be 7, so that all data points shown are the total of 7 "
+"periods. This will hide the \"ramp up\" taking place over the first 7 "
+"periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:670
+#: superset/assets/javascripts/explore/stores/visTypes.js:115
+msgid "Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:672
+msgid ""
+"Defines the grouping of entities. Each series is shown as a specific "
+"color on the chart and has a legend toggle"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:682
+msgid "Entity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:685
+msgid "This defines the element to be plotted on the chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:693
+#: superset/assets/javascripts/explore/stores/visTypes.js:164
+#: superset/assets/javascripts/explore/stores/visTypes.js:533
+msgid "X Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:694
+msgid "Metric assigned to the [X] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:707
+#: superset/assets/javascripts/explore/stores/visTypes.js:171
+#: superset/assets/javascripts/explore/stores/visTypes.js:541
+msgid "Y Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:710
+msgid "Metric assigned to the [Y] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:721
+msgid "Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:734
+msgid "URL"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:735
+msgid ""
+"The URL, this control is templated, so you can integrate {{ width }} "
+"and/or {{ height }} in your URL string."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:742
+msgid "X Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:749
+msgid "Y Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:756
+msgid "Custom WHERE clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:758
+msgid ""
+"The text in this box gets included in your query's WHERE clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:766
+msgid "Custom HAVING clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:768
+msgid ""
+"The text in this box gets included in your query's HAVING clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:776
+msgid "Comparison Period Lag"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:778
+msgid "Based on granularity, number of time periods to compare against"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:783
+msgid "Comparison suffix"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:784
+msgid "Suffix to apply after the percentage display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:790
+msgid "Table Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:795
+msgid "Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:801
+msgid "Series Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:804
+msgid "Pixel height of each series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:810
+msgid "Page Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:813
+msgid "Rows per page, 0 means no pagination"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:819
+#: superset/assets/javascripts/explore/stores/controls.jsx:829
+msgid "X Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:839
+msgid "Y Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:849
+msgid "Right Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+msgid "Markup Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:862
+msgid "Pick your favorite markup language"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:867
+msgid "Rotation"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:870
+msgid "Rotation to apply to words in the cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:875
+msgid "Line Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:880
+msgid "Line interpolation as defined by d3.js"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:885
+msgid "Label Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:892
+msgid "What should be shown on the label?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:897
+#: superset/assets/javascripts/explore/stores/visTypes.js:362
+#: superset/assets/javascripts/explore/stores/visTypes.js:400
+msgid "Code"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:898
+msgid "Put your code here"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:907
+msgid "Aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:919
+msgid ""
+"Aggregate function to apply when pivoting and computing the total rows "
+"and columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:926
+msgid "Font Size From"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:928
+msgid "Font size for the smallest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:934
+msgid "Font Size To"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:936
+msgid "Font size for the biggest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:941
+msgid "Instant Filtering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:952
+msgid "Range Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:955
+msgid "Whether to display the time range interactive selector"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:960
+msgid "Date Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:962
+msgid "Whether to include a time filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:967
+msgid "Data Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:969
+msgid "Whether to display the interactive data table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:974
+msgid "Search Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:977
+msgid "Whether to include a client side search box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:982
+msgid "Table Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:984
+msgid "Whether to apply filter when table cell is clicked"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:989
+msgid "Show Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:992
+msgid "Whether to display bubbles on top of countries"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:997
+msgid "Legend"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1000
+msgid "Whether to display the legend (toggles)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1005
+msgid "X bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1008
+msgid "Whether to display the min and max values of the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1013
+msgid "Y bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1016
+msgid "Whether to display the min and max values of the Y axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1021
+msgid "Rich Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1024
+msgid "The rich tooltip shows a list of all series for that point in time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1030
+msgid "Y Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1033
+msgid "Use a log scale for the Y axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1038
+msgid "X Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+msgid "Use a log scale for the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1046
+msgid "Donut"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+msgid "Do you want a donut or a pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1054
+msgid "Put labels outside"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1057
+msgid "Put the labels outside the pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1062
+msgid "Contribution"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1064
+msgid "Compute the contribution to the total"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1069
+msgid "Period Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1072
+msgid ""
+"[integer] Number of period to compare against, this is relative to the "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1078
+msgid "Period Ratio Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1081
+msgid ""
+"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
+"is (new-previous)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1087
+msgid "Time Shift"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1089
+msgid ""
+"Overlay a timeseries from a relative time period. Expects relative time "
+"delta in natural language (example:  24 hours, 7 days, 56 weeks, 365 "
+"days)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1097
+msgid "Subheader"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1098
+msgid "Description text that shows up below your Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1104
+msgid "label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1106
+msgid ""
+"`count` is COUNT(*) if a group by is used. Numerical columns will be "
+"aggregated with the aggregator. Non-numerical columns will be used to "
+"label points. Leave empty to get a count of points in each cluster."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1117
+msgid "Map Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1127
+msgid "Base layer map style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1133
+msgid "Clustering Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1146
+msgid ""
+"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
+"to turn off clustering, but beware that a large number of points (>1000) "
+"will cause lag."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1153
+msgid "Point Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+msgid ""
+"The radius of individual points (ones that are not in a cluster). Either "
+"a numerical column or `Auto`, which scales the point based on the largest"
+" cluster"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1165
+msgid "Point Radius Unit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1168
+msgid "The unit of measure for the specified point radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1173
+msgid "Opacity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1176
+msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1182
+msgid "Zoom"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1185
+msgid "Zoom level of the map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1191
+msgid "Default latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1194
+msgid "Latitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1200
+msgid "Default longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1203
+msgid "Longitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1209
+msgid "Live render"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1211
+msgid "Points and clusters will update as viewport is being changed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1217
+msgid "RGB Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1227
+msgid "The color for points and clusters in RGB"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1232
+msgid "Ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1234
+msgid "Ranges to highlight with shading"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1239
+msgid "Range labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1241
+msgid "Labels for the ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1246
+msgid "Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1248
+msgid "List of values to mark with triangles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1253
+msgid "Marker labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1255
+msgid "Labels for the markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1260
+msgid "Marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1262
+msgid "List of values to mark with lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1267
+msgid "Marker line labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1269
+msgid "Labels for the marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1296
+msgid "Slice ID"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+msgid "The id of the active slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1303
+msgid "Cache Timeout (seconds)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1305
+msgid "The number of seconds before expiring the cache"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1310
+msgid "Order by entity id"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1311
+msgid ""
+"Important! Select this if the table is not already sorted by entity id, "
+"else there is no guarantee that all events for each entity are returned."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1319
+msgid "Minimum leaf node event count"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1322
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1328
+#: superset/assets/javascripts/explore/stores/visTypes.js:25
+msgid "Color Scheme"
 msgstr ""
 
-#: superset/viz.py:398
-msgid "'Group By' and 'Columns' can't overlap"
+#: superset/assets/javascripts/explore/stores/controls.jsx:1332
+msgid "The color scheme for rendering chart"
 msgstr ""
 
-#: superset/viz.py:431
-msgid "Markup"
+#: superset/assets/javascripts/explore/stores/visTypes.js:7
+#: superset/assets/javascripts/explore/stores/visTypes.js:31
+msgid "Time"
 msgstr ""
 
-#: superset/viz.py:450
-msgid "Separator"
+#: superset/assets/javascripts/explore/stores/visTypes.js:9
+#: superset/assets/javascripts/explore/stores/visTypes.js:32
+msgid "Time related form attributes"
 msgstr ""
 
-#: superset/viz.py:466
-msgid "Word Cloud"
+#: superset/assets/javascripts/explore/stores/visTypes.js:16
+msgid "Datasource & Chart Type"
 msgstr ""
 
-#: superset/viz.py:489
-msgid "Treemap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:45
+msgid "This section exposes ways to include snippets of SQL in your query"
 msgstr ""
 
-#: superset/viz.py:515
-msgid "Calendar Heatmap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:58
+msgid "Advanced Analytics"
 msgstr ""
 
-#: superset/viz.py:573
-msgid "Box Plot"
+#: superset/assets/javascripts/explore/stores/visTypes.js:59
+msgid ""
+"This section contains options that allow for advanced analytical post "
+"processing of query results"
 msgstr ""
 
-#: superset/viz.py:662
-msgid "Bubble Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:77
+msgid "Result Filters"
 msgstr ""
 
-#: superset/viz.py:686
-msgid "Pick a metric for x, y and size"
+#: superset/assets/javascripts/explore/stores/visTypes.js:79
+msgid ""
+"The filters to apply after post-aggregation.Leave the value control empty"
+" to filter empty strings or nulls"
 msgstr ""
 
-#: superset/viz.py:712
-msgid "Bullet Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:92
+#: superset/assets/javascripts/explore/stores/visTypes.js:101
+#: superset/assets/javascripts/explore/stores/visTypes.js:137
+#: superset/assets/javascripts/explore/stores/visTypes.js:155
+#: superset/assets/javascripts/explore/stores/visTypes.js:193
+#: superset/assets/javascripts/explore/stores/visTypes.js:234
+#: superset/assets/javascripts/explore/stores/visTypes.js:268
+#: superset/assets/javascripts/explore/stores/visTypes.js:290
+#: superset/assets/javascripts/explore/stores/visTypes.js:451
+#: superset/assets/javascripts/explore/stores/visTypes.js:499
+#: superset/assets/javascripts/explore/stores/visTypes.js:520
+#: superset/assets/javascripts/explore/stores/visTypes.js:644
+#: superset/assets/javascripts/explore/stores/visTypes.js:677
+#: superset/assets/javascripts/explore/stores/visTypes.js:714
+#: superset/assets/javascripts/explore/stores/visTypes.js:767
+#: superset/assets/javascripts/explore/stores/visTypes.js:965
+msgid "Chart Options"
 msgstr ""
 
-#: superset/viz.py:738
-msgid "Pick a metric to display"
+#: superset/assets/javascripts/explore/stores/visTypes.js:118
+msgid "Breakdowns"
 msgstr ""
 
-#: superset/viz.py:761
-msgid "Big Number with Trendline"
+#: superset/assets/javascripts/explore/stores/visTypes.js:119
+msgid "Defines how each series is broken down"
 msgstr ""
 
-#: superset/viz.py:769 superset/viz.py:798
-msgid "Pick a metric!"
+#: superset/assets/javascripts/explore/stores/visTypes.js:125
+msgid "Pie Chart"
 msgstr ""
 
-#: superset/viz.py:790
-msgid "Big Number"
+#: superset/assets/javascripts/explore/stores/visTypes.js:189
+msgid "Dual Axis Line Chart"
 msgstr ""
 
-#: superset/viz.py:817
-msgid "Time Series - Line Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:200
+msgid "Y Axis 1"
 msgstr ""
 
-#: superset/viz.py:864 superset/viz.py:1001
-msgid "Pick a time granularity for your time series"
+#: superset/assets/javascripts/explore/stores/visTypes.js:206
+msgid "Y Axis 2"
 msgstr ""
 
-#: superset/viz.py:944
-msgid "Time Series - Dual Axis Line Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:214
+msgid "Left Axis Metric"
 msgstr ""
 
-#: superset/viz.py:954
-msgid "Pick a metric for left axis!"
+#: superset/assets/javascripts/explore/stores/visTypes.js:215
+msgid "Choose a metric for left axis"
 msgstr ""
 
-#: superset/viz.py:956
-msgid "Pick a metric for right axis!"
+#: superset/assets/javascripts/explore/stores/visTypes.js:218
+msgid "Left Axis Format"
 msgstr ""
 
-#: superset/viz.py:958
-msgid "Please choose different metrics on left and right axis"
+#: superset/assets/javascripts/explore/stores/visTypes.js:244
+#: superset/assets/javascripts/explore/stores/visTypes.js:300
+msgid "Axes"
 msgstr ""
 
-#: superset/viz.py:1019
-msgid "Time Series - Bar Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:324
+msgid "GROUP BY"
 msgstr ""
 
-#: superset/viz.py:1027
-msgid "Time Series - Percent Change"
+#: superset/assets/javascripts/explore/stores/visTypes.js:325
+msgid "Use this section if you want a query that aggregates"
 msgstr ""
 
-#: superset/viz.py:1035
-msgid "Time Series - Stacked"
+#: superset/assets/javascripts/explore/stores/visTypes.js:332
+msgid "NOT GROUPED BY"
 msgstr ""
 
-#: superset/viz.py:1044
-msgid "Distribution - NVD3 - Pie Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:333
+msgid "Use this section if you want to query atomic rows"
 msgstr ""
 
-#: superset/viz.py:1062
-msgid "Histogram"
+#: superset/assets/javascripts/explore/stores/visTypes.js:340
+#: superset/assets/javascripts/explore/stores/visTypes.js:741
+#: superset/assets/javascripts/explore/stores/visTypes.js:805
+#: superset/assets/javascripts/explore/stores/visTypes.js:898
+msgid "Options"
 msgstr ""
 
-#: superset/viz.py:1072
-msgid "Must have one numeric column specified"
+#: superset/assets/javascripts/explore/stores/visTypes.js:527
+#: superset/assets/javascripts/explore/stores/visTypes.js:839
+msgid "Bubbles"
 msgstr ""
 
-#: superset/viz.py:1087
-msgid "Distribution - Bar Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:653
+msgid "Numeric Column"
 msgstr ""
 
-#: superset/viz.py:1098
-msgid "Can't have overlap between Series and Breakdowns"
+#: superset/assets/javascripts/explore/stores/visTypes.js:654
+msgid "Select the numeric column to draw the histogram"
 msgstr ""
 
-#: superset/viz.py:1100
-msgid "Pick at least one metric"
+#: superset/assets/javascripts/explore/stores/visTypes.js:657
+msgid "No of Bins"
 msgstr ""
 
-#: superset/viz.py:1102
-msgid "Pick at least one field for [Series]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:658
+msgid "Select number of bins for the histogram"
 msgstr ""
 
-#: superset/viz.py:1155
-msgid "Sunburst"
+#: superset/assets/javascripts/explore/stores/visTypes.js:685
+msgid "Primary Metric"
 msgstr ""
 
-#: superset/viz.py:1188
-msgid "Sankey"
+#: superset/assets/javascripts/explore/stores/visTypes.js:686
+msgid "The primary metric is used to define the arc segment sizes"
 msgstr ""
 
-#: superset/viz.py:1195
-msgid "Pick exactly 2 columns as [Source / Target]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:689
+msgid "Secondary Metric"
 msgstr ""
 
-#: superset/viz.py:1226
+#: superset/assets/javascripts/explore/stores/visTypes.js:690
 msgid ""
-"There's a loop in your Sankey, please provide a tree. Here's a faulty "
-"link: {}"
+"This secondary metric is used to define the color as a ratio against the "
+"primary metric. If the two metrics match, color is mapped level groups"
 msgstr ""
 
-#: superset/viz.py:1237 superset/viz.py:1258
-msgid "Directed Force Layout"
+#: superset/assets/javascripts/explore/stores/visTypes.js:695
+msgid "Hierarchy"
 msgstr ""
 
-#: superset/viz.py:1244
-msgid "Pick exactly 2 columns to 'Group By'"
+#: superset/assets/javascripts/explore/stores/visTypes.js:696
+msgid "This defines the level of the hierarchy"
 msgstr ""
 
-#: superset/viz.py:1291
-msgid "Country Map"
+#: superset/assets/javascripts/explore/stores/visTypes.js:722
+#: superset/assets/javascripts/explore/stores/visTypes.js:750
+msgid "Source / Target"
 msgstr ""
 
-#: superset/viz.py:1320
-msgid "World Map"
+#: superset/assets/javascripts/explore/stores/visTypes.js:723
+#: superset/assets/javascripts/explore/stores/visTypes.js:751
+msgid "Choose a source and a target"
 msgstr ""
 
-#: superset/viz.py:1370
-msgid "Filters"
+#: superset/assets/javascripts/explore/stores/visTypes.js:756
+msgid "Chord Diagram"
 msgstr ""
 
-#: superset/viz.py:1378
-msgid "Pick at least one filter field"
+#: superset/assets/javascripts/explore/stores/visTypes.js:777
+msgid "Choose a number format"
 msgstr ""
 
-#: superset/viz.py:1405
-msgid "iFrame"
+#: superset/assets/javascripts/explore/stores/visTypes.js:780
+msgid "Source"
 msgstr ""
 
-#: superset/viz.py:1422
-msgid "Parallel Coordinates"
+#: superset/assets/javascripts/explore/stores/visTypes.js:783
+msgid "Choose a source"
 msgstr ""
 
-#: superset/viz.py:1447
-msgid "Heatmap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:786
+msgid "Target"
 msgstr ""
 
-#: superset/viz.py:1498
-msgid "Horizon Charts"
+#: superset/assets/javascripts/explore/stores/visTypes.js:789
+msgid "Choose a target"
 msgstr ""
 
-#: superset/viz.py:1509
-msgid "Mapbox"
+#: superset/assets/javascripts/explore/stores/visTypes.js:814
+msgid "ISO 3166-1 codes of region/province/department"
 msgstr ""
 
-#: superset/viz.py:1524
-msgid "Must have a [Group By] column to have 'count' as the [Label]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:815
+msgid ""
+"It's ISO 3166-1 of your region/province/department in your table. (see "
+"documentation for list of ISO 3166-1)"
 msgstr ""
 
-#: superset/viz.py:1537
-msgid "Choice of [Label] must be present in [Group By]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:849
+msgid "Country Control"
 msgstr ""
 
-#: superset/viz.py:1542
-msgid "Choice of [Point Radius] must be present in [Group By]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:850
+msgid "3 letter code of the country"
 msgstr ""
 
-#: superset/viz.py:1547
-msgid "[Longitude] and [Latitude] columns must be present in [Group By]"
+#: superset/assets/javascripts/explore/stores/visTypes.js:853
+msgid "Metric for color"
 msgstr ""
 
-#: superset/viz.py:1612
-msgid "Event flow"
+#: superset/assets/javascripts/explore/stores/visTypes.js:854
+msgid "Metric that defines the color of the country"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:857
+msgid "Bubble size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:858
+msgid "Metric that defines the size of the bubble"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:864
+msgid "Filter Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:883
+msgid "Filter controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:884
+msgid ""
+"The controls you want to filter on. Note that only columns checked as "
+"\"filterable\" will show up on this list."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:932
+msgid "Axis & Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:940
+msgid "Heatmap Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:961
+msgid "Horizon"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:987
+msgid "Points"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:994
+msgid "Labelling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1001
+msgid "Visual Tweaks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1010
+msgid "Viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1020
+msgid "Longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1021
+msgid "Column containing longitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1024
+msgid "Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1025
+msgid "Column containing latitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1028
+msgid "Cluster label aggregator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1029
+msgid ""
+"Aggregate function applied to the list of points in each cluster to "
+"produce the cluster label."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1033
+msgid "Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1034
+msgid "Show a tooltip when hovering over points and clusters describing the label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1038
+msgid ""
+"One or many controls to group by. If grouping, latitude and longitude "
+"columns must be present."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1049
+msgid "Event definition"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1059
+msgid "Additional meta data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1067
+msgid "Column containing entity ids"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1068
+msgid "e.g., a \"user id\" column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1071
+msgid "Column containing event names"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1079
+msgid "Event count limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1080
+msgid "The maximum number of events to return, equivalent to number of rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1083
+msgid "Meta data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1084
+msgid "Select any columns for meta data inspection"
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:134
+msgid ""
+"The server could not be reached. You may want to verify your connection "
+"and try again."
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:137
+#, python-format
+msgid "An unknown error occurred. (Status: %s )"
 msgstr ""
 
-#: superset/connectors/druid/models.py:975
+#: superset/assets/javascripts/profile/components/App.jsx:24
+msgid "Favorites"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:30
+msgid "Created Content"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:37
+msgid "Recent Activity"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:42
+msgid "Security & Access"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:33
+msgid "No slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:49
+msgid "No dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
+#: superset/assets/javascripts/profile/components/Favorites.jsx:59
+#: superset/templates/superset/welcome.html:13 superset/views/core.py:368
+#: superset/views/core.py:528
+msgid "Dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:404 superset/views/core.py:473
+msgid "Slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:34
+msgid "No favorite slices yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:50
+msgid "No favorite dashboards yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:14
+msgid "Roles"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:23
+#: superset/views/core.py:280
+msgid "Databases"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:34
+msgid "Datasources"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+msgid "Profile picture provided by Gravatar"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+msgid "joined"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+msgid "id:"
+msgstr ""
+
+#: superset/assets/visualizations/EventFlow.jsx:56
+msgid "Sorry, there appears to be no data"
+msgstr ""
+
+#: superset/assets/visualizations/filter_box.jsx:106
+#, python-format
+msgid "Select [%s]"
+msgstr ""
+
+#: superset/connectors/druid/models.py:976
 msgid "No data was returned."
 msgstr ""
 
@@ -382,11 +2715,6 @@ msgstr ""
 msgid "Type"
 msgstr ""
 
-#: superset/connectors/druid/views.py:45 superset/views/core.py:314
-#: superset/views/core.py:338 superset/views/core.py:369
-msgid "Datasource"
-msgstr ""
-
 #: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
 msgid "Groupable"
 msgstr ""
@@ -403,14 +2731,6 @@ msgstr ""
 msgid "Sum"
 msgstr ""
 
-#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
-msgid "Min"
-msgstr ""
-
-#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
-msgid "Max"
-msgstr ""
-
 #: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
 msgid ""
 "Whether this column is exposed in the `Filters` section of the explore "
@@ -440,17 +2760,6 @@ msgid ""
 "metric)' are allowed to access this metric"
 msgstr ""
 
-#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:131
-msgid "Metric"
-msgstr ""
-
-#: superset/connectors/druid/views.py:107
-#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
-#: superset/connectors/sqla/views.py:132 superset/connectors/sqla/views.py:229
-#: superset/views/core.py:370 superset/views/sql_lab.py:56
-msgid "Description"
-msgstr ""
-
 #: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
 #: superset/connectors/sqla/views.py:133
 msgid "Verbose Name"
@@ -481,7 +2790,7 @@ msgid "Edit Druid Cluster"
 msgstr ""
 
 #: superset/connectors/druid/views.py:142
-#: superset/connectors/druid/views.py:228
+#: superset/connectors/druid/views.py:226
 msgid "Cluster"
 msgstr ""
 
@@ -514,8 +2823,8 @@ msgid "Druid Clusters"
 msgstr ""
 
 #: superset/connectors/druid/views.py:166
-#: superset/connectors/druid/views.py:268
-#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:287
+#: superset/connectors/druid/views.py:266
+#: superset/connectors/druid/views.py:305 superset/connectors/sqla/views.py:285
 #: superset/views/core.py:283
 msgid "Sources"
 msgstr ""
@@ -536,7 +2845,7 @@ msgstr ""
 msgid "Edit Druid Datasource"
 msgstr ""
 
-#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:178
+#: superset/connectors/druid/views.py:195 superset/connectors/sqla/views.py:176
 msgid ""
 "The list of slices associated with this table. By altering this "
 "datasource, you may change how these associated slices behave. Also note "
@@ -545,11 +2854,11 @@ msgid ""
 "datasource for a slice, overwrite the slice from the 'explore view'"
 msgstr ""
 
-#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:186
+#: superset/connectors/druid/views.py:203 superset/connectors/sqla/views.py:184
 msgid "Timezone offset (in hours) for this datasource"
 msgstr ""
 
-#: superset/connectors/druid/views.py:209
+#: superset/connectors/druid/views.py:207
 msgid ""
 "Time expression to use as a predicate when retrieving distinct values to "
 "populate the filter component. Only applies when `Enable Filter Select` "
@@ -557,71 +2866,71 @@ msgid ""
 "filter will be populated based on the distinct value over the past week"
 msgstr ""
 
-#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:208
+#: superset/connectors/druid/views.py:214 superset/connectors/sqla/views.py:206
 msgid ""
 "Whether to populate the filter's dropdown in the explore view's filter "
 "section with a list of distinct values fetched from the backend on the "
 "fly"
 msgstr ""
 
-#: superset/connectors/druid/views.py:220
+#: superset/connectors/druid/views.py:218
 msgid ""
 "Redirects to this endpoint when clicking on the datasource from the "
 "datasource list"
 msgstr ""
 
-#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:215
+#: superset/connectors/druid/views.py:224 superset/connectors/sqla/views.py:213
 msgid "Associated Slices"
 msgstr ""
 
-#: superset/connectors/druid/views.py:227
+#: superset/connectors/druid/views.py:225
 msgid "Data Source"
 msgstr ""
 
-#: superset/connectors/druid/views.py:230 superset/connectors/sqla/views.py:227
+#: superset/connectors/druid/views.py:228 superset/connectors/sqla/views.py:225
 msgid "Owner"
 msgstr ""
 
-#: superset/connectors/druid/views.py:231
+#: superset/connectors/druid/views.py:229
 msgid "Is Hidden"
 msgstr ""
 
-#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:220
+#: superset/connectors/druid/views.py:230 superset/connectors/sqla/views.py:218
 msgid "Enable Filter Select"
 msgstr ""
 
-#: superset/connectors/druid/views.py:233 superset/connectors/sqla/views.py:222
+#: superset/connectors/druid/views.py:231 superset/connectors/sqla/views.py:220
 msgid "Default Endpoint"
 msgstr ""
 
-#: superset/connectors/druid/views.py:234
+#: superset/connectors/druid/views.py:232
 msgid "Time Offset"
 msgstr ""
 
-#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:224
+#: superset/connectors/druid/views.py:233 superset/connectors/sqla/views.py:222
 #: superset/views/core.py:248 superset/views/core.py:366
 msgid "Cache Timeout"
 msgstr ""
 
-#: superset/connectors/druid/views.py:266
+#: superset/connectors/druid/views.py:264
 msgid "Druid Datasources"
 msgstr ""
 
-#: superset/connectors/druid/views.py:304
+#: superset/connectors/druid/views.py:302
 msgid "Refresh Druid Metadata"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:390
+#: superset/connectors/sqla/models.py:392
 msgid ""
 "Datetime column not provided as part table configuration and is required "
 "by this type of chart"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:395
+#: superset/connectors/sqla/models.py:397
 msgid "Metric '{}' is not valid"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:581
+#: superset/connectors/sqla/models.py:585
 msgid ""
 "Table doesn't seem to exist in the specified database, couldn't fetch "
 "column information"
@@ -656,11 +2965,6 @@ msgid ""
 "most case users should not need to alter this."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:136
-#: superset/connectors/sqla/views.py:216 superset/views/core.py:376
-msgid "Table"
-msgstr ""
-
 #: superset/connectors/sqla/views.py:91
 msgid "Expression"
 msgstr ""
@@ -721,77 +3025,77 @@ msgstr ""
 msgid "Edit Table"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:187
+#: superset/connectors/sqla/views.py:185
 msgid "Name of the table that exists in the source database"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:189
+#: superset/connectors/sqla/views.py:187
 msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:195
+#: superset/connectors/sqla/views.py:193
 msgid ""
 "This fields acts a Superset view, meaning that Superset will run a query "
 "against this string as a subquery."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:199
+#: superset/connectors/sqla/views.py:197
 msgid ""
 "Predicate applied when fetching distinct value to populate the filter "
 "control component. Supports jinja template syntax. Applies only when "
 "`Enable Filter Select` is on."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:205
+#: superset/connectors/sqla/views.py:203
 msgid "Redirects to this endpoint when clicking on the table from the table list"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:217
+#: superset/connectors/sqla/views.py:215
 msgid "Changed By"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:218 superset/views/core.py:244
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:244
 #: superset/views/sql_lab.py:19 superset/views/sql_lab.py:55
 msgid "Database"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:219 superset/views/core.py:246
+#: superset/connectors/sqla/views.py:217 superset/views/core.py:246
 msgid "Last Changed"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:221
+#: superset/connectors/sqla/views.py:219
 msgid "Schema"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:223
+#: superset/connectors/sqla/views.py:221
 msgid "Offset"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:225
+#: superset/connectors/sqla/views.py:223
 msgid "Table Name"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:226
+#: superset/connectors/sqla/views.py:224
 msgid "Fetch Values Predicate"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:228
+#: superset/connectors/sqla/views.py:226
 msgid "Main Datetime Column"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:248
+#: superset/connectors/sqla/views.py:246
 msgid ""
 "Table [{}] could not be found, please double check your database "
 "connection, schema, and table name"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:261
+#: superset/connectors/sqla/views.py:259
 msgid ""
 "The table was created. As part of this two phase configuration process, "
 "you should now click the edit button by the new table to configure it."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:285
+#: superset/connectors/sqla/views.py:283
 msgid "Tables"
 msgstr ""
 
@@ -815,10 +3119,6 @@ msgstr ""
 msgid "No records found"
 msgstr ""
 
-#: superset/templates/appbuilder/general/widgets/search.html:6
-msgid "Add Filter"
-msgstr ""
-
 #: superset/templates/superset/import_dashboards.html:11
 msgid "Import"
 msgstr ""
@@ -836,37 +3136,28 @@ msgstr ""
 msgid "Request Permissions"
 msgstr ""
 
-#: superset/templates/superset/request_access.html:16
-msgid "Cancel"
-msgstr ""
-
 #: superset/templates/superset/welcome.html:3
 msgid "Welcome!"
 msgstr ""
 
-#: superset/templates/superset/welcome.html:13 superset/views/core.py:368
-#: superset/views/core.py:528
-msgid "Dashboards"
-msgstr ""
-
 #: superset/templates/superset/models/database/macros.html:4
 msgid "Test Connection"
 msgstr ""
 
-#: superset/views/base.py:58
+#: superset/views/base.py:62
 #, python-format
 msgid "Datasource %(name)s already exists"
 msgstr ""
 
-#: superset/views/base.py:206
+#: superset/views/base.py:221
 msgid "json isn't valid"
 msgstr ""
 
-#: superset/views/base.py:257
+#: superset/views/base.py:272
 msgid "Delete"
 msgstr ""
 
-#: superset/views/base.py:258
+#: superset/views/base.py:273
 msgid "Delete all Really?"
 msgstr ""
 
@@ -994,15 +3285,11 @@ msgstr ""
 msgid "Import Dashboards"
 msgstr ""
 
-#: superset/views/core.py:273 superset/views/core.py:2330
+#: superset/views/core.py:273 superset/views/core.py:2334
 #: superset/views/sql_lab.py:30
 msgid "Manage"
 msgstr ""
 
-#: superset/views/core.py:280
-msgid "Databases"
-msgstr ""
-
 #: superset/views/core.py:311 superset/views/core.py:552
 #: superset/views/sql_lab.py:18 superset/views/sql_lab.py:54
 msgid "User"
@@ -1076,18 +3363,6 @@ msgstr ""
 msgid "Slice"
 msgstr ""
 
-#: superset/views/core.py:375
-msgid "Name"
-msgstr ""
-
-#: superset/views/core.py:377
-msgid "Visualization Type"
-msgstr ""
-
-#: superset/views/core.py:404 superset/views/core.py:473
-msgid "Slices"
-msgstr ""
-
 #: superset/views/core.py:433
 msgid "List Dashboards"
 msgstr ""
@@ -1136,27 +3411,14 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: superset/views/core.py:471 superset/views/core.py:538
-msgid "Title"
-msgstr ""
-
 #: superset/views/core.py:472
 msgid "Slug"
 msgstr ""
 
-#: superset/views/core.py:476 superset/views/core.py:540
-#: superset/views/sql_lab.py:57
-msgid "Modified"
-msgstr ""
-
 #: superset/views/core.py:477
 msgid "Position JSON"
 msgstr ""
 
-#: superset/views/core.py:478
-msgid "CSS"
-msgstr ""
-
 #: superset/views/core.py:479
 msgid "JSON Metadata"
 msgstr ""
@@ -1205,53 +3467,53 @@ msgstr ""
 msgid "You have no permission to approve this request"
 msgstr ""
 
-#: superset/views/core.py:1618
+#: superset/views/core.py:1625
 msgid ""
 "Malformed request. slice_id or table_name and db_name arguments are "
 "expected"
 msgstr ""
 
-#: superset/views/core.py:1624
+#: superset/views/core.py:1631
 #, python-format
 msgid "Slice %(id)s not found"
 msgstr ""
 
-#: superset/views/core.py:1636
+#: superset/views/core.py:1643
 #, python-format
 msgid "Table %(t)s wasn't found in the database %(d)s"
 msgstr ""
 
-#: superset/views/core.py:1774
+#: superset/views/core.py:1782
 #, python-format
 msgid "Can't find User '%(name)s', please ask your admin to create one."
 msgstr ""
 
-#: superset/views/core.py:1781
+#: superset/views/core.py:1789
 #, python-format
 msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
 msgstr ""
 
-#: superset/views/core.py:2042
+#: superset/views/core.py:2050
 msgid "Query record was not created as expected."
 msgstr ""
 
-#: superset/views/core.py:2316
+#: superset/views/core.py:2320
 msgid "Template Name"
 msgstr ""
 
-#: superset/views/core.py:2327
+#: superset/views/core.py:2331
 msgid "CSS Templates"
 msgstr ""
 
-#: superset/views/core.py:2337
+#: superset/views/core.py:2341
 msgid "SQL Editor"
 msgstr ""
 
-#: superset/views/core.py:2342 superset/views/core.py:2351
+#: superset/views/core.py:2346 superset/views/core.py:2355
 msgid "SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:2346
+#: superset/views/core.py:2350
 msgid "Query Search"
 msgstr ""
 
@@ -1287,10 +3549,6 @@ msgstr ""
 msgid "Edit Saved Query"
 msgstr ""
 
-#: superset/views/sql_lab.py:53
-msgid "Label"
-msgstr ""
-
 #: superset/views/sql_lab.py:59
 msgid "Pop Tab Link"
 msgstr ""
diff --git a/superset/assets/javascripts/SqlLab/actions.js b/superset/assets/javascripts/SqlLab/actions.js
index 517c5d2..6438226 100644
--- a/superset/assets/javascripts/SqlLab/actions.js
+++ b/superset/assets/javascripts/SqlLab/actions.js
@@ -1,6 +1,7 @@
 /* global notify */
 import shortid from 'shortid';
 import { now } from '../modules/dates';
+import { t } from '../locales';
 
 const $ = require('jquery');
 
@@ -53,8 +54,8 @@ export function saveQuery(query) {
     type: 'POST',
     url,
     data: query,
-    success: () => notify.success('Your query was saved'),
-    error: () => notify.error('Your query could not be saved'),
+    success: () => notify.success(t('Your query was saved')),
+    error: () => notify.error(t('Your query could not be saved')),
     dataType: 'json',
   });
   return { type: SAVE_QUERY };
@@ -107,7 +108,7 @@ export function fetchQueryResults(query) {
         dispatch(querySuccess(query, results));
       },
       error(err) {
-        let msg = 'Failed at retrieving results from the results backend';
+        let msg = t('Failed at retrieving results from the results backend');
         if (err.responseJSON && err.responseJSON.error) {
           msg = err.responseJSON.error;
         }
@@ -153,12 +154,12 @@ export function runQuery(query) {
           }
         }
         if (textStatus === 'error' && errorThrown === '') {
-          msg = 'Could not connect to server';
+          msg = t('Could not connect to server');
         } else if (msg === null) {
           msg = `[${textStatus}] ${errorThrown}`;
         }
         if (msg.indexOf('CSRF token') > 0) {
-          msg = 'Your session timed out, please refresh your page and try again.';
+          msg = t('Your session timed out, please refresh your page and try again.');
         }
         dispatch(queryFailed(query, msg));
       },
@@ -177,10 +178,10 @@ export function postStopQuery(query) {
       url: stopQueryUrl,
       data: stopQueryRequestData,
       success() {
-        notify.success('Query was stopped.');
+        notify.success(t('Query was stopped.'));
       },
       error() {
-        notify.error('Failed at stopping query.');
+        notify.error(t('Failed at stopping query.'));
       },
     });
   };
@@ -293,7 +294,7 @@ export function addTable(query, tableName, schemaName) {
         isMetadataLoading: false,
       });
       dispatch(mergeTable(newTable));
-      notify.error('Error occurred while fetching table metadata');
+      notify.error(t('Error occurred while fetching table metadata'));
     });
 
     url = `/superset/extra_table_metadata/${query.dbId}/${tableName}/${schemaName}/`;
@@ -306,7 +307,7 @@ export function addTable(query, tableName, schemaName) {
         isExtraMetadataLoading: false,
       });
       dispatch(mergeTable(newTable));
-      notify.error('Error occurred while fetching table metadata');
+      notify.error(t('Error occurred while fetching table metadata'));
     });
   };
 }
@@ -360,7 +361,7 @@ export function popStoredQuery(urlId) {
       success: (data) => {
         const newQuery = JSON.parse(data);
         const queryEditorProps = {
-          title: newQuery.title ? newQuery.title : 'shared query',
+          title: newQuery.title ? newQuery.title : t('shared query'),
           dbId: newQuery.dbId ? parseInt(newQuery.dbId, 10) : null,
           schema: newQuery.schema ? newQuery.schema : null,
           autorun: newQuery.autorun ? newQuery.autorun : false,
@@ -368,7 +369,7 @@ export function popStoredQuery(urlId) {
         };
         dispatch(addQueryEditor(queryEditorProps));
       },
-      error: () => notify.error("The query couldn't be loaded"),
+      error: () => notify.error(t('The query couldn\'t be loaded')),
     });
   };
 }
@@ -388,7 +389,7 @@ export function popSavedQuery(saveQueryId) {
         };
         dispatch(addQueryEditor(queryEditorProps));
       },
-      error: () => notify.error("The query couldn't be loaded"),
+      error: () => notify.error(t('The query couldn\'t be loaded')),
     });
   };
 }
@@ -421,7 +422,7 @@ export function createDatasource(vizOptions, context) {
         dispatch(createDatasourceSuccess(resp));
       },
       error: () => {
-        dispatch(createDatasourceFailed('An error occurred while creating the data source'));
+        dispatch(createDatasourceFailed(t('An error occurred while creating the data source')));
       },
     });
   };
diff --git a/superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx b/superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx
index 5491eed..66e60c9 100644
--- a/superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx
+++ b/superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import CopyToClipboard from '../../components/CopyToClipboard';
 import { storeQuery } from '../../../utils/common';
+import { t } from '../../locales';
 
 const propTypes = {
   queryEditor: PropTypes.object.isRequired,
@@ -26,10 +27,10 @@ export default class CopyQueryTabUrl extends React.PureComponent {
         inMenu
         copyNode={(
           <div>
-            <i className="fa fa-clipboard" /> <span>share query</span>
+            <i className="fa fa-clipboard" /> <span>{t('share query')}</span>
           </div>
         )}
-        tooltipText="copy URL to clipboard"
+        tooltipText={t('copy URL to clipboard')}
         shouldShowText={false}
         getText={this.getUrl.bind(this)}
       />
diff --git a/superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx b/superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx
index f7d6941..3efab4c 100644
--- a/superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx
+++ b/superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx
@@ -6,6 +6,7 @@ import sql from 'react-syntax-highlighter/dist/languages/sql';
 import github from 'react-syntax-highlighter/dist/styles/github';
 
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 
 registerLanguage('sql', sql);
 
@@ -57,7 +58,7 @@ class HighlightedSql extends React.Component {
     if (this.props.rawSql && this.props.rawSql !== this.props.sql) {
       rawSql = (
         <div>
-          <h4>Raw SQL</h4>
+          <h4>{t('Raw SQL')}</h4>
           <SyntaxHighlighter language="sql" style={github}>
             {this.props.rawSql}
           </SyntaxHighlighter>
@@ -67,7 +68,7 @@ class HighlightedSql extends React.Component {
     this.setState({
       modalBody: (
         <div>
-          <h4>Source SQL</h4>
+          <h4>{t('Source SQL')}</h4>
           <SyntaxHighlighter language="sql" style={github}>
             {this.props.sql}
           </SyntaxHighlighter>
@@ -79,7 +80,7 @@ class HighlightedSql extends React.Component {
   render() {
     return (
       <ModalTrigger
-        modalTitle="SQL"
+        modalTitle={t('SQL')}
         triggerNode={this.triggerNode()}
         modalBody={this.state.modalBody}
         beforeOpen={this.generateModal.bind(this)}
diff --git a/superset/assets/javascripts/SqlLab/components/QueryHistory.jsx b/superset/assets/javascripts/SqlLab/components/QueryHistory.jsx
index 0de35d2..442bc4c 100644
--- a/superset/assets/javascripts/SqlLab/components/QueryHistory.jsx
+++ b/superset/assets/javascripts/SqlLab/components/QueryHistory.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
 import { Alert } from 'react-bootstrap';
 
 import QueryTable from './QueryTable';
+import { t } from '../../locales';
 
 const propTypes = {
   queries: PropTypes.array.isRequired,
@@ -24,7 +25,7 @@ const QueryHistory = (props) => {
   }
   return (
     <Alert bsStyle="info">
-      No query history yet...
+      {t('No query history yet...')}
     </Alert>
   );
 };
diff --git a/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx b/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx
index 5101f09..10c1c88 100644
--- a/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx
+++ b/superset/assets/javascripts/SqlLab/components/QuerySearch.jsx
@@ -7,6 +7,7 @@ import { now, epochTimeXHoursAgo,
   epochTimeXDaysAgo, epochTimeXYearsAgo } from '../../modules/dates';
 import { STATUS_OPTIONS, TIME_OPTIONS } from '../constants';
 import AsyncSelect from '../../components/AsyncSelect';
+import { t } from '../../locales';
 
 const $ = window.$ = require('jquery');
 
@@ -102,7 +103,7 @@ class QuerySearch extends React.PureComponent {
     if (data.result.length === 0) {
       this.props.actions.addAlert({
         bsStyle: 'danger',
-        msg: "It seems you don't have access to any database",
+        msg: t('It seems you don\'t have access to any database'),
       });
     }
     return options;
@@ -150,15 +151,15 @@ class QuerySearch extends React.PureComponent {
               type="text"
               onChange={this.changeSearch.bind(this)}
               className="form-control input-sm"
-              placeholder="Search Results"
+              placeholder={t('Search Results')}
             />
           </div>
           <div className="col-sm-4 search-date-filter-container">
             <Select
               name="select-from"
-              placeholder="[From]-"
+              placeholder={t('[From]-')}
               options={TIME_OPTIONS
-                .slice(1, TIME_OPTIONS.length).map(t => ({ value: t, label: t }))}
+                .slice(1, TIME_OPTIONS.length).map(xt => ({ value: xt, label: xt }))}
               value={this.state.from}
               autosize={false}
               onChange={this.changeFrom.bind(this)}
@@ -166,8 +167,8 @@ class QuerySearch extends React.PureComponent {
 
             <Select
               name="select-to"
-              placeholder="[To]-"
-              options={TIME_OPTIONS.map(t => ({ value: t, label: t }))}
+              placeholder={t('[To]-')}
+              options={TIME_OPTIONS.map(xt => ({ value: xt, label: xt }))}
               value={this.state.to}
               autosize={false}
               onChange={this.changeTo.bind(this)}
@@ -175,7 +176,7 @@ class QuerySearch extends React.PureComponent {
 
             <Select
               name="select-status"
-              placeholder="[Query Status]"
+              placeholder={t('[Query Status]')}
               options={STATUS_OPTIONS.map(s => ({ value: s, label: s }))}
               value={this.state.status}
               isLoading={false}
@@ -184,7 +185,7 @@ class QuerySearch extends React.PureComponent {
             />
 
             <Button bsSize="small" bsStyle="success" onClick={this.refreshQueries.bind(this)}>
-              Search
+              {t('Search')}
             </Button>
           </div>
         </div>
diff --git a/superset/assets/javascripts/SqlLab/components/QueryTable.jsx b/superset/assets/javascripts/SqlLab/components/QueryTable.jsx
index 7f5f229..01d4902 100644
--- a/superset/assets/javascripts/SqlLab/components/QueryTable.jsx
+++ b/superset/assets/javascripts/SqlLab/components/QueryTable.jsx
@@ -12,6 +12,7 @@ import HighlightedSql from './HighlightedSql';
 import { fDuration } from '../../modules/dates';
 import { storeQuery } from '../../../utils/common';
 import QueryStateLabel from './QueryStateLabel';
+import { t } from '../../locales';
 
 const propTypes = {
   columns: PropTypes.array,
@@ -45,7 +46,7 @@ class QueryTable extends React.PureComponent {
   openQuery(dbId, schema, sql) {
     const newQuery = {
       dbId,
-      title: 'Untitled Query',
+      title: t('Untitled Query'),
       schema,
       sql,
     };
@@ -110,7 +111,7 @@ class QueryTable extends React.PureComponent {
             className="btn btn-link btn-xs"
             onClick={this.openQuery.bind(this, q.dbId, q.schema, q.sql)}
           >
-            <i className="fa fa-external-link" />Open in SQL Editor
+            <i className="fa fa-external-link" />{t('Open in SQL Editor')}
           </button>
         </div>
       );
@@ -129,10 +130,10 @@ class QueryTable extends React.PureComponent {
                 bsStyle="info"
                 style={{ cursor: 'pointer' }}
               >
-                view results
+                {t('view results')}
               </Label>
             )}
-            modalTitle={'Data preview'}
+            modalTitle={t('Data preview')}
             beforeOpen={this.openAsyncResults.bind(this, query)}
             onExit={this.clearQueryResults.bind(this, query)}
             modalBody={
@@ -172,24 +173,24 @@ class QueryTable extends React.PureComponent {
         <div style={{ width: '75px' }}>
           <Link
             className="fa fa-line-chart m-r-3"
-            tooltip="Visualize the data out of this query"
+            tooltip={t('Visualize the data out of this query')}
             onClick={this.showVisualizeModal.bind(this, query)}
           />
           <Link
             className="fa fa-pencil m-r-3"
             onClick={this.restoreSql.bind(this, query)}
-            tooltip="Overwrite text in editor with a query on this table"
+            tooltip={t('Overwrite text in editor with a query on this table')}
             placement="top"
           />
           <Link
             className="fa fa-plus-circle m-r-3"
             onClick={this.openQueryInNewTab.bind(this, query)}
-            tooltip="Run query in a new tab"
+            tooltip={t('Run query in a new tab')}
             placement="top"
           />
           <Link
             className="fa fa-trash m-r-3"
-            tooltip="Remove query from log"
+            tooltip={t('Remove query from log')}
             onClick={this.removeQuery.bind(this, query)}
           />
         </div>
diff --git a/superset/assets/javascripts/SqlLab/components/ResultSet.jsx b/superset/assets/javascripts/SqlLab/components/ResultSet.jsx
index b317ac3..912e623 100644
--- a/superset/assets/javascripts/SqlLab/components/ResultSet.jsx
+++ b/superset/assets/javascripts/SqlLab/components/ResultSet.jsx
@@ -7,6 +7,7 @@ import VisualizeModal from './VisualizeModal';
 import HighlightedSql from './HighlightedSql';
 import FilterableTable from '../../components/FilterableTable/FilterableTable';
 import QueryStateLabel from './QueryStateLabel';
+import { t } from '../../locales';
 
 const propTypes = {
   actions: PropTypes.object,
@@ -63,7 +64,7 @@ export default class ResultSet extends React.PureComponent {
       if (this.props.csv) {
         csvButton = (
           <Button bsSize="small" href={'/superset/csv/' + this.props.query.id}>
-            <i className="fa fa-file-text-o" /> .CSV
+            <i className="fa fa-file-text-o" /> {t('.CSV')}
           </Button>
         );
       }
@@ -74,7 +75,7 @@ export default class ResultSet extends React.PureComponent {
             bsSize="small"
             onClick={this.showModal.bind(this)}
           >
-            <i className="fa fa-line-chart m-l-1" /> Visualize
+            <i className="fa fa-line-chart m-l-1" /> {t('Visualize')}
           </Button>
         );
       }
@@ -85,7 +86,7 @@ export default class ResultSet extends React.PureComponent {
             type="text"
             onChange={this.changeSearch.bind(this)}
             className="form-control input-sm"
-            placeholder="Search Results"
+            placeholder={t('Search Results')}
           />
         );
       }
@@ -158,14 +159,14 @@ export default class ResultSet extends React.PureComponent {
       return (
         <div>
           <Alert bsStyle="info">
-            Table [<strong>{query.tempTable}</strong>] was
-            created &nbsp;
+            {t('Table')} [<strong>{query.tempTable}</strong>] {t('was ' +
+            'created')} &nbsp;
             <Button
               bsSize="small"
               className="m-r-5"
               onClick={this.popSelectStar.bind(this)}
             >
-              Query in a new tab
+              {t('Query in a new tab')}
             </Button>
           </Alert>
         </div>);
@@ -206,7 +207,7 @@ export default class ResultSet extends React.PureComponent {
           bsStyle="primary"
           onClick={this.reFetchQueryResults.bind(this, query)}
         >
-          Fetch data preview
+          {t('Fetch data preview')}
         </Button>
       );
     }
@@ -226,13 +227,13 @@ export default class ResultSet extends React.PureComponent {
           bsSize="small"
           onClick={() => { window.open(query.trackingUrl); }}
         >
-            Track Job
+          {t('Track Job')}
         </Button>
       );
     }
     return (
       <div>
-        <img className="loading" alt="Loading..." src="/static/assets/images/loading.gif" />
+        <img className="loading" alt={t('Loading...')} src="/static/assets/images/loading.gif" />
         <QueryStateLabel query={query} />
         {progressBar}
         <div>
diff --git a/superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx b/superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx
index 0b0febc..60437d3 100644
--- a/superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx
+++ b/superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import Button from '../../components/Button';
+import { t } from '../../locales';
 
 const propTypes = {
   allowAsync: PropTypes.bool.isRequired,
@@ -15,10 +16,10 @@ const defaultProps = {
 };
 
 export default function RunQueryActionButton(props) {
-  const runBtnText = props.selectedText ? 'Run Selected Query' : 'Run Query';
+  const runBtnText = props.selectedText ? t('Run Selected Query') : t('Run Query');
   const btnStyle = props.selectedText ? 'warning' : 'primary';
   const shouldShowStopBtn = ['running', 'pending'].indexOf(props.queryState) > -1;
-  const tooltip = 'shortcut: [alt+enter]';
+  const asyncToolTip = t('Run query asynchronously');
 
   const commonBtnProps = {
     bsSize: 'small',
@@ -31,7 +32,7 @@ export default function RunQueryActionButton(props) {
       {...commonBtnProps}
       onClick={() => props.runQuery(false)}
       key="run-btn"
-      tooltip={tooltip}
+      tooltip={asyncToolTip}
     >
       <i className="fa fa-refresh" /> {runBtnText}
     </Button>
@@ -42,7 +43,7 @@ export default function RunQueryActionButton(props) {
       {...commonBtnProps}
       onClick={() => props.runQuery(true)}
       key="run-async-btn"
-      tooltip={tooltip}
+      tooltip={asyncToolTip}
     >
       <i className="fa fa-table" /> {runBtnText}
     </Button>
@@ -53,7 +54,7 @@ export default function RunQueryActionButton(props) {
       {...commonBtnProps}
       onClick={props.stopQuery}
     >
-      <i className="fa fa-stop" /> Stop
+      <i className="fa fa-stop" /> {t('Stop')}
     </Button>
   );
 
diff --git a/superset/assets/javascripts/SqlLab/components/SaveQuery.jsx b/superset/assets/javascripts/SqlLab/components/SaveQuery.jsx
index e2b2de5..d932fc4 100644
--- a/superset/assets/javascripts/SqlLab/components/SaveQuery.jsx
+++ b/superset/assets/javascripts/SqlLab/components/SaveQuery.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { FormControl, FormGroup, Overlay, Popover, Row, Col } from 'react-bootstrap';
 import Button from '../../components/Button';
+import { t } from '../../locales';
 
 const propTypes = {
   defaultLabel: PropTypes.string,
@@ -12,7 +13,7 @@ const propTypes = {
   onSave: PropTypes.func,
 };
 const defaultProps = {
-  defaultLabel: 'Undefined',
+  defaultLabel: t('Undefined'),
   animation: true,
   onSave: () => {},
 };
@@ -62,12 +63,12 @@ class SaveQuery extends React.PureComponent {
             <Col md={12}>
               <small>
                 <label className="control-label" htmlFor="embed-height">
-                  Label
+                  {t('Label')}
                 </label>
               </small>
               <FormControl
                 type="text"
-                placeholder="Label for your query"
+                placeholder={t('Label for your query')}
                 value={this.state.label}
                 onChange={this.onLabelChange}
               />
@@ -77,11 +78,11 @@ class SaveQuery extends React.PureComponent {
           <Row>
             <Col md={12}>
               <small>
-                <label className="control-label" htmlFor="embed-height">Description</label>
+                <label className="control-label" htmlFor="embed-height">{t('Description')}</label>
               </small>
               <FormControl
                 componentClass="textarea"
-                placeholder="Write a description for your query"
+                placeholder={t('Write a description for your query')}
                 value={this.state.description}
                 onChange={this.onDescriptionChange}
               />
@@ -95,10 +96,10 @@ class SaveQuery extends React.PureComponent {
                 onClick={this.onSave}
                 className="m-r-3"
               >
-                Save
+                {t('Save')}
               </Button>
               <Button onClick={this.onCancel} className="cancelQuery">
-                Cancel
+                {t('Cancel')}
               </Button>
             </Col>
           </Row>
@@ -119,7 +120,7 @@ class SaveQuery extends React.PureComponent {
           {this.renderPopover()}
         </Overlay>
         <Button bsSize="small" className="toggleSave" onClick={this.toggleSave}>
-          <i className="fa fa-save" /> Save Query
+          <i className="fa fa-save" /> {t('Save Query')}
         </Button>
       </span>
     );
diff --git a/superset/assets/javascripts/SqlLab/components/SouthPane.jsx b/superset/assets/javascripts/SqlLab/components/SouthPane.jsx
index 8dfd0c1..318b0af 100644
--- a/superset/assets/javascripts/SqlLab/components/SouthPane.jsx
+++ b/superset/assets/javascripts/SqlLab/components/SouthPane.jsx
@@ -8,6 +8,7 @@ import { bindActionCreators } from 'redux';
 import * as Actions from '../actions';
 import QueryHistory from './QueryHistory';
 import ResultSet from './ResultSet';
+import { t } from '../../locales';
 
 /*
     editorQueries are queries executed by users passed from SqlEditor component
@@ -48,12 +49,12 @@ class SouthPane extends React.PureComponent {
         />
       );
     } else {
-      results = <Alert bsStyle="info">Run a query to display results here</Alert>;
+      results = <Alert bsStyle="info">{t('Run a query to display results here')}</Alert>;
     }
 
     const dataPreviewTabs = props.dataPreviewQueries.map(query => (
       <Tab
-        title={`Preview for ${query.tableName}`}
+        title={t('Preview for %s', query.tableName)}
         eventKey={query.id}
         key={query.id}
       >
@@ -77,13 +78,13 @@ class SouthPane extends React.PureComponent {
           onSelect={this.switchTab.bind(this)}
         >
           <Tab
-            title="Results"
+            title={t('Results')}
             eventKey="Results"
           >
             {results}
           </Tab>
           <Tab
-            title="Query History"
+            title={t('Query History')}
             eventKey="History"
           >
             <div style={{ height: `${innerTabHeight}px`, overflow: 'scroll' }}>
diff --git a/superset/assets/javascripts/SqlLab/components/SqlEditor.jsx b/superset/assets/javascripts/SqlLab/components/SqlEditor.jsx
index 111adc7..91fde96 100644
--- a/superset/assets/javascripts/SqlLab/components/SqlEditor.jsx
+++ b/superset/assets/javascripts/SqlLab/components/SqlEditor.jsx
@@ -22,6 +22,7 @@ import SqlEditorLeftBar from './SqlEditorLeftBar';
 import AceEditorWrapper from './AceEditorWrapper';
 import { STATE_BSSTYLE_MAP } from '../constants';
 import RunQueryActionButton from './RunQueryActionButton';
+import { t } from '../../locales';
 
 const propTypes = {
   actions: PropTypes.object.isRequired,
@@ -119,7 +120,7 @@ class SqlEditor extends React.PureComponent {
   renderEditorBottomBar() {
     let ctasControls;
     if (this.props.database && this.props.database.allow_ctas) {
-      const ctasToolTip = 'Create table as with query results';
+      const ctasToolTip = t('Create table as with query results');
       ctasControls = (
         <FormGroup>
           <InputGroup>
@@ -127,7 +128,7 @@ class SqlEditor extends React.PureComponent {
               type="text"
               bsSize="small"
               className="input-sm"
-              placeholder="new table name"
+              placeholder={t('new table name')}
               onChange={this.ctasChanged.bind(this)}
             />
             <InputGroup.Button>
diff --git a/superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx b/superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx
index cb72da6..c281f94 100644
--- a/superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx
+++ b/superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx
@@ -7,6 +7,7 @@ import createFilterOptions from 'react-select-fast-filter-options';
 
 import TableElement from './TableElement';
 import AsyncSelect from '../../components/AsyncSelect';
+import { t } from '../../locales';
 
 const $ = window.$ = require('jquery');
 
@@ -62,7 +63,7 @@ class SqlEditorLeftBar extends React.PureComponent {
     if (data.result.length === 0) {
       this.props.actions.addAlert({
         bsStyle: 'danger',
-        msg: "It seems you don't have access to any database",
+        msg: t('It seems you don\'t have access to any database'),
       });
     }
     return options;
@@ -86,7 +87,7 @@ class SqlEditorLeftBar extends React.PureComponent {
       })
       .fail(() => {
         this.setState({ tableLoading: false, tableOptions: [], tableLength: 0 });
-        notify.error('Error while fetching table list');
+        notify.error(t('Error while fetching table list'));
       });
     } else {
       this.setState({ tableLoading: false, tableOptions: [], filterOptions: null });
@@ -127,7 +128,7 @@ class SqlEditorLeftBar extends React.PureComponent {
       })
       .fail(() => {
         this.setState({ schemaLoading: false, schemaOptions: [] });
-        notify.error('Error while fetching schema list');
+        notify.error(t('Error while fetching schema list'));
       });
     }
   }
@@ -149,29 +150,29 @@ class SqlEditorLeftBar extends React.PureComponent {
               '_od_DatabaseAsync=asc'
             }
             onChange={this.onDatabaseChange.bind(this)}
-            onAsyncError={() => notify.error('Error while fetching database list')}
+            onAsyncError={() => notify.error(t('Error while fetching database list'))}
             value={this.props.queryEditor.dbId}
             databaseId={this.props.queryEditor.dbId}
             actions={this.props.actions}
             valueRenderer={o => (
               <div>
-                <span className="text-muted">Database:</span> {o.label}
+                <span className="text-muted">{t('Database:')}</span> {o.label}
               </div>
             )}
             mutator={this.dbMutator.bind(this)}
-            placeholder="Select a database"
+            placeholder={t('Select a database')}
             autoSelect
           />
         </div>
         <div className="m-t-5">
           <Select
             name="select-schema"
-            placeholder={`Select a schema (${this.state.schemaOptions.length})`}
+            placeholder={t('Select a schema (%s)', this.state.schemaOptions.length)}
             options={this.state.schemaOptions}
             value={this.props.queryEditor.schema}
             valueRenderer={o => (
               <div>
-                <span className="text-muted">Schema:</span> {o.label}
+                <span className="text-muted">{t('Schema:')}</span> {o.label}
               </div>
             )}
             isLoading={this.state.schemaLoading}
@@ -186,7 +187,7 @@ class SqlEditorLeftBar extends React.PureComponent {
               ref="selectTable"
               isLoading={this.state.tableLoading}
               value={this.state.tableName}
-              placeholder={`Add a table (${this.state.tableOptions.length})`}
+              placeholder={t('Add a table (%s)', this.state.tableOptions.length)}
               autosize={false}
               onChange={this.changeTable.bind(this)}
               filterOptions={this.state.filterOptions}
@@ -199,7 +200,7 @@ class SqlEditorLeftBar extends React.PureComponent {
               name="async-select-table"
               ref="selectTable"
               value={this.state.tableName}
-              placeholder={'Type to search ...'}
+              placeholder={t('Type to search ...')}
               autosize={false}
               onChange={this.changeTable.bind(this)}
               loadOptions={this.getTableNamesBySubStr.bind(this)}
@@ -222,7 +223,7 @@ class SqlEditorLeftBar extends React.PureComponent {
         </div>
         {shouldShowReset &&
           <Button bsSize="small" bsStyle="danger" onClick={this.resetState.bind(this)}>
-            <i className="fa fa-bomb" /> Reset State
+            <i className="fa fa-bomb" /> {t('Reset State')}
           </Button>
         }
       </div>
diff --git a/superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx b/superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx
index 73ba6bc..4f716d9 100644
--- a/superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx
+++ b/superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx
@@ -9,6 +9,7 @@ import * as Actions from '../actions';
 import SqlEditor from './SqlEditor';
 import CopyQueryTabUrl from './CopyQueryTabUrl';
 import { areArraysShallowEqual } from '../../reduxUtils';
+import { t } from '../../locales';
 
 const propTypes = {
   actions: PropTypes.object.isRequired,
@@ -101,7 +102,7 @@ class TabbedSqlEditors extends React.PureComponent {
   }
   renameTab(qe) {
     /* eslint no-alert: 0 */
-    const newTitle = prompt('Enter a new title for the tab');
+    const newTitle = prompt(t('Enter a new title for the tab'));
     if (newTitle) {
       this.props.actions.queryEditorSetTitle(qe, newTitle);
     }
@@ -120,7 +121,7 @@ class TabbedSqlEditors extends React.PureComponent {
     queryCount++;
     const activeQueryEditor = this.activeQueryEditor();
     const qe = {
-      title: `Untitled Query ${queryCount}`,
+      title: t('Untitled Query %s', queryCount),
       dbId: (activeQueryEditor && activeQueryEditor.dbId) ?
         activeQueryEditor.dbId :
         this.props.defaultDbId,
@@ -166,10 +167,10 @@ class TabbedSqlEditors extends React.PureComponent {
             title=""
           >
             <MenuItem eventKey="1" onClick={this.removeQueryEditor.bind(this, qe)}>
-              <i className="fa fa-close" /> close tab
+              <i className="fa fa-close" /> {t('close tab')}
             </MenuItem>
             <MenuItem eventKey="2" onClick={this.renameTab.bind(this, qe)}>
-              <i className="fa fa-i-cursor" /> rename tab
+              <i className="fa fa-i-cursor" /> {t('rename tab')}
             </MenuItem>
             {qe &&
               <CopyQueryTabUrl queryEditor={qe} />
@@ -177,7 +178,7 @@ class TabbedSqlEditors extends React.PureComponent {
             <MenuItem eventKey="4" onClick={this.toggleLeftBar.bind(this)}>
               <i className="fa fa-cogs" />
               &nbsp;
-              {this.state.hideLeftBar ? 'expand tool bar' : 'hide tool bar'}
+              {this.state.hideLeftBar ? t('expand tool bar') : t('hide tool bar')}
             </MenuItem>
           </DropdownButton>
         </div>
@@ -193,7 +194,7 @@ class TabbedSqlEditors extends React.PureComponent {
               {isSelected &&
                 <SqlEditor
                   height={this.props.editorHeight}
-                  tables={this.props.tables.filter(t => (t.queryEditorId === qe.id))}
+                  tables={this.props.tables.filter(xt => (xt.queryEditorId === qe.id))}
                   queryEditor={qe}
                   editorQueries={this.state.queriesArray}
                   dataPreviewQueries={this.state.dataPreviewQueries}
diff --git a/superset/assets/javascripts/SqlLab/components/TableElement.jsx b/superset/assets/javascripts/SqlLab/components/TableElement.jsx
index fc8ae0c..624a0ed 100644
--- a/superset/assets/javascripts/SqlLab/components/TableElement.jsx
+++ b/superset/assets/javascripts/SqlLab/components/TableElement.jsx
@@ -9,6 +9,7 @@ import Link from './Link';
 import ColumnElement from './ColumnElement';
 import ModalTrigger from '../../components/ModalTrigger';
 import Loading from '../../components/Loading';
+import { t } from '../../locales';
 
 const propTypes = {
   table: PropTypes.object,
@@ -71,7 +72,7 @@ class TableElement extends React.PureComponent {
       let partitionClipBoard;
       if (table.partitions.partitionQuery) {
         partitionQuery = table.partitions.partitionQuery;
-        const tt = 'Copy partition query to clipboard';
+        const tt = t('Copy partition query to clipboard');
         partitionClipBoard = (
           <CopyToClipboard
             text={partitionQuery}
@@ -90,7 +91,7 @@ class TableElement extends React.PureComponent {
         <Well bsSize="small">
           <div>
             <small>
-              latest partition: {latest}
+              {t('latest partition:')} {latest}
             </small> {partitionClipBoard}
           </div>
         </Well>
@@ -106,7 +107,7 @@ class TableElement extends React.PureComponent {
         <ModalTrigger
           modalTitle={
             <div>
-              Keys for table <strong>{table.name}</strong>
+              {t('Keys for table')} <strong>{table.name}</strong>
             </div>
           }
           modalBody={table.indexes.map((ix, i) => (
@@ -115,7 +116,7 @@ class TableElement extends React.PureComponent {
           triggerNode={
             <Link
               className="fa fa-key pull-left m-l-2"
-              tooltip={`View keys & indexes (${table.indexes.length})`}
+              tooltip={t('View keys & indexes (%s)', table.indexes.length)}
             />
           }
         />
@@ -131,8 +132,8 @@ class TableElement extends React.PureComponent {
           onClick={this.toggleSortColumns.bind(this)}
           tooltip={
             !this.state.sortColumns ?
-            'Sort columns alphabetically' :
-            'Original table column order'}
+            t('Sort columns alphabetically') :
+            t('Original table column order')}
           href="#"
         />
         {table.selectStar &&
@@ -142,13 +143,13 @@ class TableElement extends React.PureComponent {
             }
             text={table.selectStar}
             shouldShowText={false}
-            tooltipText="Copy SELECT statement to clipboard"
+            tooltipText={t('Copy SELECT statement to clipboard')}
           />
         }
         <Link
           className="fa fa-times table-remove pull-left m-l-2"
           onClick={this.removeTable.bind(this)}
-          tooltip="Remove table preview"
+          tooltip={t('Remove table preview')}
           href="#"
         />
       </ButtonGroup>
diff --git a/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx b/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx
index ff9119a..965718d 100644
--- a/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx
+++ b/superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx
@@ -13,6 +13,7 @@ import { getExploreUrl } from '../../explore/exploreUtils';
 import * as actions from '../actions';
 import { VISUALIZE_VALIDATION_ERRORS } from '../constants';
 import visTypes from '../../explore/stores/visTypes';
+import { t } from '../../locales';
 
 const CHART_TYPES = Object.keys(visTypes)
   .filter(typeName => !!visTypes[typeName].showOnExplore)
@@ -86,9 +87,9 @@ class VisualizeModal extends React.PureComponent {
       if (!re.test(colName)) {
         hints.push(
           <div>
-            "{colName}" is not right as a column name, please alias it
-            (as in SELECT count(*) <strong>AS my_alias</strong>) using only
-            alphanumeric characters and underscores
+            {t('%s is not right as a column name, please alias it ' +
+            '(as in SELECT count(*) ', colName)} <strong>{t('AS my_alias')}</strong>) {t('using only ' +
+            'alphanumeric characters and underscores')}
           </div>);
       }
     });
@@ -162,7 +163,7 @@ class VisualizeModal extends React.PureComponent {
         if (mainGroupBy) {
           formData.groupby = [mainGroupBy.name];
         }
-        notify.info('Creating a data source and popping a new tab');
+        notify.info(t('Creating a data source and popping a new tab'));
 
         window.open(getExploreUrl(formData));
       })
@@ -192,7 +193,7 @@ class VisualizeModal extends React.PureComponent {
         <div className="VisualizeModal">
           <Modal show={this.props.show} onHide={this.props.onHide}>
             <Modal.Body>
-              No results available for this query
+              {t('No results available for this query')}
             </Modal.Body>
           </Modal>
         </div>
@@ -237,17 +238,17 @@ class VisualizeModal extends React.PureComponent {
       <div className="VisualizeModal">
         <Modal show={this.props.show} onHide={this.props.onHide}>
           <Modal.Header closeButton>
-            <Modal.Title>Visualize</Modal.Title>
+            <Modal.Title>{t('Visualize')}</Modal.Title>
           </Modal.Header>
           <Modal.Body>
             {alerts}
             {this.buildVisualizeAdvise()}
             <div className="row">
               <Col md={6}>
-                Chart Type
+                {t('Chart Type')}
                 <Select
                   name="select-chart-type"
-                  placeholder="[Chart Type]"
+                  placeholder={t('[Chart Type]')}
                   options={CHART_TYPES}
                   value={(this.state.chartType) ? this.state.chartType.value : null}
                   autosize={false}
@@ -255,11 +256,11 @@ class VisualizeModal extends React.PureComponent {
                 />
               </Col>
               <Col md={6}>
-                Datasource Name
+                {t('Datasource Name')}
                 <input
                   type="text"
                   className="form-control input-sm"
-                  placeholder="datasource name"
+                  placeholder={t('datasource name')}
                   onChange={this.changeDatasourceName.bind(this)}
                   value={this.state.datasourceName}
                 />
@@ -276,7 +277,7 @@ class VisualizeModal extends React.PureComponent {
               bsStyle="primary"
               disabled={(this.state.hints.length > 0)}
             >
-              Visualize
+              {t('Visualize')}
             </Button>
           </Modal.Body>
         </Modal>
diff --git a/superset/assets/javascripts/SqlLab/constants.js b/superset/assets/javascripts/SqlLab/constants.js
index 6d67806..6af44e4 100644
--- a/superset/assets/javascripts/SqlLab/constants.js
+++ b/superset/assets/javascripts/SqlLab/constants.js
@@ -1,3 +1,5 @@
+import { t } from '../locales';
+
 export const STATE_BSSTYLE_MAP = {
   failed: 'danger',
   pending: 'info',
@@ -25,8 +27,8 @@ export const TIME_OPTIONS = [
 ];
 
 export const VISUALIZE_VALIDATION_ERRORS = {
-  REQUIRE_CHART_TYPE: 'Pick a chart type!',
-  REQUIRE_TIME: 'To use this chart type you need at least one column flagged as a date',
-  REQUIRE_DIMENSION: 'To use this chart type you need at least one dimension',
-  REQUIRE_AGGREGATION_FUNCTION: 'To use this chart type you need at least one aggregation function',
+  REQUIRE_CHART_TYPE: t('Pick a chart type!'),
+  REQUIRE_TIME: t('To use this chart type you need at least one column flagged as a date'),
+  REQUIRE_DIMENSION: t('To use this chart type you need at least one dimension'),
+  REQUIRE_AGGREGATION_FUNCTION: t('To use this chart type you need at least one aggregation function'),
 };
diff --git a/superset/assets/javascripts/SqlLab/reducers.js b/superset/assets/javascripts/SqlLab/reducers.js
index c85d27d..3a49bd1 100644
--- a/superset/assets/javascripts/SqlLab/reducers.js
+++ b/superset/assets/javascripts/SqlLab/reducers.js
@@ -3,11 +3,12 @@ import * as actions from './actions';
 import { now } from '../modules/dates';
 import { addToObject, alterInObject, alterInArr, removeFromArr, getFromArr, addToArr }
   from '../reduxUtils';
+import { t } from '../locales';
 
 export function getInitialState(defaultDbId) {
   const defaultQueryEditor = {
     id: shortid.generate(),
-    title: 'Untitled Query',
+    title: t('Untitled Query'),
     sql: 'SELECT *\nFROM\nWHERE',
     selectedText: null,
     latestQueryId: null,
@@ -40,7 +41,7 @@ export const sqlLabReducer = function (state, action) {
           qe.id === state.tabHistory[state.tabHistory.length - 1]);
       const qe = {
         id: shortid.generate(),
-        title: `Copy of ${progenitor.title}`,
+        title: t('Copy of %s', progenitor.title),
         dbId: (action.query.dbId) ? action.query.dbId : null,
         schema: (action.query.schema) ? action.query.schema : null,
         autorun: true,
@@ -76,13 +77,13 @@ export const sqlLabReducer = function (state, action) {
     [actions.MERGE_TABLE]() {
       const at = Object.assign({}, action.table);
       let existingTable;
-      state.tables.forEach((t) => {
+      state.tables.forEach((xt) => {
         if (
-            t.dbId === at.dbId &&
-            t.queryEditorId === at.queryEditorId &&
-            t.schema === at.schema &&
-            t.name === at.name) {
-          existingTable = t;
+            xt.dbId === at.dbId &&
+            xt.queryEditorId === at.queryEditorId &&
+            xt.schema === at.schema &&
+            xt.name === at.name) {
+          existingTable = xt;
         }
       });
       if (existingTable) {
@@ -115,11 +116,11 @@ export const sqlLabReducer = function (state, action) {
       delete queries[action.oldQueryId];
 
       const newTables = [];
-      state.tables.forEach((t) => {
-        if (t.dataPreviewQueryId === action.oldQueryId) {
-          newTables.push(Object.assign({}, t, { dataPreviewQueryId: action.newQuery.id }));
+      state.tables.forEach((xt) => {
+        if (xt.dataPreviewQueryId === action.oldQueryId) {
+          newTables.push(Object.assign({}, xt, { dataPreviewQueryId: action.newQuery.id }));
         } else {
-          newTables.push(t);
+          newTables.push(xt);
         }
       });
       return Object.assign(
diff --git a/superset/assets/javascripts/addSlice/AddSliceContainer.jsx b/superset/assets/javascripts/addSlice/AddSliceContainer.jsx
index c316e2c..f0fc121 100644
--- a/superset/assets/javascripts/addSlice/AddSliceContainer.jsx
+++ b/superset/assets/javascripts/addSlice/AddSliceContainer.jsx
@@ -50,30 +50,30 @@ export default class AddSliceContainer extends React.PureComponent {
   render() {
     return (
       <div className="container">
-        <Panel header={<h3>Create a new slice</h3>}>
+        <Panel header={<h3>{('Create a new slice')}</h3>}>
           <Grid>
             <Row>
               <Col xs={12} sm={6}>
                 <div>
-                  <p>Choose a datasource</p>
+                  <p>{('Choose a datasource')}</p>
                   <Select
                     clearable={false}
                     name="select-datasource"
                     onChange={this.changeDatasource.bind(this)}
                     options={this.props.datasources}
-                    placeholder="Choose a datasource"
+                    placeholder={('Choose a datasource')}
                     value={this.state.datasourceValue}
                   />
                 </div>
                 <br />
                 <div>
-                  <p>Choose a visualization type</p>
+                  <p>{('Choose a visualization type')}</p>
                   <Select
                     clearable={false}
                     name="select-vis-type"
                     onChange={this.changeVisType.bind(this)}
                     options={this.vizTypeOptions}
-                    placeholder="Choose a visualization type"
+                    placeholder={('Choose a visualization type')}
                     value={this.state.visType}
                   />
                 </div>
@@ -83,7 +83,7 @@ export default class AddSliceContainer extends React.PureComponent {
                   disabled={this.isBtnDisabled()}
                   onClick={this.gotoSlice.bind(this)}
                 >
-                  Create new slice
+                  {('Create new slice')}
                 </Button>
                 <br /><br />
               </Col>
diff --git a/superset/assets/javascripts/common.js b/superset/assets/javascripts/common.js
index 8ecfbe5..d84f064 100644
--- a/superset/assets/javascripts/common.js
+++ b/superset/assets/javascripts/common.js
@@ -10,6 +10,17 @@ $(document).ready(function () {
     const id = $this.attr('id');
     utils.toggleCheckbox(prefix, '#' + id);
   });
+
+  // for language picker dropdown
+  $('#language-picker a').click(function (ev) {
+    ev.preventDefault();
+
+    const targetUrl = ev.currentTarget.href;
+    $.ajax(targetUrl)
+      .then(() => {
+        location.reload();
+      });
+  });
 });
 
 export function appSetup() {
diff --git a/superset/assets/javascripts/components/AsyncSelect.jsx b/superset/assets/javascripts/components/AsyncSelect.jsx
index e045dc9..007281a 100644
--- a/superset/assets/javascripts/components/AsyncSelect.jsx
+++ b/superset/assets/javascripts/components/AsyncSelect.jsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import Select from 'react-select';
+import { t } from '../locales';
 
 const $ = window.$ = require('jquery');
 
@@ -16,7 +17,7 @@ const propTypes = {
 };
 
 const defaultProps = {
-  placeholder: 'Select ...',
+  placeholder: t('Select ...'),
   valueRenderer: o => (<div>{o.label}</div>),
   onAsyncError: () => {},
 };
diff --git a/superset/assets/javascripts/components/CachedLabel.jsx b/superset/assets/javascripts/components/CachedLabel.jsx
index e78e4f7..8d0c0f2 100644
--- a/superset/assets/javascripts/components/CachedLabel.jsx
+++ b/superset/assets/javascripts/components/CachedLabel.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
 import { Label } from 'react-bootstrap';
 import moment from 'moment';
 import TooltipWrapper from './TooltipWrapper';
+import { t } from '../locales';
 
 const propTypes = {
   onClick: PropTypes.func,
@@ -22,14 +23,14 @@ class CacheLabel extends React.PureComponent {
   updateTooltipContent() {
     const cachedText = this.props.cachedTimestamp ? (
       <span>
-        Loaded data cached <b>{moment.utc(this.props.cachedTimestamp).fromNow()}</b>
+        t('Loaded data cached') <b>{moment.utc(this.props.cachedTimestamp).fromNow()}</b>
       </span>) :
-      'Loaded from cache';
+      t('Loaded from cache');
 
     const tooltipContent = (
       <span>
         {cachedText}.
-        Click to force-refresh
+        {t('Click to force-refresh')}
       </span>
     );
     this.setState({ tooltipContent });
diff --git a/superset/assets/javascripts/components/CopyToClipboard.jsx b/superset/assets/javascripts/components/CopyToClipboard.jsx
index c9120b2..d00347d 100644
--- a/superset/assets/javascripts/components/CopyToClipboard.jsx
+++ b/superset/assets/javascripts/components/CopyToClipboard.jsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import { Tooltip, OverlayTrigger, MenuItem } from 'react-bootstrap';
+import { t } from '../locales';
 
 const propTypes = {
   copyNode: PropTypes.node,
@@ -17,7 +18,7 @@ const defaultProps = {
   onCopyEnd: () => {},
   shouldShowText: true,
   inMenu: false,
-  tooltipText: 'Copy to clipboard',
+  tooltipText: t('Copy to clipboard'),
 };
 
 export default class CopyToClipboard extends React.Component {
@@ -61,10 +62,10 @@ export default class CopyToClipboard extends React.Component {
     textArea.select();
     try {
       if (!document.execCommand('copy')) {
-        throw new Error('Not successful');
+        throw new Error(t('Not successful'));
       }
     } catch (err) {
-      window.alert('Sorry, your browser does not support copying. Use Ctrl / Cmd + C!'); // eslint-disable-line
+      window.alert(t('Sorry, your browser does not support copying. Use Ctrl / Cmd + C!')); // eslint-disable-line
     }
 
     document.body.removeChild(textArea);
@@ -75,7 +76,7 @@ export default class CopyToClipboard extends React.Component {
 
   tooltipText() {
     if (this.state.hasCopied) {
-      return 'Copied!';
+      return t('Copied!');
     }
     return this.props.tooltipText;
   }
diff --git a/superset/assets/javascripts/components/EditableTitle.jsx b/superset/assets/javascripts/components/EditableTitle.jsx
index 9d71388..26f4744 100644
--- a/superset/assets/javascripts/components/EditableTitle.jsx
+++ b/superset/assets/javascripts/components/EditableTitle.jsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import TooltipWrapper from './TooltipWrapper';
+import { t } from '../locales';
 
 const propTypes = {
   title: PropTypes.string,
@@ -8,7 +9,7 @@ const propTypes = {
   onSaveTitle: PropTypes.func.isRequired,
 };
 const defaultProps = {
-  title: 'Title',
+  title: t('Title'),
   canEdit: false,
 };
 
@@ -71,7 +72,7 @@ class EditableTitle extends React.PureComponent {
       <span className="editable-title">
         <TooltipWrapper
           label="title"
-          tooltip={this.props.canEdit ? 'click to edit title' : 'You don\'t have the rights to alter this title.'}
+          tooltip={this.props.canEdit ? t('click to edit title') : t('You don\'t have the rights to alter this title.')}
         >
           <input
             required
diff --git a/superset/assets/javascripts/components/FaveStar.jsx b/superset/assets/javascripts/components/FaveStar.jsx
index 8282066..e633247 100644
--- a/superset/assets/javascripts/components/FaveStar.jsx
+++ b/superset/assets/javascripts/components/FaveStar.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import cx from 'classnames';
 import TooltipWrapper from './TooltipWrapper';
+import { t } from '../locales';
 
 const propTypes = {
   sliceId: PropTypes.number.isRequired,
@@ -28,7 +29,7 @@ export default class FaveStar extends React.Component {
     return (
       <TooltipWrapper
         label="fave-unfave"
-        tooltip="Click to favorite/unfavorite"
+        tooltip={t('Click to favorite/unfavorite')}
       >
         <a
           href="#"
diff --git a/superset/assets/javascripts/dashboard/Dashboard.jsx b/superset/assets/javascripts/dashboard/Dashboard.jsx
index 8a7000e..eb471da 100644
--- a/superset/assets/javascripts/dashboard/Dashboard.jsx
+++ b/superset/assets/javascripts/dashboard/Dashboard.jsx
@@ -8,7 +8,7 @@ import GridLayout from './components/GridLayout';
 import Header from './components/Header';
 import { appSetup } from '../common';
 import AlertsWrapper from '../components/AlertsWrapper';
-
+import { t } from '../locales';
 import '../../stylesheets/dashboard.css';
 
 const superset = require('../modules/superset');
@@ -39,7 +39,7 @@ export function getInitialState(boostrapData) {
 }
 
 function unload() {
-  const message = 'You have unsaved changes.';
+  const message = t('You have unsaved changes.');
   window.event.returnValue = message; // Gecko + IE
   return message; // Gecko + Webkit, Safari, Chrome etc.
 }
@@ -56,9 +56,9 @@ function renderAlert() {
   render(
     <div className="container-fluid">
       <Alert bsStyle="warning">
-        <strong>You have unsaved changes.</strong> Click the&nbsp;
+        <strong>{t('You have unsaved changes.')}</strong> {t('Click the')} &nbsp;
         <i className="fa fa-save" />&nbsp;
-        button on the top right to save your changes.
+        {t('button on the top right to save your changes.')}
       </Alert>
     </div>,
     document.getElementById('alert-container'),
@@ -161,13 +161,12 @@ export function dashboardContainer(dashboard, datasources, userid) {
         .addClass('danger')
         .attr(
           'title',
-          `Served from data cached ${cachedWhen}. ` +
-          'Click to force refresh')
+          t('Served from data cached %s . Click to force refresh.', cachedWhen))
         .tooltip('fixTitle');
       } else {
         refresh
         .removeClass('danger')
-        .attr('title', 'Click to force refresh')
+        .attr('title', t('Click to force refresh'))
         .tooltip('fixTitle');
       }
     },
@@ -351,8 +350,8 @@ export function dashboardContainer(dashboard, datasources, userid) {
         error(error) {
           const errorMsg = getAjaxErrorMsg(error);
           utils.showModal({
-            title: 'Error',
-            body: 'Sorry, there was an error adding slices to this dashboard: ' + errorMsg,
+            title: t('Error'),
+            body: t('Sorry, there was an error adding slices to this dashboard: %s', errorMsg),
           });
         },
       });
diff --git a/superset/assets/javascripts/dashboard/components/CodeModal.jsx b/superset/assets/javascripts/dashboard/components/CodeModal.jsx
index 77f2daf..f9c1535 100644
--- a/superset/assets/javascripts/dashboard/components/CodeModal.jsx
+++ b/superset/assets/javascripts/dashboard/components/CodeModal.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 
 const propTypes = {
   triggerNode: PropTypes.node.isRequired,
@@ -31,7 +32,7 @@ export default class CodeModal extends React.PureComponent {
         triggerNode={this.props.triggerNode}
         isButton
         beforeOpen={this.beforeOpen.bind(this)}
-        modalTitle="Active Dashboard Filters"
+        modalTitle={t('Active Dashboard Filters')}
         modalBody={
           <div className="CodeModal">
             <pre>
diff --git a/superset/assets/javascripts/dashboard/components/Controls.jsx b/superset/assets/javascripts/dashboard/components/Controls.jsx
index 1169642..e18c270 100644
--- a/superset/assets/javascripts/dashboard/components/Controls.jsx
+++ b/superset/assets/javascripts/dashboard/components/Controls.jsx
@@ -8,6 +8,7 @@ import RefreshIntervalModal from './RefreshIntervalModal';
 import SaveModal from './SaveModal';
 import CodeModal from './CodeModal';
 import SliceAdder from './SliceAdder';
+import { t } from '../../locales';
 
 const $ = window.$ = require('jquery');
 
@@ -44,13 +45,13 @@ class Controls extends React.PureComponent {
   }
   render() {
     const dashboard = this.props.dashboard;
-    const emailBody = `Checkout this dashboard: ${window.location.href}`;
+    const emailBody = t('Checkout this dashboard: %s', window.location.href);
     const emailLink = 'mailto:?Subject=Superset%20Dashboard%20'
       + `${dashboard.dashboard_title}&Body=${emailBody}`;
     return (
       <ButtonGroup>
         <Button
-          tooltip="Force refresh the whole dashboard"
+          tooltip={t('Force refresh the whole dashboard')}
           onClick={this.refresh.bind(this)}
         >
           <i className="fa fa-refresh" />
@@ -90,7 +91,7 @@ class Controls extends React.PureComponent {
           onClick={() => {
             window.location = `/dashboardmodelview/edit/${dashboard.id}`;
           }}
-          tooltip="Edit this dashboard's properties"
+          tooltip={t('Edit this dashboard\'s properties')}
         >
           <i className="fa fa-edit" />
         </Button>
diff --git a/superset/assets/javascripts/dashboard/components/CssEditor.jsx b/superset/assets/javascripts/dashboard/components/CssEditor.jsx
index b77ab9d..bbcc19f 100644
--- a/superset/assets/javascripts/dashboard/components/CssEditor.jsx
+++ b/superset/assets/javascripts/dashboard/components/CssEditor.jsx
@@ -7,6 +7,7 @@ import 'brace/mode/css';
 import 'brace/theme/github';
 
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 
 const propTypes = {
   initialCss: PropTypes.string,
@@ -61,10 +62,10 @@ class CssEditor extends React.PureComponent {
     if (this.props.templates) {
       return (
         <div style={{ zIndex: 10 }}>
-          <h5>Load a template</h5>
+          <h5>{t('Load a template')}</h5>
           <Select
             options={this.props.templates}
-            placeholder="Load a CSS template"
+            placeholder={t('Load a CSS template')}
             onChange={this.changeCssTemplate.bind(this)}
           />
         </div>
@@ -76,13 +77,13 @@ class CssEditor extends React.PureComponent {
     return (
       <ModalTrigger
         triggerNode={this.props.triggerNode}
-        modalTitle="CSS"
+        modalTitle={t('CSS')}
         isButton
         modalBody={
           <div>
             {this.renderTemplateSelector()}
             <div style={{ zIndex: 1 }}>
-              <h5>Live CSS Editor</h5>
+              <h5>{t('Live CSS Editor')}</h5>
               <div style={{ border: 'solid 1px grey' }}>
                 <AceEditor
                   mode="css"
diff --git a/superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx b/superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx
index d392c98..e927e63 100644
--- a/superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx
+++ b/superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import Select from 'react-select';
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 
 const propTypes = {
   triggerNode: PropTypes.node.isRequired,
@@ -15,11 +16,11 @@ const defaultProps = {
 };
 
 const options = [
-  [0, "Don't refresh"],
-  [10, '10 seconds'],
-  [30, '30 seconds'],
-  [60, '1 minute'],
-  [300, '5 minutes'],
+  [0, t('Don\'t refresh')],
+  [10, t('10 seconds')],
+  [30, t('30 seconds')],
+  [60, t('1 minute')],
+  [300, t('5 minutes')],
 ].map(o => ({ value: o[0], label: o[1] }));
 
 class RefreshIntervalModal extends React.PureComponent {
@@ -34,10 +35,10 @@ class RefreshIntervalModal extends React.PureComponent {
       <ModalTrigger
         triggerNode={this.props.triggerNode}
         isButton
-        modalTitle="Refresh Interval"
+        modalTitle={t('Refresh Interval')}
         modalBody={
           <div>
-            Choose the refresh frequency for this dashboard
+            {t('Choose the refresh frequency for this dashboard')}
             <Select
               options={options}
               value={this.state.refreshFrequency}
diff --git a/superset/assets/javascripts/dashboard/components/SaveModal.jsx b/superset/assets/javascripts/dashboard/components/SaveModal.jsx
index ccf8f90..f35eb63 100644
--- a/superset/assets/javascripts/dashboard/components/SaveModal.jsx
+++ b/superset/assets/javascripts/dashboard/components/SaveModal.jsx
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
 import { Button, FormControl, FormGroup, Radio } from 'react-bootstrap';
 import { getAjaxErrorMsg } from '../../modules/utils';
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 import Checkbox from '../../components/Checkbox';
 
 const $ = window.$ = require('jquery');
@@ -59,13 +60,13 @@ class SaveModal extends React.PureComponent {
         if (saveType === 'newDashboard') {
           window.location = `/superset/dashboard/${resp.id}/`;
         } else {
-          notify.success('This dashboard was saved successfully.');
+          notify.success(t('This dashboard was saved successfully.'));
         }
       },
       error(error) {
         saveModal.close();
         const errorMsg = getAjaxErrorMsg(error);
-        notify.error('Sorry, there was an error saving this dashboard: </ br>' + errorMsg);
+        notify.error(t('Sorry, there was an error saving this dashboard: ') + '</ br>' + errorMsg);
       },
     });
   }
@@ -96,8 +97,8 @@ class SaveModal extends React.PureComponent {
       if (!newDashboardTitle) {
         this.modal.close();
         showModal({
-          title: 'Error',
-          body: 'You must pick a name for the new dashboard',
+          title: t('Error'),
+          body: t('You must pick a name for the new dashboard'),
         });
       } else {
         data.dashboard_title = newDashboardTitle;
@@ -111,7 +112,7 @@ class SaveModal extends React.PureComponent {
       <ModalTrigger
         ref={(modal) => { this.modal = modal; }}
         triggerNode={this.props.triggerNode}
-        modalTitle="Save Dashboard"
+        modalTitle={t('Save Dashboard')}
         modalBody={
           <FormGroup>
             <Radio
@@ -119,7 +120,7 @@ class SaveModal extends React.PureComponent {
               onChange={this.handleSaveTypeChange}
               checked={this.state.saveType === 'overwrite'}
             >
-              Overwrite Dashboard [{this.props.dashboard.dashboard_title}]
+              {t('Overwrite Dashboard [%s]', this.props.dashboard.dashboard_title)}
             </Radio>
             <hr />
             <Radio
@@ -127,11 +128,11 @@ class SaveModal extends React.PureComponent {
               onChange={this.handleSaveTypeChange}
               checked={this.state.saveType === 'newDashboard'}
             >
-              Save as:
+              {t('Save as:')}
             </Radio>
             <FormControl
               type="text"
-              placeholder="[dashboard name]"
+              placeholder={t('[dashboard name]')}
               value={this.state.newDashName}
               onFocus={this.handleNameChange}
               onChange={this.handleNameChange}
@@ -151,7 +152,7 @@ class SaveModal extends React.PureComponent {
               bsStyle="primary"
               onClick={() => { this.saveDashboard(this.state.saveType, this.state.newDashName); }}
             >
-              Save
+              {t('Save')}
             </Button>
           </div>
         }
diff --git a/superset/assets/javascripts/dashboard/components/SliceAdder.jsx b/superset/assets/javascripts/dashboard/components/SliceAdder.jsx
index 9d8965c..4c5f462 100644
--- a/superset/assets/javascripts/dashboard/components/SliceAdder.jsx
+++ b/superset/assets/javascripts/dashboard/components/SliceAdder.jsx
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
 import { BootstrapTable, TableHeaderColumn } from 'react-bootstrap-table';
 
 import ModalTrigger from '../../components/ModalTrigger';
+import { t } from '../../locales';
 
 require('react-bootstrap-table/css/react-bootstrap-table.css');
 
@@ -138,13 +139,13 @@ class SliceAdder extends React.Component {
               dataField="sliceName"
               dataSort
             >
-              Name
+              {t('Name')}
             </TableHeaderColumn>
             <TableHeaderColumn
               dataField="vizType"
               dataSort
             >
-              Viz
+              {t('Viz')}
             </TableHeaderColumn>
             <TableHeaderColumn
               dataField="modified"
@@ -153,7 +154,7 @@ class SliceAdder extends React.Component {
               // Will cause react-bootstrap-table to interpret the HTML returned
               dataFormat={modified => modified}
             >
-              Modified
+              {t('Modified')}
             </TableHeaderColumn>
           </BootstrapTable>
           <button
@@ -163,7 +164,7 @@ class SliceAdder extends React.Component {
             onClick={this.addSlices}
             disabled={!enableAddSlice}
           >
-            Add Slices
+            {t('Add Slices')}
           </button>
         </div>
       </div>
@@ -172,12 +173,12 @@ class SliceAdder extends React.Component {
     return (
       <ModalTrigger
         triggerNode={this.props.triggerNode}
-        tooltip="Add a new slice to the dashboard"
+        tooltip={t('Add a new slice to the dashboard')}
         beforeOpen={this.onEnterModal.bind(this)}
         isButton
         modalBody={modalContent}
         bsSize="large"
-        modalTitle="Add Slices to Dashboard"
+        modalTitle={t('Add Slices to Dashboard')}
       />
     );
   }
diff --git a/superset/assets/javascripts/dashboard/components/SliceCell.jsx b/superset/assets/javascripts/dashboard/components/SliceCell.jsx
index 0a17903..3cd1334 100644
--- a/superset/assets/javascripts/dashboard/components/SliceCell.jsx
+++ b/superset/assets/javascripts/dashboard/components/SliceCell.jsx
@@ -2,6 +2,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 
+import { t } from '../../locales';
 import { getExploreUrl } from '../../explore/exploreUtils';
 
 const propTypes = {
@@ -20,14 +21,14 @@ function SliceCell({ expandedSlices, removeSlice, slice }) {
           </div>
           <div className="col-md-12 chart-controls">
             <div id={'controls_' + slice.slice_id} className="pull-right">
-              <a title="Move chart" data-toggle="tooltip">
+              <a title={t('Move chart')} data-toggle="tooltip">
                 <i className="fa fa-arrows drag" />
               </a>
-              <a className="refresh" title="Force refresh data" data-toggle="tooltip">
+              <a className="refresh" title={t('Force refresh data')} data-toggle="tooltip">
                 <i className="fa fa-repeat" />
               </a>
               {slice.description &&
-                <a title="Toggle chart description">
+                <a title={t('Toggle chart description')}>
                   <i
                     className="fa fa-info-circle slice_info"
                     title={slice.description}
@@ -37,7 +38,7 @@ function SliceCell({ expandedSlices, removeSlice, slice }) {
               }
               <a
                 href={slice.edit_url}
-                title="Edit chart"
+                title={t('Edit chart')}
                 data-toggle="tooltip"
               >
                 <i className="fa fa-pencil" />
@@ -45,7 +46,7 @@ function SliceCell({ expandedSlices, removeSlice, slice }) {
               <a
                 className="exportCSV"
                 href={getExploreUrl(slice.form_data, 'csv')}
-                title="Export CSV"
+                title={t('Export CSV')}
                 data-toggle="tooltip"
               >
                 <i className="fa fa-table" />
@@ -53,14 +54,14 @@ function SliceCell({ expandedSlices, removeSlice, slice }) {
               <a
                 className="exploreChart"
                 href={getExploreUrl(slice.form_data)}
-                title="Explore chart"
+                title={t('Explore chart')}
                 data-toggle="tooltip"
               >
                 <i className="fa fa-share" />
               </a>
               <a
                 className="remove-chart"
-                title="Remove chart from dashboard"
+                title={t('Remove chart from dashboard')}
                 data-toggle="tooltip"
               >
                 <i
diff --git a/superset/assets/javascripts/explore/components/ChartContainer.jsx b/superset/assets/javascripts/explore/components/ChartContainer.jsx
index 1dc1345..2d0830d 100644
--- a/superset/assets/javascripts/explore/components/ChartContainer.jsx
+++ b/superset/assets/javascripts/explore/components/ChartContainer.jsx
@@ -14,6 +14,7 @@ import Timer from '../../components/Timer';
 import { getExploreUrl } from '../exploreUtils';
 import { getFormDataFromControls } from '../stores/store';
 import CachedLabel from '../../components/CachedLabel';
+import { t } from '../../locales';
 
 const CHART_STATUS_MAP = {
   failed: 'danger',
@@ -169,7 +170,7 @@ class ChartContainer extends React.PureComponent {
     if (this.props.slice) {
       title = this.props.slice.slice_name;
     } else {
-      title = `[${this.props.table_name}] - untitled`;
+      title = t('%s - untitled', this.props.table_name);
     }
     return title;
   }
@@ -276,7 +277,7 @@ class ChartContainer extends React.PureComponent {
 
                   <TooltipWrapper
                     label="edit-desc"
-                    tooltip="Edit slice properties"
+                    tooltip={t('Edit slice properties')}
                   >
                     <a
                       className="edit-desc-icon"
diff --git a/superset/assets/javascripts/explore/components/ControlHeader.jsx b/superset/assets/javascripts/explore/components/ControlHeader.jsx
index a79d287..842df1e 100644
--- a/superset/assets/javascripts/explore/components/ControlHeader.jsx
+++ b/superset/assets/javascripts/explore/components/ControlHeader.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { ControlLabel, OverlayTrigger, Tooltip } from 'react-bootstrap';
 import InfoTooltipWithTrigger from '../../components/InfoTooltipWithTrigger';
+import { t } from '../../locales';
 
 const propTypes = {
   label: PropTypes.string.isRequired,
@@ -28,7 +29,7 @@ export default class ControlHeader extends React.Component {
           {this.props.description &&
             <span>
               <InfoTooltipWithTrigger
-                label="descr"
+                label={t('description')}
                 tooltip={this.props.description}
                 placement="top"
               />
@@ -38,7 +39,7 @@ export default class ControlHeader extends React.Component {
           {this.props.renderTrigger &&
             <span>
               <InfoTooltipWithTrigger
-                label="bolt"
+                label={t('bolt')}
                 tooltip={this.props.description}
                 placement="top"
                 icon="bolt"
diff --git a/superset/assets/javascripts/explore/components/ControlPanelsContainer.jsx b/superset/assets/javascripts/explore/components/ControlPanelsContainer.jsx
index 198529a..915a04f 100644
--- a/superset/assets/javascripts/explore/components/ControlPanelsContainer.jsx
+++ b/superset/assets/javascripts/explore/components/ControlPanelsContainer.jsx
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
 import { bindActionCreators } from 'redux';
 import { connect } from 'react-redux';
 import { Alert } from 'react-bootstrap';
-import { sectionsToRender, visTypes } from '../stores/visTypes';
+import visTypes, { sectionsToRender } from '../stores/visTypes';
 import ControlPanelSection from './ControlPanelSection';
 import ControlRow from './ControlRow';
 import Control from './Control';
diff --git a/superset/assets/javascripts/explore/components/DisplayQueryButton.jsx b/superset/assets/javascripts/explore/components/DisplayQueryButton.jsx
index 1e27cb7..6c0a73a 100644
--- a/superset/assets/javascripts/explore/components/DisplayQueryButton.jsx
+++ b/superset/assets/javascripts/explore/components/DisplayQueryButton.jsx
@@ -6,6 +6,7 @@ import markdown from 'react-syntax-highlighter/dist/languages/markdown';
 import github from 'react-syntax-highlighter/dist/styles/github';
 
 import ModalTrigger from './../../components/ModalTrigger';
+import { t } from '../../locales';
 
 registerLanguage('markdown', markdown);
 registerLanguage('html', html);
@@ -57,7 +58,7 @@ export default class DisplayQueryButton extends React.PureComponent {
       },
       error: (data) => {
         this.setState({
-          error: data.responseJSON ? data.responseJSON.error : 'Error...',
+          error: data.responseJSON ? data.responseJSON.error : t('Error...'),
           isLoading: false,
         });
       },
@@ -93,7 +94,7 @@ export default class DisplayQueryButton extends React.PureComponent {
         animation={this.props.animation}
         isButton
         triggerNode={<span>Query</span>}
-        modalTitle="Query"
+        modalTitle={t('Query')}
         bsSize="large"
         beforeOpen={this.beforeOpen}
         modalBody={this.renderModalBody()}
diff --git a/superset/assets/javascripts/explore/components/EmbedCodeButton.jsx b/superset/assets/javascripts/explore/components/EmbedCodeButton.jsx
index 4de5d94..c5615dc 100644
--- a/superset/assets/javascripts/explore/components/EmbedCodeButton.jsx
+++ b/superset/assets/javascripts/explore/components/EmbedCodeButton.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { Popover, OverlayTrigger } from 'react-bootstrap';
 import CopyToClipboard from './../../components/CopyToClipboard';
+import { t } from '../../locales';
 
 const propTypes = {
   slice: PropTypes.object.isRequired,
@@ -63,7 +64,7 @@ export default class EmbedCodeButton extends React.Component {
               <CopyToClipboard
                 shouldShowText={false}
                 text={html}
-                copyNode={<i className="fa fa-clipboard" title="Copy to clipboard" />}
+                copyNode={<i className="fa fa-clipboard" title={t('Copy to clipboard')} />}
               />
             </div>
           </div>
@@ -72,7 +73,7 @@ export default class EmbedCodeButton extends React.Component {
             <div className="col-md-6 col-sm-12">
               <div className="form-group">
                 <small>
-                  <label className="control-label" htmlFor="embed-height">Height</label>
+                  <label className="control-label" htmlFor="embed-height">t('Height')</label>
                 </small>
                 <input
                   className="form-control input-sm"
@@ -86,7 +87,7 @@ export default class EmbedCodeButton extends React.Component {
             <div className="col-md-6 col-sm-12">
               <div className="form-group">
                 <small>
-                  <label className="control-label" htmlFor="embed-width">Width</label>
+                  <label className="control-label" htmlFor="embed-width">t('Width')</label>
                 </small>
                 <input
                   className="form-control input-sm"
diff --git a/superset/assets/javascripts/explore/components/ExploreActionButtons.jsx b/superset/assets/javascripts/explore/components/ExploreActionButtons.jsx
index 249a701..57f2dfd 100644
--- a/superset/assets/javascripts/explore/components/ExploreActionButtons.jsx
+++ b/superset/assets/javascripts/explore/components/ExploreActionButtons.jsx
@@ -4,6 +4,7 @@ import cx from 'classnames';
 import URLShortLinkButton from './URLShortLinkButton';
 import EmbedCodeButton from './EmbedCodeButton';
 import DisplayQueryButton from './DisplayQueryButton';
+import { t } from '../../locales';
 
 const propTypes = {
   canDownload: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).isRequired,
@@ -28,7 +29,7 @@ export default function ExploreActionButtons({
         <a
           href={slice.data.json_endpoint}
           className="btn btn-default btn-sm"
-          title="Export to .json"
+          title={t('Export to .json')}
           target="_blank"
           rel="noopener noreferrer"
         >
@@ -38,7 +39,7 @@ export default function ExploreActionButtons({
         <a
           href={slice.data.csv_endpoint}
           className={exportToCSVClasses}
-          title="Export to .csv format"
+          title={t('Export to .csv format')}
           target="_blank"
           rel="noopener noreferrer"
         >
diff --git a/superset/assets/javascripts/explore/components/SaveModal.jsx b/superset/assets/javascripts/explore/components/SaveModal.jsx
index 45f5ac1..ac76e3a 100644
--- a/superset/assets/javascripts/explore/components/SaveModal.jsx
+++ b/superset/assets/javascripts/explore/components/SaveModal.jsx
@@ -6,6 +6,7 @@ import { connect } from 'react-redux';
 import { Modal, Alert, Button, Radio } from 'react-bootstrap';
 import Select from 'react-select';
 import { getExploreUrl } from '../exploreUtils';
+import { t } from '../../locales';
 
 const propTypes = {
   can_overwrite: PropTypes.bool,
@@ -70,7 +71,7 @@ class SaveModal extends React.Component {
     if (sliceParams.action === 'saveas') {
       sliceName = this.state.newSliceName;
       if (sliceName === '') {
-        this.setState({ alert: 'Please enter a slice name' });
+        this.setState({ alert: t('Please enter a slice name') });
         return;
       }
       sliceParams.slice_name = sliceName;
@@ -85,7 +86,7 @@ class SaveModal extends React.Component {
       case ('existing'):
         dashboard = this.state.saveToDashboardId;
         if (!dashboard) {
-          this.setState({ alert: 'Please select a dashboard' });
+          this.setState({ alert: t('Please select a dashboard') });
           return;
         }
         sliceParams.save_to_dashboard_id = dashboard;
@@ -93,7 +94,7 @@ class SaveModal extends React.Component {
       case ('new'):
         dashboard = this.state.newDashboardName;
         if (dashboard === '') {
-          this.setState({ alert: 'Please enter a dashboard name' });
+          this.setState({ alert: t('Please enter a dashboard name') });
           return;
         }
         sliceParams.new_dashboard_name = dashboard;
@@ -126,7 +127,7 @@ class SaveModal extends React.Component {
       >
         <Modal.Header closeButton>
           <Modal.Title>
-            Save A Slice
+            {t('Save A Slice')}
           </Modal.Title>
         </Modal.Header>
         <Modal.Body>
@@ -147,7 +148,7 @@ class SaveModal extends React.Component {
               checked={this.state.action === 'overwrite'}
               onChange={this.changeAction.bind(this, 'overwrite')}
             >
-              {`Overwrite slice ${this.props.slice.slice_name}`}
+              {t('Overwrite slice %s', this.props.slice.slice_name)}
             </Radio>
           }
 
@@ -156,11 +157,11 @@ class SaveModal extends React.Component {
             inline
             checked={this.state.action === 'saveas'}
             onChange={this.changeAction.bind(this, 'saveas')}
-          > Save as &nbsp;
+          > {t('Save as')} &nbsp;
           </Radio>
           <input
             name="new_slice_name"
-            placeholder="[slice name]"
+            placeholder={t('[slice name]')}
             onChange={this.onChange.bind(this, 'newSliceName')}
             onFocus={this.changeAction.bind(this, 'saveas')}
           />
@@ -173,7 +174,7 @@ class SaveModal extends React.Component {
             checked={this.state.addToDash === 'noSave'}
             onChange={this.changeDash.bind(this, 'noSave')}
           >
-          Do not add to a dashboard
+            {t('Do not add to a dashboard')}
           </Radio>
 
           <Radio
@@ -181,7 +182,7 @@ class SaveModal extends React.Component {
             checked={this.state.addToDash === 'existing'}
             onChange={this.changeDash.bind(this, 'existing')}
           >
-          Add slice to existing dashboard
+            {t('Add slice to existing dashboard')}
           </Radio>
           <Select
             options={this.props.dashboards}
@@ -196,13 +197,14 @@ class SaveModal extends React.Component {
             checked={this.state.addToDash === 'new'}
             onChange={this.changeDash.bind(this, 'new')}
           >
-          Add to new dashboard &nbsp;
+            {t('Add to new dashboard')} &nbsp;
           </Radio>
           <input
             onChange={this.onChange.bind(this, 'newDashboardName')}
             onFocus={this.changeDash.bind(this, 'new')}
-            placeholder="[dashboard name]"
+            placeholder={t('[dashboard name]')}
           />
+
         </Modal.Body>
 
         <Modal.Footer>
@@ -212,7 +214,7 @@ class SaveModal extends React.Component {
             className="btn pull-left"
             onClick={this.saveOrOverwrite.bind(this, false)}
           >
-            Save
+            {t('Save')}
           </Button>
           <Button
             type="button"
@@ -221,7 +223,7 @@ class SaveModal extends React.Component {
             disabled={this.state.addToDash === 'noSave'}
             onClick={this.saveOrOverwrite.bind(this, true)}
           >
-            Save & go to dashboard
+            {t('Save & go to dashboard')}
           </Button>
         </Modal.Footer>
       </Modal>
diff --git a/superset/assets/javascripts/explore/components/URLShortLinkButton.jsx b/superset/assets/javascripts/explore/components/URLShortLinkButton.jsx
index 4dbf0f1..ddae9a2 100644
--- a/superset/assets/javascripts/explore/components/URLShortLinkButton.jsx
+++ b/superset/assets/javascripts/explore/components/URLShortLinkButton.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
 import { Popover, OverlayTrigger } from 'react-bootstrap';
 import CopyToClipboard from './../../components/CopyToClipboard';
 import { getShortUrl } from '../../../utils/common';
+import { t } from '../../locales';
 
 const propTypes = {
   slice: PropTypes.object.isRequired,
@@ -28,12 +29,12 @@ export default class URLShortLinkButton extends React.Component {
   }
 
   renderPopover() {
-    const emailBody = `Check out this slice: ${this.state.shortUrl}`;
+    const emailBody = t('Check out this slice: %s', this.state.shortUrl);
     return (
       <Popover id="shorturl-popover">
         <CopyToClipboard
           text={this.state.shortUrl}
-          copyNode={<i className="fa fa-clipboard" title="Copy to clipboard" />}
+          copyNode={<i className="fa fa-clipboard" title={t('Copy to clipboard')} />}
         />
         &nbsp;&nbsp;
         <a href={`mailto:?Subject=Superset%20Slice%20&Body=${emailBody}`}>
diff --git a/superset/assets/javascripts/explore/components/controls/BoundsControl.jsx b/superset/assets/javascripts/explore/components/controls/BoundsControl.jsx
index 313ab93..776f7a4 100644
--- a/superset/assets/javascripts/explore/components/controls/BoundsControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/BoundsControl.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { Col, Row, FormGroup, FormControl } from 'react-bootstrap';
 import ControlHeader from '../ControlHeader';
+import { t } from '../../../locales';
 
 const propTypes = {
   name: PropTypes.string.isRequired,
@@ -51,10 +52,10 @@ export default class BoundsControl extends React.Component {
     const mm = this.state.minMax;
     const errors = [];
     if (mm[0] && isNaN(mm[0])) {
-      errors.push('`Min` value should be numeric or empty');
+      errors.push(t('`Min` value should be numeric or empty'));
     }
     if (mm[1] && isNaN(mm[1])) {
-      errors.push('`Max` value should be numeric or empty');
+      errors.push(t('`Max` value should be numeric or empty'));
     }
     if (errors.length === 0) {
       this.props.onChange([parseFloat(mm[0]), parseFloat(mm[1])], errors);
@@ -71,7 +72,7 @@ export default class BoundsControl extends React.Component {
             <Col xs={6}>
               <FormControl
                 type="text"
-                placeholder="Min"
+                placeholder={t('Min')}
                 onChange={this.onMinChange}
                 value={this.state.minMax[0]}
               />
@@ -79,7 +80,7 @@ export default class BoundsControl extends React.Component {
             <Col xs={6}>
               <FormControl
                 type="text"
-                placeholder="Max"
+                placeholder={t('Max')}
                 onChange={this.onMaxChange}
                 value={this.state.minMax[1]}
               />
diff --git a/superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx b/superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx
index b00fe3f..eb7a633 100644
--- a/superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx
@@ -5,6 +5,7 @@ import { Table } from 'reactable';
 import { Label, FormControl, Modal, OverlayTrigger, Tooltip } from 'react-bootstrap';
 
 import ControlHeader from '../ControlHeader';
+import { t } from '../../../locales';
 
 const propTypes = {
   description: PropTypes.string,
@@ -66,7 +67,7 @@ export default class DatasourceControl extends React.PureComponent {
         },
         error() {
           that.setState({ loading: false });
-          notify.error('Something went wrong while fetching the datasource list');
+          notify.error(t('Something went wrong while fetching the datasource list'));
         },
       });
     }
@@ -91,7 +92,7 @@ export default class DatasourceControl extends React.PureComponent {
         <OverlayTrigger
           placement="right"
           overlay={
-            <Tooltip id={'error-tooltip'}>Click to point to another datasource</Tooltip>
+            <Tooltip id={'error-tooltip'}>{t('Click to point to another datasource')}</Tooltip>
           }
         >
           <Label onClick={this.toggleModal} style={{ cursor: 'pointer' }} className="m-r-5">
@@ -102,7 +103,7 @@ export default class DatasourceControl extends React.PureComponent {
           placement="right"
           overlay={
             <Tooltip id={'edit-datasource-tooltip'}>
-              Edit the datasource's configuration
+              {t('Edit the datasource\'s configuration')}
             </Tooltip>
           }
         >
@@ -118,7 +119,7 @@ export default class DatasourceControl extends React.PureComponent {
           bsSize="lg"
         >
           <Modal.Header closeButton>
-            <Modal.Title>Select a datasource</Modal.Title>
+            <Modal.Title>{t('Select a datasource')}</Modal.Title>
           </Modal.Header>
           <Modal.Body>
             <div>
@@ -128,7 +129,7 @@ export default class DatasourceControl extends React.PureComponent {
                 type="text"
                 bsSize="sm"
                 value={this.state.filter}
-                placeholder="Search / Filter"
+                placeholder={t('Search / Filter')}
                 onChange={this.changeSearch}
               />
             </div>
diff --git a/superset/assets/javascripts/explore/components/controls/Filter.jsx b/superset/assets/javascripts/explore/components/controls/Filter.jsx
index ffd114c..24b9d2f 100644
--- a/superset/assets/javascripts/explore/components/controls/Filter.jsx
+++ b/superset/assets/javascripts/explore/components/controls/Filter.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
 import Select from 'react-select';
 import { Button, Row, Col } from 'react-bootstrap';
 import SelectControl from './SelectControl';
+import { t } from '../../../locales';
 
 const operatorsArr = [
   { val: 'in', type: 'array', useSelect: true, multi: true },
@@ -110,7 +111,7 @@ export default class Filter extends React.Component {
         onChange={this.changeText.bind(this)}
         value={filter.val}
         className="form-control input-sm"
-        placeholder="Filter value"
+        placeholder={t('Filter value')}
       />
     );
   }
@@ -139,7 +140,7 @@ export default class Filter extends React.Component {
           <Col md={12}>
             <Select
               id="select-col"
-              placeholder={this.props.having ? 'Select metric' : 'Select column'}
+              placeholder={this.props.having ? t('Select metric') : t('Select column')}
               clearable={false}
               options={colChoices}
               value={filter.col}
@@ -151,7 +152,7 @@ export default class Filter extends React.Component {
           <Col md={3}>
             <Select
               id="select-op"
-              placeholder="Select operator"
+              placeholder={t('Select operator')}
               options={opsChoices}
               clearable={false}
               value={filter.op}
diff --git a/superset/assets/javascripts/explore/components/controls/FilterControl.jsx b/superset/assets/javascripts/explore/components/controls/FilterControl.jsx
index 9e51601..80f43ca 100644
--- a/superset/assets/javascripts/explore/components/controls/FilterControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/FilterControl.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { Button, Row, Col } from 'react-bootstrap';
 import Filter from './Filter';
+import { t } from '../../../locales';
 
 const $ = window.$ = require('jquery');
 
@@ -134,7 +135,7 @@ export default class FilterControl extends React.Component {
               bsSize="sm"
               onClick={this.addFilter.bind(this)}
             >
-              <i className="fa fa-plus" /> &nbsp; Add Filter
+              <i className="fa fa-plus" /> &nbsp; {t('Add Filter')}
             </Button>
           </Col>
         </Row>
diff --git a/superset/assets/javascripts/explore/components/controls/SelectControl.jsx b/superset/assets/javascripts/explore/components/controls/SelectControl.jsx
index 312fced..4c72b5d 100644
--- a/superset/assets/javascripts/explore/components/controls/SelectControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/SelectControl.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import Select, { Creatable } from 'react-select';
 import ControlHeader from '../ControlHeader';
+import { t } from '../../../locales';
 
 const propTypes = {
   choices: PropTypes.array,
@@ -102,7 +103,7 @@ export default class SelectControl extends React.PureComponent {
     const selectProps = {
       multi: this.props.multi,
       name: `select-${this.props.name}`,
-      placeholder: `Select (${this.state.options.length})`,
+      placeholder: t('Select %s', this.state.options.length),
       options: this.state.options,
       value: this.props.value,
       valueKey: this.props.valueKey,
diff --git a/superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx b/superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx
index 9531062..bf789b6 100644
--- a/superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx
@@ -12,6 +12,7 @@ import 'brace/theme/textmate';
 
 import ControlHeader from '../ControlHeader';
 import ModalTrigger from '../../../components/ModalTrigger';
+import { t } from '../../../locales';
 
 const propTypes = {
   name: PropTypes.string.isRequired,
@@ -59,7 +60,7 @@ export default class TextAreaControl extends React.Component {
       <FormGroup controlId="formControlsTextarea">
         <FormControl
           componentClass="textarea"
-          placeholder="textarea"
+          placeholder={t('textarea')}
           onChange={this.onControlChange.bind(this)}
           value={this.props.value}
           style={{ height: this.props.height }}
@@ -77,7 +78,7 @@ export default class TextAreaControl extends React.Component {
           modalTitle={controlHeader}
           triggerNode={
             <Button bsSize="small" className="m-t-5">
-              Edit <strong>{this.props.language}</strong> in modal
+              {t('Edit')} <strong>{this.props.language}</strong> {t('in modal')}
             </Button>
           }
           modalBody={this.renderEditor(true)}
diff --git a/superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx b/superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx
index 0fc8266..267292e 100644
--- a/superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx
+++ b/superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx
@@ -5,6 +5,7 @@ import {
   Tooltip } from 'react-bootstrap';
 import visTypes from '../../stores/visTypes';
 import ControlHeader from '../ControlHeader';
+import { t } from '../../../locales';
 
 const propTypes = {
   description: PropTypes.string,
@@ -106,7 +107,7 @@ export default class VizTypeControl extends React.PureComponent {
           bsSize="lg"
         >
           <Modal.Header closeButton>
-            <Modal.Title>Select a visualization type</Modal.Title>
+            <Modal.Title>{t('Select a visualization type')}</Modal.Title>
           </Modal.Header>
           <Modal.Body>
             <div>
@@ -116,7 +117,7 @@ export default class VizTypeControl extends React.PureComponent {
                 type="text"
                 bsSize="sm"
                 value={this.state.filter}
-                placeholder="Search / Filter"
+                placeholder={t('Search / Filter')}
                 onChange={this.changeSearch}
               />
             </div>
diff --git a/superset/assets/javascripts/explore/index.jsx b/superset/assets/javascripts/explore/index.jsx
index 501002a..049e731 100644
--- a/superset/assets/javascripts/explore/index.jsx
+++ b/superset/assets/javascripts/explore/index.jsx
@@ -24,7 +24,8 @@ const exploreViewContainer = document.getElementById('app');
 const bootstrapData = JSON.parse(exploreViewContainer.getAttribute('data-bootstrap'));
 const controls = getControlsState(bootstrapData, bootstrapData.form_data);
 delete bootstrapData.form_data;
-
+delete bootstrapData.common.locale;
+delete bootstrapData.common.language_pack;
 
 // Initial state
 const bootstrappedState = Object.assign(
@@ -56,6 +57,7 @@ const initState = {
 const store = createStore(rootReducer, initState,
   compose(applyMiddleware(thunk), initEnhancer(false)),
 );
+
 ReactDOM.render(
   <Provider store={store}>
     <div>
diff --git a/superset/assets/javascripts/explore/reducers/chartReducer.js b/superset/assets/javascripts/explore/reducers/chartReducer.js
index 44e9557..808d884 100644
--- a/superset/assets/javascripts/explore/reducers/chartReducer.js
+++ b/superset/assets/javascripts/explore/reducers/chartReducer.js
@@ -1,6 +1,7 @@
 /* eslint camelcase: 0 */
 import { now } from '../../modules/dates';
 import * as actions from '../actions/chartActions';
+import { t } from '../../locales';
 
 export default function chartReducer(state = {}, action) {
   const actionHandlers = {
@@ -28,13 +29,13 @@ export default function chartReducer(state = {}, action) {
       return Object.assign({}, state,
         {
           chartStatus: 'stopped',
-          chartAlert: 'Updating chart was stopped',
+          chartAlert: t('Updating chart was stopped'),
         });
     },
     [actions.CHART_RENDERING_FAILED]() {
       return Object.assign({}, state, {
         chartStatus: 'failed',
-        chartAlert: 'An error occurred while rendering the visualization: ' + action.error,
+        chartAlert: t('An error occurred while rendering the visualization: %s', action.error),
       });
     },
     [actions.CHART_UPDATE_TIMEOUT]() {
@@ -43,16 +44,16 @@ export default function chartReducer(state = {}, action) {
         chartAlert: (
           '<strong>Query timeout</strong> - visualization query are set to timeout at ' +
           `${action.timeout} seconds. ` +
-          'Perhaps your data has grown, your database is under unusual load, ' +
+          t('Perhaps your data has grown, your database is under unusual load, ' +
           'or you are simply querying a data source that is to large ' +
           'to be processed within the timeout range. ' +
-          'If that is the case, we recommend that you summarize your data further.'),
+          'If that is the case, we recommend that you summarize your data further.')),
       });
     },
     [actions.CHART_UPDATE_FAILED]() {
       return Object.assign({}, state, {
         chartStatus: 'failed',
-        chartAlert: action.queryResponse ? action.queryResponse.error : 'Network error.',
+        chartAlert: action.queryResponse ? action.queryResponse.error : t('Network error.'),
         chartUpdateEndTime: now(),
         queryResponse: action.queryResponse,
       });
diff --git a/superset/assets/javascripts/explore/stores/controls.jsx b/superset/assets/javascripts/explore/stores/controls.jsx
index c226f66..894b5a4 100644
--- a/superset/assets/javascripts/explore/stores/controls.jsx
+++ b/superset/assets/javascripts/explore/stores/controls.jsx
@@ -4,6 +4,7 @@ import * as v from '../validators';
 import { ALL_COLOR_SCHEMES, spectrums } from '../../modules/colors';
 import MetricOption from '../../components/MetricOption';
 import ColumnOption from '../../components/ColumnOption';
+import { t } from '../../locales';
 
 const D3_FORMAT_DOCS = 'D3 format syntax: https://github.com/d3/d3-format';
 
@@ -32,9 +33,9 @@ export const D3_TIME_FORMAT_OPTIONS = [
 const timeColumnOption = {
   verbose_name: 'Time',
   column_name: '__timestamp',
-  description: (
-    'A reference to the [Time] configuration, taking granularity into ' +
-    'account'),
+  description: t(
+  'A reference to the [Time] configuration, taking granularity into ' +
+  'account'),
 };
 const sortAxisChoices = [
   ['alpha_asc', 'Axis ascending'],
@@ -46,10 +47,10 @@ const sortAxisChoices = [
 const groupByControl = {
   type: 'SelectControl',
   multi: true,
-  label: 'Group by',
+  label: t('Group by'),
   default: [],
   includeTime: false,
-  description: 'One or many controls to group by',
+  description: t('One or many controls to group by'),
   optionRenderer: c => <ColumnOption column={c} />,
   valueRenderer: c => <ColumnOption column={c} />,
   valueKey: 'column_name',
@@ -68,7 +69,7 @@ const groupByControl = {
 export const controls = {
   datasource: {
     type: 'DatasourceControl',
-    label: 'Datasource',
+    label: t('Datasource'),
     default: null,
     description: null,
     mapStateToProps: state => ({
@@ -78,15 +79,15 @@ export const controls = {
 
   viz_type: {
     type: 'VizTypeControl',
-    label: 'Visualization Type',
+    label: t('Visualization Type'),
     default: 'table',
-    description: 'The type of visualization to display',
+    description: t('The type of visualization to display'),
   },
 
   metrics: {
     type: 'SelectControl',
     multi: true,
-    label: 'Metrics',
+    label: t('Metrics'),
     validators: [v.nonEmpty],
     valueKey: 'metric_name',
     optionRenderer: m => <MetricOption metric={m} />,
@@ -95,26 +96,24 @@ export const controls = {
     mapStateToProps: state => ({
       options: (state.datasource) ? state.datasource.metrics : [],
     }),
-    description: 'One or many metrics to display',
+    description: t('One or many metrics to display'),
   },
   y_axis_bounds: {
     type: 'BoundsControl',
-    label: 'Y Axis Bounds',
+    label: t('Y Axis Bounds'),
     renderTrigger: true,
     default: [null, null],
-    description: (
-      'Bounds for the Y axis. When left empty, the bounds are ' +
-      'dynamically defined based on the min/max of the data. Note that ' +
-      "this feature will only expand the axis range. It won't " +
-      "narrow the data's extent."
-    ),
+    description: t('Bounds for the Y axis. When left empty, the bounds are ' +
+    'dynamically defined based on the min/max of the data. Note that ' +
+    "this feature will only expand the axis range. It won't " +
+    "narrow the data's extent."),
   },
   order_by_cols: {
     type: 'SelectControl',
     multi: true,
-    label: 'Ordering',
+    label: t('Ordering'),
     default: [],
-    description: 'One or many metrics to display',
+    description: t('One or many metrics to display'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.order_by_choices : [],
     }),
@@ -122,9 +121,9 @@ export const controls = {
 
   metric: {
     type: 'SelectControl',
-    label: 'Metric',
+    label: t('Metric'),
     clearable: false,
-    description: 'Choose the metric',
+    description: t('Choose the metric'),
     validators: [v.nonEmpty],
     optionRenderer: m => <MetricOption metric={m} />,
     valueRenderer: m => <MetricOption metric={m} />,
@@ -137,11 +136,11 @@ export const controls = {
 
   metric_2: {
     type: 'SelectControl',
-    label: 'Right Axis Metric',
+    label: t('Right Axis Metric'),
     default: null,
     validators: [v.nonEmpty],
     clearable: true,
-    description: 'Choose a metric for right axis',
+    description: t('Choose a metric for right axis'),
     valueKey: 'metric_name',
     optionRenderer: m => <MetricOption metric={m} />,
     valueRenderer: m => <MetricOption metric={m} />,
@@ -152,7 +151,7 @@ export const controls = {
 
   stacked_style: {
     type: 'SelectControl',
-    label: 'Stacked Style',
+    label: t('Stacked Style'),
     choices: [
       ['stack', 'stack'],
       ['stream', 'stream'],
@@ -180,7 +179,7 @@ export const controls = {
 
   linear_color_scheme: {
     type: 'ColorSchemeControl',
-    label: 'Linear Color Scheme',
+    label: t('Linear Color Scheme'),
     choices: [
       ['fire', 'fire'],
       ['blue_white_yellow', 'blue/white/yellow'],
@@ -197,65 +196,65 @@ export const controls = {
 
   normalize_across: {
     type: 'SelectControl',
-    label: 'Normalize Across',
+    label: t('Normalize Across'),
     choices: [
       ['heatmap', 'heatmap'],
       ['x', 'x'],
       ['y', 'y'],
     ],
     default: 'heatmap',
-    description: 'Color will be rendered based on a ratio ' +
+    description: t('Color will be rendered based on a ratio ' +
     'of the cell against the sum of across this ' +
-    'criteria',
+    'criteria'),
   },
 
   horizon_color_scale: {
     type: 'SelectControl',
-    label: 'Horizon Color Scale',
+    label: t('Horizon Color Scale'),
     choices: [
       ['series', 'series'],
       ['overall', 'overall'],
       ['change', 'change'],
     ],
     default: 'series',
-    description: 'Defines how the color are attributed.',
+    description: t('Defines how the color are attributed.'),
   },
 
   canvas_image_rendering: {
     type: 'SelectControl',
-    label: 'Rendering',
+    label: t('Rendering'),
     renderTrigger: true,
     choices: [
       ['pixelated', 'pixelated (Sharp)'],
       ['auto', 'auto (Smooth)'],
     ],
     default: 'pixelated',
-    description: 'image-rendering CSS attribute of the canvas object that ' +
-    'defines how the browser scales up the image',
+    description: t('image-rendering CSS attribute of the canvas object that ' +
+    'defines how the browser scales up the image'),
   },
 
   xscale_interval: {
     type: 'SelectControl',
-    label: 'XScale Interval',
+    label: t('XScale Interval'),
     choices: formatSelectOptionsForRange(1, 50),
     default: '1',
-    description: 'Number of steps to take between ticks when ' +
-    'displaying the X scale',
+    description: t('Number of steps to take between ticks when ' +
+    'displaying the X scale'),
   },
 
   yscale_interval: {
     type: 'SelectControl',
-    label: 'YScale Interval',
+    label: t('YScale Interval'),
     choices: formatSelectOptionsForRange(1, 50),
     default: null,
-    description: 'Number of steps to take between ticks when ' +
-    'displaying the Y scale',
+    description: t('Number of steps to take between ticks when ' +
+    'displaying the Y scale'),
   },
 
   include_time: {
     type: 'CheckboxControl',
-    label: 'Include Time',
-    description: 'Whether to include the time granularity as defined in the time section',
+    label: t('Include Time'),
+    description: t('Whether to include the time granularity as defined in the time section'),
     default: false,
   },
 
@@ -269,7 +268,7 @@ export const controls = {
 
   bar_stacked: {
     type: 'CheckboxControl',
-    label: 'Stacked Bars',
+    label: t('Stacked Bars'),
     renderTrigger: true,
     default: false,
     description: null,
@@ -277,85 +276,85 @@ export const controls = {
 
   pivot_margins: {
     type: 'CheckboxControl',
-    label: 'Show totals',
+    label: t('Show totals'),
     renderTrigger: false,
     default: true,
-    description: 'Display total row/column',
+    description: t('Display total row/column'),
   },
 
   show_markers: {
     type: 'CheckboxControl',
-    label: 'Show Markers',
+    label: t('Show Markers'),
     renderTrigger: true,
     default: false,
-    description: 'Show data points as circle markers on the lines',
+    description: t('Show data points as circle markers on the lines'),
   },
 
   show_bar_value: {
     type: 'CheckboxControl',
-    label: 'Bar Values',
+    label: t('Bar Values'),
     default: false,
     renderTrigger: true,
-    description: 'Show the value on top of the bar',
+    description: t('Show the value on top of the bar'),
   },
 
   order_bars: {
     type: 'CheckboxControl',
-    label: 'Sort Bars',
+    label: t('Sort Bars'),
     default: false,
-    description: 'Sort bars by x labels.',
+    description: t('Sort bars by x labels.'),
   },
 
   combine_metric: {
     type: 'CheckboxControl',
-    label: 'Combine Metrics',
+    label: t('Combine Metrics'),
     default: false,
-    description: 'Display metrics side by side within each column, as ' +
-    'opposed to each column being displayed side by side for each metric.',
+    description: t('Display metrics side by side within each column, as ' +
+    'opposed to each column being displayed side by side for each metric.'),
   },
 
   show_controls: {
     type: 'CheckboxControl',
-    label: 'Extra Controls',
+    label: t('Extra Controls'),
     renderTrigger: true,
     default: false,
-    description: 'Whether to show extra controls or not. Extra controls ' +
+    description: t('Whether to show extra controls or not. Extra controls ' +
     'include things like making mulitBar charts stacked ' +
-    'or side by side.',
+    'or side by side.'),
   },
 
   reduce_x_ticks: {
     type: 'CheckboxControl',
-    label: 'Reduce X ticks',
+    label: t('Reduce X ticks'),
     renderTrigger: true,
     default: false,
-    description: 'Reduces the number of X axis ticks to be rendered. ' +
+    description: t('Reduces the number of X axis ticks to be rendered. ' +
     'If true, the x axis wont overflow and labels may be ' +
     'missing. If false, a minimum width will be applied ' +
     'to columns and the width may overflow into an ' +
-    'horizontal scroll.',
+    'horizontal scroll.'),
   },
 
   include_series: {
     type: 'CheckboxControl',
-    label: 'Include Series',
+    label: t('Include Series'),
     renderTrigger: true,
     default: false,
-    description: 'Include series name as an axis',
+    description: t('Include series name as an axis'),
   },
 
   secondary_metric: {
     type: 'SelectControl',
-    label: 'Color Metric',
+    label: t('Color Metric'),
     default: null,
-    description: 'A metric to use for color',
+    description: t('A metric to use for color'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.metrics_combo : [],
     }),
   },
   select_country: {
     type: 'SelectControl',
-    label: 'Country Name',
+    label: t('Country Name'),
     default: 'France',
     choices: [
       'Belgium',
@@ -374,11 +373,11 @@ export const controls = {
       'Ukraine',
       'Usa',
     ].map(s => [s, s]),
-    description: 'The name of country that Superset should display',
+    description: t('The name of country that Superset should display'),
   },
   country_fieldtype: {
     type: 'SelectControl',
-    label: 'Country Field Type',
+    label: t('Country Field Type'),
     default: 'cca2',
     choices: [
       ['name', 'Full name'],
@@ -386,23 +385,23 @@ export const controls = {
       ['cca2', 'code ISO 3166-1 alpha-2 (cca2)'],
       ['cca3', 'code ISO 3166-1 alpha-3 (cca3)'],
     ],
-    description: 'The country code standard that Superset should expect ' +
-    'to find in the [country] column',
+    description: t('The country code standard that Superset should expect ' +
+    'to find in the [country] column'),
   },
 
   groupby: groupByControl,
 
   columns: Object.assign({}, groupByControl, {
-    label: 'Columns',
-    description: 'One or many controls to pivot as columns',
+    label: t('Columns'),
+    description: t('One or many controls to pivot as columns'),
   }),
 
   all_columns: {
     type: 'SelectControl',
     multi: true,
-    label: 'Columns',
+    label: t('Columns'),
     default: [],
-    description: 'Columns to display',
+    description: t('Columns to display'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.all_cols : [],
     }),
@@ -412,7 +411,7 @@ export const controls = {
     type: 'SelectControl',
     label: 'X',
     default: null,
-    description: 'Columns to display',
+    description: t('Columns to display'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.all_cols : [],
     }),
@@ -422,7 +421,7 @@ export const controls = {
     type: 'SelectControl',
     label: 'Y',
     default: null,
-    description: 'Columns to display',
+    description: t('Columns to display'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.all_cols : [],
     }),
@@ -431,40 +430,40 @@ export const controls = {
   druid_time_origin: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Origin',
+    label: t('Origin'),
     choices: [
       ['', 'default'],
       ['now', 'now'],
     ],
     default: null,
-    description: 'Defines the origin where time buckets start, ' +
-    'accepts natural dates as in `now`, `sunday` or `1970-01-01`',
+    description: t('Defines the origin where time buckets start, ' +
+    'accepts natural dates as in `now`, `sunday` or `1970-01-01`'),
   },
 
   bottom_margin: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Bottom Margin',
+    label: t('Bottom Margin'),
     choices: formatSelectOptions(['auto', 50, 75, 100, 125, 150, 200]),
     default: 'auto',
     renderTrigger: true,
-    description: 'Bottom margin, in pixels, allowing for more room for axis labels',
+    description: t('Bottom margin, in pixels, allowing for more room for axis labels'),
   },
 
   left_margin: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Left Margin',
+    label: t('Left Margin'),
     choices: formatSelectOptions(['auto', 50, 75, 100, 125, 150, 200]),
     default: 'auto',
     renderTrigger: true,
-    description: 'Left margin, in pixels, allowing for more room for axis labels',
+    description: t('Left margin, in pixels, allowing for more room for axis labels'),
   },
 
   granularity: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Time Granularity',
+    label: t('Time Granularity'),
     default: 'one day',
     choices: formatSelectOptions([
       'all',
@@ -481,41 +480,41 @@ export const controls = {
       'week_ending_saturday',
       'month',
     ]),
-    description: 'The time granularity for the visualization. Note that you ' +
+    description: t('The time granularity for the visualization. Note that you ' +
     'can type and use simple natural language as in `10 seconds`, ' +
-    '`1 day` or `56 weeks`',
+    '`1 day` or `56 weeks`'),
   },
 
   domain_granularity: {
     type: 'SelectControl',
-    label: 'Domain',
+    label: t('Domain'),
     default: 'month',
     choices: formatSelectOptions(['hour', 'day', 'week', 'month', 'year']),
-    description: 'The time unit used for the grouping of blocks',
+    description: t('The time unit used for the grouping of blocks'),
   },
 
   subdomain_granularity: {
     type: 'SelectControl',
-    label: 'Subdomain',
+    label: t('Subdomain'),
     default: 'day',
     choices: formatSelectOptions(['min', 'hour', 'day', 'week', 'month']),
-    description: 'The time unit for each block. Should be a smaller unit than ' +
-    'domain_granularity. Should be larger or equal to Time Grain',
+    description: t('The time unit for each block. Should be a smaller unit than ' +
+    'domain_granularity. Should be larger or equal to Time Grain'),
   },
 
   link_length: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Link Length',
+    label: t('Link Length'),
     default: '200',
     choices: formatSelectOptions(['10', '25', '50', '75', '100', '150', '200', '250']),
-    description: 'Link length in the force layout',
+    description: t('Link length in the force layout'),
   },
 
   charge: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Charge',
+    label: t('Charge'),
     default: '-500',
     choices: formatSelectOptions([
       '-50',
@@ -529,19 +528,19 @@ export const controls = {
       '-2500',
       '-5000',
     ]),
-    description: 'Charge in the force layout',
+    description: t('Charge in the force layout'),
   },
 
   granularity_sqla: {
     type: 'SelectControl',
-    label: 'Time Column',
+    label: t('Time Column'),
     default: control =>
       control.choices && control.choices.length > 0 ? control.choices[0][0] : null,
-    description: 'The time column for the visualization. Note that you ' +
+    description: t('The time column for the visualization. Note that you ' +
     'can define arbitrary expression that return a DATETIME ' +
     'column in the table or. Also note that the ' +
     'filter below is applied against this column or ' +
-    'expression',
+    'expression'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.granularity_sqla : [],
     }),
@@ -549,13 +548,13 @@ export const controls = {
 
   time_grain_sqla: {
     type: 'SelectControl',
-    label: 'Time Grain',
+    label: t('Time Grain'),
     default: control => control.choices && control.choices.length ? control.choices[0][0] : null,
-    description: 'The time granularity for the visualization. This ' +
+    description: t('The time granularity for the visualization. This ' +
     'applies a date transformation to alter ' +
     'your time column and defines a new time granularity. ' +
     'The options here are defined on a per database ' +
-    'engine basis in the Superset source code.',
+    'engine basis in the Superset source code.'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.time_grain_sqla : null,
     }),
@@ -564,48 +563,48 @@ export const controls = {
   resample_rule: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Resample Rule',
+    label: t('Resample Rule'),
     default: null,
     choices: formatSelectOptions(['', '1T', '1H', '1D', '7D', '1M', '1AS']),
-    description: 'Pandas resample rule',
+    description: t('Pandas resample rule'),
   },
 
   resample_how: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Resample How',
+    label: t('Resample How'),
     default: null,
     choices: formatSelectOptions(['', 'mean', 'sum', 'median']),
-    description: 'Pandas resample how',
+    description: t('Pandas resample how'),
   },
 
   resample_fillmethod: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Resample Fill Method',
+    label: t('Resample Fill Method'),
     default: null,
     choices: formatSelectOptions(['', 'ffill', 'bfill']),
-    description: 'Pandas resample fill method',
+    description: t('Pandas resample fill method'),
   },
 
   since: {
     type: 'DateFilterControl',
     freeForm: true,
-    label: 'Since',
-    default: '7 days ago',
+    label: t('Since'),
+    default: t('7 days ago'),
   },
 
   until: {
     type: 'DateFilterControl',
     freeForm: true,
-    label: 'Until',
+    label: t('Until'),
     default: 'now',
   },
 
   max_bubble_size: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Max Bubble Size',
+    label: t('Max Bubble Size'),
     default: '25',
     choices: formatSelectOptions(['5', '10', '15', '25', '50', '75', '100']),
   },
@@ -613,9 +612,9 @@ export const controls = {
   whisker_options: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Whisker/outlier options',
+    label: t('Whisker/outlier options'),
     default: 'Tukey',
-    description: 'Determines how whiskers and outliers are calculated.',
+    description: t('Determines how whiskers and outliers are calculated.'),
     choices: formatSelectOptions([
       'Tukey',
       'Min/max (no outliers)',
@@ -626,16 +625,16 @@ export const controls = {
 
   treemap_ratio: {
     type: 'TextControl',
-    label: 'Ratio',
+    label: t('Ratio'),
     isFloat: true,
     default: 0.5 * (1 + Math.sqrt(5)),  // d3 default, golden ratio
-    description: 'Target aspect ratio for treemap tiles.',
+    description: t('Target aspect ratio for treemap tiles.'),
   },
 
   number_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Number format',
+    label: t('Number format'),
     renderTrigger: true,
     default: '.3s',
     choices: D3_FORMAT_OPTIONS,
@@ -645,7 +644,7 @@ export const controls = {
   row_limit: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Row limit',
+    label: t('Row limit'),
     default: null,
     choices: formatSelectOptions(ROW_LIMIT_OPTIONS),
   },
@@ -653,17 +652,17 @@ export const controls = {
   limit: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Series limit',
+    label: t('Series limit'),
     choices: formatSelectOptions(SERIES_LIMITS),
     default: 50,
-    description: 'Limits the number of time series that get displayed',
+    description: t('Limits the number of time series that get displayed'),
   },
 
   timeseries_limit_metric: {
     type: 'SelectControl',
-    label: 'Sort By',
+    label: t('Sort By'),
     default: null,
-    description: 'Metric used to define the top series',
+    description: t('Metric used to define the top series'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.metrics_combo : [],
     }),
@@ -678,41 +677,39 @@ export const controls = {
 
   rolling_type: {
     type: 'SelectControl',
-    label: 'Rolling',
+    label: t('Rolling'),
     default: 'None',
     choices: formatSelectOptions(['None', 'mean', 'sum', 'std', 'cumsum']),
-    description: 'Defines a rolling window function to apply, works along ' +
-    'with the [Periods] text box',
+    description: t('Defines a rolling window function to apply, works along ' +
+    'with the [Periods] text box'),
   },
 
   rolling_periods: {
     type: 'TextControl',
-    label: 'Periods',
+    label: t('Periods'),
     isInt: true,
-    description: 'Defines the size of the rolling window function, ' +
-    'relative to the time granularity selected',
+    description: t('Defines the size of the rolling window function, ' +
+    'relative to the time granularity selected'),
   },
 
   min_periods: {
     type: 'TextControl',
-    label: 'Min Periods',
+    label: t('Min Periods'),
     isInt: true,
-    description: (
-      'The minimum number of rolling periods required to show ' +
-      'a value. For instance if you do a cumulative sum on 7 days ' +
-      'you may want your "Min Period" to be 7, so that all data points ' +
-      'shown are the total of 7 periods. This will hide the "ramp up" ' +
-      'taking place over the first 7 periods'
-    ),
+    description: t('The minimum number of rolling periods required to show ' +
+    'a value. For instance if you do a cumulative sum on 7 days ' +
+    'you may want your "Min Period" to be 7, so that all data points ' +
+    'shown are the total of 7 periods. This will hide the "ramp up" ' +
+    'taking place over the first 7 periods'),
   },
 
   series: {
     type: 'SelectControl',
-    label: 'Series',
+    label: t('Series'),
     default: null,
-    description: 'Defines the grouping of entities. ' +
+    description: t('Defines the grouping of entities. ' +
     'Each series is shown as a specific color on the chart and ' +
-    'has a legend toggle',
+    'has a legend toggle'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.gb_cols : [],
     }),
@@ -720,10 +717,10 @@ export const controls = {
 
   entity: {
     type: 'SelectControl',
-    label: 'Entity',
+    label: t('Entity'),
     default: null,
     validators: [v.nonEmpty],
-    description: 'This defines the element to be plotted on the chart',
+    description: t('This defines the element to be plotted on the chart'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.gb_cols : [],
     }),
@@ -731,8 +728,8 @@ export const controls = {
 
   x: {
     type: 'SelectControl',
-    label: 'X Axis',
-    description: 'Metric assigned to the [X] axis',
+    label: t('X Axis'),
+    description: t('Metric assigned to the [X] axis'),
     default: null,
     validators: [v.nonEmpty],
     optionRenderer: m => <MetricOption metric={m} />,
@@ -745,10 +742,10 @@ export const controls = {
 
   y: {
     type: 'SelectControl',
-    label: 'Y Axis',
+    label: t('Y Axis'),
     default: null,
     validators: [v.nonEmpty],
-    description: 'Metric assigned to the [Y] axis',
+    description: t('Metric assigned to the [Y] axis'),
     optionRenderer: m => <MetricOption metric={m} />,
     valueRenderer: m => <MetricOption metric={m} />,
     valueKey: 'metric_name',
@@ -759,7 +756,7 @@ export const controls = {
 
   size: {
     type: 'SelectControl',
-    label: 'Bubble Size',
+    label: t('Bubble Size'),
     default: null,
     validators: [v.nonEmpty],
     optionRenderer: m => <MetricOption metric={m} />,
@@ -772,92 +769,92 @@ export const controls = {
 
   url: {
     type: 'TextControl',
-    label: 'URL',
-    description: 'The URL, this control is templated, so you can integrate ' +
-    '{{ width }} and/or {{ height }} in your URL string.',
+    label: t('URL'),
+    description: t('The URL, this control is templated, so you can integrate ' +
+    '{{ width }} and/or {{ height }} in your URL string.'),
     default: 'https://www.youtube.com/embed/AdSZJzb-aX8',
   },
 
   x_axis_label: {
     type: 'TextControl',
-    label: 'X Axis Label',
+    label: t('X Axis Label'),
     renderTrigger: true,
     default: '',
   },
 
   y_axis_label: {
     type: 'TextControl',
-    label: 'Y Axis Label',
+    label: t('Y Axis Label'),
     renderTrigger: true,
     default: '',
   },
 
   where: {
     type: 'TextControl',
-    label: 'Custom WHERE clause',
+    label: t('Custom WHERE clause'),
     default: '',
-    description: 'The text in this box gets included in your query\'s WHERE ' +
+    description: t('The text in this box gets included in your query\'s WHERE ' +
     'clause, as an AND to other criteria. You can include ' +
     'complex expression, parenthesis and anything else ' +
-    'supported by the backend it is directed towards.',
+    'supported by the backend it is directed towards.'),
   },
 
   having: {
     type: 'TextControl',
-    label: 'Custom HAVING clause',
+    label: t('Custom HAVING clause'),
     default: '',
-    description: 'The text in this box gets included in your query\'s HAVING ' +
+    description: t('The text in this box gets included in your query\'s HAVING ' +
     'clause, as an AND to other criteria. You can include ' +
     'complex expression, parenthesis and anything else ' +
-    'supported by the backend it is directed towards.',
+    'supported by the backend it is directed towards.'),
   },
 
   compare_lag: {
     type: 'TextControl',
-    label: 'Comparison Period Lag',
+    label: t('Comparison Period Lag'),
     isInt: true,
-    description: 'Based on granularity, number of time periods to compare against',
+    description: t('Based on granularity, number of time periods to compare against'),
   },
 
   compare_suffix: {
     type: 'TextControl',
-    label: 'Comparison suffix',
-    description: 'Suffix to apply after the percentage display',
+    label: t('Comparison suffix'),
+    description: t('Suffix to apply after the percentage display'),
   },
 
   table_timestamp_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Table Timestamp Format',
+    label: t('Table Timestamp Format'),
     default: '%Y-%m-%d %H:%M:%S',
     validators: [v.nonEmpty],
     clearable: false,
     choices: D3_TIME_FORMAT_OPTIONS,
-    description: 'Timestamp Format',
+    description: t('Timestamp Format'),
   },
 
   series_height: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Series Height',
+    label: t('Series Height'),
     default: '25',
     choices: formatSelectOptions(['10', '25', '40', '50', '75', '100', '150', '200']),
-    description: 'Pixel height of each series',
+    description: t('Pixel height of each series'),
   },
 
   page_length: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Page Length',
+    label: t('Page Length'),
     default: 0,
     choices: formatSelectOptions([0, 10, 25, 40, 50, 75, 100, 150, 200]),
-    description: 'Rows per page, 0 means no pagination',
+    description: t('Rows per page, 0 means no pagination'),
   },
 
   x_axis_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'X Axis Format',
+    label: t('X Axis Format'),
     renderTrigger: true,
     default: '.3s',
     choices: D3_FORMAT_OPTIONS,
@@ -867,7 +864,7 @@ export const controls = {
   x_axis_time_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'X Axis Format',
+    label: t('X Axis Format'),
     renderTrigger: true,
     default: 'smart_date',
     choices: D3_TIME_FORMAT_OPTIONS,
@@ -877,7 +874,7 @@ export const controls = {
   y_axis_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Y Axis Format',
+    label: t('Y Axis Format'),
     renderTrigger: true,
     default: '.3s',
     choices: D3_FORMAT_OPTIONS,
@@ -887,7 +884,7 @@ export const controls = {
   y_axis_2_format: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Right Axis Format',
+    label: t('Right Axis Format'),
     default: '.3s',
     choices: D3_FORMAT_OPTIONS,
     description: D3_FORMAT_DOCS,
@@ -895,48 +892,48 @@ export const controls = {
 
   markup_type: {
     type: 'SelectControl',
-    label: 'Markup Type',
+    label: t('Markup Type'),
     clearable: false,
     choices: formatSelectOptions(['markdown', 'html']),
     default: 'markdown',
     validators: [v.nonEmpty],
-    description: 'Pick your favorite markup language',
+    description: t('Pick your favorite markup language'),
   },
 
   rotation: {
     type: 'SelectControl',
-    label: 'Rotation',
+    label: t('Rotation'),
     choices: formatSelectOptions(['random', 'flat', 'square']),
     default: 'random',
-    description: 'Rotation to apply to words in the cloud',
+    description: t('Rotation to apply to words in the cloud'),
   },
 
   line_interpolation: {
     type: 'SelectControl',
-    label: 'Line Style',
+    label: t('Line Style'),
     renderTrigger: true,
     choices: formatSelectOptions(['linear', 'basis', 'cardinal',
       'monotone', 'step-before', 'step-after']),
     default: 'linear',
-    description: 'Line interpolation as defined by d3.js',
+    description: t('Line interpolation as defined by d3.js'),
   },
 
   pie_label_type: {
     type: 'SelectControl',
-    label: 'Label Type',
+    label: t('Label Type'),
     default: 'key',
     choices: [
       ['key', 'Category Name'],
       ['value', 'Value'],
       ['percent', 'Percentage'],
     ],
-    description: 'What should be shown on the label?',
+    description: t('What should be shown on the label?'),
   },
 
   code: {
     type: 'TextAreaControl',
-    label: 'Code',
-    description: 'Put your code here',
+    label: t('Code'),
+    description: t('Put your code here'),
     mapStateToProps: state => ({
       language: state.controls && state.controls.markup_type ? state.controls.markup_type.value : 'markdown',
     }),
@@ -945,7 +942,7 @@ export const controls = {
 
   pandas_aggfunc: {
     type: 'SelectControl',
-    label: 'Aggregation function',
+    label: t('Aggregation function'),
     clearable: false,
     choices: formatSelectOptions([
       'sum',
@@ -957,29 +954,29 @@ export const controls = {
       'var',
     ]),
     default: 'sum',
-    description: 'Aggregate function to apply when pivoting and ' +
-    'computing the total rows and columns',
+    description: t('Aggregate function to apply when pivoting and ' +
+    'computing the total rows and columns'),
   },
 
   size_from: {
     type: 'TextControl',
     isInt: true,
-    label: 'Font Size From',
+    label: t('Font Size From'),
     default: '20',
-    description: 'Font size for the smallest value in the list',
+    description: t('Font size for the smallest value in the list'),
   },
 
   size_to: {
     type: 'TextControl',
     isInt: true,
-    label: 'Font Size To',
+    label: t('Font Size To'),
     default: '150',
-    description: 'Font size for the biggest value in the list',
+    description: t('Font size for the biggest value in the list'),
   },
 
   instant_filtering: {
     type: 'CheckboxControl',
-    label: 'Instant Filtering',
+    label: t('Instant Filtering'),
     renderTrigger: true,
     default: true,
     description: (
@@ -990,164 +987,164 @@ export const controls = {
 
   show_brush: {
     type: 'CheckboxControl',
-    label: 'Range Filter',
+    label: t('Range Filter'),
     renderTrigger: true,
     default: false,
-    description: 'Whether to display the time range interactive selector',
+    description: t('Whether to display the time range interactive selector'),
   },
 
   date_filter: {
     type: 'CheckboxControl',
-    label: 'Date Filter',
+    label: t('Date Filter'),
     default: false,
-    description: 'Whether to include a time filter',
+    description: t('Whether to include a time filter'),
   },
 
   show_datatable: {
     type: 'CheckboxControl',
-    label: 'Data Table',
+    label: t('Data Table'),
     default: false,
-    description: 'Whether to display the interactive data table',
+    description: t('Whether to display the interactive data table'),
   },
 
   include_search: {
     type: 'CheckboxControl',
-    label: 'Search Box',
+    label: t('Search Box'),
     renderTrigger: true,
     default: false,
-    description: 'Whether to include a client side search box',
+    description: t('Whether to include a client side search box'),
   },
 
   table_filter: {
     type: 'CheckboxControl',
-    label: 'Table Filter',
+    label: t('Table Filter'),
     default: false,
-    description: 'Whether to apply filter when table cell is clicked',
+    description: t('Whether to apply filter when table cell is clicked'),
   },
 
   show_bubbles: {
     type: 'CheckboxControl',
-    label: 'Show Bubbles',
+    label: t('Show Bubbles'),
     default: false,
     renderTrigger: true,
-    description: 'Whether to display bubbles on top of countries',
+    description: t('Whether to display bubbles on top of countries'),
   },
 
   show_legend: {
     type: 'CheckboxControl',
-    label: 'Legend',
+    label: t('Legend'),
     renderTrigger: true,
     default: true,
-    description: 'Whether to display the legend (toggles)',
+    description: t('Whether to display the legend (toggles)'),
   },
 
   x_axis_showminmax: {
     type: 'CheckboxControl',
-    label: 'X bounds',
+    label: t('X bounds'),
     renderTrigger: true,
     default: true,
-    description: 'Whether to display the min and max values of the X axis',
+    description: t('Whether to display the min and max values of the X axis'),
   },
 
   y_axis_showminmax: {
     type: 'CheckboxControl',
-    label: 'Y bounds',
+    label: t('Y bounds'),
     renderTrigger: true,
     default: true,
-    description: 'Whether to display the min and max values of the Y axis',
+    description: t('Whether to display the min and max values of the Y axis'),
   },
 
   rich_tooltip: {
     type: 'CheckboxControl',
-    label: 'Rich Tooltip',
+    label: t('Rich Tooltip'),
     renderTrigger: true,
     default: true,
-    description: 'The rich tooltip shows a list of all series for that ' +
-    'point in time',
+    description: t('The rich tooltip shows a list of all series for that ' +
+    'point in time'),
   },
 
   y_log_scale: {
     type: 'CheckboxControl',
-    label: 'Y Log Scale',
+    label: t('Y Log Scale'),
     default: false,
     renderTrigger: true,
-    description: 'Use a log scale for the Y axis',
+    description: t('Use a log scale for the Y axis'),
   },
 
   x_log_scale: {
     type: 'CheckboxControl',
-    label: 'X Log Scale',
+    label: t('X Log Scale'),
     default: false,
     renderTrigger: true,
-    description: 'Use a log scale for the X axis',
+    description: t('Use a log scale for the X axis'),
   },
 
   donut: {
     type: 'CheckboxControl',
-    label: 'Donut',
+    label: t('Donut'),
     default: false,
     renderTrigger: true,
-    description: 'Do you want a donut or a pie?',
+    description: t('Do you want a donut or a pie?'),
   },
 
   labels_outside: {
     type: 'CheckboxControl',
-    label: 'Put labels outside',
+    label: t('Put labels outside'),
     default: true,
     renderTrigger: true,
-    description: 'Put the labels outside the pie?',
+    description: t('Put the labels outside the pie?'),
   },
 
   contribution: {
     type: 'CheckboxControl',
-    label: 'Contribution',
+    label: t('Contribution'),
     default: false,
-    description: 'Compute the contribution to the total',
+    description: t('Compute the contribution to the total'),
   },
 
   num_period_compare: {
     type: 'TextControl',
-    label: 'Period Ratio',
+    label: t('Period Ratio'),
     default: '',
     isInt: true,
-    description: '[integer] Number of period to compare against, ' +
-    'this is relative to the granularity selected',
+    description: t('[integer] Number of period to compare against, ' +
+    'this is relative to the granularity selected'),
   },
 
   period_ratio_type: {
     type: 'SelectControl',
-    label: 'Period Ratio Type',
+    label: t('Period Ratio Type'),
     default: 'growth',
     choices: formatSelectOptions(['factor', 'growth', 'value']),
-    description: '`factor` means (new/previous), `growth` is ' +
-    '((new/previous) - 1), `value` is (new-previous)',
+    description: t('`factor` means (new/previous), `growth` is ' +
+    '((new/previous) - 1), `value` is (new-previous)'),
   },
 
   time_compare: {
     type: 'TextControl',
-    label: 'Time Shift',
+    label: t('Time Shift'),
     default: null,
-    description: 'Overlay a timeseries from a ' +
+    description: t('Overlay a timeseries from a ' +
     'relative time period. Expects relative time delta ' +
     'in natural language (example:  24 hours, 7 days, ' +
-    '56 weeks, 365 days)',
+    '56 weeks, 365 days)'),
   },
 
   subheader: {
     type: 'TextControl',
-    label: 'Subheader',
-    description: 'Description text that shows up below your Big Number',
+    label: t('Subheader'),
+    description: t('Description text that shows up below your Big Number'),
   },
 
   mapbox_label: {
     type: 'SelectControl',
     multi: true,
-    label: 'label',
+    label: t('label'),
     default: [],
-    description: '`count` is COUNT(*) if a group by is used. ' +
+    description: t('`count` is COUNT(*) if a group by is used. ' +
     'Numerical columns will be aggregated with the aggregator. ' +
     'Non-numerical columns will be used to label points. ' +
-    'Leave empty to get a count of points in each cluster.',
+    'Leave empty to get a count of points in each cluster.'),
     mapStateToProps: state => ({
       choices: (state.datasource) ? state.datasource.all_cols : [],
     }),
@@ -1155,7 +1152,7 @@ export const controls = {
 
   mapbox_style: {
     type: 'SelectControl',
-    label: 'Map Style',
+    label: t('Map Style'),
     choices: [
       ['mapbox://styles/mapbox/streets-v9', 'Streets'],
       ['mapbox://styles/mapbox/dark-v9', 'Dark'],
@@ -1165,13 +1162,13 @@ export const controls = {
       ['mapbox://styles/mapbox/outdoors-v9', 'Outdoors'],
     ],
     default: 'mapbox://styles/mapbox/streets-v9',
-    description: 'Base layer map style',
+    description: t('Base layer map style'),
   },
 
   clustering_radius: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'Clustering Radius',
+    label: t('Clustering Radius'),
     default: '60',
     choices: formatSelectOptions([
       '0',
@@ -1184,18 +1181,18 @@ export const controls = {
       '500',
       '1000',
     ]),
-    description: 'The radius (in pixels) the algorithm uses to define a cluster. ' +
+    description: t('The radius (in pixels) the algorithm uses to define a cluster. ' +
     'Choose 0 to turn off clustering, but beware that a large ' +
-    'number of points (>1000) will cause lag.',
+    'number of points (>1000) will cause lag.'),
   },
 
   point_radius: {
     type: 'SelectControl',
-    label: 'Point Radius',
+    label: t('Point Radius'),
     default: 'Auto',
-    description: 'The radius of individual points (ones that are not in a cluster). ' +
+    description: t('The radius of individual points (ones that are not in a cluster). ' +
     'Either a numerical column or `Auto`, which scales the point based ' +
-    'on the largest cluster',
+    'on the largest cluster'),
     mapStateToProps: state => ({
       choices: [].concat([['Auto', 'Auto']], state.datasource.all_cols),
     }),
@@ -1203,59 +1200,59 @@ export const controls = {
 
   point_radius_unit: {
     type: 'SelectControl',
-    label: 'Point Radius Unit',
+    label: t('Point Radius Unit'),
     default: 'Pixels',
     choices: formatSelectOptions(['Pixels', 'Miles', 'Kilometers']),
-    description: 'The unit of measure for the specified point radius',
+    description: t('The unit of measure for the specified point radius'),
   },
 
   global_opacity: {
     type: 'TextControl',
-    label: 'Opacity',
+    label: t('Opacity'),
     default: 1,
     isFloat: true,
-    description: 'Opacity of all clusters, points, and labels. ' +
-    'Between 0 and 1.',
+    description: t('Opacity of all clusters, points, and labels. ' +
+    'Between 0 and 1.'),
   },
 
   viewport_zoom: {
     type: 'TextControl',
-    label: 'Zoom',
+    label: t('Zoom'),
     isFloat: true,
     default: 11,
-    description: 'Zoom level of the map',
+    description: t('Zoom level of the map'),
     places: 8,
   },
 
   viewport_latitude: {
     type: 'TextControl',
-    label: 'Default latitude',
+    label: t('Default latitude'),
     default: 37.772123,
     isFloat: true,
-    description: 'Latitude of default viewport',
+    description: t('Latitude of default viewport'),
     places: 8,
   },
 
   viewport_longitude: {
     type: 'TextControl',
-    label: 'Default longitude',
+    label: t('Default longitude'),
     default: -122.405293,
     isFloat: true,
-    description: 'Longitude of default viewport',
+    description: t('Longitude of default viewport'),
     places: 8,
   },
 
   render_while_dragging: {
     type: 'CheckboxControl',
-    label: 'Live render',
+    label: t('Live render'),
     default: true,
-    description: 'Points and clusters will update as viewport is being changed',
+    description: t('Points and clusters will update as viewport is being changed'),
   },
 
   mapbox_color: {
     type: 'SelectControl',
     freeForm: true,
-    label: 'RGB Color',
+    label: t('RGB Color'),
     default: 'rgb(0, 122, 135)',
     choices: [
       ['rgb(0, 139, 139)', 'Dark Cyan'],
@@ -1265,49 +1262,49 @@ export const controls = {
       ['rgb(220, 20, 60)', 'Crimson'],
       ['rgb(34, 139, 34)', 'Forest Green'],
     ],
-    description: 'The color for points and clusters in RGB',
+    description: t('The color for points and clusters in RGB'),
   },
 
   ranges: {
     type: 'TextControl',
-    label: 'Ranges',
+    label: t('Ranges'),
     default: '',
-    description: 'Ranges to highlight with shading',
+    description: t('Ranges to highlight with shading'),
   },
 
   range_labels: {
     type: 'TextControl',
-    label: 'Range labels',
+    label: t('Range labels'),
     default: '',
-    description: 'Labels for the ranges',
+    description: t('Labels for the ranges'),
   },
 
   markers: {
     type: 'TextControl',
-    label: 'Markers',
+    label: t('Markers'),
     default: '',
-    description: 'List of values to mark with triangles',
+    description: t('List of values to mark with triangles'),
   },
 
   marker_labels: {
     type: 'TextControl',
-    label: 'Marker labels',
+    label: t('Marker labels'),
     default: '',
-    description: 'Labels for the markers',
+    description: t('Labels for the markers'),
   },
 
   marker_lines: {
     type: 'TextControl',
-    label: 'Marker lines',
+    label: t('Marker lines'),
     default: '',
-    description: 'List of values to mark with lines',
+    description: t('List of values to mark with lines'),
   },
 
   marker_line_labels: {
     type: 'TextControl',
-    label: 'Marker line labels',
+    label: t('Marker line labels'),
     default: '',
-    description: 'Labels for the marker lines',
+    description: t('Labels for the marker lines'),
   },
 
   filters: {
@@ -1334,43 +1331,43 @@ export const controls = {
 
   slice_id: {
     type: 'HiddenControl',
-    label: 'Slice ID',
+    label: t('Slice ID'),
     hidden: true,
-    description: 'The id of the active slice',
+    description: t('The id of the active slice'),
   },
 
   cache_timeout: {
     type: 'HiddenControl',
-    label: 'Cache Timeout (seconds)',
+    label: t('Cache Timeout (seconds)'),
     hidden: true,
-    description: 'The number of seconds before expiring the cache',
+    description: t('The number of seconds before expiring the cache'),
   },
 
   order_by_entity: {
     type: 'CheckboxControl',
-    label: 'Order by entity id',
-    description: 'Important! Select this if the table is not already sorted by entity id, ' +
-    'else there is no guarantee that all events for each entity are returned.',
+    label: t('Order by entity id'),
+    description: t('Important! Select this if the table is not already sorted by entity id, ' +
+    'else there is no guarantee that all events for each entity are returned.'),
     default: true,
   },
 
   min_leaf_node_event_count: {
     type: 'SelectControl',
     freeForm: false,
-    label: 'Minimum leaf node event count',
+    label: t('Minimum leaf node event count'),
     default: 1,
     choices: formatSelectOptionsForRange(1, 10),
-    description: 'Leaf nodes that represent fewer than this number of events will be initially ' +
-    'hidden in the visualization',
+    description: t('Leaf nodes that represent fewer than this number of events will be initially ' +
+    'hidden in the visualization'),
   },
 
   color_scheme: {
     type: 'ColorSchemeControl',
-    label: 'Color Scheme',
+    label: t('Color Scheme'),
     default: 'bnbColors',
     renderTrigger: true,
     choices: Object.keys(ALL_COLOR_SCHEMES).map(s => ([s, s])),
-    description: 'The color scheme for rendering chart',
+    description: t('The color scheme for rendering chart'),
     schemes: ALL_COLOR_SCHEMES,
   },
 };
diff --git a/superset/assets/javascripts/explore/stores/visTypes.js b/superset/assets/javascripts/explore/stores/visTypes.js
index 6f4f7ce..8298afc 100644
--- a/superset/assets/javascripts/explore/stores/visTypes.js
+++ b/superset/assets/javascripts/explore/stores/visTypes.js
@@ -1,18 +1,19 @@
 import { D3_TIME_FORMAT_OPTIONS } from './controls';
 import * as v from '../validators';
+import { t } from '../../locales';
 
 export const sections = {
   druidTimeSeries: {
-    label: 'Time',
+    label: t('Time'),
     expanded: true,
-    description: 'Time related form attributes',
+    description: t('Time related form attributes'),
     controlSetRows: [
       ['granularity', 'druid_time_origin'],
       ['since', 'until'],
     ],
   },
   datasourceAndVizType: {
-    label: 'Datasource & Chart Type',
+    label: t('Datasource & Chart Type'),
     expanded: true,
     controlSetRows: [
       ['datasource'],
@@ -21,14 +22,14 @@ export const sections = {
     ],
   },
   colorScheme: {
-    label: 'Color Scheme',
+    label: t('Color Scheme'),
     controlSetRows: [
       ['color_scheme'],
     ],
   },
   sqlaTimeSeries: {
-    label: 'Time',
-    description: 'Time related form attributes',
+    label: t('Time'),
+    description: t('Time related form attributes'),
     expanded: true,
     controlSetRows: [
       ['granularity_sqla', 'time_grain_sqla'],
@@ -36,16 +37,16 @@ export const sections = {
     ],
   },
   sqlClause: {
-    label: 'SQL',
+    label: t('SQL'),
     controlSetRows: [
       ['where'],
       ['having'],
     ],
-    description: 'This section exposes ways to include snippets of SQL in your query',
+    description: t('This section exposes ways to include snippets of SQL in your query'),
   },
   NVD3TimeSeries: [
     {
-      label: 'Query',
+      label: t('Query'),
       expanded: true,
       controlSetRows: [
         ['metrics'],
@@ -55,10 +56,10 @@ export const sections = {
       ],
     },
     {
-      label: 'Advanced Analytics',
-      description: 'This section contains options ' +
+      label: t('Advanced Analytics'),
+      description: t('This section contains options ' +
       'that allow for advanced analytical post processing ' +
-      'of query results',
+      'of query results'),
       controlSetRows: [
         ['rolling_type', 'rolling_periods', 'min_periods'],
         ['time_compare', null],
@@ -69,15 +70,15 @@ export const sections = {
   ],
   filters: [
     {
-      label: 'Filters',
+      label: t('Filters'),
       expanded: true,
       controlSetRows: [['filters']],
     },
     {
-      label: 'Result Filters',
+      label: t('Result Filters'),
       expanded: true,
-      description: 'The filters to apply after post-aggregation.' +
-      'Leave the value control empty to filter empty strings or nulls',
+      description: t('The filters to apply after post-aggregation.' +
+      'Leave the value control empty to filter empty strings or nulls'),
       controlSetRows: [['having_filters']],
     },
   ],
@@ -85,11 +86,11 @@ export const sections = {
 
 export const visTypes = {
   dist_bar: {
-    label: 'Distribution - Bar Chart',
+    label: t('Distribution - Bar Chart'),
     showOnExplore: true,
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Chart Options'),
         controlSetRows: [
           ['metrics'],
           ['groupby'],
@@ -98,7 +99,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['show_legend', 'show_bar_value'],
@@ -112,21 +113,21 @@ export const visTypes = {
     ],
     controlOverrides: {
       groupby: {
-        label: 'Series',
+        label: t('Series'),
       },
       columns: {
-        label: 'Breakdowns',
-        description: 'Defines how each series is broken down',
+        label: t('Breakdowns'),
+        description: t('Defines how each series is broken down'),
       },
     },
   },
 
   pie: {
-    label: 'Pie Chart',
+    label: t('Pie Chart'),
     showOnExplore: true,
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metrics', 'groupby'],
@@ -134,7 +135,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['pie_label_type'],
           ['donut', 'show_legend'],
@@ -146,13 +147,13 @@ export const visTypes = {
   },
 
   line: {
-    label: 'Time Series - Line Chart',
+    label: t('Time Series - Line Chart'),
     showOnExplore: true,
     requiresTime: true,
     controlPanelSections: [
       sections.NVD3TimeSeries[0],
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['show_brush', 'show_legend'],
@@ -161,14 +162,14 @@ export const visTypes = {
         ],
       },
       {
-        label: 'X Axis',
+        label: t('X Axis'),
         controlSetRows: [
           ['x_axis_label', 'bottom_margin'],
           ['x_axis_showminmax', 'x_axis_format'],
         ],
       },
       {
-        label: 'Y Axis',
+        label: t('Y Axis'),
         controlSetRows: [
           ['y_axis_label', 'left_margin'],
           ['y_axis_showminmax', 'y_log_scale'],
@@ -186,24 +187,24 @@ export const visTypes = {
   },
 
   dual_line: {
-    label: 'Dual Axis Line Chart',
+    label: t('Dual Axis Line Chart'),
     requiresTime: true,
     controlPanelSections: [
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['x_axis_format'],
         ],
       },
       {
-        label: 'Y Axis 1',
+        label: t('Y Axis 1'),
         controlSetRows: [
           ['metric', 'y_axis_format'],
         ],
       },
       {
-        label: 'Y Axis 2',
+        label: t('Y Axis 2'),
         controlSetRows: [
           ['metric_2', 'y_axis_2_format'],
         ],
@@ -211,11 +212,11 @@ export const visTypes = {
     ],
     controlOverrides: {
       metric: {
-        label: 'Left Axis Metric',
-        description: 'Choose a metric for left axis',
+        label: t('Left Axis Metric'),
+        description: t('Choose a metric for left axis'),
       },
       y_axis_format: {
-        label: 'Left Axis Format',
+        label: t('Left Axis Format'),
       },
       x_axis_format: {
         choices: D3_TIME_FORMAT_OPTIONS,
@@ -225,13 +226,13 @@ export const visTypes = {
   },
 
   bar: {
-    label: 'Time Series - Bar Chart',
+    label: t('Time Series - Bar Chart'),
     showOnExplore: true,
     requiresTime: true,
     controlPanelSections: [
       sections.NVD3TimeSeries[0],
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['show_brush', 'show_legend', 'show_bar_value'],
@@ -241,7 +242,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Axes',
+        label: t('Axes'),
         controlSetRows: [
           ['x_axis_format', 'y_axis_format'],
           ['x_axis_showminmax', 'reduce_x_ticks'],
@@ -260,12 +261,12 @@ export const visTypes = {
   },
 
   compare: {
-    label: 'Time Series - Percent Change',
+    label: t('Time Series - Percent Change'),
     requiresTime: true,
     controlPanelSections: [
       sections.NVD3TimeSeries[0],
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['x_axis_format', 'y_axis_format'],
@@ -282,12 +283,12 @@ export const visTypes = {
   },
 
   area: {
-    label: 'Time Series - Stacked',
+    label: t('Time Series - Stacked'),
     requiresTime: true,
     controlPanelSections: [
       sections.NVD3TimeSeries[0],
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['show_brush', 'show_legend'],
           ['line_interpolation', 'stacked_style'],
@@ -297,7 +298,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Axes',
+        label: t('Axes'),
         controlSetRows: [
           ['x_axis_format', 'x_axis_showminmax'],
           ['y_axis_format', 'y_axis_bounds'],
@@ -318,11 +319,11 @@ export const visTypes = {
   },
 
   table: {
-    label: 'Table View',
+    label: t('Table View'),
     controlPanelSections: [
       {
-        label: 'GROUP BY',
-        description: 'Use this section if you want a query that aggregates',
+        label: t('GROUP BY'),
+        description: t('Use this section if you want a query that aggregates'),
         controlSetRows: [
           ['groupby', 'metrics'],
           ['include_time', null],
@@ -330,15 +331,15 @@ export const visTypes = {
         ],
       },
       {
-        label: 'NOT GROUPED BY',
-        description: 'Use this section if you want to query atomic rows',
+        label: t('NOT GROUPED BY'),
+        description: t('Use this section if you want to query atomic rows'),
         controlSetRows: [
           ['all_columns'],
           ['order_by_cols'],
         ],
       },
       {
-        label: 'Options',
+        label: t('Options'),
         controlSetRows: [
           ['table_timestamp_format'],
           ['row_limit', 'page_length'],
@@ -357,10 +358,10 @@ export const visTypes = {
   },
 
   markup: {
-    label: 'Markup',
+    label: t('Markup'),
     controlPanelSections: [
       {
-        label: 'Code',
+        label: t('Code'),
         controlSetRows: [
           ['markup_type'],
           ['code'],
@@ -370,10 +371,10 @@ export const visTypes = {
   },
 
   pivot_table: {
-    label: 'Pivot Table',
+    label: t('Pivot Table'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby', 'columns'],
@@ -395,10 +396,10 @@ export const visTypes = {
   },
 
   separator: {
-    label: 'Separator',
+    label: t('Separator'),
     controlPanelSections: [
       {
-        label: 'Code',
+        label: t('Code'),
         controlSetRows: [
           ['markup_type'],
           ['code'],
@@ -417,10 +418,10 @@ export const visTypes = {
   },
 
   word_cloud: {
-    label: 'Word Cloud',
+    label: t('Word Cloud'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['series', 'metric', 'limit'],
@@ -438,10 +439,10 @@ export const visTypes = {
   },
 
   treemap: {
-    label: 'Treemap',
+    label: t('Treemap'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metrics'],
@@ -449,7 +450,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['treemap_ratio'],
@@ -465,11 +466,11 @@ export const visTypes = {
   },
 
   cal_heatmap: {
-    label: 'Calendar Heatmap',
+    label: t('Calendar Heatmap'),
     requiresTime: true,
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metric'],
@@ -486,10 +487,10 @@ export const visTypes = {
   },
 
   box_plot: {
-    label: 'Box Plot',
+    label: t('Box Plot'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metrics'],
@@ -497,7 +498,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['whisker_options'],
@@ -507,10 +508,10 @@ export const visTypes = {
   },
 
   bubble: {
-    label: 'Bubble Chart',
+    label: t('Bubble Chart'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['series', 'entity'],
@@ -518,20 +519,20 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['show_legend', null],
         ],
       },
       {
-        label: 'Bubbles',
+        label: t('Bubbles'),
         controlSetRows: [
           ['size', 'max_bubble_size'],
         ],
       },
       {
-        label: 'X Axis',
+        label: t('X Axis'),
         controlSetRows: [
           ['x_axis_label', 'left_margin'],
           ['x', 'x_axis_format'],
@@ -539,7 +540,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Y Axis',
+        label: t('Y Axis'),
         controlSetRows: [
           ['y_axis_label', 'bottom_margin'],
           ['y', 'y_axis_format'],
@@ -558,11 +559,11 @@ export const visTypes = {
   },
 
   bullet: {
-    label: 'Bullet Chart',
+    label: t('Bullet Chart'),
     requiresTime: false,
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metric'],
@@ -581,10 +582,10 @@ export const visTypes = {
   },
 
   big_number: {
-    label: 'Big Number with Trendline',
+    label: t('Big Number with Trendline'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metric'],
@@ -600,16 +601,16 @@ export const visTypes = {
     ],
     controlOverrides: {
       y_axis_format: {
-        label: 'Number format',
+        label: t('Number format'),
       },
     },
   },
 
   big_number_total: {
-    label: 'Big Number',
+    label: t('Big Number'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['metric'],
@@ -625,16 +626,16 @@ export const visTypes = {
     ],
     controlOverrides: {
       y_axis_format: {
-        label: 'Number format',
+        label: t('Number format'),
       },
     },
   },
 
   histogram: {
-    label: 'Histogram',
+    label: t('Histogram'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['all_columns_x'],
@@ -642,7 +643,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
           ['link_length'],
@@ -651,22 +652,22 @@ export const visTypes = {
     ],
     controlOverrides: {
       all_columns_x: {
-        label: 'Numeric Column',
-        description: 'Select the numeric column to draw the histogram',
+        label: t('Numeric Column'),
+        description: t('Select the numeric column to draw the histogram'),
       },
       link_length: {
-        label: 'No of Bins',
-        description: 'Select number of bins for the histogram',
+        label: t('No of Bins'),
+        description: t('Select number of bins for the histogram'),
         default: 5,
       },
     },
   },
 
   sunburst: {
-    label: 'Sunburst',
+    label: t('Sunburst'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby'],
@@ -675,7 +676,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
         ],
@@ -683,27 +684,27 @@ export const visTypes = {
     ],
     controlOverrides: {
       metric: {
-        label: 'Primary Metric',
-        description: 'The primary metric is used to define the arc segment sizes',
+        label: t('Primary Metric'),
+        description: t('The primary metric is used to define the arc segment sizes'),
       },
       secondary_metric: {
-        label: 'Secondary Metric',
-        description: 'This secondary metric is used to ' +
+        label: t('Secondary Metric'),
+        description: t('This secondary metric is used to ' +
         'define the color as a ratio against the primary metric. ' +
-        'If the two metrics match, color is mapped level groups',
+        'If the two metrics match, color is mapped level groups'),
       },
       groupby: {
-        label: 'Hierarchy',
-        description: 'This defines the level of the hierarchy',
+        label: t('Hierarchy'),
+        description: t('This defines the level of the hierarchy'),
       },
     },
   },
 
   sankey: {
-    label: 'Sankey',
+    label: t('Sankey'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby'],
@@ -712,7 +713,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['color_scheme'],
         ],
@@ -720,17 +721,17 @@ export const visTypes = {
     ],
     controlOverrides: {
       groupby: {
-        label: 'Source / Target',
-        description: 'Choose a source and a target',
+        label: t('Source / Target'),
+        description: t('Choose a source and a target'),
       },
     },
   },
 
   directed_force: {
-    label: 'Directed Force Layout',
+    label: t('Directed Force Layout'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby'],
@@ -739,7 +740,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Options',
+        label: t('Options'),
         controlSetRows: [
           ['link_length'],
           ['charge'],
@@ -748,16 +749,16 @@ export const visTypes = {
     ],
     controlOverrides: {
       groupby: {
-        label: 'Source / Target',
-        description: 'Choose a source and a target',
+        label: t('Source / Target'),
+        description: t('Choose a source and a target'),
       },
     },
   },
   chord: {
-    label: 'Chord Diagram',
+    label: t('Chord Diagram'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby', 'columns'],
@@ -765,7 +766,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['y_axis_format', null],
           ['color_scheme'],
@@ -774,28 +775,28 @@ export const visTypes = {
     ],
     controlOverrides: {
       y_axis_format: {
-        label: 'Number format',
-        description: 'Choose a number format',
+        label: t('Number format'),
+        description: t('Choose a number format'),
       },
       groupby: {
-        label: 'Source',
+        label: t('Source'),
         multi: false,
         validators: [v.nonEmpty],
-        description: 'Choose a source',
+        description: t('Choose a source'),
       },
       columns: {
-        label: 'Target',
+        label: t('Target'),
         multi: false,
         validators: [v.nonEmpty],
-        description: 'Choose a target',
+        description: t('Choose a target'),
       },
     },
   },
   country_map: {
-    label: 'Country Map',
+    label: t('Country Map'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['entity'],
@@ -803,7 +804,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Options',
+        label: t('Options'),
         controlSetRows: [
           ['select_country'],
           ['linear_color_scheme'],
@@ -812,11 +813,11 @@ export const visTypes = {
     ],
     controlOverrides: {
       entity: {
-        label: 'ISO 3166-1 codes of region/province/department',
-        description: "It's ISO 3166-1 of your region/province/department in your table. (see documentation for list of ISO 3166-1)",
+        label: t('ISO 3166-1 codes of region/province/department'),
+        description: t('It\'s ISO 3166-1 of your region/province/department in your table. (see documentation for list of ISO 3166-1)'),
       },
       metric: {
-        label: 'Metric',
+        label: t('Metric'),
         description: 'Metric to display bottom title',
       },
       linear_color_scheme: {
@@ -825,10 +826,10 @@ export const visTypes = {
     },
   },
   world_map: {
-    label: 'World Map',
+    label: t('World Map'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['entity'],
@@ -837,7 +838,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Bubbles',
+        label: t('Bubbles'),
         controlSetRows: [
           ['show_bubbles'],
           ['secondary_metric'],
@@ -847,25 +848,25 @@ export const visTypes = {
     ],
     controlOverrides: {
       entity: {
-        label: 'Country Control',
-        description: '3 letter code of the country',
+        label: t('Country Control'),
+        description: t('3 letter code of the country'),
       },
       metric: {
-        label: 'Metric for color',
-        description: 'Metric that defines the color of the country',
+        label: t('Metric for color'),
+        description: t('Metric that defines the color of the country'),
       },
       secondary_metric: {
-        label: 'Bubble size',
-        description: 'Metric that defines the size of the bubble',
+        label: t('Bubble size'),
+        description: t('Metric that defines the size of the bubble'),
       },
     },
   },
 
   filter_box: {
-    label: 'Filter Box',
+    label: t('Filter Box'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['groupby'],
@@ -881,11 +882,10 @@ export const visTypes = {
     ],
     controlOverrides: {
       groupby: {
-        label: 'Filter controls',
-        description: (
+        label: t('Filter controls'),
+        description: t(
           'The controls you want to filter on. Note that only columns ' +
-          'checked as "filterable" will show up on this list.'
-        ),
+          'checked as "filterable" will show up on this list.'),
         mapStateToProps: state => ({
           options: (state.datasource) ? state.datasource.columns.filter(c => c.filterable) : [],
         }),
@@ -894,10 +894,10 @@ export const visTypes = {
   },
 
   iframe: {
-    label: 'iFrame',
+    label: t('iFrame'),
     controlPanelSections: [
       {
-        label: 'Options',
+        label: t('Options'),
         controlSetRows: [
           ['url'],
         ],
@@ -906,10 +906,10 @@ export const visTypes = {
   },
 
   para: {
-    label: 'Parallel Coordinates',
+    label: t('Parallel Coordinates'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['series'],
@@ -928,10 +928,10 @@ export const visTypes = {
   },
 
   heatmap: {
-    label: 'Heatmap',
+    label: t('Heatmap'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['all_columns_x', 'all_columns_y'],
@@ -939,7 +939,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Heatmap Options',
+        label: t('Heatmap Options'),
         controlSetRows: [
           ['linear_color_scheme'],
           ['xscale_interval', 'yscale_interval'],
@@ -974,11 +974,11 @@ export const visTypes = {
   },
 
   horizon: {
-    label: 'Horizon',
+    label: t('Horizon'),
     controlPanelSections: [
       sections.NVD3TimeSeries[0],
       {
-        label: 'Chart Options',
+        label: t('Chart Options'),
         controlSetRows: [
           ['series_height', 'horizon_color_scale'],
         ],
@@ -987,10 +987,10 @@ export const visTypes = {
   },
 
   mapbox: {
-    label: 'Mapbox',
+    label: t('Mapbox'),
     controlPanelSections: [
       {
-        label: 'Query',
+        label: t('Query'),
         expanded: true,
         controlSetRows: [
           ['all_columns_x', 'all_columns_y'],
@@ -1000,21 +1000,21 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Points',
+        label: t('Points'),
         controlSetRows: [
           ['point_radius'],
           ['point_radius_unit'],
         ],
       },
       {
-        label: 'Labelling',
+        label: t('Labelling'),
         controlSetRows: [
           ['mapbox_label'],
           ['pandas_aggfunc'],
         ],
       },
       {
-        label: 'Visual Tweaks',
+        label: t('Visual Tweaks'),
         controlSetRows: [
           ['render_while_dragging'],
           ['mapbox_style'],
@@ -1023,7 +1023,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Viewport',
+        label: t('Viewport'),
         controlSetRows: [
           ['viewport_longitude'],
           ['viewport_latitude'],
@@ -1033,36 +1033,36 @@ export const visTypes = {
     ],
     controlOverrides: {
       all_columns_x: {
-        label: 'Longitude',
-        description: 'Column containing longitude data',
+        label: t('Longitude'),
+        description: t('Column containing longitude data'),
       },
       all_columns_y: {
-        label: 'Latitude',
-        description: 'Column containing latitude data',
+        label: t('Latitude'),
+        description: t('Column containing latitude data'),
       },
       pandas_aggfunc: {
-        label: 'Cluster label aggregator',
-        description: 'Aggregate function applied to the list of points ' +
-        'in each cluster to produce the cluster label.',
+        label: t('Cluster label aggregator'),
+        description: t('Aggregate function applied to the list of points ' +
+          'in each cluster to produce the cluster label.'),
       },
       rich_tooltip: {
-        label: 'Tooltip',
-        description: 'Show a tooltip when hovering over points and clusters ' +
-        'describing the label',
+        label: t('Tooltip'),
+        description: t('Show a tooltip when hovering over points and clusters ' +
+          'describing the label'),
       },
       groupby: {
-        description: 'One or many controls to group by. If grouping, latitude ' +
-        'and longitude columns must be present.',
+        description: t('One or many controls to group by. If grouping, latitude ' +
+          'and longitude columns must be present.'),
       },
     },
   },
 
   event_flow: {
-    label: 'Event flow',
+    label: t('Event flow'),
     requiresTime: true,
     controlPanelSections: [
       {
-        label: 'Event definition',
+        label: t('Event definition'),
         controlSetRows: [
           ['entity'],
           ['all_columns_x'],
@@ -1072,7 +1072,7 @@ export const visTypes = {
         ],
       },
       {
-        label: 'Additional meta data',
+        label: t('Additional meta data'),
         controlSetRows: [
           ['all_columns'],
         ],
@@ -1080,11 +1080,11 @@ export const visTypes = {
     ],
     controlOverrides: {
       entity: {
-        label: 'Column containing entity ids',
-        description: 'e.g., a "user id" column',
+        label: t('Column containing entity ids'),
+        description: t('e.g., a "user id" column'),
       },
       all_columns_x: {
-        label: 'Column containing event names',
+        label: t('Column containing event names'),
         validators: [v.nonEmpty],
         default: control => (
           control.choices && control.choices.length > 0 ?
@@ -1092,12 +1092,12 @@ export const visTypes = {
         ),
       },
       row_limit: {
-        label: 'Event count limit',
-        description: 'The maximum number of events to return, equivalent to number of rows',
+        label: t('Event count limit'),
+        description: t('The maximum number of events to return, equivalent to number of rows'),
       },
       all_columns: {
-        label: 'Meta data',
-        description: 'Select any columns for meta data inspection',
+        label: t('Meta data'),
+        description: t('Select any columns for meta data inspection'),
       },
     },
   },
diff --git a/superset/assets/javascripts/i18n.jsx b/superset/assets/javascripts/i18n.jsx
new file mode 100644
index 0000000..b27f739
--- /dev/null
+++ b/superset/assets/javascripts/i18n.jsx
@@ -0,0 +1,32 @@
+import Jed from 'jed';
+
+const DEFAULT_LANGUAGE_PACK = {
+  domain: 'superset',
+  locale_data: {
+    superset: {
+      '': {
+        domain: 'superset',
+        lang: 'en',
+        plural_forms: 'nplurals=1; plural=0',
+      },
+    },
+  },
+};
+
+const i18n = (function () {
+  let languagePack = DEFAULT_LANGUAGE_PACK;
+
+  if (typeof window !== 'undefined') {
+    const root = document.getElementById('app');
+    const bootstrapData = root ? JSON.parse(root.getAttribute('data-bootstrap')) : {};
+    if (bootstrapData.common && bootstrapData.common.language_pack) {
+      languagePack = bootstrapData.common.language_pack;
+      delete bootstrapData.common.locale;
+      delete bootstrapData.common.language_pack;
+    }
+  }
+
+  return new Jed(languagePack);
+}());
+
+export default i18n;
diff --git a/superset/assets/javascripts/locales.jsx b/superset/assets/javascripts/locales.jsx
new file mode 100644
index 0000000..12b1a87
--- /dev/null
+++ b/superset/assets/javascripts/locales.jsx
@@ -0,0 +1,148 @@
+/* eslint-disable global-require, import/no-dynamic-require */
+import React from 'react';
+import { sprintf } from 'sprintf-js';
+import i18n from './i18n';
+
+function formatForReact(formatString, args) {
+  const rv = [];
+  let cursor = 0;
+  sprintf.parse(formatString).forEach((match, idx) => {
+    const cpoyMatch = match;
+    let copyIdx = idx;
+    if (typeof match === 'string') {
+      rv.push(match);
+    } else {
+      let arg = null;
+      if (match[2]) {
+        arg = args[0][match[2][0]];
+      } else if (match[1]) {
+        arg = args[parseInt(match[1], 10) - 1];
+      } else {
+        arg = args[cursor++];
+      }
+      if (React.isValidElement(arg)) {
+        rv.push(React.cloneElement(arg, { key: idx }));
+      } else {
+        cpoyMatch[2] = null;
+        cpoyMatch[1] = 1;
+        rv.push(<span key={copyIdx++}>
+          {sprintf.format([cpoyMatch], [null, arg])}
+        </span>);
+      }
+    }
+  });
+  return rv;
+}
+
+function argsInvolveReact(args) {
+  if (args.some(React.isValidElement)) {
+    return true;
+  }
+  if (args.length === 1 && typeof args[0] === 'object') {
+    return Object.keys(args[0]).some(function (key) {
+      return React.isValidElement(args[0][key]);
+    });
+  }
+  return false;
+}
+
+export function parseComponentTemplate(string) {
+  const rv = {};
+  function process(startPos, group, inGroup) {
+    const regex = /\[(.*?)(:|\])|\]/g;
+    let match;
+    const buf = [];
+    let satisfied = false;
+    let pos = regex.lastIndex = startPos;
+    match = regex.exec(string);
+    while (match !== null) {
+      const substr = string.substr(pos, match.index - pos);
+      if (substr !== '') {
+        buf.push(substr);
+      }
+      if (match[0] === ']') {
+        if (inGroup) {
+          satisfied = true;
+          break;
+        } else {
+          pos = regex.lastIndex;
+          continue;
+        }
+      }
+      if (match[2] === ']') {
+        pos = regex.lastIndex;
+      } else {
+        pos = regex.lastIndex = process(regex.lastIndex, match[1], true);
+      }
+      buf.push({ group: match[1] });
+      match = regex.exec(string);
+    }
+    let endPos = regex.lastIndex;
+    if (!satisfied) {
+      const rest = string.substr(pos);
+      if (rest) {
+        buf.push(rest);
+      }
+      endPos = string.length;
+    }
+    rv[group] = buf;
+    return endPos;
+  }
+  process(0, 'root', false);
+  return rv;
+}
+
+export function renderComponentTemplate(template, components) {
+  let idx = 0;
+  function renderGroup(group) {
+    const children = [];
+    (template[group] || []).forEach((item) => {
+      if (typeof item === 'string') {
+        children.push(<span key={idx++}>{item}</span>);
+      } else {
+        children.push(renderGroup(item.group));
+      }
+    });
+    let reference = components[group] || <span key={idx++} />;
+    if (!React.isValidElement(reference)) {
+      reference = <span key={idx++}>{reference}</span>;
+    }
+    if (children.length > 0) {
+      return React.cloneElement(reference, { key: idx++ }, children);
+    }
+    return React.cloneElement(reference, { key: idx++ });
+  }
+  return renderGroup('root');
+}
+
+export function format(formatString, args) {
+  if (argsInvolveReact(args)) {
+    return formatForReact(formatString, args);
+  }
+  return sprintf(formatString, ...args);
+}
+
+export function gettext(string, ...args) {
+  if (!string || !i18n) {
+    return string;
+  }
+
+  let rv = i18n.gettext(string);
+  if (args.length > 0) {
+    rv = format(rv, args);
+  }
+  return rv;
+}
+
+export function ngettext(singular, plural, ...args) {
+  return format(i18n.ngettext(singular, plural, args[0] || 0), args);
+}
+
+export function gettextComponentTemplate(template, components) {
+  const tmpl = parseComponentTemplate(i18n.gettext(template));
+  return renderComponentTemplate(tmpl, components);
+}
+
+export const t = gettext;
+export const tn = ngettext;
+export const tct = gettextComponentTemplate;
diff --git a/superset/assets/javascripts/modules/superset.js b/superset/assets/javascripts/modules/superset.js
index aaf1e85..a1723eb 100644
--- a/superset/assets/javascripts/modules/superset.js
+++ b/superset/assets/javascripts/modules/superset.js
@@ -4,6 +4,7 @@ import Mustache from 'mustache';
 import vizMap from '../../visualizations/main';
 import { getExploreUrl } from '../explore/exploreUtils';
 import { applyDefaultFormData } from '../explore/stores/store';
+import { t } from '../locales';
 
 const utils = require('./utils');
 
@@ -29,7 +30,7 @@ const px = function (state) {
       }
     }
     $('.favstar')
-    .attr('title', 'Click to favorite/unfavorite')
+    .attr('title', t('Click to favorite/unfavorite'))
     .css('cursor', 'pointer')
     .each(show)
     .each(function () {
@@ -126,10 +127,10 @@ const px = function (state) {
           if (status === 0) {
             // This may happen when the worker in gunicorn times out
             msg += (
-              'The server could not be reached. You may want to ' +
-              'verify your connection and try again.');
+              t('The server could not be reached. You may want to ' +
+              'verify your connection and try again.'));
           } else {
-            msg += 'An unknown error occurred. (Status: ' + status + ')';
+            msg += (t('An unknown error occurred. (Status: %s )', status));
           }
         }
         return msg;
@@ -219,7 +220,7 @@ const px = function (state) {
               vizMap[formData.viz_type](this, queryResponse);
               this.done(queryResponse);
             } catch (e) {
-              this.error('An error occurred while rendering the visualization: ' + e);
+              this.error(t('An error occurred while rendering the visualization: %s', e));
             }
           },
           error: (err) => {
diff --git a/superset/assets/javascripts/profile/components/App.jsx b/superset/assets/javascripts/profile/components/App.jsx
index 596b0ad..0cb9034 100644
--- a/superset/assets/javascripts/profile/components/App.jsx
+++ b/superset/assets/javascripts/profile/components/App.jsx
@@ -6,6 +6,7 @@ import UserInfo from './UserInfo';
 import Security from './Security';
 import RecentActivity from './RecentActivity';
 import CreatedContent from './CreatedContent';
+import { t } from '../../locales';
 
 const propTypes = {
   user: PropTypes.object.isRequired,
@@ -20,25 +21,25 @@ export default function App(props) {
         </Col>
         <Col md={9}>
           <Tabs id="options">
-            <Tab eventKey={1} title={<div><i className="fa fa-star" /> Favorites</div>}>
+            <Tab eventKey={1} title={<div><i className="fa fa-star" /> {t('Favorites')}</div>}>
               <Panel><Favorites user={props.user} /></Panel>
             </Tab>
             <Tab
               eventKey={2}
               title={
-                <div><i className="fa fa-paint-brush" /> Created Content</div>
+                <div><i className="fa fa-paint-brush" /> {t('Created Content')}</div>
               }
             >
               <Panel>
                 <CreatedContent user={props.user} />
               </Panel>
             </Tab>
-            <Tab eventKey={3} title={<div><i className="fa fa-list" /> Recent Activity</div>}>
+            <Tab eventKey={3} title={<div><i className="fa fa-list" /> {t('Recent Activity')}</div>}>
               <Panel>
                 <RecentActivity user={props.user} />
               </Panel>
             </Tab>
-            <Tab eventKey={4} title={<div><i className="fa fa-lock" /> Security & Access</div>}>
+            <Tab eventKey={4} title={<div><i className="fa fa-lock" /> {t('Security & Access')}</div>}>
               <Panel>
                 <Security user={props.user} />
               </Panel>
diff --git a/superset/assets/javascripts/profile/components/CreatedContent.jsx b/superset/assets/javascripts/profile/components/CreatedContent.jsx
index 87921c6..895be78 100644
--- a/superset/assets/javascripts/profile/components/CreatedContent.jsx
+++ b/superset/assets/javascripts/profile/components/CreatedContent.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import moment from 'moment';
 import TableLoader from './TableLoader';
+import { t } from '../../locales';
 
 const propTypes = {
   user: PropTypes.object.isRequired,
@@ -29,7 +30,7 @@ class CreatedContent extends React.PureComponent {
         className="table table-condensed"
         columns={['slice', 'favorited']}
         mutator={mutator}
-        noDataText="No slices"
+        noDataText={t('No slices')}
         sortable
       />
     );
@@ -45,7 +46,7 @@ class CreatedContent extends React.PureComponent {
         className="table table-condensed"
         mutator={mutator}
         dataEndpoint={`/superset/created_dashboards/${this.props.user.userId}/`}
-        noDataText="No dashboards"
+        noDataText={t('No dashboards')}
         columns={['dashboard', 'favorited']}
         sortable
       />
@@ -54,10 +55,10 @@ class CreatedContent extends React.PureComponent {
   render() {
     return (
       <div>
-        <h3>Dashboards</h3>
+        <h3>{t('Dashboards')}</h3>
         {this.renderDashboardTable()}
         <hr />
-        <h3>Slices</h3>
+        <h3>{t('Slices')}</h3>
         {this.renderSliceTable()}
       </div>
     );
diff --git a/superset/assets/javascripts/profile/components/Favorites.jsx b/superset/assets/javascripts/profile/components/Favorites.jsx
index 9039d91..3141bb0 100644
--- a/superset/assets/javascripts/profile/components/Favorites.jsx
+++ b/superset/assets/javascripts/profile/components/Favorites.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import moment from 'moment';
 import TableLoader from './TableLoader';
+import { t } from '../../locales';
 
 const propTypes = {
   user: PropTypes.object.isRequired,
@@ -30,7 +31,7 @@ export default class Favorites extends React.PureComponent {
         className="table table-condensed"
         columns={['slice', 'creator', 'favorited']}
         mutator={mutator}
-        noDataText="No favorite slices yet, go click on stars!"
+        noDataText={t('No favorite slices yet, go click on stars!')}
         sortable
       />
     );
@@ -46,7 +47,7 @@ export default class Favorites extends React.PureComponent {
         className="table table-condensed"
         mutator={mutator}
         dataEndpoint={`/superset/fave_dashboards/${this.props.user.userId}/`}
-        noDataText="No favorite dashboards yet, go click on stars!"
+        noDataText={t('No favorite dashboards yet, go click on stars!')}
         columns={['dashboard', 'creator', 'favorited']}
         sortable
       />
@@ -55,10 +56,10 @@ export default class Favorites extends React.PureComponent {
   render() {
     return (
       <div>
-        <h3>Dashboards</h3>
+        <h3>{t('Dashboards')}</h3>
         {this.renderDashboardTable()}
         <hr />
-        <h3>Slices</h3>
+        <h3>{t('Slices')}</h3>
         {this.renderSliceTable()}
       </div>
     );
diff --git a/superset/assets/javascripts/profile/components/Security.jsx b/superset/assets/javascripts/profile/components/Security.jsx
index 0d942dd..748be6b 100644
--- a/superset/assets/javascripts/profile/components/Security.jsx
+++ b/superset/assets/javascripts/profile/components/Security.jsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import { Badge, Label } from 'react-bootstrap';
+import { t } from '../../locales';
 
 const propTypes = {
   user: PropTypes.object.isRequired,
@@ -10,7 +11,7 @@ export default function Security({ user }) {
     <div>
       <div className="roles">
         <h4>
-          Roles <Badge>{Object.keys(user.roles).length}</Badge>
+          {t('Roles')} <Badge>{Object.keys(user.roles).length}</Badge>
         </h4>
         {Object.keys(user.roles).map(role => <Label key={role}>{role}</Label>)}
         <hr />
@@ -19,7 +20,7 @@ export default function Security({ user }) {
         {user.permissions.database_access &&
           <div>
             <h4>
-              Databases <Badge>{user.permissions.database_access.length}</Badge>
+              {t('Databases')} <Badge>{user.permissions.database_access.length}</Badge>
             </h4>
             {user.permissions.database_access.map(role => <Label key={role}>{role}</Label>)}
             <hr />
@@ -30,7 +31,7 @@ export default function Security({ user }) {
         {user.permissions.datasource_access &&
           <div>
             <h4>
-              Datasources <Badge>{user.permissions.datasource_access.length}</Badge>
+              {t('Datasources')} <Badge>{user.permissions.datasource_access.length}</Badge>
             </h4>
             {user.permissions.datasource_access.map(role => <Label key={role}>{role}</Label>)}
           </div>
diff --git a/superset/assets/javascripts/profile/components/UserInfo.jsx b/superset/assets/javascripts/profile/components/UserInfo.jsx
index 4f751ed..cf9bde7 100644
--- a/superset/assets/javascripts/profile/components/UserInfo.jsx
+++ b/superset/assets/javascripts/profile/components/UserInfo.jsx
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
 import Gravatar from 'react-gravatar';
 import moment from 'moment';
 import { Panel } from 'react-bootstrap';
+import { t } from '../../locales';
 
 const propTypes = {
   user: PropTypes.object.isRequired,
@@ -14,7 +15,7 @@ const UserInfo = ({ user }) => (
         email={user.email}
         width="100%"
         height=""
-        alt="Profile picture provided by Gravatar"
+        alt={t('Profile picture provided by Gravatar')}
         className="img-rounded"
         style={{ borderRadius: 15 }}
       />
@@ -29,7 +30,7 @@ const UserInfo = ({ user }) => (
       </h4>
       <hr />
       <p>
-        <i className="fa fa-clock-o" /> joined {moment(user.createdOn, 'YYYYMMDD').fromNow()}
+        <i className="fa fa-clock-o" /> {t('joined')} {moment(user.createdOn, 'YYYYMMDD').fromNow()}
       </p>
       <p className="email">
         <i className="fa fa-envelope-o" /> {user.email}
@@ -39,7 +40,7 @@ const UserInfo = ({ user }) => (
       </p>
       <p>
         <i className="fa fa-key" />&nbsp;
-        <span className="text-muted">id:</span>&nbsp;
+        <span className="text-muted">{t('id:')}</span>&nbsp;
         <span className="user-id">{user.userId}</span>
       </p>
     </Panel>
diff --git a/superset/assets/javascripts/profile/index.jsx b/superset/assets/javascripts/profile/index.jsx
index adf371e..e9ed59b 100644
--- a/superset/assets/javascripts/profile/index.jsx
+++ b/superset/assets/javascripts/profile/index.jsx
@@ -1,7 +1,7 @@
 /* eslint no-unused-vars: 0 */
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Badge, Col, Label, Row, Tabs, Tab, Panel } from 'react-bootstrap';
+
 import App from './components/App';
 import { appSetup } from '../common';
 
diff --git a/superset/assets/package.json b/superset/assets/package.json
index 002d0e8..729bb02 100644
--- a/superset/assets/package.json
+++ b/superset/assets/package.json
@@ -54,6 +54,8 @@
     "datamaps": "^0.5.8",
     "datatables.net-bs": "^1.10.15",
     "immutable": "^3.8.1",
+    "jed": "^1.1.1",
+    "po2json": "^0.4.5",
     "jquery": "3.1.1",
     "lodash.throttle": "^4.1.1",
     "moment": "^2.14.1",
@@ -85,6 +87,7 @@
     "redux-localstorage": "^0.4.1",
     "redux-thunk": "^2.1.0",
     "shortid": "^2.2.6",
+    "sprintf-js": "^1.1.1",
     "supercluster": "https://github.com/georgeke/supercluster/tarball/ac3492737e7ce98e07af679623aad452373bbc40",
     "urijs": "^1.18.10",
     "viewport-mercator-project": "^2.1.0"
diff --git a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
index c08cc66..35b6f81 100644
--- a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
+++ b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import Select from 'react-select';
-import { mount, shallow } from 'enzyme';
+import { shallow } from 'enzyme';
 import { describe, it } from 'mocha';
 import { expect } from 'chai';
 import sinon from 'sinon';
@@ -11,10 +11,12 @@ describe('AsyncSelect', () => {
   const mockedProps = {
     dataEndpoint: '/slicemodelview/api/read',
     onChange: sinon.spy(),
+    placeholder: 'Select...',
     mutator: () => [
       { value: 1, label: 'main' },
       { value: 2, label: 'another' },
     ],
+    valueRenderer: opt => opt.label,
   };
   it('is valid element', () => {
     expect(
@@ -49,34 +51,34 @@ describe('AsyncSelect', () => {
       server.restore();
     });
     it('should be off by default', () => {
-      const wrapper = mount(
+      const wrapper = shallow(
         <AsyncSelect {...mockedProps} />,
       );
+      wrapper.instance().fetchOptions();
       const spy = sinon.spy(wrapper.instance(), 'onChange');
       expect(spy.callCount).to.equal(0);
     });
     it('should auto select first option', () => {
-      const wrapper = mount(
+      const wrapper = shallow(
         <AsyncSelect {...mockedProps} autoSelect />,
       );
       const spy = sinon.spy(wrapper.instance(), 'onChange');
-
+      wrapper.instance().fetchOptions();
       server.respond();
 
       expect(spy.callCount).to.equal(1);
       expect(spy.calledWith(wrapper.instance().state.options[0])).to.equal(true);
     });
     it('should not auto select when value prop is set', () => {
-      const wrapper = mount(
+      const wrapper = shallow(
         <AsyncSelect {...mockedProps} value={2} autoSelect />,
       );
       const spy = sinon.spy(wrapper.instance(), 'onChange');
-
+      wrapper.instance().fetchOptions();
       server.respond();
 
       expect(spy.callCount).to.equal(0);
       expect(wrapper.find(Select)).to.have.length(1);
-      expect(wrapper.find('.Select-value-label').children().first().text()).to.equal('another');
     });
   });
 });
diff --git a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
index edce86a..4e63b26 100644
--- a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
@@ -19,7 +19,7 @@ describe('EditableTitle', () => {
     },
   };
   const editableWrapper = shallow(<EditableTable {...mockProps} />);
-  const notEditableWrapper = shallow(<EditableTable title="my title" />);
+  const notEditableWrapper = shallow(<EditableTable title="my title" onSaveTitle={callback} />);
   it('is valid', () => {
     expect(
       React.isValidElement(<EditableTable {...mockProps} />),
diff --git a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
index 3c8953f..98c8758 100644
--- a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
@@ -1,9 +1,8 @@
 import React from 'react';
 import { Overlay, Popover, FormControl } from 'react-bootstrap';
-import { shallow, mount } from 'enzyme';
+import { shallow } from 'enzyme';
 import { describe, it } from 'mocha';
 import { expect } from 'chai';
-
 import SaveQuery from '../../../javascripts/SqlLab/components/SaveQuery';
 
 describe('SavedQuery', () => {
@@ -30,11 +29,11 @@ describe('SavedQuery', () => {
     expect(wrapper.find(Popover)).to.have.length(1);
   });
   it('pops and hides', () => {
-    const wrapper = mount(<SaveQuery {...mockedProps} />);
+    const wrapper = shallow(<SaveQuery {...mockedProps} />);
     expect(wrapper.state().showSave).to.equal(false);
-    wrapper.find('.toggleSave').simulate('click');
+    wrapper.find('.toggleSave').simulate('click', { target: { value: 'test' } });
     expect(wrapper.state().showSave).to.equal(true);
-    wrapper.find('.toggleSave').simulate('click');
+    wrapper.find('.toggleSave').simulate('click', { target: { value: 'test' } });
     expect(wrapper.state().showSave).to.equal(false);
   });
   it('has a cancel button', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
index 21a8a4f..e9172a9 100644
--- a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
@@ -2,6 +2,7 @@ import React from 'react';
 import { mount } from 'enzyme';
 import { describe, it, beforeEach } from 'mocha';
 import { expect } from 'chai';
+import sinon from 'sinon';
 
 import Timer from '../../../javascripts/components/Timer';
 import { now } from '../../../javascripts/modules/dates';
@@ -9,16 +10,21 @@ import { now } from '../../../javascripts/modules/dates';
 
 describe('Timer', () => {
   let wrapper;
+  let clock;
   const mockedProps = {
-    startTime: now(),
     endTime: null,
     isRunning: true,
     status: 'warning',
   };
 
   beforeEach(() => {
+    clock = sinon.useFakeTimers();
+    mockedProps.startTime = now() + 1;
     wrapper = mount(<Timer {...mockedProps} />);
   });
+  afterEach(() => {
+    clock.restore();
+  });
 
   it('is a valid element', () => {
     expect(React.isValidElement(<Timer {...mockedProps} />)).to.equal(true);
@@ -26,9 +32,8 @@ describe('Timer', () => {
 
   it('componentWillMount starts timer after 30ms and sets state.clockStr', () => {
     expect(wrapper.state().clockStr).to.equal('');
-    setTimeout(() => {
-      expect(wrapper.state().clockStr).not.equal('');
-    }, 31);
+    clock.tick(31);
+    expect(wrapper.state().clockStr).not.equal('');
   });
 
   it('calls startTimer on mount', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/reducers_spec.js b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
index f777503..a3a5dbf 100644
--- a/superset/assets/spec/javascripts/sqllab/reducers_spec.js
+++ b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
@@ -1,4 +1,4 @@
-import { beforeEach, describe, it } from 'mocha';
+import { describe, it } from 'mocha';
 import { expect } from 'chai';
 
 import * as r from '../../../javascripts/SqlLab/reducers';
@@ -9,7 +9,9 @@ describe('sqlLabReducer', () => {
   describe('CLONE_QUERY_TO_NEW_TAB', () => {
     const testQuery = { sql: 'SELECT * FROM...', dbId: 1, id: 'flasj233' };
     let newState = Object.assign({}, initialState, { queries: { [testQuery.id]: testQuery } });
-    newState = r.sqlLabReducer(newState, actions.cloneQueryToNewTab(testQuery));
+    beforeEach(() => {
+      newState = r.sqlLabReducer(newState, actions.cloneQueryToNewTab(testQuery));
+    });
 
     it('should have at most one more tab', () => {
       expect(newState.queryEditors).have.length(2);
diff --git a/superset/assets/visualizations/EventFlow.jsx b/superset/assets/visualizations/EventFlow.jsx
index 110f4a7..83811a5 100644
--- a/superset/assets/visualizations/EventFlow.jsx
+++ b/superset/assets/visualizations/EventFlow.jsx
@@ -9,6 +9,7 @@ import {
   EVENT_NAME,
   ENTITY_ID,
 } from '@data-ui/event-flow';
+import { t } from '../javascripts/locales';
 
 /*
  * This function takes the slice object and json payload as input and renders a
@@ -52,7 +53,7 @@ function renderEventFlow(slice, json) {
 
     Component = <ResponsiveVis data={cleanData} initialMinEventCount={minEventCount} />;
   } else {
-    Component = <div>Sorry, there appears to be no data</div>;
+    Component = <div>{t('Sorry, there appears to be no data')}</div>;
   }
 
   ReactDOM.render(Component, container);
diff --git a/superset/assets/visualizations/filter_box.jsx b/superset/assets/visualizations/filter_box.jsx
index a5de26a..1bcaa52 100644
--- a/superset/assets/visualizations/filter_box.jsx
+++ b/superset/assets/visualizations/filter_box.jsx
@@ -8,6 +8,7 @@ import { Button } from 'react-bootstrap';
 
 import { TIME_CHOICES } from './constants';
 import './filter_box.css';
+import { t } from '../javascripts/locales';
 
 const propTypes = {
   origSelectedValues: PropTypes.object,
@@ -102,7 +103,7 @@ class FilterBox extends React.Component {
         <div key={filter} className="m-b-5">
           {this.props.datasource.verbose_map[filter] || filter}
           <Select.Creatable
-            placeholder={`Select [${filter}]`}
+            placeholder={t('Select [%s]', filter)}
             key={filter}
             multi
             value={this.state.selectedValues[filter]}
diff --git a/superset/config.py b/superset/config.py
index d4c019c..f934e3a 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -159,8 +159,8 @@ BABEL_DEFAULT_FOLDER = 'babel/translations'
 LANGUAGES = {
     'en': {'flag': 'us', 'name': 'English'},
     'it': {'flag': 'it', 'name': 'Italian'},
-    # 'fr': {'flag': 'fr', 'name': 'French'},
-    # 'zh': {'flag': 'cn', 'name': 'Chinese'},
+    'fr': {'flag': 'fr', 'name': 'French'},
+    'zh': {'flag': 'cn', 'name': 'Chinese'},
 }
 # ---------------------------------------------------
 # Image and file configuration
diff --git a/superset/templates/appbuilder/navbar_right.html b/superset/templates/appbuilder/navbar_right.html
index d6d844d..3e2c259 100644
--- a/superset/templates/appbuilder/navbar_right.html
+++ b/superset/templates/appbuilder/navbar_right.html
@@ -9,7 +9,7 @@
        <div class="f16"><i class="flag {{languages[locale].get('flag')}}"></i><b class="caret"></b>
        </div>
     </a>
-    <ul class="dropdown-menu">
+    <ul class="dropdown-menu" id="language-picker">
       <li class="dropdown">
         {% for lang in languages %}
             {% if lang != locale %}
diff --git a/superset/templates/superset/dashboard.html b/superset/templates/superset/dashboard.html
index 86e33c3..bb0b97c 100644
--- a/superset/templates/superset/dashboard.html
+++ b/superset/templates/superset/dashboard.html
@@ -2,6 +2,7 @@
 
 {% block body %}
 <div
+  id="app"
   class="dashboard container-fluid"
   data-bootstrap="{{ bootstrap_data }}"
 >
diff --git a/superset/translations/__init__.py b/superset/translations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/superset/translations/en/LC_MESSAGES/messages.json b/superset/translations/en/LC_MESSAGES/messages.json
new file mode 100644
index 0000000..d9ee5c2
--- /dev/null
+++ b/superset/translations/en/LC_MESSAGES/messages.json
@@ -0,0 +1 @@
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=2; plural=(n != 1)","lang":"en"},"Time Column":[""],"second":[""],"minute":[""],"hour":[""],"day":[""],"week":[""],"month":[""],"quarter":[""],"year":[""],"week_start_monday":[""],"week_ending_saturday":[""],"week_start_sunday":[""],"5 minute":[""],"half hour":[""],"10 minute":[""],"[Superset] Access to the datasource %(name)s was granted":[""],"Table View":[""],"Pivot Table":[""],"Markup":[" [...]
\ No newline at end of file
diff --git a/superset/translations/en/LC_MESSAGES/messages.mo b/superset/translations/en/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..9258008
Binary files /dev/null and b/superset/translations/en/LC_MESSAGES/messages.mo differ
diff --git a/superset/translations/en/LC_MESSAGES/messages.po b/superset/translations/en/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..774c8c2
--- /dev/null
+++ b/superset/translations/en/LC_MESSAGES/messages.po
@@ -0,0 +1,3327 @@
+# English translations for PROJECT.
+# Copyright (C) 2016 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-07-31 11:46+0800\n"
+"PO-Revision-Date: 2016-05-02 08:49-0700\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language: en\n"
+"Language-Team: en <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.4.0\n"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:491
+#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
+#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
+#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
+#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
+#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
+msgid "Time Column"
+msgstr ""
+
+#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
+#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
+#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
+#: superset/db_engine_specs.py:962
+msgid "second"
+msgstr ""
+
+#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
+#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
+#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
+#: superset/db_engine_specs.py:963
+msgid "minute"
+msgstr ""
+
+#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
+#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
+#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
+#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
+#: superset/db_engine_specs.py:964
+msgid "hour"
+msgstr ""
+
+#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
+#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
+#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
+#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
+msgid "day"
+msgstr ""
+
+#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
+#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
+#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
+#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:966
+msgid "week"
+msgstr ""
+
+#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
+#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
+#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
+#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
+#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
+msgid "month"
+msgstr ""
+
+#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
+#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
+#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
+#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
+#: superset/db_engine_specs.py:968
+msgid "quarter"
+msgstr ""
+
+#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
+#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
+#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
+#: superset/db_engine_specs.py:969
+msgid "year"
+msgstr ""
+
+#: superset/db_engine_specs.py:332
+msgid "week_start_monday"
+msgstr ""
+
+#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
+msgid "week_ending_saturday"
+msgstr ""
+
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
+msgid "week_start_sunday"
+msgstr ""
+
+#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
+msgid "5 minute"
+msgstr ""
+
+#: superset/db_engine_specs.py:817
+msgid "half hour"
+msgstr ""
+
+#: superset/db_engine_specs.py:929
+msgid "10 minute"
+msgstr ""
+
+#: superset/utils.py:472
+#, python-format
+msgid "[Superset] Access to the datasource %(name)s was granted"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:283
+#: superset/viz.py:312
+msgid "Table View"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:334
+#: superset/viz.py:368
+msgid "Pivot Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:321
+#: superset/viz.py:423
+msgid "Markup"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:348
+#: superset/viz.py:442
+msgid "Separator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:369
+#: superset/viz.py:458
+msgid "Word Cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:383
+#: superset/viz.py:481
+msgid "Treemap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:403
+#: superset/viz.py:507
+msgid "Calendar Heatmap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:418
+#: superset/viz.py:565
+msgid "Box Plot"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:437
+#: superset/viz.py:654
+msgid "Bubble Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:481
+#: superset/viz.py:704
+msgid "Bullet Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:497
+#: superset/viz.py:753
+msgid "Big Number with Trendline"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:516
+#: superset/viz.py:782
+msgid "Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:21
+#: superset/assets/javascripts/explore/stores/visTypes.js:127
+#: superset/viz.py:809
+msgid "Time Series - Line Chart"
+msgstr ""
+
+#: superset/viz.py:936
+msgid "Time Series - Dual Axis Line Chart"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:22
+#: superset/assets/javascripts/explore/stores/visTypes.js:197
+#: superset/viz.py:1011
+msgid "Time Series - Bar Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:230
+#: superset/viz.py:1019
+msgid "Time Series - Percent Change"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:251
+#: superset/viz.py:1027
+msgid "Time Series - Stacked"
+msgstr ""
+
+#: superset/viz.py:1036
+msgid "Distribution - NVD3 - Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:535
+#: superset/viz.py:1054
+msgid "Histogram"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:19
+#: superset/assets/javascripts/explore/stores/visTypes.js:81
+#: superset/viz.py:1079
+msgid "Distribution - Bar Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:565
+#: superset/viz.py:1146
+msgid "Sunburst"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:595
+#: superset/viz.py:1179
+msgid "Sankey"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:615
+#: superset/viz.py:1228 superset/viz.py:1249
+msgid "Directed Force Layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:672
+#: superset/viz.py:1282
+msgid "Country Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:696
+#: superset/viz.py:1311
+msgid "World Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:63
+#: superset/viz.py:1361
+msgid "Filters"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:758
+#: superset/viz.py:1396
+msgid "iFrame"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:770
+#: superset/viz.py:1413
+msgid "Parallel Coordinates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:786
+#: superset/viz.py:1438
+msgid "Heatmap"
+msgstr ""
+
+#: superset/viz.py:1489
+msgid "Horizon Charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:830
+#: superset/viz.py:1500
+msgid "Mapbox"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:900
+#: superset/viz.py:1603
+msgid "Event flow"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:55
+msgid "Your query was saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:56
+msgid "Your query could not be saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:109
+msgid "Failed at retrieving results from the results backend"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:155
+msgid "Could not connect to server"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:160
+msgid "Your session timed out, please refresh your page and try again."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:179
+msgid "Query was stopped."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:182
+msgid "Failed at stopping query."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:295
+#: superset/assets/javascripts/SqlLab/actions.js:308
+msgid "Error occurred while fetching table metadata"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:358
+msgid "shared query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:366
+#: superset/assets/javascripts/SqlLab/actions.js:386
+msgid "The query couldn't be loaded"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:419
+msgid "An error occurred while creating the data source"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:29
+msgid "Pick a chart type!"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:30
+msgid "To use this chart type you need at least one column flagged as a date"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:31
+msgid "To use this chart type you need at least one dimension"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:32
+msgid "To use this chart type you need at least one aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
+#: superset/assets/javascripts/SqlLab/reducers.js:11
+msgid "Untitled Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/reducers.js:44
+#, python-format
+msgid "Copy of %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:30
+msgid "share query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:33
+msgid "copy URL to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:56
+msgid "Raw SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:66
+msgid "Source SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:78
+#: superset/assets/javascripts/explore/stores/visTypes.js:31
+msgid "SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryHistory.jsx:28
+msgid "No query history yet..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:106
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:66
+msgid "It seems you don't have access to any database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:154
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:90
+msgid "Search Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:160
+msgid "[From]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:171
+msgid "[To]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:181
+msgid "[Query Status]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:190
+msgid "Search"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:114
+msgid "Open in SQL Editor"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:133
+msgid "view results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:136
+msgid "Data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:176
+msgid "Visualize the data out of this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:182
+msgid "Overwrite text in editor with a query on this table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:188
+msgid "Run query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:193
+msgid "Remove query from log"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:68
+msgid ".CSV"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:79
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:235
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:274
+msgid "Visualize"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:151
+msgid "Query was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:135
+#: superset/connectors/sqla/views.py:213 superset/views/core.py:375
+msgid "Table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+msgid "was created"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:201
+msgid "Query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:240
+msgid "Fetch data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:244
+msgid "The query returned no data"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Selected Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+msgid "Run query asynchronously"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:56
+msgid "Stop"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+msgid "Undefined"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
+msgid "Label"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+msgid "Label for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
+#: superset/connectors/druid/views.py:107
+#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:131 superset/views/core.py:369
+msgid "Description"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+msgid "Write a description for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:139
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:220
+msgid "Save"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/templates/superset/request_access.html:16
+msgid "Cancel"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+msgid "Save Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:80
+msgid "Run a query to display results here"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:85
+#, python-format
+msgid "Preview for %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:109
+msgid "Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:115
+msgid "Query History"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:112
+#, python-format
+msgid ""
+"It appears that the number of rows in the query results displayed was "
+"limited on the server side to the %s limit."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:123
+msgid "Create table as with query results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:131
+msgid "new table name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:90
+msgid "Error while fetching table list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:131
+msgid "Error while fetching schema list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:153
+msgid "Error while fetching database list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:159
+msgid "Database:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:163
+msgid "Select a database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:170
+#, python-format
+msgid "Select a schema (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:175
+msgid "Schema:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:190
+#, python-format
+msgid "Add a table (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:203
+msgid "Type to search ..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:226
+msgid "Reset State"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:105
+msgid "Enter a new title for the tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:124
+#, python-format
+msgid "Untitled Query %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:170
+msgid "close tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:173
+msgid "rename tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "expand tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "hide tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:75
+msgid "Copy partition query to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:94
+msgid "latest partition:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:110
+msgid "Keys for table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:119
+#, python-format
+msgid "View keys & indexes (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:135
+msgid "Sort columns alphabetically"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:136
+msgid "Original table column order"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:146
+msgid "Copy SELECT statement to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:152
+msgid "Remove table preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:20
+#: superset/assets/javascripts/explore/stores/visTypes.js:111
+msgid "Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:85
+#, python-format
+msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "AS my_alias"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "using only alphanumeric characters and underscores"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:160
+msgid "Creating a data source and popping a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:190
+msgid "No results available for this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:242
+msgid "Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:245
+msgid "[Chart Type]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:253
+msgid "Datasource Name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:257
+msgid "datasource name"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:54
+msgid "Create a new slice"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:59
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:65
+msgid "Choose a datasource"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:71
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:77
+msgid "Choose a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:87
+msgid "Create new slice"
+msgstr ""
+
+#: superset/assets/javascripts/components/AsyncSelect.jsx:20
+msgid "Select ..."
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:26
+msgid "Loaded data cached"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:28
+msgid "Loaded from cache"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:33
+msgid "Click to force-refresh"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+msgid "Copy to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+msgid "Not successful"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+msgid "Copied!"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:12
+#: superset/views/core.py:470 superset/views/core.py:537
+msgid "Title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "click to edit title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "You don't have the rights to alter this title."
+msgstr ""
+
+#: superset/assets/javascripts/components/FaveStar.jsx:32
+#: superset/assets/javascripts/modules/superset.js:33
+msgid "Click to favorite/unfavorite"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:36
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "You have unsaved changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "Click the"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:55
+msgid "button on the top right to save your changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:158
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:163
+msgid "Click to force refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:337
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:93
+msgid "Error"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:338
+#, python-format
+msgid "Sorry, there was an error adding slices to this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
+#, python-format
+msgid "Checkout this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
+msgid "Force refresh the whole dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
+msgid "Edit this dashboard's properties"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+msgid "Load a template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+msgid "Load a CSS template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
+#: superset/views/core.py:477
+msgid "CSS"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+msgid "Live CSS Editor"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
+msgid "Don't refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:20
+msgid "10 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:21
+msgid "30 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:22
+msgid "1 minute"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:23
+msgid "5 minutes"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:38
+msgid "Refresh Interval"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:41
+msgid "Choose the refresh frequency for this dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:58
+msgid "This dashboard was saved successfully."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:64
+msgid "Sorry, there was an error saving this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:94
+msgid "You must pick a name for the new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:108
+msgid "Save Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:116
+#, python-format
+msgid "Overwrite Dashboard [%s]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+msgid "Save as:"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:127
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:208
+msgid "[dashboard name]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:137
+#: superset/views/core.py:374
+msgid "Name"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:143
+msgid "Viz"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:152
+#: superset/views/core.py:475 superset/views/core.py:539
+msgid "Modified"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:162
+msgid "Add Slices"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:171
+msgid "Add a new slice to the dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:175
+msgid "Add Slices to Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:23
+msgid "Move chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:26
+msgid "Force refresh data"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:30
+msgid "Toggle chart description"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:40
+msgid "Edit chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:45
+msgid "Explore chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:50
+msgid "Remove chart from dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:170
+#, python-format
+msgid "%s - untitled"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:276
+msgid "Edit slice properties"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:60
+msgid "Takes effect on chart immediatly"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:56
+msgid "Error..."
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:92
+msgid "Query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+msgid "Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+msgid "Width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+msgid "Export to .json"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+msgid "Export to .csv format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:73
+msgid "Please enter a slice name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:88
+msgid "Please select a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:96
+msgid "Please enter a dashboard name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:134
+msgid "Save A Slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:155
+#, python-format
+msgid "Overwrite slice %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
+msgid "Save as"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:168
+msgid "[slice name]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:181
+msgid "Do not add to a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:189
+msgid "Add slice to existing dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:203
+msgid "Add to new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:229
+msgid "Save & go to dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#, python-format
+msgid "Check out this slice: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+msgid "`Min` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+msgid "`Max` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
+msgid "Min"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
+msgid "Max"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:118
+msgid "Filter value"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:159
+msgid "Select operator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:70
+msgid "Add Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:62
+msgid "textarea"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "Edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "in modal"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:90
+#: superset/assets/javascripts/explore/stores/controls.jsx:46
+msgid "edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:104
+msgid "Select a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:114
+msgid "Search / Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:61
+#, python-format
+msgid "fetching dashboards failed for %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:100
+msgid "Updating chart was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:106
+#: superset/assets/javascripts/modules/superset.js:220
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:117
+msgid "Query timeout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:118
+#, python-format
+msgid "- visualization query are set to timeout at %s seconds. "
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:119
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is to large to be processed within"
+" the timeout range. If that is the case, we recommend that you summarize "
+"your data further."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:127
+msgid "Network error."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:150
+msgid "Failed to save slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:35
+#: superset/connectors/druid/views.py:45 superset/views/core.py:313
+#: superset/views/core.py:368
+msgid "Datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:55
+#: superset/views/core.py:376
+msgid "Visualization Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:57
+msgid "The type of visualization to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:63
+msgid "Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:72
+#: superset/assets/javascripts/explore/stores/controls.jsx:90
+msgid "One or many metrics to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:79
+msgid ""
+"Bounds for the Y axis. When left empty, the bounds are dynamically "
+"defined based on the min/max of the data. Note that this feature will "
+"only expand the axis range. It won't narrow the data's extent."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:88
+msgid "Ordering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:100
+msgid "Choose the metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:113
+msgid "Right Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:117
+msgid "Choose a metric for right axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:128
+msgid "Stacked Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:140
+msgid "Linear Color Scheme"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:153
+msgid "Normalize Across"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:160
+msgid ""
+"Color will be rendered based on a ratio of the cell against the sum of "
+"across this criteria"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:167
+msgid "Horizon Color Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:174
+msgid "Defines how the color are attributed."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:179
+msgid "Rendering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:185
+msgid ""
+"image-rendering CSS attribute of the canvas object that defines how the "
+"browser scales up the image"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:191
+msgid "XScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:194
+msgid "Number of steps to take between ticks when displaying the X scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:200
+msgid "YScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
+msgid "Number of steps to take between ticks when displaying the Y scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:209
+msgid "Include Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:210
+msgid "Whether to include the time granularity as defined in the time section"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:216
+msgid "Stacked Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:232
+msgid "Show Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:235
+msgid "Show data points as circle markers on the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:240
+msgid "Bar Values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:248
+msgid "Sort Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:250
+msgid "Sort bars by x labels."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:263
+msgid "Extra Controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:266
+msgid ""
+"Whether to show extra controls or not. Extra controls include things like"
+" making mulitBar charts stacked or side by side."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:273
+msgid "Reduce X ticks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:276
+msgid ""
+"Reduces the number of X axis ticks to be rendered. If true, the x axis "
+"wont overflow and labels may be missing. If false, a minimum width will "
+"be applied to columns and the width may overflow into an horizontal "
+"scroll."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:285
+msgid "Include Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:288
+msgid "Include series name as an axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:293
+msgid "Color Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:295
+msgid "A metric to use for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:302
+msgid "Country Name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:321
+msgid "The name of country that Superset should display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:325
+msgid "Country Field Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:333
+msgid ""
+"The country code standard that Superset should expect to find in the "
+"[country] column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:340
+msgid "Group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:342
+msgid "One or many controls to group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:354
+#: superset/assets/javascripts/explore/stores/controls.jsx:368
+msgid "Columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:370
+#: superset/assets/javascripts/explore/stores/controls.jsx:380
+#: superset/assets/javascripts/explore/stores/controls.jsx:390
+msgid "Columns to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:378
+msgid "X"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:388
+msgid "Y"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:399
+msgid "Origin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:405
+msgid ""
+"Defines the origin where time buckets start, accepts natural dates as in "
+"`now`, `sunday` or `1970-01-01`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
+msgid "Bottom marging, in pixels, allowing for more room for axis labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:421
+msgid "Time Granularity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:438
+msgid ""
+"The time granularity for the visualization. Note that you can type and "
+"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:445
+msgid "Domain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:448
+msgid "The time unit used for the grouping of blocks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:453
+msgid "Subdomain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:456
+msgid ""
+"The time unit for each block. Should be a smaller unit than "
+"domain_granularity. Should be larger or equal to Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:463
+msgid "Link Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:466
+msgid "Link length in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:472
+msgid "Charge"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:486
+msgid "Charge in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:494
+msgid ""
+"The time column for the visualization. Note that you can define arbitrary"
+" expression that return a DATETIME column in the table or. Also note that"
+" the filter below is applied against this column or expression"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:506
+msgid "Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:508
+msgid ""
+"The time granularity for the visualization. This applies a date "
+"transformation to alter your time column and defines a new time "
+"granularity. The options here are defined on a per database engine basis "
+"in the Superset source code."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:521
+msgid "Resample Rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:524
+msgid "Pandas resample rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:530
+msgid "Resample How"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:533
+msgid "Pandas resample how"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:539
+msgid "Resample Fill Method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:542
+msgid "Pandas resample fill method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:548
+msgid "Since"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:560
+msgid ""
+"Timestamp from filter. This supports free form typing and natural "
+"language as in `1 day ago`, `28 days` or `3 years`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:567
+msgid "Until"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:582
+msgid "Max Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:590
+msgid "Whisker/outlier options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:592
+msgid "Determines how whiskers and outliers are calculated."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:603
+msgid "Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:606
+msgid "Target aspect ratio for treemap tiles."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:612
+#: superset/assets/javascripts/explore/stores/visTypes.js:510
+#: superset/assets/javascripts/explore/stores/visTypes.js:529
+#: superset/assets/javascripts/explore/stores/visTypes.js:654
+msgid "Number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:622
+msgid "Row limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:630
+msgid "Series limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:633
+msgid "Limits the number of time series that get displayed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:638
+msgid "Sort By"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:640
+msgid "Metric used to define the top series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:648
+msgid "Rolling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:651
+msgid ""
+"Defines a rolling window function to apply, works along with the "
+"[Periods] text box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:657
+msgid "Periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:659
+msgid ""
+"Defines the size of the rolling window function, relative to the time "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:665
+#: superset/assets/javascripts/explore/stores/visTypes.js:101
+msgid "Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:667
+msgid ""
+"Defines the grouping of entities. Each series is shown as a specific "
+"color on the chart and has a legend toggle"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:677
+msgid "Entity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:680
+msgid "This defines the element to be plotted on the chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:688
+#: superset/assets/javascripts/explore/stores/visTypes.js:459
+msgid "X Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:689
+msgid "Metric assigned to the [X] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:702
+#: superset/assets/javascripts/explore/stores/visTypes.js:466
+msgid "Y Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:705
+msgid "Metric assigned to the [Y] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:716
+msgid "Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:729
+msgid "URL"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:730
+msgid ""
+"The URL, this control is templated, so you can integrate {{ width }} "
+"and/or {{ height }} in your URL string."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:737
+msgid "X Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:744
+msgid "Y Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:751
+msgid "Custom WHERE clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:753
+msgid ""
+"The text in this box gets included in your query's WHERE clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:761
+msgid "Custom HAVING clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:763
+msgid ""
+"The text in this box gets included in your query's HAVING clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:771
+msgid "Comparison Period Lag"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:773
+msgid "Based on granularity, number of time periods to compare against"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:778
+msgid "Comparison suffix"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:779
+msgid "Suffix to apply after the percentage display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:785
+msgid "Table Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:790
+msgid "Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:796
+msgid "Series Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:799
+msgid "Pixel height of each series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:805
+msgid "Page Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:808
+msgid "Rows per page, 0 means no pagination"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:814
+#: superset/assets/javascripts/explore/stores/controls.jsx:824
+msgid "X Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:834
+msgid "Y Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:844
+msgid "Right Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:852
+msgid "Markup Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+msgid "Pick your favorite markup language"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:862
+msgid "Rotation"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:865
+msgid "Rotation to apply to words in the cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:870
+msgid "Line Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:875
+msgid "Line interpolation as defined by d3.js"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:880
+msgid "Label Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:887
+msgid "What should be shown on the label?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:892
+msgid "Code"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:893
+msgid "Put your code here"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:902
+msgid "Aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:914
+msgid ""
+"Aggregate function to apply when pivoting and computing the total rows "
+"and columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:921
+msgid "Font Size From"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:923
+msgid "Font size for the smallest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:929
+msgid "Font Size To"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:931
+msgid "Font size for the biggest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:936
+msgid "Instant Filtering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:940
+msgid ""
+"Whether to apply filters as they change, or wait forusers to hit an "
+"[Apply] button"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:947
+msgid "Range Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:950
+msgid "Whether to display the time range interactive selector"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:955
+msgid "Date Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:957
+msgid "Whether to include a time filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:962
+msgid "Data Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:964
+msgid "Whether to display the interactive data table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:969
+msgid "Search Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:972
+msgid "Whether to include a client side search box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:977
+msgid "Table Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:979
+msgid "Whether to apply filter when table cell is clicked"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:984
+msgid "Show Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:987
+msgid "Whether to display bubbles on top of countries"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:992
+msgid "Legend"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:995
+msgid "Whether to display the legend (toggles)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1000
+msgid "X bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1003
+msgid "Whether to display the min and max values of the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1008
+msgid "Rich Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1011
+msgid "The rich tooltip shows a list of all series for that point in time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1017
+msgid "Y Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1020
+msgid "Use a log scale for the Y axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1025
+msgid "X Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1028
+msgid "Use a log scale for the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1033
+msgid "Donut"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1036
+msgid "Do you want a donut or a pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+msgid "Put labels outside"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1044
+msgid "Put the labels outside the pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+msgid "Contribution"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1051
+msgid "Compute the contribution to the total"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1056
+msgid "Period Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1059
+msgid ""
+"[integer] Number of period to compare against, this is relative to the "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1065
+msgid "Period Ratio Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1068
+msgid ""
+"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
+"is (new-previous)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1074
+msgid "Time Shift"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1076
+msgid ""
+"Overlay a timeseries from a relative time period. Expects relative time "
+"delta in natural language (example:  24 hours, 7 days, 56 weeks, 365 "
+"days)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1084
+msgid "Subheader"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1085
+msgid "Description text that shows up below your Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1091
+msgid "label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1093
+msgid ""
+"`count` is COUNT(*) if a group by is used. Numerical columns will be "
+"aggregated with the aggregator. Non-numerical columns will be used to "
+"label points. Leave empty to get a count of points in each cluster."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1104
+msgid "Map Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1114
+msgid "Base layer map style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1120
+msgid "Clustering Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1133
+msgid ""
+"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
+"to turn off clustering, but beware that a large number of points (>1000) "
+"will cause lag."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1140
+msgid "Point Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1142
+msgid ""
+"The radius of individual points (ones that are not in a cluster). Either "
+"a numerical column or `Auto`, which scales the point based on the largest"
+" cluster"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1152
+msgid "Point Radius Unit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+msgid "The unit of measure for the specified point radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1160
+msgid "Opacity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1163
+msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1169
+msgid "Zoom"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1172
+msgid "Zoom level of the map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1178
+msgid "Default latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1181
+msgid "Latitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1187
+msgid "Default longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1190
+msgid "Longitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1196
+msgid "Live render"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1198
+msgid "Points and clusters will update as viewport is being changed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1204
+msgid "RGB Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1214
+msgid "The color for points and clusters in RGB"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1219
+msgid "Ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1221
+msgid "Ranges to highlight with shading"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1226
+msgid "Range labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1228
+msgid "Labels for the ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1233
+msgid "Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1235
+msgid "List of values to mark with triangles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1240
+msgid "Marker labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1242
+msgid "Labels for the markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1247
+msgid "Marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1249
+msgid "List of values to mark with lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1254
+msgid "Marker line labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1256
+msgid "Labels for the marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1283
+msgid "Slice ID"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1285
+msgid "The id of the active slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1290
+msgid "Cache Timeout (seconds)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1292
+msgid "The number of seconds before expiring the cache"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1297
+msgid "Order by entity id"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+msgid ""
+"Important! Select this if the table is not already sorted by entity id, "
+"else there is no guarantee that all events for each entity are returned."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1306
+msgid "Minimum leaf node event count"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1309
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:7
+#: superset/assets/javascripts/explore/stores/visTypes.js:23
+msgid "Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:8
+#: superset/assets/javascripts/explore/stores/visTypes.js:24
+msgid "Time related form attributes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:15
+msgid "Datasource & Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:36
+msgid "This section exposes ways to include snippets of SQL in your query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:48
+msgid "Advanced Analytics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:49
+msgid ""
+"This section contains options that allow for advanced analytical post "
+"processing of query results"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:64
+msgid ""
+"Filters are defined using comma delimited strings as in "
+"<US,FR,Other>Leave the value control empty to filter empty strings or "
+"nullsFor filters with comma in values, wrap them in single quotesas in "
+"<NY, 'Tahoe, CA', DC>"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:71
+msgid "Result Filters"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:72
+msgid ""
+"The filters to apply after post-aggregation.Leave the value control empty"
+" to filter empty strings or nulls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:84
+#: superset/assets/javascripts/explore/stores/visTypes.js:132
+#: superset/assets/javascripts/explore/stores/visTypes.js:163
+#: superset/assets/javascripts/explore/stores/visTypes.js:202
+#: superset/assets/javascripts/explore/stores/visTypes.js:235
+#: superset/assets/javascripts/explore/stores/visTypes.js:256
+#: superset/assets/javascripts/explore/stores/visTypes.js:393
+#: superset/assets/javascripts/explore/stores/visTypes.js:428
+#: superset/assets/javascripts/explore/stores/visTypes.js:447
+#: superset/assets/javascripts/explore/stores/visTypes.js:821
+msgid "Chart Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:104
+msgid "Breakdowns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:105
+msgid "Defines how each series is broken down"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:141
+#: superset/assets/javascripts/explore/stores/visTypes.js:211
+#: superset/assets/javascripts/explore/stores/visTypes.js:265
+msgid "Axes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:159
+msgid "Dual Axis Line Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:169
+msgid "Y Axis 1"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:175
+msgid "Y Axis 2"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:183
+msgid "Left Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:184
+msgid "Choose a metric for left axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:187
+msgid "Left Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:286
+msgid "GROUP BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:287
+msgid "Use this section if you want a query that aggregates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:294
+msgid "NOT GROUPED BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:295
+msgid "Use this section if you want to query atomic rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:302
+msgid "Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:453
+#: superset/assets/javascripts/explore/stores/visTypes.js:707
+msgid "Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:545
+msgid "Histogram Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:553
+msgid "Numeric Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:554
+msgid "Select the numeric column to draw the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:557
+msgid "No of Bins"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:558
+msgid "Select number of bins for the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:578
+msgid "Primary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:579
+msgid "The primary metric is used to define the arc segment sizes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:582
+msgid "Secondary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:583
+msgid ""
+"This secondary metric is used to define the color as a ratio against the "
+"primary metric. If the two metrics match, color is mapped level groups"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:588
+msgid "Hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:589
+msgid "This defines the level of the hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:608
+#: superset/assets/javascripts/explore/stores/visTypes.js:635
+msgid "Source / Target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:609
+#: superset/assets/javascripts/explore/stores/visTypes.js:636
+msgid "Choose a source and a target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:626
+msgid "Force Layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:641
+msgid "Chord Diagram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:655
+msgid "Choose a number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:658
+msgid "Source"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:661
+msgid "Choose a source"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:664
+msgid "Target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:667
+msgid "Choose a target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:686
+msgid "ISO 3166-1 codes of region/province/department"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:687
+msgid ""
+"It's ISO 3166-1 of your region/province/department in your table. (see "
+"documentation for list of ISO 3166-1)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:690
+#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:130
+msgid "Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:691
+msgid "Metric to display bottom title"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:717
+msgid "Country Control"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:718
+msgid "3 letter code of the country"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:721
+msgid "Metric for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:722
+msgid "Metric that defines the color of the country"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:725
+msgid "Bubble size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:726
+msgid "Metric that defines the size of the bubble"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:732
+msgid "Filter Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:745
+msgid "Filter controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:747
+msgid ""
+"The controls you want to filter on. Note that only columns checked as "
+"\"filterable\" will show up on this list."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:789
+msgid "Axis & Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:797
+msgid "Heatmap Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:817
+msgid "Horizon"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:843
+msgid "Points"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:850
+msgid "Labelling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:857
+msgid "Visual Tweaks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:865
+msgid "Viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:875
+msgid "Longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:876
+msgid "Column containing longitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:879
+msgid "Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:880
+msgid "Column containing latitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:883
+msgid "Cluster label aggregator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:884
+msgid ""
+"Aggregate function applied to the list of points in each cluster to "
+"produce the cluster label."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:888
+msgid "Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:889
+msgid "Show a tooltip when hovering over points and clusters describing the label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:893
+msgid ""
+"One or many controls to group by. If grouping, latitude and longitude "
+"columns must be present."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:904
+msgid "Event definition"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:914
+msgid "Additional meta data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:922
+msgid "Column containing entity ids"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:923
+msgid "e.g., a \"user id\" column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:926
+msgid "Column containing event names"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:934
+msgid "Event count limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:935
+msgid "The maximum number of events to return, equivalent to number of rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:938
+msgid "Meta data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:939
+msgid "Select any columns for meta data inspection"
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:134
+msgid ""
+"The server could not be reached. You may want to verify your connection "
+"and try again."
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:137
+#, python-format
+msgid "An unknown error occurred. (Status: %s )"
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:162
+#, python-format
+msgid "Query timeout - visualization query are set to time out at %s seconds."
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:24
+msgid "Favorites"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:30
+msgid "Created Content"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:37
+msgid "Recent Activity"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:42
+msgid "Security & Access"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:33
+msgid "No slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:49
+msgid "No dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
+#: superset/assets/javascripts/profile/components/Favorites.jsx:59
+#: superset/templates/superset/welcome.html:20 superset/views/core.py:367
+#: superset/views/core.py:527
+msgid "Dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:403 superset/views/core.py:472
+msgid "Slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:34
+msgid "No favorite slices yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:50
+msgid "No favorite dashboards yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:14
+msgid "Roles"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:23
+#: superset/views/core.py:279
+msgid "Databases"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:34
+msgid "Datasources"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+msgid "Profile picture provided by Gravatar"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+msgid "joined"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+msgid "id:"
+msgstr ""
+
+#: superset/assets/visualizations/EventFlow.jsx:56
+msgid "Sorry, there appears to be no data"
+msgstr ""
+
+#: superset/assets/visualizations/filter_box.jsx:88
+#, python-format
+msgid "Select [%s]"
+msgstr ""
+
+#: superset/connectors/druid/models.py:970
+msgid "No data was returned."
+msgstr ""
+
+#: superset/connectors/druid/views.py:28
+msgid "List Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:29
+msgid "Show Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:30
+msgid "Add Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:31
+msgid "Edit Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
+msgid "Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
+#: superset/connectors/sqla/views.py:133
+msgid "Type"
+msgstr ""
+
+#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
+msgid "Groupable"
+msgstr ""
+
+#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:85
+msgid "Filterable"
+msgstr ""
+
+#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:87
+msgid "Count Distinct"
+msgstr ""
+
+#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:88
+msgid "Sum"
+msgstr ""
+
+#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
+msgid ""
+"Whether this column is exposed in the `Filters` section of the explore "
+"view."
+msgstr ""
+
+#: superset/connectors/druid/views.py:80
+msgid "List Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:81
+msgid "Show Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:82
+msgid "Add Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:83
+msgid "Edit Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:115
+msgid ""
+"Whether the access to this metric is restricted to certain roles. Only "
+"roles with the permission 'metric access on XXX (the name of this "
+"metric)' are allowed to access this metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
+#: superset/connectors/sqla/views.py:132
+msgid "Verbose Name"
+msgstr ""
+
+#: superset/connectors/druid/views.py:110 superset/views/core.py:554
+msgid "JSON"
+msgstr ""
+
+#: superset/connectors/druid/views.py:111
+msgid "Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:128
+msgid "List Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:129
+msgid "Show Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:130
+msgid "Add Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:131
+msgid "Edit Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:142
+#: superset/connectors/druid/views.py:228
+msgid "Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:143
+msgid "Coordinator Host"
+msgstr ""
+
+#: superset/connectors/druid/views.py:144
+msgid "Coordinator Port"
+msgstr ""
+
+#: superset/connectors/druid/views.py:145
+msgid "Coordinator Endpoint"
+msgstr ""
+
+#: superset/connectors/druid/views.py:146
+msgid "Broker Host"
+msgstr ""
+
+#: superset/connectors/druid/views.py:147
+msgid "Broker Port"
+msgstr ""
+
+#: superset/connectors/druid/views.py:148
+msgid "Broker Endpoint"
+msgstr ""
+
+#: superset/connectors/druid/views.py:163
+msgid "Druid Clusters"
+msgstr ""
+
+#: superset/connectors/druid/views.py:166
+#: superset/connectors/druid/views.py:268
+#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:281
+#: superset/views/core.py:282
+msgid "Sources"
+msgstr ""
+
+#: superset/connectors/druid/views.py:173
+msgid "List Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:174
+msgid "Show Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:175
+msgid "Add Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:176
+msgid "Edit Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:175
+msgid ""
+"The list of slices associated with this table. By altering this "
+"datasource, you may change how these associated slices behave. Also note "
+"that slices need to point to a datasource, so this form will fail at "
+"saving if removing slices from a datasource. If you want to change the "
+"datasource for a slice, overwrite the slice from the 'explore view'"
+msgstr ""
+
+#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:183
+msgid "Timezone offset (in hours) for this datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:209
+msgid ""
+"Time expression to use as a predicate when retrieving distinct values to "
+"populate the filter component. Only applies when `Enable Filter Select` "
+"is on. If you enter `7 days ago`, the distinct list of values in the "
+"filter will be populated based on the distinct value over the past week"
+msgstr ""
+
+#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:205
+msgid ""
+"Whether to populate the filter's dropdown in the explore view's filter "
+"section with a list of distinct values fetched from the backend on the "
+"fly"
+msgstr ""
+
+#: superset/connectors/druid/views.py:220 superset/connectors/sqla/views.py:219
+msgid ""
+"Redirects to this endpoint when clicking on the datasource from the "
+"datasource list"
+msgstr ""
+
+#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:212
+msgid "Associated Slices"
+msgstr ""
+
+#: superset/connectors/druid/views.py:227
+msgid "Data Source"
+msgstr ""
+
+#: superset/connectors/druid/views.py:230
+msgid "Owner"
+msgstr ""
+
+#: superset/connectors/druid/views.py:231
+msgid "Is Hidden"
+msgstr ""
+
+#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:217
+msgid "Enable Filter Select"
+msgstr ""
+
+#: superset/connectors/druid/views.py:233
+msgid "Default Endpoint"
+msgstr ""
+
+#: superset/connectors/druid/views.py:234
+msgid "Time Offset"
+msgstr ""
+
+#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:223
+#: superset/views/core.py:249 superset/views/core.py:365
+msgid "Cache Timeout"
+msgstr ""
+
+#: superset/connectors/druid/views.py:266
+msgid "Druid Datasources"
+msgstr ""
+
+#: superset/connectors/druid/views.py:304
+msgid "Refresh Druid Metadata"
+msgstr ""
+
+#: superset/connectors/sqla/models.py:386
+msgid ""
+"Datetime column not provided as part table configuration and is required "
+"by this type of chart"
+msgstr ""
+
+#: superset/connectors/sqla/models.py:391
+msgid "Metric '{}' is not valid"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:28
+msgid "List Columns"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:29
+msgid "Show Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:30
+msgid "Add Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:31
+msgid "Edit Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:46
+msgid ""
+"Whether to make this column available as a [Time Granularity] option, "
+"column has to be DATETIME or DATETIME-like"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:53
+msgid ""
+"The data type that was inferred by the database. It may be necessary to "
+"input a type manually for expression-defined columns in some cases. In "
+"most case users should not need to alter this."
+msgstr ""
+
+#: superset/connectors/sqla/views.py:91
+msgid "Expression"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:92
+msgid "Is temporal"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:93
+msgid "Datetime Format"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:94
+msgid "Database Expression"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:102
+msgid "List Metrics"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:103
+msgid "Show Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:104
+msgid "Add Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:105
+msgid "Edit Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:134
+msgid "SQL Expression"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:152
+msgid "List Tables"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:153
+msgid "Show Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:154
+msgid "Add Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:155
+msgid "Edit Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:184
+msgid "Name of the table that exists in the source database"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:186
+msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:192
+msgid ""
+"This fields acts a Superset view, meaning that Superset will run a query "
+"against this string as a subquery."
+msgstr ""
+
+#: superset/connectors/sqla/views.py:196
+msgid ""
+"Predicate applied when fetching distinct value to populate the filter "
+"control component. Supports jinja template syntax. Applies only when "
+"`Enable Filter Select` is on."
+msgstr ""
+
+#: superset/connectors/sqla/views.py:202
+msgid "Redirects to this endpoint when clicking on the table from the table list"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:214
+msgid "Changed By"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:215 superset/views/core.py:245
+msgid "Database"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:247
+msgid "Last Changed"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:218
+msgid "Schema"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:222
+msgid "Offset"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:255
+msgid ""
+"The table was created. As part of this two phase configuration process, "
+"you should now click the edit button by the new table to configure it."
+msgstr ""
+
+#: superset/connectors/sqla/views.py:279
+msgid "Tables"
+msgstr ""
+
+#: superset/templates/appbuilder/navbar_right.html:41
+msgid "Profile"
+msgstr ""
+
+#: superset/templates/appbuilder/navbar_right.html:42
+msgid "Logout"
+msgstr ""
+
+#: superset/templates/appbuilder/navbar_right.html:47
+msgid "Login"
+msgstr ""
+
+#: superset/templates/superset/import_dashboards.html:11
+msgid "Import"
+msgstr ""
+
+#: superset/templates/superset/request_access.html:2
+msgid "No Access!"
+msgstr ""
+
+#: superset/templates/superset/request_access.html:7
+#, python-format
+msgid "You do not have permissions to access the datasource(s): %(name)s."
+msgstr ""
+
+#: superset/templates/superset/request_access.html:13
+msgid "Request Permissions"
+msgstr ""
+
+#: superset/templates/superset/welcome.html:10
+msgid "Welcome!"
+msgstr ""
+
+#: superset/templates/superset/models/database/macros.html:4
+msgid "Test Connection"
+msgstr ""
+
+#: superset/views/base.py:57
+#, python-format
+msgid "Datasource %(name)s already exists"
+msgstr ""
+
+#: superset/views/base.py:256
+msgid "Delete"
+msgstr ""
+
+#: superset/views/base.py:257
+msgid "Delete all Really?"
+msgstr ""
+
+#: superset/views/core.py:57
+msgid "This endpoint requires the `all_datasource_access` permission"
+msgstr ""
+
+#: superset/views/core.py:59
+msgid "The datasource seems to have been deleted"
+msgstr ""
+
+#: superset/views/core.py:60
+msgid "The access requests seem to have been deleted"
+msgstr ""
+
+#: superset/views/core.py:62
+msgid "The user seems to have been deleted"
+msgstr ""
+
+#: superset/views/core.py:63
+msgid "You don't have access to this datasource"
+msgstr ""
+
+#: superset/views/core.py:67
+#, python-format
+msgid ""
+"This view requires the database %(name)s or `all_datasource_access` "
+"permission"
+msgstr ""
+
+#: superset/views/core.py:72
+#, python-format
+msgid ""
+"This endpoint requires the datasource %(name)s, database or "
+"`all_datasource_access` permission"
+msgstr ""
+
+#: superset/views/core.py:175
+msgid "List Databases"
+msgstr ""
+
+#: superset/views/core.py:176
+msgid "Show Database"
+msgstr ""
+
+#: superset/views/core.py:177
+msgid "Add Database"
+msgstr ""
+
+#: superset/views/core.py:178
+msgid "Edit Database"
+msgstr ""
+
+#: superset/views/core.py:213
+msgid "Expose this DB in SQL Lab"
+msgstr ""
+
+#: superset/views/core.py:214
+msgid ""
+"Allow users to run synchronous queries, this is the default and should "
+"work well for queries that can be executed within a web request scope "
+"(<~1 minute)"
+msgstr ""
+
+#: superset/views/core.py:218
+msgid ""
+"Allow users to run queries, against an async backend. This assumes that "
+"you have a Celery worker setup as well as a results backend."
+msgstr ""
+
+#: superset/views/core.py:222
+msgid "Allow CREATE TABLE AS option in SQL Lab"
+msgstr ""
+
+#: superset/views/core.py:223
+msgid ""
+"Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
+" SQL Lab"
+msgstr ""
+
+#: superset/views/core.py:227
+msgid ""
+"When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
+"table to be created in this schema"
+msgstr ""
+
+#: superset/views/core.py:241
+msgid "Expose in SQL Lab"
+msgstr ""
+
+#: superset/views/core.py:242
+msgid "Allow CREATE TABLE AS"
+msgstr ""
+
+#: superset/views/core.py:243
+msgid "Allow DML"
+msgstr ""
+
+#: superset/views/core.py:244
+msgid "CTAS Schema"
+msgstr ""
+
+#: superset/views/core.py:246 superset/views/core.py:366
+#: superset/views/core.py:474 superset/views/core.py:538
+msgid "Creator"
+msgstr ""
+
+#: superset/views/core.py:248
+msgid "SQLAlchemy URI"
+msgstr ""
+
+#: superset/views/core.py:250
+msgid "Extra"
+msgstr ""
+
+#: superset/views/core.py:268
+msgid "Import Dashboards"
+msgstr ""
+
+#: superset/views/core.py:272 superset/views/core.py:2318
+#: superset/views/sql_lab.py:23
+msgid "Manage"
+msgstr ""
+
+#: superset/views/core.py:310 superset/views/core.py:551
+msgid "User"
+msgstr ""
+
+#: superset/views/core.py:311
+msgid "User Roles"
+msgstr ""
+
+#: superset/views/core.py:312
+msgid "Database URL"
+msgstr ""
+
+#: superset/views/core.py:314
+msgid "Roles to grant"
+msgstr ""
+
+#: superset/views/core.py:315
+msgid "Created On"
+msgstr ""
+
+#: superset/views/core.py:321
+msgid "Access requests"
+msgstr ""
+
+#: superset/views/core.py:323 superset/views/core.py:562
+msgid "Security"
+msgstr ""
+
+#: superset/views/core.py:330
+msgid "List Slices"
+msgstr ""
+
+#: superset/views/core.py:331
+msgid "Show Slice"
+msgstr ""
+
+#: superset/views/core.py:332
+msgid "Add Slice"
+msgstr ""
+
+#: superset/views/core.py:333
+msgid "Edit Slice"
+msgstr ""
+
+#: superset/views/core.py:354
+msgid ""
+"These parameters are generated dynamically when clicking the save or "
+"overwrite button in the explore view. This JSON object is exposed here "
+"for reference and for power users who may want to alter specific "
+"parameters."
+msgstr ""
+
+#: superset/views/core.py:359
+msgid "Duration (in seconds) of the caching timeout for this slice."
+msgstr ""
+
+#: superset/views/core.py:370
+msgid "Last Modified"
+msgstr ""
+
+#: superset/views/core.py:371 superset/views/core.py:473
+msgid "Owners"
+msgstr ""
+
+#: superset/views/core.py:372
+msgid "Parameters"
+msgstr ""
+
+#: superset/views/core.py:373 superset/views/core.py:415
+msgid "Slice"
+msgstr ""
+
+#: superset/views/core.py:432
+msgid "List Dashboards"
+msgstr ""
+
+#: superset/views/core.py:433
+msgid "Show Dashboard"
+msgstr ""
+
+#: superset/views/core.py:434
+msgid "Add Dashboard"
+msgstr ""
+
+#: superset/views/core.py:435
+msgid "Edit Dashboard"
+msgstr ""
+
+#: superset/views/core.py:446
+msgid ""
+"This json object describes the positioning of the widgets in the "
+"dashboard. It is dynamically generated when adjusting the widgets size "
+"and positions by using drag & drop in the dashboard view"
+msgstr ""
+
+#: superset/views/core.py:451
+msgid ""
+"The css for individual dashboards can be altered here, or in the "
+"dashboard view where changes are immediately visible"
+msgstr ""
+
+#: superset/views/core.py:455
+msgid "To get a readable URL for your dashboard"
+msgstr ""
+
+#: superset/views/core.py:456
+msgid ""
+"This JSON object is generated dynamically when clicking the save or "
+"overwrite button in the dashboard view. It is exposed here for reference "
+"and for power users who may want to alter specific parameters."
+msgstr ""
+
+#: superset/views/core.py:461
+msgid "Owners is a list of users who can alter the dashboard."
+msgstr ""
+
+#: superset/views/core.py:469 superset/views/core.py:536
+msgid "Dashboard"
+msgstr ""
+
+#: superset/views/core.py:471
+msgid "Slug"
+msgstr ""
+
+#: superset/views/core.py:476
+msgid "Position JSON"
+msgstr ""
+
+#: superset/views/core.py:478
+msgid "JSON Metadata"
+msgstr ""
+
+#: superset/views/core.py:479
+msgid "Underlying Tables"
+msgstr ""
+
+#: superset/views/core.py:502
+msgid "Export"
+msgstr ""
+
+#: superset/views/core.py:502
+msgid "Export dashboards?"
+msgstr ""
+
+#: superset/views/core.py:552
+msgid "Action"
+msgstr ""
+
+#: superset/views/core.py:553
+msgid "dttm"
+msgstr ""
+
+#: superset/views/core.py:560
+msgid "Action Log"
+msgstr ""
+
+#: superset/views/core.py:790
+msgid "Access was requested"
+msgstr ""
+
+#: superset/views/core.py:851
+#, python-format
+msgid ""
+"%(user)s was granted the role %(role)s that gives access to the "
+"%(datasource)s"
+msgstr ""
+
+#: superset/views/core.py:867
+#, python-format
+msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
+msgstr ""
+
+#: superset/views/core.py:876
+msgid "You have no permission to approve this request"
+msgstr ""
+
+#: superset/views/core.py:1609
+msgid ""
+"Malformed request. slice_id or table_name and db_name arguments are "
+"expected"
+msgstr ""
+
+#: superset/views/core.py:1615
+#, python-format
+msgid "Slice %(id)s not found"
+msgstr ""
+
+#: superset/views/core.py:1627
+#, python-format
+msgid "Table %(t)s wasn't found in the database %(d)s"
+msgstr ""
+
+#: superset/views/core.py:1761
+#, python-format
+msgid "Can't find User '%(name)s', please ask your admin to create one."
+msgstr ""
+
+#: superset/views/core.py:1768
+#, python-format
+msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
+msgstr ""
+
+#: superset/views/core.py:2315
+msgid "CSS Templates"
+msgstr ""
+
+#: superset/views/core.py:2325
+msgid "SQL Editor"
+msgstr ""
+
+#: superset/views/core.py:2330 superset/views/core.py:2339
+msgid "SQL Lab"
+msgstr ""
+
+#: superset/views/core.py:2334
+msgid "Query Search"
+msgstr ""
+
+#: superset/views/sql_lab.py:21
+msgid "Queries"
+msgstr ""
+
+#: superset/views/sql_lab.py:30
+msgid "List Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:31
+msgid "Show Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:32
+msgid "Add Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:33
+msgid "Edit Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:62
+msgid "Saved Queries"
+msgstr ""
+
diff --git a/superset/translations/es/LC_MESSAGES/messages.json b/superset/translations/es/LC_MESSAGES/messages.json
new file mode 100644
index 0000000..ee006cf
--- /dev/null
+++ b/superset/translations/es/LC_MESSAGES/messages.json
@@ -0,0 +1 @@
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=2; plural=(n != 1)","lang":"es"},"Time Column":[""],"second":[""],"minute":[""],"hour":[""],"day":[""],"week":[""],"month":[""],"quarter":[""],"year":[""],"week_start_monday":[""],"week_ending_saturday":[""],"week_start_sunday":[""],"5 minute":[""],"half hour":[""],"10 minute":[""],"[Superset] Access to the datasource %(name)s was granted":[""],"Table View":[""],"Pivot Table":[""],"Markup":[" [...]
\ No newline at end of file
diff --git a/superset/translations/es/LC_MESSAGES/messages.mo b/superset/translations/es/LC_MESSAGES/messages.mo
index 3da6a8e..f623982 100644
Binary files a/superset/translations/es/LC_MESSAGES/messages.mo and b/superset/translations/es/LC_MESSAGES/messages.mo differ
diff --git a/superset/translations/es/LC_MESSAGES/messages.po b/superset/translations/es/LC_MESSAGES/messages.po
index 16e4d98..942a148 100644
--- a/superset/translations/es/LC_MESSAGES/messages.po
+++ b/superset/translations/es/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: 2017-06-19 11:56+0800\n"
+"POT-Creation-Date: 2017-07-31 11:46+0800\n"
 "PO-Revision-Date: 2016-05-02 08:49-0700\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: es\n"
@@ -18,342 +18,2680 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.4.0\n"
 
-#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:225
-#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:317
-#: superset/db_engine_specs.py:362 superset/db_engine_specs.py:770
-#: superset/db_engine_specs.py:806 superset/db_engine_specs.py:838
-#: superset/db_engine_specs.py:884
+#: superset/assets/javascripts/explore/stores/controls.jsx:491
+#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
+#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
+#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
+#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
+#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
 msgid "Time Column"
 msgstr ""
 
-#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:226
-#: superset/db_engine_specs.py:318 superset/db_engine_specs.py:363
-#: superset/db_engine_specs.py:771 superset/db_engine_specs.py:839
+#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
+#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
+#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
+#: superset/db_engine_specs.py:962
 msgid "second"
 msgstr ""
 
-#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:229
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
-#: superset/db_engine_specs.py:773 superset/db_engine_specs.py:807
-#: superset/db_engine_specs.py:841 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
+#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
+#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
+#: superset/db_engine_specs.py:963
 msgid "minute"
 msgstr ""
 
-#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:233
-#: superset/db_engine_specs.py:323 superset/db_engine_specs.py:367
-#: superset/db_engine_specs.py:779 superset/db_engine_specs.py:809
-#: superset/db_engine_specs.py:843 superset/db_engine_specs.py:891
-msgid "hour"
+#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
+#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
+#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
+#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
+#: superset/db_engine_specs.py:964
+msgid "hour"
+msgstr ""
+
+#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
+#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
+#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
+#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
+msgid "day"
+msgstr ""
+
+#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
+#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
+#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
+#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:966
+msgid "week"
+msgstr ""
+
+#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
+#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
+#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
+#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
+#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
+msgid "month"
+msgstr ""
+
+#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
+#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
+#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
+#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
+#: superset/db_engine_specs.py:968
+msgid "quarter"
+msgstr ""
+
+#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
+#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
+#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
+#: superset/db_engine_specs.py:969
+msgid "year"
+msgstr ""
+
+#: superset/db_engine_specs.py:332
+msgid "week_start_monday"
+msgstr ""
+
+#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
+msgid "week_ending_saturday"
+msgstr ""
+
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
+msgid "week_start_sunday"
+msgstr ""
+
+#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
+msgid "5 minute"
+msgstr ""
+
+#: superset/db_engine_specs.py:817
+msgid "half hour"
+msgstr ""
+
+#: superset/db_engine_specs.py:929
+msgid "10 minute"
+msgstr ""
+
+#: superset/utils.py:472
+#, python-format
+msgid "[Superset] Access to the datasource %(name)s was granted"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:283
+#: superset/viz.py:312
+msgid "Table View"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:334
+#: superset/viz.py:368
+msgid "Pivot Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:321
+#: superset/viz.py:423
+msgid "Markup"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:348
+#: superset/viz.py:442
+msgid "Separator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:369
+#: superset/viz.py:458
+msgid "Word Cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:383
+#: superset/viz.py:481
+msgid "Treemap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:403
+#: superset/viz.py:507
+msgid "Calendar Heatmap"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:418
+#: superset/viz.py:565
+msgid "Box Plot"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:437
+#: superset/viz.py:654
+msgid "Bubble Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:481
+#: superset/viz.py:704
+msgid "Bullet Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:497
+#: superset/viz.py:753
+msgid "Big Number with Trendline"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:516
+#: superset/viz.py:782
+msgid "Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:21
+#: superset/assets/javascripts/explore/stores/visTypes.js:127
+#: superset/viz.py:809
+msgid "Time Series - Line Chart"
+msgstr ""
+
+#: superset/viz.py:936
+msgid "Time Series - Dual Axis Line Chart"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:22
+#: superset/assets/javascripts/explore/stores/visTypes.js:197
+#: superset/viz.py:1011
+msgid "Time Series - Bar Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:230
+#: superset/viz.py:1019
+msgid "Time Series - Percent Change"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:251
+#: superset/viz.py:1027
+msgid "Time Series - Stacked"
+msgstr ""
+
+#: superset/viz.py:1036
+msgid "Distribution - NVD3 - Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:535
+#: superset/viz.py:1054
+msgid "Histogram"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:19
+#: superset/assets/javascripts/explore/stores/visTypes.js:81
+#: superset/viz.py:1079
+msgid "Distribution - Bar Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:565
+#: superset/viz.py:1146
+msgid "Sunburst"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:595
+#: superset/viz.py:1179
+msgid "Sankey"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:615
+#: superset/viz.py:1228 superset/viz.py:1249
+msgid "Directed Force Layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:672
+#: superset/viz.py:1282
+msgid "Country Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:696
+#: superset/viz.py:1311
+msgid "World Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:63
+#: superset/viz.py:1361
+msgid "Filters"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:758
+#: superset/viz.py:1396
+msgid "iFrame"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:770
+#: superset/viz.py:1413
+msgid "Parallel Coordinates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:786
+#: superset/viz.py:1438
+msgid "Heatmap"
+msgstr ""
+
+#: superset/viz.py:1489
+msgid "Horizon Charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:830
+#: superset/viz.py:1500
+msgid "Mapbox"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:900
+#: superset/viz.py:1603
+msgid "Event flow"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:55
+msgid "Your query was saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:56
+msgid "Your query could not be saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:109
+msgid "Failed at retrieving results from the results backend"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:155
+msgid "Could not connect to server"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:160
+msgid "Your session timed out, please refresh your page and try again."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:179
+msgid "Query was stopped."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:182
+msgid "Failed at stopping query."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:295
+#: superset/assets/javascripts/SqlLab/actions.js:308
+msgid "Error occurred while fetching table metadata"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:358
+msgid "shared query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:366
+#: superset/assets/javascripts/SqlLab/actions.js:386
+msgid "The query couldn't be loaded"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:419
+msgid "An error occurred while creating the data source"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:29
+msgid "Pick a chart type!"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:30
+msgid "To use this chart type you need at least one column flagged as a date"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:31
+msgid "To use this chart type you need at least one dimension"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:32
+msgid "To use this chart type you need at least one aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
+#: superset/assets/javascripts/SqlLab/reducers.js:11
+msgid "Untitled Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/reducers.js:44
+#, python-format
+msgid "Copy of %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:30
+msgid "share query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:33
+msgid "copy URL to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:56
+msgid "Raw SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:66
+msgid "Source SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:78
+#: superset/assets/javascripts/explore/stores/visTypes.js:31
+msgid "SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryHistory.jsx:28
+msgid "No query history yet..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:106
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:66
+msgid "It seems you don't have access to any database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:154
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:90
+msgid "Search Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:160
+msgid "[From]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:171
+msgid "[To]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:181
+msgid "[Query Status]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:190
+msgid "Search"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:114
+msgid "Open in SQL Editor"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:133
+msgid "view results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:136
+msgid "Data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:176
+msgid "Visualize the data out of this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:182
+msgid "Overwrite text in editor with a query on this table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:188
+msgid "Run query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:193
+msgid "Remove query from log"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:68
+msgid ".CSV"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:79
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:235
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:274
+msgid "Visualize"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:151
+msgid "Query was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:135
+#: superset/connectors/sqla/views.py:213 superset/views/core.py:375
+msgid "Table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+msgid "was created"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:201
+msgid "Query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:240
+msgid "Fetch data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:244
+msgid "The query returned no data"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Selected Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+msgid "Run query asynchronously"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:56
+msgid "Stop"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+msgid "Undefined"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
+msgid "Label"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+msgid "Label for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
+#: superset/connectors/druid/views.py:107
+#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:131 superset/views/core.py:369
+msgid "Description"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+msgid "Write a description for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:139
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:220
+msgid "Save"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/templates/superset/request_access.html:16
+msgid "Cancel"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+msgid "Save Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:80
+msgid "Run a query to display results here"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:85
+#, python-format
+msgid "Preview for %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:109
+msgid "Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:115
+msgid "Query History"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:112
+#, python-format
+msgid ""
+"It appears that the number of rows in the query results displayed was "
+"limited on the server side to the %s limit."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:123
+msgid "Create table as with query results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:131
+msgid "new table name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:90
+msgid "Error while fetching table list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:131
+msgid "Error while fetching schema list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:153
+msgid "Error while fetching database list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:159
+msgid "Database:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:163
+msgid "Select a database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:170
+#, python-format
+msgid "Select a schema (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:175
+msgid "Schema:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:190
+#, python-format
+msgid "Add a table (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:203
+msgid "Type to search ..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:226
+msgid "Reset State"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:105
+msgid "Enter a new title for the tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:124
+#, python-format
+msgid "Untitled Query %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:170
+msgid "close tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:173
+msgid "rename tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "expand tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "hide tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:75
+msgid "Copy partition query to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:94
+msgid "latest partition:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:110
+msgid "Keys for table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:119
+#, python-format
+msgid "View keys & indexes (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:135
+msgid "Sort columns alphabetically"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:136
+msgid "Original table column order"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:146
+msgid "Copy SELECT statement to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:152
+msgid "Remove table preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:20
+#: superset/assets/javascripts/explore/stores/visTypes.js:111
+msgid "Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:85
+#, python-format
+msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "AS my_alias"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "using only alphanumeric characters and underscores"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:160
+msgid "Creating a data source and popping a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:190
+msgid "No results available for this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:242
+msgid "Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:245
+msgid "[Chart Type]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:253
+msgid "Datasource Name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:257
+msgid "datasource name"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:54
+msgid "Create a new slice"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:59
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:65
+msgid "Choose a datasource"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:71
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:77
+msgid "Choose a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:87
+msgid "Create new slice"
+msgstr ""
+
+#: superset/assets/javascripts/components/AsyncSelect.jsx:20
+msgid "Select ..."
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:26
+msgid "Loaded data cached"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:28
+msgid "Loaded from cache"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:33
+msgid "Click to force-refresh"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+msgid "Copy to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+msgid "Not successful"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+msgid "Copied!"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:12
+#: superset/views/core.py:470 superset/views/core.py:537
+msgid "Title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "click to edit title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "You don't have the rights to alter this title."
+msgstr ""
+
+#: superset/assets/javascripts/components/FaveStar.jsx:32
+#: superset/assets/javascripts/modules/superset.js:33
+msgid "Click to favorite/unfavorite"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:36
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "You have unsaved changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "Click the"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:55
+msgid "button on the top right to save your changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:158
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:163
+msgid "Click to force refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:337
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:93
+msgid "Error"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:338
+#, python-format
+msgid "Sorry, there was an error adding slices to this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
+#, python-format
+msgid "Checkout this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
+msgid "Force refresh the whole dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
+msgid "Edit this dashboard's properties"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+msgid "Load a template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+msgid "Load a CSS template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
+#: superset/views/core.py:477
+msgid "CSS"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+msgid "Live CSS Editor"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
+msgid "Don't refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:20
+msgid "10 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:21
+msgid "30 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:22
+msgid "1 minute"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:23
+msgid "5 minutes"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:38
+msgid "Refresh Interval"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:41
+msgid "Choose the refresh frequency for this dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:58
+msgid "This dashboard was saved successfully."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:64
+msgid "Sorry, there was an error saving this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:94
+msgid "You must pick a name for the new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:108
+msgid "Save Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:116
+#, python-format
+msgid "Overwrite Dashboard [%s]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+msgid "Save as:"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:127
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:208
+msgid "[dashboard name]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:137
+#: superset/views/core.py:374
+msgid "Name"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:143
+msgid "Viz"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:152
+#: superset/views/core.py:475 superset/views/core.py:539
+msgid "Modified"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:162
+msgid "Add Slices"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:171
+msgid "Add a new slice to the dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:175
+msgid "Add Slices to Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:23
+msgid "Move chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:26
+msgid "Force refresh data"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:30
+msgid "Toggle chart description"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:40
+msgid "Edit chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:45
+msgid "Explore chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:50
+msgid "Remove chart from dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:170
+#, python-format
+msgid "%s - untitled"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:276
+msgid "Edit slice properties"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:60
+msgid "Takes effect on chart immediatly"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:56
+msgid "Error..."
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:92
+msgid "Query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+msgid "Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+msgid "Width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+msgid "Export to .json"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+msgid "Export to .csv format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:73
+msgid "Please enter a slice name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:88
+msgid "Please select a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:96
+msgid "Please enter a dashboard name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:134
+msgid "Save A Slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:155
+#, python-format
+msgid "Overwrite slice %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
+msgid "Save as"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:168
+msgid "[slice name]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:181
+msgid "Do not add to a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:189
+msgid "Add slice to existing dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:203
+msgid "Add to new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:229
+msgid "Save & go to dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#, python-format
+msgid "Check out this slice: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+msgid "`Min` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+msgid "`Max` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
+msgid "Min"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
+msgid "Max"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:118
+msgid "Filter value"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:159
+msgid "Select operator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:70
+msgid "Add Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:62
+msgid "textarea"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "Edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "in modal"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:90
+#: superset/assets/javascripts/explore/stores/controls.jsx:46
+msgid "edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:104
+msgid "Select a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:114
+msgid "Search / Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:61
+#, python-format
+msgid "fetching dashboards failed for %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:100
+msgid "Updating chart was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:106
+#: superset/assets/javascripts/modules/superset.js:220
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:117
+msgid "Query timeout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:118
+#, python-format
+msgid "- visualization query are set to timeout at %s seconds. "
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:119
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is to large to be processed within"
+" the timeout range. If that is the case, we recommend that you summarize "
+"your data further."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:127
+msgid "Network error."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:150
+msgid "Failed to save slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:35
+#: superset/connectors/druid/views.py:45 superset/views/core.py:313
+#: superset/views/core.py:368
+msgid "Datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:55
+#: superset/views/core.py:376
+msgid "Visualization Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:57
+msgid "The type of visualization to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:63
+msgid "Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:72
+#: superset/assets/javascripts/explore/stores/controls.jsx:90
+msgid "One or many metrics to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:79
+msgid ""
+"Bounds for the Y axis. When left empty, the bounds are dynamically "
+"defined based on the min/max of the data. Note that this feature will "
+"only expand the axis range. It won't narrow the data's extent."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:88
+msgid "Ordering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:100
+msgid "Choose the metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:113
+msgid "Right Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:117
+msgid "Choose a metric for right axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:128
+msgid "Stacked Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:140
+msgid "Linear Color Scheme"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:153
+msgid "Normalize Across"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:160
+msgid ""
+"Color will be rendered based on a ratio of the cell against the sum of "
+"across this criteria"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:167
+msgid "Horizon Color Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:174
+msgid "Defines how the color are attributed."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:179
+msgid "Rendering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:185
+msgid ""
+"image-rendering CSS attribute of the canvas object that defines how the "
+"browser scales up the image"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:191
+msgid "XScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:194
+msgid "Number of steps to take between ticks when displaying the X scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:200
+msgid "YScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
+msgid "Number of steps to take between ticks when displaying the Y scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:209
+msgid "Include Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:210
+msgid "Whether to include the time granularity as defined in the time section"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:216
+msgid "Stacked Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:232
+msgid "Show Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:235
+msgid "Show data points as circle markers on the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:240
+msgid "Bar Values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:248
+msgid "Sort Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:250
+msgid "Sort bars by x labels."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:263
+msgid "Extra Controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:266
+msgid ""
+"Whether to show extra controls or not. Extra controls include things like"
+" making mulitBar charts stacked or side by side."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:273
+msgid "Reduce X ticks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:276
+msgid ""
+"Reduces the number of X axis ticks to be rendered. If true, the x axis "
+"wont overflow and labels may be missing. If false, a minimum width will "
+"be applied to columns and the width may overflow into an horizontal "
+"scroll."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:285
+msgid "Include Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:288
+msgid "Include series name as an axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:293
+msgid "Color Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:295
+msgid "A metric to use for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:302
+msgid "Country Name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:321
+msgid "The name of country that Superset should display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:325
+msgid "Country Field Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:333
+msgid ""
+"The country code standard that Superset should expect to find in the "
+"[country] column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:340
+msgid "Group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:342
+msgid "One or many controls to group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:354
+#: superset/assets/javascripts/explore/stores/controls.jsx:368
+msgid "Columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:370
+#: superset/assets/javascripts/explore/stores/controls.jsx:380
+#: superset/assets/javascripts/explore/stores/controls.jsx:390
+msgid "Columns to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:378
+msgid "X"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:388
+msgid "Y"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:399
+msgid "Origin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:405
+msgid ""
+"Defines the origin where time buckets start, accepts natural dates as in "
+"`now`, `sunday` or `1970-01-01`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
+msgid "Bottom marging, in pixels, allowing for more room for axis labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:421
+msgid "Time Granularity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:438
+msgid ""
+"The time granularity for the visualization. Note that you can type and "
+"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:445
+msgid "Domain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:448
+msgid "The time unit used for the grouping of blocks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:453
+msgid "Subdomain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:456
+msgid ""
+"The time unit for each block. Should be a smaller unit than "
+"domain_granularity. Should be larger or equal to Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:463
+msgid "Link Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:466
+msgid "Link length in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:472
+msgid "Charge"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:486
+msgid "Charge in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:494
+msgid ""
+"The time column for the visualization. Note that you can define arbitrary"
+" expression that return a DATETIME column in the table or. Also note that"
+" the filter below is applied against this column or expression"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:506
+msgid "Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:508
+msgid ""
+"The time granularity for the visualization. This applies a date "
+"transformation to alter your time column and defines a new time "
+"granularity. The options here are defined on a per database engine basis "
+"in the Superset source code."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:521
+msgid "Resample Rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:524
+msgid "Pandas resample rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:530
+msgid "Resample How"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:533
+msgid "Pandas resample how"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:539
+msgid "Resample Fill Method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:542
+msgid "Pandas resample fill method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:548
+msgid "Since"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:560
+msgid ""
+"Timestamp from filter. This supports free form typing and natural "
+"language as in `1 day ago`, `28 days` or `3 years`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:567
+msgid "Until"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:582
+msgid "Max Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:590
+msgid "Whisker/outlier options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:592
+msgid "Determines how whiskers and outliers are calculated."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:603
+msgid "Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:606
+msgid "Target aspect ratio for treemap tiles."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:612
+#: superset/assets/javascripts/explore/stores/visTypes.js:510
+#: superset/assets/javascripts/explore/stores/visTypes.js:529
+#: superset/assets/javascripts/explore/stores/visTypes.js:654
+msgid "Number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:622
+msgid "Row limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:630
+msgid "Series limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:633
+msgid "Limits the number of time series that get displayed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:638
+msgid "Sort By"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:640
+msgid "Metric used to define the top series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:648
+msgid "Rolling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:651
+msgid ""
+"Defines a rolling window function to apply, works along with the "
+"[Periods] text box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:657
+msgid "Periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:659
+msgid ""
+"Defines the size of the rolling window function, relative to the time "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:665
+#: superset/assets/javascripts/explore/stores/visTypes.js:101
+msgid "Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:667
+msgid ""
+"Defines the grouping of entities. Each series is shown as a specific "
+"color on the chart and has a legend toggle"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:677
+msgid "Entity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:680
+msgid "This defines the element to be plotted on the chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:688
+#: superset/assets/javascripts/explore/stores/visTypes.js:459
+msgid "X Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:689
+msgid "Metric assigned to the [X] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:702
+#: superset/assets/javascripts/explore/stores/visTypes.js:466
+msgid "Y Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:705
+msgid "Metric assigned to the [Y] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:716
+msgid "Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:729
+msgid "URL"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:730
+msgid ""
+"The URL, this control is templated, so you can integrate {{ width }} "
+"and/or {{ height }} in your URL string."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:737
+msgid "X Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:744
+msgid "Y Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:751
+msgid "Custom WHERE clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:753
+msgid ""
+"The text in this box gets included in your query's WHERE clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:761
+msgid "Custom HAVING clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:763
+msgid ""
+"The text in this box gets included in your query's HAVING clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:771
+msgid "Comparison Period Lag"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:773
+msgid "Based on granularity, number of time periods to compare against"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:778
+msgid "Comparison suffix"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:779
+msgid "Suffix to apply after the percentage display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:785
+msgid "Table Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:790
+msgid "Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:796
+msgid "Series Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:799
+msgid "Pixel height of each series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:805
+msgid "Page Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:808
+msgid "Rows per page, 0 means no pagination"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:814
+#: superset/assets/javascripts/explore/stores/controls.jsx:824
+msgid "X Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:834
+msgid "Y Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:844
+msgid "Right Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:852
+msgid "Markup Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+msgid "Pick your favorite markup language"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:862
+msgid "Rotation"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:865
+msgid "Rotation to apply to words in the cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:870
+msgid "Line Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:875
+msgid "Line interpolation as defined by d3.js"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:880
+msgid "Label Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:887
+msgid "What should be shown on the label?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:892
+msgid "Code"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:893
+msgid "Put your code here"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:902
+msgid "Aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:914
+msgid ""
+"Aggregate function to apply when pivoting and computing the total rows "
+"and columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:921
+msgid "Font Size From"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:923
+msgid "Font size for the smallest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:929
+msgid "Font Size To"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:931
+msgid "Font size for the biggest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:936
+msgid "Instant Filtering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:940
+msgid ""
+"Whether to apply filters as they change, or wait forusers to hit an "
+"[Apply] button"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:947
+msgid "Range Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:950
+msgid "Whether to display the time range interactive selector"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:955
+msgid "Date Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:957
+msgid "Whether to include a time filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:962
+msgid "Data Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:964
+msgid "Whether to display the interactive data table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:969
+msgid "Search Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:972
+msgid "Whether to include a client side search box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:977
+msgid "Table Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:979
+msgid "Whether to apply filter when table cell is clicked"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:984
+msgid "Show Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:987
+msgid "Whether to display bubbles on top of countries"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:992
+msgid "Legend"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:995
+msgid "Whether to display the legend (toggles)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1000
+msgid "X bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1003
+msgid "Whether to display the min and max values of the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1008
+msgid "Rich Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1011
+msgid "The rich tooltip shows a list of all series for that point in time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1017
+msgid "Y Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1020
+msgid "Use a log scale for the Y axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1025
+msgid "X Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1028
+msgid "Use a log scale for the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1033
+msgid "Donut"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1036
+msgid "Do you want a donut or a pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+msgid "Put labels outside"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1044
+msgid "Put the labels outside the pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+msgid "Contribution"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1051
+msgid "Compute the contribution to the total"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1056
+msgid "Period Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1059
+msgid ""
+"[integer] Number of period to compare against, this is relative to the "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1065
+msgid "Period Ratio Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1068
+msgid ""
+"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
+"is (new-previous)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1074
+msgid "Time Shift"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1076
+msgid ""
+"Overlay a timeseries from a relative time period. Expects relative time "
+"delta in natural language (example:  24 hours, 7 days, 56 weeks, 365 "
+"days)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1084
+msgid "Subheader"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1085
+msgid "Description text that shows up below your Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1091
+msgid "label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1093
+msgid ""
+"`count` is COUNT(*) if a group by is used. Numerical columns will be "
+"aggregated with the aggregator. Non-numerical columns will be used to "
+"label points. Leave empty to get a count of points in each cluster."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1104
+msgid "Map Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1114
+msgid "Base layer map style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1120
+msgid "Clustering Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1133
+msgid ""
+"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
+"to turn off clustering, but beware that a large number of points (>1000) "
+"will cause lag."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1140
+msgid "Point Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1142
+msgid ""
+"The radius of individual points (ones that are not in a cluster). Either "
+"a numerical column or `Auto`, which scales the point based on the largest"
+" cluster"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1152
+msgid "Point Radius Unit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+msgid "The unit of measure for the specified point radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1160
+msgid "Opacity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1163
+msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1169
+msgid "Zoom"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1172
+msgid "Zoom level of the map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1178
+msgid "Default latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1181
+msgid "Latitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1187
+msgid "Default longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1190
+msgid "Longitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1196
+msgid "Live render"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1198
+msgid "Points and clusters will update as viewport is being changed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1204
+msgid "RGB Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1214
+msgid "The color for points and clusters in RGB"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1219
+msgid "Ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1221
+msgid "Ranges to highlight with shading"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1226
+msgid "Range labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1228
+msgid "Labels for the ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1233
+msgid "Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1235
+msgid "List of values to mark with triangles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1240
+msgid "Marker labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1242
+msgid "Labels for the markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1247
+msgid "Marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1249
+msgid "List of values to mark with lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1254
+msgid "Marker line labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1256
+msgid "Labels for the marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1283
+msgid "Slice ID"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1285
+msgid "The id of the active slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1290
+msgid "Cache Timeout (seconds)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1292
+msgid "The number of seconds before expiring the cache"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1297
+msgid "Order by entity id"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+msgid ""
+"Important! Select this if the table is not already sorted by entity id, "
+"else there is no guarantee that all events for each entity are returned."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1306
+msgid "Minimum leaf node event count"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1309
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:7
+#: superset/assets/javascripts/explore/stores/visTypes.js:23
+msgid "Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:8
+#: superset/assets/javascripts/explore/stores/visTypes.js:24
+msgid "Time related form attributes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:15
+msgid "Datasource & Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:36
+msgid "This section exposes ways to include snippets of SQL in your query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:48
+msgid "Advanced Analytics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:49
+msgid ""
+"This section contains options that allow for advanced analytical post "
+"processing of query results"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:64
+msgid ""
+"Filters are defined using comma delimited strings as in "
+"<US,FR,Other>Leave the value control empty to filter empty strings or "
+"nullsFor filters with comma in values, wrap them in single quotesas in "
+"<NY, 'Tahoe, CA', DC>"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:71
+msgid "Result Filters"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:72
+msgid ""
+"The filters to apply after post-aggregation.Leave the value control empty"
+" to filter empty strings or nulls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:84
+#: superset/assets/javascripts/explore/stores/visTypes.js:132
+#: superset/assets/javascripts/explore/stores/visTypes.js:163
+#: superset/assets/javascripts/explore/stores/visTypes.js:202
+#: superset/assets/javascripts/explore/stores/visTypes.js:235
+#: superset/assets/javascripts/explore/stores/visTypes.js:256
+#: superset/assets/javascripts/explore/stores/visTypes.js:393
+#: superset/assets/javascripts/explore/stores/visTypes.js:428
+#: superset/assets/javascripts/explore/stores/visTypes.js:447
+#: superset/assets/javascripts/explore/stores/visTypes.js:821
+msgid "Chart Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:104
+msgid "Breakdowns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:105
+msgid "Defines how each series is broken down"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:141
+#: superset/assets/javascripts/explore/stores/visTypes.js:211
+#: superset/assets/javascripts/explore/stores/visTypes.js:265
+msgid "Axes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:159
+msgid "Dual Axis Line Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:169
+msgid "Y Axis 1"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:175
+msgid "Y Axis 2"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:183
+msgid "Left Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:184
+msgid "Choose a metric for left axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:187
+msgid "Left Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:286
+msgid "GROUP BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:287
+msgid "Use this section if you want a query that aggregates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:294
+msgid "NOT GROUPED BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:295
+msgid "Use this section if you want to query atomic rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:302
+msgid "Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:453
+#: superset/assets/javascripts/explore/stores/visTypes.js:707
+msgid "Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:545
+msgid "Histogram Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:553
+msgid "Numeric Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:554
+msgid "Select the numeric column to draw the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:557
+msgid "No of Bins"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:558
+msgid "Select number of bins for the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:578
+msgid "Primary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:579
+msgid "The primary metric is used to define the arc segment sizes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:582
+msgid "Secondary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:583
+msgid ""
+"This secondary metric is used to define the color as a ratio against the "
+"primary metric. If the two metrics match, color is mapped level groups"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:588
+msgid "Hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:589
+msgid "This defines the level of the hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:608
+#: superset/assets/javascripts/explore/stores/visTypes.js:635
+msgid "Source / Target"
 msgstr ""
 
-#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:238
-#: superset/db_engine_specs.py:270 superset/db_engine_specs.py:325
-#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:781
-#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:845
-#: superset/db_engine_specs.py:893
-msgid "day"
+#: superset/assets/javascripts/explore/stores/visTypes.js:609
+#: superset/assets/javascripts/explore/stores/visTypes.js:636
+msgid "Choose a source and a target"
 msgstr ""
 
-#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:244
-#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:783
-#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
-msgid "week"
+#: superset/assets/javascripts/explore/stores/visTypes.js:626
+msgid "Force Layout"
 msgstr ""
 
-#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:273 superset/db_engine_specs.py:328
-#: superset/db_engine_specs.py:373 superset/db_engine_specs.py:785
-#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:849
-#: superset/db_engine_specs.py:895
-msgid "month"
+#: superset/assets/javascripts/explore/stores/visTypes.js:641
+msgid "Chord Diagram"
 msgstr ""
 
-#: superset/db_engine_specs.py:201 superset/db_engine_specs.py:248
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:375
-#: superset/db_engine_specs.py:787 superset/db_engine_specs.py:817
-#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:897
-msgid "quarter"
+#: superset/assets/javascripts/explore/stores/visTypes.js:655
+msgid "Choose a number format"
 msgstr ""
 
-#: superset/db_engine_specs.py:202 superset/db_engine_specs.py:252
-#: superset/db_engine_specs.py:332 superset/db_engine_specs.py:789
-#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:899
-msgid "year"
+#: superset/assets/javascripts/explore/stores/visTypes.js:658
+msgid "Source"
 msgstr ""
 
-#: superset/db_engine_specs.py:334
-msgid "week_start_monday"
+#: superset/assets/javascripts/explore/stores/visTypes.js:661
+msgid "Choose a source"
 msgstr ""
 
-#: superset/db_engine_specs.py:377 superset/db_engine_specs.py:853
-msgid "week_ending_saturday"
+#: superset/assets/javascripts/explore/stores/visTypes.js:664
+msgid "Target"
 msgstr ""
 
-#: superset/db_engine_specs.py:380 superset/db_engine_specs.py:856
-msgid "week_start_sunday"
+#: superset/assets/javascripts/explore/stores/visTypes.js:667
+msgid "Choose a target"
 msgstr ""
 
-#: superset/db_engine_specs.py:775 superset/db_engine_specs.py:887
-msgid "5 minute"
+#: superset/assets/javascripts/explore/stores/visTypes.js:686
+msgid "ISO 3166-1 codes of region/province/department"
 msgstr ""
 
-#: superset/db_engine_specs.py:777
-msgid "half hour"
+#: superset/assets/javascripts/explore/stores/visTypes.js:687
+msgid ""
+"It's ISO 3166-1 of your region/province/department in your table. (see "
+"documentation for list of ISO 3166-1)"
 msgstr ""
 
-#: superset/db_engine_specs.py:889
-msgid "10 minute"
+#: superset/assets/javascripts/explore/stores/visTypes.js:690
+#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:130
+msgid "Metric"
 msgstr ""
 
-#: superset/utils.py:472
-#, python-format
-msgid "[Superset] Access to the datasource %(name)s was granted"
+#: superset/assets/javascripts/explore/stores/visTypes.js:691
+msgid "Metric to display bottom title"
 msgstr ""
 
-#: superset/viz.py:311
-msgid "Table View"
+#: superset/assets/javascripts/explore/stores/visTypes.js:717
+msgid "Country Control"
 msgstr ""
 
-#: superset/viz.py:364
-msgid "Pivot Table"
+#: superset/assets/javascripts/explore/stores/visTypes.js:718
+msgid "3 letter code of the country"
 msgstr ""
 
-#: superset/viz.py:413
-msgid "Markup"
+#: superset/assets/javascripts/explore/stores/visTypes.js:721
+msgid "Metric for color"
 msgstr ""
 
-#: superset/viz.py:432
-msgid "Separator"
+#: superset/assets/javascripts/explore/stores/visTypes.js:722
+msgid "Metric that defines the color of the country"
 msgstr ""
 
-#: superset/viz.py:448
-msgid "Word Cloud"
+#: superset/assets/javascripts/explore/stores/visTypes.js:725
+msgid "Bubble size"
 msgstr ""
 
-#: superset/viz.py:471
-msgid "Treemap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:726
+msgid "Metric that defines the size of the bubble"
 msgstr ""
 
-#: superset/viz.py:497
-msgid "Calendar Heatmap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:732
+msgid "Filter Box"
 msgstr ""
 
-#: superset/viz.py:555
-msgid "Box Plot"
+#: superset/assets/javascripts/explore/stores/visTypes.js:745
+msgid "Filter controls"
 msgstr ""
 
-#: superset/viz.py:644
-msgid "Bubble Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:747
+msgid ""
+"The controls you want to filter on. Note that only columns checked as "
+"\"filterable\" will show up on this list."
 msgstr ""
 
-#: superset/viz.py:693
-msgid "Bullet Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:789
+msgid "Axis & Metrics"
 msgstr ""
 
-#: superset/viz.py:742
-msgid "Big Number with Trendline"
+#: superset/assets/javascripts/explore/stores/visTypes.js:797
+msgid "Heatmap Options"
 msgstr ""
 
-#: superset/viz.py:771
-msgid "Big Number"
+#: superset/assets/javascripts/explore/stores/visTypes.js:817
+msgid "Horizon"
 msgstr ""
 
-#: superset/viz.py:798
-msgid "Time Series - Line Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:843
+msgid "Points"
 msgstr ""
 
-#: superset/viz.py:925
-msgid "Time Series - Dual Axis Line Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:850
+msgid "Labelling"
 msgstr ""
 
-#: superset/viz.py:1000
-msgid "Time Series - Bar Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:857
+msgid "Visual Tweaks"
 msgstr ""
 
-#: superset/viz.py:1008
-msgid "Time Series - Percent Change"
+#: superset/assets/javascripts/explore/stores/visTypes.js:865
+msgid "Viewport"
 msgstr ""
 
-#: superset/viz.py:1016
-msgid "Time Series - Stacked"
+#: superset/assets/javascripts/explore/stores/visTypes.js:875
+msgid "Longitude"
 msgstr ""
 
-#: superset/viz.py:1025
-msgid "Distribution - NVD3 - Pie Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:876
+msgid "Column containing longitude data"
 msgstr ""
 
-#: superset/viz.py:1043
-msgid "Histogram"
+#: superset/assets/javascripts/explore/stores/visTypes.js:879
+msgid "Latitude"
 msgstr ""
 
-#: superset/viz.py:1068
-msgid "Distribution - Bar Chart"
+#: superset/assets/javascripts/explore/stores/visTypes.js:880
+msgid "Column containing latitude data"
 msgstr ""
 
-#: superset/viz.py:1135
-msgid "Sunburst"
+#: superset/assets/javascripts/explore/stores/visTypes.js:883
+msgid "Cluster label aggregator"
 msgstr ""
 
-#: superset/viz.py:1168
-msgid "Sankey"
+#: superset/assets/javascripts/explore/stores/visTypes.js:884
+msgid ""
+"Aggregate function applied to the list of points in each cluster to "
+"produce the cluster label."
 msgstr ""
 
-#: superset/viz.py:1217
-msgid "Directed Force Layout"
+#: superset/assets/javascripts/explore/stores/visTypes.js:888
+msgid "Tooltip"
 msgstr ""
 
-#: superset/viz.py:1238
-msgid "Country Map"
+#: superset/assets/javascripts/explore/stores/visTypes.js:889
+msgid "Show a tooltip when hovering over points and clusters describing the label"
 msgstr ""
 
-#: superset/viz.py:1267
-msgid "World Map"
+#: superset/assets/javascripts/explore/stores/visTypes.js:893
+msgid ""
+"One or many controls to group by. If grouping, latitude and longitude "
+"columns must be present."
 msgstr ""
 
-#: superset/viz.py:1317
-msgid "Filters"
+#: superset/assets/javascripts/explore/stores/visTypes.js:904
+msgid "Event definition"
 msgstr ""
 
-#: superset/viz.py:1352
-msgid "iFrame"
+#: superset/assets/javascripts/explore/stores/visTypes.js:914
+msgid "Additional meta data"
 msgstr ""
 
-#: superset/viz.py:1369
-msgid "Parallel Coordinates"
+#: superset/assets/javascripts/explore/stores/visTypes.js:922
+msgid "Column containing entity ids"
 msgstr ""
 
-#: superset/viz.py:1394
-msgid "Heatmap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:923
+msgid "e.g., a \"user id\" column"
 msgstr ""
 
-#: superset/viz.py:1445
-msgid "Horizon Charts"
+#: superset/assets/javascripts/explore/stores/visTypes.js:926
+msgid "Column containing event names"
 msgstr ""
 
-#: superset/viz.py:1456
-msgid "Mapbox"
+#: superset/assets/javascripts/explore/stores/visTypes.js:934
+msgid "Event count limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:935
+msgid "The maximum number of events to return, equivalent to number of rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:938
+msgid "Meta data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:939
+msgid "Select any columns for meta data inspection"
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:134
+msgid ""
+"The server could not be reached. You may want to verify your connection "
+"and try again."
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:137
+#, python-format
+msgid "An unknown error occurred. (Status: %s )"
+msgstr ""
+
+#: superset/assets/javascripts/modules/superset.js:162
+#, python-format
+msgid "Query timeout - visualization query are set to time out at %s seconds."
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:24
+msgid "Favorites"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:30
+msgid "Created Content"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:37
+msgid "Recent Activity"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/App.jsx:42
+msgid "Security & Access"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:33
+msgid "No slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:49
+msgid "No dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
+#: superset/assets/javascripts/profile/components/Favorites.jsx:59
+#: superset/templates/superset/welcome.html:20 superset/views/core.py:367
+#: superset/views/core.py:527
+msgid "Dashboards"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:403 superset/views/core.py:472
+msgid "Slices"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:34
+msgid "No favorite slices yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Favorites.jsx:50
+msgid "No favorite dashboards yet, go click on stars!"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:14
+msgid "Roles"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:23
+#: superset/views/core.py:279
+msgid "Databases"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/Security.jsx:34
+msgid "Datasources"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+msgid "Profile picture provided by Gravatar"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+msgid "joined"
+msgstr ""
+
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+msgid "id:"
+msgstr ""
+
+#: superset/assets/visualizations/EventFlow.jsx:56
+msgid "Sorry, there appears to be no data"
+msgstr ""
+
+#: superset/assets/visualizations/filter_box.jsx:88
+#, python-format
+msgid "Select [%s]"
 msgstr ""
 
-#: superset/connectors/druid/models.py:950
+#: superset/connectors/druid/models.py:970
 msgid "No data was returned."
 msgstr ""
 
-#: superset/connectors/druid/views.py:36 superset/connectors/sqla/views.py:73
-msgid "Column"
+#: superset/connectors/druid/views.py:28
+msgid "List Druid Column"
 msgstr ""
 
-#: superset/connectors/druid/views.py:37 superset/connectors/druid/views.py:96
-#: superset/connectors/sqla/views.py:119
-msgid "Type"
+#: superset/connectors/druid/views.py:29
+msgid "Show Druid Column"
 msgstr ""
 
-#: superset/connectors/druid/views.py:38 superset/views/core.py:305
-#: superset/views/core.py:354
-msgid "Datasource"
+#: superset/connectors/druid/views.py:30
+msgid "Add Druid Column"
 msgstr ""
 
-#: superset/connectors/druid/views.py:39 superset/connectors/sqla/views.py:76
+#: superset/connectors/druid/views.py:31
+msgid "Edit Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
+msgid "Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
+#: superset/connectors/sqla/views.py:133
+msgid "Type"
+msgstr ""
+
+#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
 msgid "Groupable"
 msgstr ""
 
-#: superset/connectors/druid/views.py:40 superset/connectors/sqla/views.py:77
+#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:85
 msgid "Filterable"
 msgstr ""
 
-#: superset/connectors/druid/views.py:41 superset/connectors/sqla/views.py:79
+#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:87
 msgid "Count Distinct"
 msgstr ""
 
-#: superset/connectors/druid/views.py:42 superset/connectors/sqla/views.py:80
+#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:88
 msgid "Sum"
 msgstr ""
 
-#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
-msgid "Min"
+#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
+msgid ""
+"Whether this column is exposed in the `Filters` section of the explore "
+"view."
 msgstr ""
 
-#: superset/connectors/druid/views.py:44 superset/connectors/sqla/views.py:82
-msgid "Max"
+#: superset/connectors/druid/views.py:80
+msgid "List Druid Metric"
 msgstr ""
 
-#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:42
-msgid ""
-"Whether this column is exposed in the `Filters` section of the explore "
-"view."
+#: superset/connectors/druid/views.py:81
+msgid "Show Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:82
+msgid "Add Druid Metric"
 msgstr ""
 
-#: superset/connectors/druid/views.py:87 superset/connectors/sqla/views.py:101
+#: superset/connectors/druid/views.py:83
+msgid "Edit Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:115
 msgid ""
 "Whether the access to this metric is restricted to certain roles. Only "
 "roles with the permission 'metric access on XXX (the name of this "
 "metric)' are allowed to access this metric"
 msgstr ""
 
-#: superset/connectors/druid/views.py:93 superset/connectors/sqla/views.py:116
-msgid "Metric"
+#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
+#: superset/connectors/sqla/views.py:132
+msgid "Verbose Name"
 msgstr ""
 
-#: superset/connectors/druid/views.py:94 superset/connectors/druid/views.py:204
-#: superset/connectors/sqla/views.py:75 superset/connectors/sqla/views.py:117
-#: superset/views/core.py:355
-msgid "Description"
+#: superset/connectors/druid/views.py:110 superset/views/core.py:554
+msgid "JSON"
 msgstr ""
 
-#: superset/connectors/druid/views.py:95 superset/connectors/sqla/views.py:74
-#: superset/connectors/sqla/views.py:118
-msgid "Verbose Name"
+#: superset/connectors/druid/views.py:111
+msgid "Druid Datasource"
 msgstr ""
 
-#: superset/connectors/druid/views.py:97 superset/views/core.py:534
-msgid "JSON"
+#: superset/connectors/druid/views.py:128
+msgid "List Druid Cluster"
 msgstr ""
 
-#: superset/connectors/druid/views.py:98
-msgid "Druid Datasource"
+#: superset/connectors/druid/views.py:129
+msgid "Show Druid Cluster"
 msgstr ""
 
-#: superset/connectors/druid/views.py:123
-#: superset/connectors/druid/views.py:203
+#: superset/connectors/druid/views.py:130
+msgid "Add Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:131
+msgid "Edit Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:142
+#: superset/connectors/druid/views.py:228
 msgid "Cluster"
 msgstr ""
 
-#: superset/connectors/druid/views.py:124
+#: superset/connectors/druid/views.py:143
 msgid "Coordinator Host"
 msgstr ""
 
-#: superset/connectors/druid/views.py:125
+#: superset/connectors/druid/views.py:144
 msgid "Coordinator Port"
 msgstr ""
 
-#: superset/connectors/druid/views.py:126
+#: superset/connectors/druid/views.py:145
 msgid "Coordinator Endpoint"
 msgstr ""
 
-#: superset/connectors/druid/views.py:127
+#: superset/connectors/druid/views.py:146
 msgid "Broker Host"
 msgstr ""
 
-#: superset/connectors/druid/views.py:128
+#: superset/connectors/druid/views.py:147
 msgid "Broker Port"
 msgstr ""
 
-#: superset/connectors/druid/views.py:129
+#: superset/connectors/druid/views.py:148
 msgid "Broker Endpoint"
 msgstr ""
 
-#: superset/connectors/druid/views.py:144
+#: superset/connectors/druid/views.py:163
 msgid "Druid Clusters"
 msgstr ""
 
-#: superset/connectors/druid/views.py:147
-#: superset/connectors/druid/views.py:243
-#: superset/connectors/druid/views.py:282 superset/connectors/sqla/views.py:261
-#: superset/views/core.py:274
+#: superset/connectors/druid/views.py:166
+#: superset/connectors/druid/views.py:268
+#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:281
+#: superset/views/core.py:282
 msgid "Sources"
 msgstr ""
 
-#: superset/connectors/druid/views.py:172 superset/connectors/sqla/views.py:155
+#: superset/connectors/druid/views.py:173
+msgid "List Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:174
+msgid "Show Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:175
+msgid "Add Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:176
+msgid "Edit Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:175
 msgid ""
 "The list of slices associated with this table. By altering this "
 "datasource, you may change how these associated slices behave. Also note "
@@ -362,11 +2700,11 @@ msgid ""
 "datasource for a slice, overwrite the slice from the 'explore view'"
 msgstr ""
 
-#: superset/connectors/druid/views.py:180 superset/connectors/sqla/views.py:163
+#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:183
 msgid "Timezone offset (in hours) for this datasource"
 msgstr ""
 
-#: superset/connectors/druid/views.py:184
+#: superset/connectors/druid/views.py:209
 msgid ""
 "Time expression to use as a predicate when retrieving distinct values to "
 "populate the filter component. Only applies when `Enable Filter Select` "
@@ -374,160 +2712,203 @@ msgid ""
 "filter will be populated based on the distinct value over the past week"
 msgstr ""
 
-#: superset/connectors/druid/views.py:191 superset/connectors/sqla/views.py:185
+#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:205
 msgid ""
 "Whether to populate the filter's dropdown in the explore view's filter "
 "section with a list of distinct values fetched from the backend on the "
 "fly"
 msgstr ""
 
-#: superset/connectors/druid/views.py:195 superset/connectors/sqla/views.py:199
+#: superset/connectors/druid/views.py:220 superset/connectors/sqla/views.py:219
 msgid ""
 "Redirects to this endpoint when clicking on the datasource from the "
 "datasource list"
 msgstr ""
 
-#: superset/connectors/druid/views.py:201 superset/connectors/sqla/views.py:192
+#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:212
 msgid "Associated Slices"
 msgstr ""
 
-#: superset/connectors/druid/views.py:202
+#: superset/connectors/druid/views.py:227
 msgid "Data Source"
 msgstr ""
 
-#: superset/connectors/druid/views.py:205
+#: superset/connectors/druid/views.py:230
 msgid "Owner"
 msgstr ""
 
-#: superset/connectors/druid/views.py:206
+#: superset/connectors/druid/views.py:231
 msgid "Is Hidden"
 msgstr ""
 
-#: superset/connectors/druid/views.py:207 superset/connectors/sqla/views.py:197
+#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:217
 msgid "Enable Filter Select"
 msgstr ""
 
-#: superset/connectors/druid/views.py:208
+#: superset/connectors/druid/views.py:233
 msgid "Default Endpoint"
 msgstr ""
 
-#: superset/connectors/druid/views.py:209
+#: superset/connectors/druid/views.py:234
 msgid "Time Offset"
 msgstr ""
 
-#: superset/connectors/druid/views.py:210 superset/connectors/sqla/views.py:203
-#: superset/views/core.py:241 superset/views/core.py:351
+#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:223
+#: superset/views/core.py:249 superset/views/core.py:365
 msgid "Cache Timeout"
 msgstr ""
 
-#: superset/connectors/druid/views.py:241
+#: superset/connectors/druid/views.py:266
 msgid "Druid Datasources"
 msgstr ""
 
-#: superset/connectors/druid/views.py:279
+#: superset/connectors/druid/views.py:304
 msgid "Refresh Druid Metadata"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:388
+#: superset/connectors/sqla/models.py:386
 msgid ""
 "Datetime column not provided as part table configuration and is required "
 "by this type of chart"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:393
+#: superset/connectors/sqla/models.py:391
 msgid "Metric '{}' is not valid"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:38
+#: superset/connectors/sqla/views.py:28
+msgid "List Columns"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:29
+msgid "Show Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:30
+msgid "Add Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:31
+msgid "Edit Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:46
 msgid ""
 "Whether to make this column available as a [Time Granularity] option, "
 "column has to be DATETIME or DATETIME-like"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:45
+#: superset/connectors/sqla/views.py:53
 msgid ""
 "The data type that was inferred by the database. It may be necessary to "
 "input a type manually for expression-defined columns in some cases. In "
 "most case users should not need to alter this."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:78 superset/connectors/sqla/views.py:121
-#: superset/connectors/sqla/views.py:193 superset/views/core.py:361
-msgid "Table"
-msgstr ""
-
-#: superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:91
 msgid "Expression"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:84
+#: superset/connectors/sqla/views.py:92
 msgid "Is temporal"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:85
+#: superset/connectors/sqla/views.py:93
 msgid "Datetime Format"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:86
+#: superset/connectors/sqla/views.py:94
 msgid "Database Expression"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:120
+#: superset/connectors/sqla/views.py:102
+msgid "List Metrics"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:103
+msgid "Show Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:104
+msgid "Add Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:105
+msgid "Edit Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:134
 msgid "SQL Expression"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:164
+#: superset/connectors/sqla/views.py:152
+msgid "List Tables"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:153
+msgid "Show Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:154
+msgid "Add Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:155
+msgid "Edit Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:184
 msgid "Name of the table that exists in the source database"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:166
+#: superset/connectors/sqla/views.py:186
 msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:172
+#: superset/connectors/sqla/views.py:192
 msgid ""
 "This fields acts a Superset view, meaning that Superset will run a query "
 "against this string as a subquery."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:176
+#: superset/connectors/sqla/views.py:196
 msgid ""
 "Predicate applied when fetching distinct value to populate the filter "
 "control component. Supports jinja template syntax. Applies only when "
 "`Enable Filter Select` is on."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:182
+#: superset/connectors/sqla/views.py:202
 msgid "Redirects to this endpoint when clicking on the table from the table list"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:194
+#: superset/connectors/sqla/views.py:214
 msgid "Changed By"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:195 superset/views/core.py:237
+#: superset/connectors/sqla/views.py:215 superset/views/core.py:245
 msgid "Database"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:196 superset/views/core.py:239
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:247
 msgid "Last Changed"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:198
+#: superset/connectors/sqla/views.py:218
 msgid "Schema"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:202
+#: superset/connectors/sqla/views.py:222
 msgid "Offset"
 msgstr ""
 
-#: superset/connectors/sqla/views.py:235
+#: superset/connectors/sqla/views.py:255
 msgid ""
 "The table was created. As part of this two phase configuration process, "
 "you should now click the edit button by the new table to configure it."
 msgstr ""
 
-#: superset/connectors/sqla/views.py:259
+#: superset/connectors/sqla/views.py:279
 msgid "Tables"
 msgstr ""
 
@@ -560,19 +2941,10 @@ msgstr ""
 msgid "Request Permissions"
 msgstr ""
 
-#: superset/templates/superset/request_access.html:16
-msgid "Cancel"
-msgstr ""
-
 #: superset/templates/superset/welcome.html:10
 msgid "Welcome!"
 msgstr ""
 
-#: superset/templates/superset/welcome.html:20 superset/views/core.py:353
-#: superset/views/core.py:507
-msgid "Dashboards"
-msgstr ""
-
 #: superset/templates/superset/models/database/macros.html:4
 msgid "Test Connection"
 msgstr ""
@@ -590,144 +2962,172 @@ msgstr ""
 msgid "Delete all Really?"
 msgstr ""
 
-#: superset/views/core.py:55
+#: superset/views/core.py:57
 msgid "This endpoint requires the `all_datasource_access` permission"
 msgstr ""
 
-#: superset/views/core.py:57
+#: superset/views/core.py:59
 msgid "The datasource seems to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:58
+#: superset/views/core.py:60
 msgid "The access requests seem to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:60
+#: superset/views/core.py:62
 msgid "The user seems to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:61
+#: superset/views/core.py:63
 msgid "You don't have access to this datasource"
 msgstr ""
 
-#: superset/views/core.py:65
+#: superset/views/core.py:67
 #, python-format
 msgid ""
 "This view requires the database %(name)s or `all_datasource_access` "
 "permission"
 msgstr ""
 
-#: superset/views/core.py:70
+#: superset/views/core.py:72
 #, python-format
 msgid ""
 "This endpoint requires the datasource %(name)s, database or "
 "`all_datasource_access` permission"
 msgstr ""
 
-#: superset/views/core.py:205
+#: superset/views/core.py:175
+msgid "List Databases"
+msgstr ""
+
+#: superset/views/core.py:176
+msgid "Show Database"
+msgstr ""
+
+#: superset/views/core.py:177
+msgid "Add Database"
+msgstr ""
+
+#: superset/views/core.py:178
+msgid "Edit Database"
+msgstr ""
+
+#: superset/views/core.py:213
 msgid "Expose this DB in SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:206
+#: superset/views/core.py:214
 msgid ""
 "Allow users to run synchronous queries, this is the default and should "
 "work well for queries that can be executed within a web request scope "
 "(<~1 minute)"
 msgstr ""
 
-#: superset/views/core.py:210
+#: superset/views/core.py:218
 msgid ""
 "Allow users to run queries, against an async backend. This assumes that "
 "you have a Celery worker setup as well as a results backend."
 msgstr ""
 
-#: superset/views/core.py:214
+#: superset/views/core.py:222
 msgid "Allow CREATE TABLE AS option in SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:215
+#: superset/views/core.py:223
 msgid ""
 "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
 " SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:219
+#: superset/views/core.py:227
 msgid ""
 "When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
 "table to be created in this schema"
 msgstr ""
 
-#: superset/views/core.py:233
+#: superset/views/core.py:241
 msgid "Expose in SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:234
+#: superset/views/core.py:242
 msgid "Allow CREATE TABLE AS"
 msgstr ""
 
-#: superset/views/core.py:235
+#: superset/views/core.py:243
 msgid "Allow DML"
 msgstr ""
 
-#: superset/views/core.py:236
+#: superset/views/core.py:244
 msgid "CTAS Schema"
 msgstr ""
 
-#: superset/views/core.py:238 superset/views/core.py:352
-#: superset/views/core.py:454 superset/views/core.py:518
+#: superset/views/core.py:246 superset/views/core.py:366
+#: superset/views/core.py:474 superset/views/core.py:538
 msgid "Creator"
 msgstr ""
 
-#: superset/views/core.py:240
+#: superset/views/core.py:248
 msgid "SQLAlchemy URI"
 msgstr ""
 
-#: superset/views/core.py:242
+#: superset/views/core.py:250
 msgid "Extra"
 msgstr ""
 
-#: superset/views/core.py:260
+#: superset/views/core.py:268
 msgid "Import Dashboards"
 msgstr ""
 
-#: superset/views/core.py:264 superset/views/core.py:2279
-#: superset/views/sql_lab.py:22
+#: superset/views/core.py:272 superset/views/core.py:2318
+#: superset/views/sql_lab.py:23
 msgid "Manage"
 msgstr ""
 
-#: superset/views/core.py:271
-msgid "Databases"
-msgstr ""
-
-#: superset/views/core.py:302 superset/views/core.py:531
+#: superset/views/core.py:310 superset/views/core.py:551
 msgid "User"
 msgstr ""
 
-#: superset/views/core.py:303
+#: superset/views/core.py:311
 msgid "User Roles"
 msgstr ""
 
-#: superset/views/core.py:304
+#: superset/views/core.py:312
 msgid "Database URL"
 msgstr ""
 
-#: superset/views/core.py:306
+#: superset/views/core.py:314
 msgid "Roles to grant"
 msgstr ""
 
-#: superset/views/core.py:307
+#: superset/views/core.py:315
 msgid "Created On"
 msgstr ""
 
-#: superset/views/core.py:313
+#: superset/views/core.py:321
 msgid "Access requests"
 msgstr ""
 
-#: superset/views/core.py:315 superset/views/core.py:542
+#: superset/views/core.py:323 superset/views/core.py:562
 msgid "Security"
 msgstr ""
 
-#: superset/views/core.py:340
+#: superset/views/core.py:330
+msgid "List Slices"
+msgstr ""
+
+#: superset/views/core.py:331
+msgid "Show Slice"
+msgstr ""
+
+#: superset/views/core.py:332
+msgid "Add Slice"
+msgstr ""
+
+#: superset/views/core.py:333
+msgid "Edit Slice"
+msgstr ""
+
+#: superset/views/core.py:354
 msgid ""
 "These parameters are generated dynamically when clicking the save or "
 "overwrite button in the explore view. This JSON object is exposed here "
@@ -735,185 +3135,193 @@ msgid ""
 "parameters."
 msgstr ""
 
-#: superset/views/core.py:345
+#: superset/views/core.py:359
 msgid "Duration (in seconds) of the caching timeout for this slice."
 msgstr ""
 
-#: superset/views/core.py:356
+#: superset/views/core.py:370
 msgid "Last Modified"
 msgstr ""
 
-#: superset/views/core.py:357 superset/views/core.py:453
+#: superset/views/core.py:371 superset/views/core.py:473
 msgid "Owners"
 msgstr ""
 
-#: superset/views/core.py:358
+#: superset/views/core.py:372
 msgid "Parameters"
 msgstr ""
 
-#: superset/views/core.py:359 superset/views/core.py:401
+#: superset/views/core.py:373 superset/views/core.py:415
 msgid "Slice"
 msgstr ""
 
-#: superset/views/core.py:360
-msgid "Name"
+#: superset/views/core.py:432
+msgid "List Dashboards"
 msgstr ""
 
-#: superset/views/core.py:362
-msgid "Visualization Type"
+#: superset/views/core.py:433
+msgid "Show Dashboard"
 msgstr ""
 
-#: superset/views/core.py:389 superset/views/core.py:452
-msgid "Slices"
+#: superset/views/core.py:434
+msgid "Add Dashboard"
+msgstr ""
+
+#: superset/views/core.py:435
+msgid "Edit Dashboard"
 msgstr ""
 
-#: superset/views/core.py:426
+#: superset/views/core.py:446
 msgid ""
 "This json object describes the positioning of the widgets in the "
 "dashboard. It is dynamically generated when adjusting the widgets size "
 "and positions by using drag & drop in the dashboard view"
 msgstr ""
 
-#: superset/views/core.py:431
+#: superset/views/core.py:451
 msgid ""
 "The css for individual dashboards can be altered here, or in the "
 "dashboard view where changes are immediately visible"
 msgstr ""
 
-#: superset/views/core.py:435
+#: superset/views/core.py:455
 msgid "To get a readable URL for your dashboard"
 msgstr ""
 
-#: superset/views/core.py:436
+#: superset/views/core.py:456
 msgid ""
 "This JSON object is generated dynamically when clicking the save or "
 "overwrite button in the dashboard view. It is exposed here for reference "
 "and for power users who may want to alter specific parameters."
 msgstr ""
 
-#: superset/views/core.py:441
+#: superset/views/core.py:461
 msgid "Owners is a list of users who can alter the dashboard."
 msgstr ""
 
-#: superset/views/core.py:449 superset/views/core.py:516
+#: superset/views/core.py:469 superset/views/core.py:536
 msgid "Dashboard"
 msgstr ""
 
-#: superset/views/core.py:450 superset/views/core.py:517
-msgid "Title"
-msgstr ""
-
-#: superset/views/core.py:451
+#: superset/views/core.py:471
 msgid "Slug"
 msgstr ""
 
-#: superset/views/core.py:455 superset/views/core.py:519
-msgid "Modified"
-msgstr ""
-
-#: superset/views/core.py:456
+#: superset/views/core.py:476
 msgid "Position JSON"
 msgstr ""
 
-#: superset/views/core.py:457
-msgid "CSS"
-msgstr ""
-
-#: superset/views/core.py:458
+#: superset/views/core.py:478
 msgid "JSON Metadata"
 msgstr ""
 
-#: superset/views/core.py:459
+#: superset/views/core.py:479
 msgid "Underlying Tables"
 msgstr ""
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export"
 msgstr ""
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export dashboards?"
 msgstr ""
 
-#: superset/views/core.py:532
+#: superset/views/core.py:552
 msgid "Action"
 msgstr ""
 
-#: superset/views/core.py:533
+#: superset/views/core.py:553
 msgid "dttm"
 msgstr ""
 
-#: superset/views/core.py:540
+#: superset/views/core.py:560
 msgid "Action Log"
 msgstr ""
 
-#: superset/views/core.py:770
+#: superset/views/core.py:790
 msgid "Access was requested"
 msgstr ""
 
-#: superset/views/core.py:831
+#: superset/views/core.py:851
 #, python-format
 msgid ""
 "%(user)s was granted the role %(role)s that gives access to the "
 "%(datasource)s"
 msgstr ""
 
-#: superset/views/core.py:847
+#: superset/views/core.py:867
 #, python-format
 msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
 msgstr ""
 
-#: superset/views/core.py:856
+#: superset/views/core.py:876
 msgid "You have no permission to approve this request"
 msgstr ""
 
-#: superset/views/core.py:1589
+#: superset/views/core.py:1609
 msgid ""
 "Malformed request. slice_id or table_name and db_name arguments are "
 "expected"
 msgstr ""
 
-#: superset/views/core.py:1595
+#: superset/views/core.py:1615
 #, python-format
 msgid "Slice %(id)s not found"
 msgstr ""
 
-#: superset/views/core.py:1607
+#: superset/views/core.py:1627
 #, python-format
 msgid "Table %(t)s wasn't found in the database %(d)s"
 msgstr ""
 
-#: superset/views/core.py:1741
+#: superset/views/core.py:1761
 #, python-format
 msgid "Can't find User '%(name)s', please ask your admin to create one."
 msgstr ""
 
-#: superset/views/core.py:1748
+#: superset/views/core.py:1768
 #, python-format
 msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
 msgstr ""
 
-#: superset/views/core.py:2276
+#: superset/views/core.py:2315
 msgid "CSS Templates"
 msgstr ""
 
-#: superset/views/core.py:2286
+#: superset/views/core.py:2325
 msgid "SQL Editor"
 msgstr ""
 
-#: superset/views/core.py:2291 superset/views/core.py:2300
+#: superset/views/core.py:2330 superset/views/core.py:2339
 msgid "SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:2295
+#: superset/views/core.py:2334
 msgid "Query Search"
 msgstr ""
 
-#: superset/views/sql_lab.py:20
+#: superset/views/sql_lab.py:21
 msgid "Queries"
 msgstr ""
 
-#: superset/views/sql_lab.py:55
+#: superset/views/sql_lab.py:30
+msgid "List Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:31
+msgid "Show Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:32
+msgid "Add Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:33
+msgid "Edit Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:62
 msgid "Saved Queries"
 msgstr ""
 
diff --git a/superset/translations/fr/LC_MESSAGES/messages.json b/superset/translations/fr/LC_MESSAGES/messages.json
new file mode 100644
index 0000000..9e5be10
--- /dev/null
+++ b/superset/translations/fr/LC_MESSAGES/messages.json
@@ -0,0 +1 @@
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=2; plural=(n > 1)","lang":"fr"},"Time Column":[""],"second":[""],"minute":[""],"hour":[""],"day":[""],"week":[""],"month":[""],"quarter":[""],"year":[""],"week_start_monday":[""],"week_ending_saturday":[""],"week_start_sunday":[""],"5 minute":[""],"half hour":[""],"10 minute":[""],"[Superset] Access to the datasource %(name)s was granted":[""],"Table View":[""],"Pivot Table":[""],"Markup":["" [...]
\ No newline at end of file
diff --git a/superset/translations/fr/LC_MESSAGES/messages.mo b/superset/translations/fr/LC_MESSAGES/messages.mo
deleted file mode 100644
index 72f8189..0000000
Binary files a/superset/translations/fr/LC_MESSAGES/messages.mo and /dev/null differ
diff --git a/superset/translations/fr/LC_MESSAGES/messages.po b/superset/translations/fr/LC_MESSAGES/messages.po
deleted file mode 100644
index 063bce6..0000000
--- a/superset/translations/fr/LC_MESSAGES/messages.po
+++ /dev/null
@@ -1,1383 +0,0 @@
-# French translations for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
-# This file is distributed under the same license as the PROJECT project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-08-16 05:18+0200\n"
-"PO-Revision-Date: 2017-08-16 03:31+0200\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language: fr\n"
-"Language-Team: fr <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.4.0\n"
-
-#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
-#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
-#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
-#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
-#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
-#: superset/db_engine_specs.py:987
-msgid "Time Column"
-msgstr "Colonne du temps"
-
-#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
-#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
-#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
-#: superset/db_engine_specs.py:962
-msgid "second"
-msgstr "seconde"
-
-#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
-#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
-#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
-#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
-#: superset/db_engine_specs.py:963 superset/db_engine_specs.py:988
-msgid "minute"
-msgstr "minute"
-
-#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
-#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
-#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
-#: superset/db_engine_specs.py:964 superset/db_engine_specs.py:989
-msgid "hour"
-msgstr "heure"
-
-#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
-#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
-#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
-#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
-#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
-#: superset/db_engine_specs.py:990
-msgid "day"
-msgstr "jour"
-
-#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
-#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
-#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
-#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
-#: superset/db_engine_specs.py:966 superset/db_engine_specs.py:991
-msgid "week"
-msgstr "semaine"
-
-#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
-#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
-#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
-#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
-#: superset/db_engine_specs.py:992
-msgid "month"
-msgstr "mois"
-
-#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
-#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
-#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
-#: superset/db_engine_specs.py:968 superset/db_engine_specs.py:993
-msgid "quarter"
-msgstr "trimestre"
-
-#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
-#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
-#: superset/db_engine_specs.py:969 superset/db_engine_specs.py:994
-msgid "year"
-msgstr "année"
-
-#: superset/db_engine_specs.py:332
-msgid "week_start_monday"
-msgstr "semaine_commence_lundi"
-
-#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
-msgid "week_ending_saturday"
-msgstr "semaine_finit_samedi"
-
-#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
-msgid "week_start_sunday"
-msgstr "semande_commence_dimanche"
-
-#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
-msgid "5 minute"
-msgstr "5 minutes"
-
-#: superset/db_engine_specs.py:817
-msgid "half hour"
-msgstr "demi-heure"
-
-#: superset/db_engine_specs.py:929
-msgid "10 minute"
-msgstr "10 minutes"
-
-#: superset/utils.py:499
-#, python-format
-msgid "[Superset] Access to the datasource %(name)s was granted"
-msgstr "[Superset] Accès à la source de données %(name)s accordé"
-
-#: superset/viz.py:49
-msgid "Viz is missing a datasource"
-msgstr "Viz est une source de données manquante"
-
-#: superset/viz.py:158
-msgid "From date cannot be larger than to date"
-msgstr "From date ne peut être plus grand que to date"
-
-#: superset/viz.py:322
-msgid "Table View"
-msgstr "Vue en table"
-
-#: superset/viz.py:334
-msgid "Pick a granularity in the Time section or uncheck 'Include Time'"
-msgstr "Choississez une granularité dans Time ou décochez 'Include Time'"
-
-#: superset/viz.py:344
-msgid "Choose either fields to [Group By] and [Metrics] or [Columns], not both"
-msgstr "Choisissez soit des champs dans [Grouper par] et [Métriques] ou dans [Colonnes], pas les deux"
-
-#: superset/viz.py:378
-msgid "Pivot Table"
-msgstr "Table pivot"
-
-#: superset/viz.py:392
-msgid "Please choose at least one \"Group by\" field "
-msgstr "Choisissez au moins un champs \"Grouper par\""
-
-#: superset/viz.py:394
-msgid "Please choose at least one metric"
-msgstr "Choississez au moins une métrique"
-
-#: superset/viz.py:398
-msgid "'Group By' and 'Columns' can't overlap"
-msgstr "'Grouper par' et 'Colonnes' ne peuvent pas avoir de champs en commun"
-
-#: superset/viz.py:431
-msgid "Markup"
-msgstr "Markup"
-
-#: superset/viz.py:450
-msgid "Separator"
-msgstr "Séparateur"
-
-#: superset/viz.py:466
-msgid "Word Cloud"
-msgstr "Nuage de mots"
-
-#: superset/viz.py:489
-msgid "Treemap"
-msgstr "Treemap"
-
-#: superset/viz.py:515
-msgid "Calendar Heatmap"
-msgstr "Calendrier Heatmap"
-
-#: superset/viz.py:573
-msgid "Box Plot"
-msgstr "Boites à moustaches"
-
-#: superset/viz.py:662
-msgid "Bubble Chart"
-msgstr "Bulles"
-
-#: superset/viz.py:686
-msgid "Pick a metric for x, y and size"
-msgstr "Choisissez une métrique pour x, y, taille"
-
-#: superset/viz.py:712
-msgid "Bullet Chart"
-msgstr "Points"
-
-#: superset/viz.py:738
-msgid "Pick a metric to display"
-msgstr "Choisissez une métrique à afficher"
-
-#: superset/viz.py:761
-msgid "Big Number with Trendline"
-msgstr "Gros nombre avec tendance"
-
-#: superset/viz.py:769 superset/viz.py:798
-msgid "Pick a metric!"
-msgstr "Choisissez une métrique"
-
-#: superset/viz.py:790
-msgid "Big Number"
-msgstr "Gros nombre"
-
-#: superset/viz.py:817
-msgid "Time Series - Line Chart"
-msgstr "Séries temporelles - ligne"
-
-#: superset/viz.py:864 superset/viz.py:1001
-msgid "Pick a time granularity for your time series"
-msgstr "Choisissez une granularité pour vos séries temporelles"
-
-#: superset/viz.py:944
-msgid "Time Series - Dual Axis Line Chart"
-msgstr "Séries temporelles - double axe"
-
-#: superset/viz.py:954
-msgid "Pick a metric for left axis!"
-msgstr "Choisissez une métrique pour l'axe de gauche"
-
-#: superset/viz.py:956
-msgid "Pick a metric for right axis!"
-msgstr "Choississez une métrique pour l'axe de droite"
-
-#: superset/viz.py:958
-msgid "Please choose different metrics on left and right axis"
-msgstr "Choisissez des métriques différentes pour les axes gauches et droits"
-
-#: superset/viz.py:1019
-msgid "Time Series - Bar Chart"
-msgstr "Séries temporelles - histogramme"
-
-#: superset/viz.py:1027
-msgid "Time Series - Percent Change"
-msgstr "Séries temporelles - pourcentage de changement"
-
-#: superset/viz.py:1035
-msgid "Time Series - Stacked"
-msgstr "Séries temporelles - empilées"
-
-#: superset/viz.py:1044
-msgid "Distribution - NVD3 - Pie Chart"
-msgstr "Distribution - camembert"
-
-#: superset/viz.py:1062
-msgid "Histogram"
-msgstr "Histogramme"
-
-#: superset/viz.py:1072
-msgid "Must have one numeric column specified"
-msgstr "Il faut un moins une colonne numérique"
-
-#: superset/viz.py:1087
-msgid "Distribution - Bar Chart"
-msgstr "Distibution - histogramme"
-
-#: superset/viz.py:1098
-msgid "Can't have overlap between Series and Breakdowns"
-msgstr "Il ne faut pas d'élement en commun entre Serie et Breakdowns"
-
-#: superset/viz.py:1100
-msgid "Pick at least one metric"
-msgstr "Choisissez au moins une métrique"
-
-#: superset/viz.py:1102
-msgid "Pick at least one field for [Series]"
-msgstr "Choisissez au moins un champs pour [Séries]"
-
-#: superset/viz.py:1155
-msgid "Sunburst"
-msgstr "Camembert hiérarchique"
-
-#: superset/viz.py:1188
-msgid "Sankey"
-msgstr "Sankey"
-
-#: superset/viz.py:1195
-msgid "Pick exactly 2 columns as [Source / Target]"
-msgstr "Choisissez exactement 2 colonnes pour [Source / Target]"
-
-#: superset/viz.py:1226
-msgid ""
-"There's a loop in your Sankey, please provide a tree. Here's a faulty "
-"link: {}"
-msgstr "Il y a une boucle dans votre Sankey, il faut un arbre. Lien fautif: {}"
-
-#: superset/viz.py:1237 superset/viz.py:1258
-msgid "Directed Force Layout"
-msgstr "Graphe orienté"
-
-#: superset/viz.py:1244
-msgid "Pick exactly 2 columns to 'Group By'"
-msgstr "Choisissez exactement 2 colonnes pour 'Grouper par'"
-
-#: superset/viz.py:1291
-msgid "Country Map"
-msgstr "Carte de pays"
-
-#: superset/viz.py:1320
-msgid "World Map"
-msgstr "Carte du monde"
-
-#: superset/viz.py:1370
-msgid "Filters"
-msgstr "Filtres"
-
-#: superset/viz.py:1378
-msgid "Pick at least one filter field"
-msgstr "Choisissez au moins un champ sur lequel filtrer"
-
-#: superset/viz.py:1405
-msgid "iFrame"
-msgstr "iFrame"
-
-#: superset/viz.py:1422
-msgid "Parallel Coordinates"
-msgstr "Coordonnées parallèles"
-
-#: superset/viz.py:1447
-msgid "Heatmap"
-msgstr "Carte de chaleur"
-
-#: superset/viz.py:1498
-msgid "Horizon Charts"
-msgstr "Histogrammes horizontaux"
-
-#: superset/viz.py:1509
-msgid "Mapbox"
-msgstr "Mapbox"
-
-#: superset/viz.py:1524
-msgid "Must have a [Group By] column to have 'count' as the [Label]"
-msgstr "Il faut une colonne [Grouper par] pour avoir 'count' comme [Label]"
-
-#: superset/viz.py:1537
-msgid "Choice of [Label] must be present in [Group By]"
-msgstr "Le [Label] choisi doit être présent dans [Grouper par]"
-
-#: superset/viz.py:1542
-msgid "Choice of [Point Radius] must be present in [Group By]"
-msgstr "Le [Point Radius] doit être présent dans [Grouper par]"
-
-#: superset/viz.py:1547
-msgid "[Longitude] and [Latitude] columns must be present in [Group By]"
-msgstr "Les colonnes [Longitude] et [Latitude] doivent êtres présentes dans [Grouper par]"
-
-#: superset/viz.py:1612
-msgid "Event flow"
-msgstr "Flot d'événements"
-
-#: superset/connectors/druid/models.py:975
-msgid "No data was returned."
-msgstr "Aucune donnée récupérée"
-
-#: superset/connectors/druid/views.py:28
-msgid "List Druid Column"
-msgstr "Lister les colonnes Druid"
-
-#: superset/connectors/druid/views.py:29
-msgid "Show Druid Column"
-msgstr "Montrer les colonnes Druid"
-
-#: superset/connectors/druid/views.py:30
-msgid "Add Druid Column"
-msgstr "Ajouter une colonne Druid"
-
-#: superset/connectors/druid/views.py:31
-msgid "Edit Druid Column"
-msgstr "Éditer une colonne Druid"
-
-#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
-msgid "Column"
-msgstr "Colonne"
-
-#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
-#: superset/connectors/sqla/views.py:95 superset/connectors/sqla/views.py:134
-msgid "Type"
-msgstr "Type"
-
-#: superset/connectors/druid/views.py:45 superset/views/core.py:314
-#: superset/views/core.py:338 superset/views/core.py:369
-msgid "Datasource"
-msgstr "Source de données"
-
-#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
-msgid "Groupable"
-msgstr "Groupable"
-
-#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:85
-msgid "Filterable"
-msgstr "Filtrable"
-
-#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:87
-msgid "Count Distinct"
-msgstr "Valeurs distinctes"
-
-#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:88
-msgid "Sum"
-msgstr "Somme"
-
-#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
-msgid "Min"
-msgstr "Min"
-
-#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
-msgid "Max"
-msgstr "Max"
-
-#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
-msgid ""
-"Whether this column is exposed in the `Filters` section of the explore "
-"view."
-msgstr ""
-"Est-ce-que cette colonne doit apparaître dans la section `Filtres` de la "
-"page exploration"
-
-#: superset/connectors/druid/views.py:80
-msgid "List Druid Metric"
-msgstr "Lister les métriques Druid"
-
-#: superset/connectors/druid/views.py:81
-msgid "Show Druid Metric"
-msgstr "Montrer une métrique Druid"
-
-#: superset/connectors/druid/views.py:82
-msgid "Add Druid Metric"
-msgstr "Ajouter une métrique Druid"
-
-#: superset/connectors/druid/views.py:83
-msgid "Edit Druid Metric"
-msgstr "Éditer une métrique Druid"
-
-#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:116
-msgid ""
-"Whether the access to this metric is restricted to certain roles. Only "
-"roles with the permission 'metric access on XXX (the name of this "
-"metric)' are allowed to access this metric"
-msgstr ""
-"Est-ce-que l'accès à cette métrique est restraint à certains rôles. Seuls"
-" les rôles avec la permission 'accès à la métrique XXX (le nom de cette "
-"métrique)  sont autorisés à accéder à cette métrique"
-
-#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:131
-msgid "Metric"
-msgstr "Métrique"
-
-#: superset/connectors/druid/views.py:107
-#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
-#: superset/connectors/sqla/views.py:132 superset/connectors/sqla/views.py:229
-#: superset/views/core.py:370 superset/views/sql_lab.py:56
-msgid "Description"
-msgstr "Description"
-
-#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
-#: superset/connectors/sqla/views.py:133
-msgid "Verbose Name"
-msgstr "Nom explicite"
-
-#: superset/connectors/druid/views.py:110 superset/views/core.py:555
-msgid "JSON"
-msgstr "JSON"
-
-#: superset/connectors/druid/views.py:111
-msgid "Druid Datasource"
-msgstr "Données Druid"
-
-#: superset/connectors/druid/views.py:128
-msgid "List Druid Cluster"
-msgstr "Lister les clusters Druid"
-
-#: superset/connectors/druid/views.py:129
-msgid "Show Druid Cluster"
-msgstr "Monter les cluster Druid"
-
-#: superset/connectors/druid/views.py:130
-msgid "Add Druid Cluster"
-msgstr "Ajouter un cluster Druid"
-
-#: superset/connectors/druid/views.py:131
-msgid "Edit Druid Cluster"
-msgstr "Éditer une cluster Druid"
-
-#: superset/connectors/druid/views.py:142
-#: superset/connectors/druid/views.py:228
-msgid "Cluster"
-msgstr "Cluster"
-
-#: superset/connectors/druid/views.py:143
-msgid "Coordinator Host"
-msgstr "Hôte du coordinator"
-
-#: superset/connectors/druid/views.py:144
-msgid "Coordinator Port"
-msgstr "Port du coordinator"
-
-#: superset/connectors/druid/views.py:145
-msgid "Coordinator Endpoint"
-msgstr "Endpoint du coordinator"
-
-#: superset/connectors/druid/views.py:146
-msgid "Broker Host"
-msgstr "Hôte du Broker"
-
-#: superset/connectors/druid/views.py:147
-msgid "Broker Port"
-msgstr "Port du Broker"
-
-#: superset/connectors/druid/views.py:148
-msgid "Broker Endpoint"
-msgstr "Endpoint du Broker"
-
-#: superset/connectors/druid/views.py:163
-msgid "Druid Clusters"
-msgstr "Clusters Druid"
-
-#: superset/connectors/druid/views.py:166
-#: superset/connectors/druid/views.py:268
-#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:287
-#: superset/views/core.py:283
-msgid "Sources"
-msgstr "Sources"
-
-#: superset/connectors/druid/views.py:173
-msgid "List Druid Datasource"
-msgstr "Lister les dources de données Druid"
-
-#: superset/connectors/druid/views.py:174
-msgid "Show Druid Datasource"
-msgstr "Montrer les sources de données Druid"
-
-#: superset/connectors/druid/views.py:175
-msgid "Add Druid Datasource"
-msgstr "Ajouter une source de données Druid"
-
-#: superset/connectors/druid/views.py:176
-msgid "Edit Druid Datasource"
-msgstr "Éditer une source de données Druid"
-
-#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:178
-msgid ""
-"The list of slices associated with this table. By altering this "
-"datasource, you may change how these associated slices behave. Also note "
-"that slices need to point to a datasource, so this form will fail at "
-"saving if removing slices from a datasource. If you want to change the "
-"datasource for a slice, overwrite the slice from the 'explore view'"
-msgstr ""
-"Liste des slices associés à cette table. En modifiant cette source de "
-"données, il se peut que vous changiez le comportement des slices "
-"assosciés. Notez également que les slices doivent pointer sur une source "
-"de données donc ce formulaire va échouer lors de la sauvegarde si vous "
-"retirez les slices d'une source de données. Si vous voulez changer la "
-"source de données d'un slice, forcez l'écriture depuis la 'page "
-"d'exploration'"
-
-#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:186
-msgid "Timezone offset (in hours) for this datasource"
-msgstr "Timezone offset (en heure) de cette source de données"
-
-#: superset/connectors/druid/views.py:209
-msgid ""
-"Time expression to use as a predicate when retrieving distinct values to "
-"populate the filter component. Only applies when `Enable Filter Select` "
-"is on. If you enter `7 days ago`, the distinct list of values in the "
-"filter will be populated based on the distinct value over the past week"
-msgstr ""
-"Expression temporelle à utiliser comme un prédicat pour récupérer les "
-"valeurs distinctes pour remplir le filtre. S'applique uniquement quand "
-"`Activier le filtre` est coché. Si vous entrez `7 days ago`, les listes "
-"de valeurs distinctes dans le filtre seront remplies en se basant sur les"
-" valeurs distinctes trouvées la semaine passée"
-
-#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:208
-msgid ""
-"Whether to populate the filter's dropdown in the explore view's filter "
-"section with a list of distinct values fetched from the backend on the "
-"fly"
-msgstr ""
-"Faut-il remplir à la volée les choix du filtre de la section filtre de la"
-" page d'exploration avec la liste des valeurs distinctes répérées depuis "
-"le backend"
-
-#: superset/connectors/druid/views.py:220
-msgid ""
-"Redirects to this endpoint when clicking on the datasource from the "
-"datasource list"
-msgstr ""
-"Redirige à cet endpoint quand on clique sur la source de données depuis "
-"la liste des sources de données"
-
-#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:215
-msgid "Associated Slices"
-msgstr "Slices associés"
-
-#: superset/connectors/druid/views.py:227
-msgid "Data Source"
-msgstr "Source de données"
-
-#: superset/connectors/druid/views.py:230 superset/connectors/sqla/views.py:227
-msgid "Owner"
-msgstr "Propriétaire"
-
-#: superset/connectors/druid/views.py:231
-msgid "Is Hidden"
-msgstr "Est caché"
-
-#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:220
-msgid "Enable Filter Select"
-msgstr "Activer le filtre de sélection"
-
-#: superset/connectors/druid/views.py:233 superset/connectors/sqla/views.py:222
-msgid "Default Endpoint"
-msgstr "Endpoint par défaut"
-
-#: superset/connectors/druid/views.py:234
-msgid "Time Offset"
-msgstr "Décalage du temps"
-
-#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:224
-#: superset/views/core.py:248 superset/views/core.py:366
-msgid "Cache Timeout"
-msgstr "Cache timeout"
-
-#: superset/connectors/druid/views.py:266
-msgid "Druid Datasources"
-msgstr "Sources de données Druid"
-
-#: superset/connectors/druid/views.py:304
-msgid "Refresh Druid Metadata"
-msgstr "Rafraichir les méta-données de Druid"
-
-#: superset/connectors/sqla/models.py:390
-msgid ""
-"Datetime column not provided as part table configuration and is required "
-"by this type of chart"
-msgstr ""
-"Colonne Datetime non fournie dans la configuration alors qu'elle est "
-"requise pour ce type de graphique"
-
-#: superset/connectors/sqla/models.py:395
-msgid "Metric '{}' is not valid"
-msgstr "Métrique '{}' invalide"
-
-#: superset/connectors/sqla/models.py:581
-msgid ""
-"Table doesn't seem to exist in the specified database, couldn't fetch "
-"column information"
-msgstr "La table ne semble pas exister dans la base de données spécifiée, impossible de récupérer les inforations des colonnes"
-
-#: superset/connectors/sqla/views.py:28
-msgid "List Columns"
-msgstr "Lister les colonnes"
-
-#: superset/connectors/sqla/views.py:29
-msgid "Show Column"
-msgstr "Montrer les colonnes"
-
-#: superset/connectors/sqla/views.py:30
-msgid "Add Column"
-msgstr "Ajouter une colonne"
-
-#: superset/connectors/sqla/views.py:31
-msgid "Edit Column"
-msgstr "Éditer une colonne"
-
-#: superset/connectors/sqla/views.py:46
-msgid ""
-"Whether to make this column available as a [Time Granularity] option, "
-"column has to be DATETIME or DATETIME-like"
-msgstr ""
-"Faut-il que cette colonne soit accessible comme une option [Time "
-"Granularity],  la colonne doit être DATETIME ou d'un format équivalent"
-
-#: superset/connectors/sqla/views.py:53
-msgid ""
-"The data type that was inferred by the database. It may be necessary to "
-"input a type manually for expression-defined columns in some cases. In "
-"most case users should not need to alter this."
-msgstr ""
-"Le type de donnée inféré par la base de données. Il peut être nécessaire "
-"de le rentrer manuellement pour les colonnes définissant des expressions "
-"dans certains cas. Dans la plupart des cas il n'est pas nécessaire de le "
-"modifier"
-
-#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:136
-#: superset/connectors/sqla/views.py:216 superset/views/core.py:376
-msgid "Table"
-msgstr "Table"
-
-#: superset/connectors/sqla/views.py:91
-msgid "Expression"
-msgstr "Expression"
-
-#: superset/connectors/sqla/views.py:92
-msgid "Is temporal"
-msgstr "Est temporel"
-
-#: superset/connectors/sqla/views.py:93
-msgid "Datetime Format"
-msgstr "Format Datetime"
-
-#: superset/connectors/sqla/views.py:94
-msgid "Database Expression"
-msgstr "Expression de la base de données"
-
-#: superset/connectors/sqla/views.py:103
-msgid "List Metrics"
-msgstr "Lister les métriques"
-
-#: superset/connectors/sqla/views.py:104
-msgid "Show Metric"
-msgstr "Montrer les métriques"
-
-#: superset/connectors/sqla/views.py:105
-msgid "Add Metric"
-msgstr "Ajouter une métrique"
-
-#: superset/connectors/sqla/views.py:106
-msgid "Edit Metric"
-msgstr "Éditer la métrique"
-
-#: superset/connectors/sqla/views.py:135
-msgid "SQL Expression"
-msgstr "Expression SQL"
-
-#: superset/connectors/sqla/views.py:137
-msgid "D3 Format"
-msgstr "Format D3"
-
-#: superset/connectors/sqla/views.py:138
-msgid "Is Restricted"
-msgstr "Est restreint"
-
-#: superset/connectors/sqla/views.py:155
-msgid "List Tables"
-msgstr "Lister les tables"
-
-#: superset/connectors/sqla/views.py:156
-msgid "Show Table"
-msgstr "Montrer les tables"
-
-#: superset/connectors/sqla/views.py:157
-msgid "Add Table"
-msgstr "Ajouter une table"
-
-#: superset/connectors/sqla/views.py:158
-msgid "Edit Table"
-msgstr "Éditer la table"
-
-#: superset/connectors/sqla/views.py:187
-msgid "Name of the table that exists in the source database"
-msgstr "Nom de la table qui existe dans la base de données source"
-
-#: superset/connectors/sqla/views.py:189
-msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
-msgstr ""
-"Schéma, utilisé uniquement dans certaines bases de données comme "
-"Postgres, Redshift et DB2"
-
-#: superset/connectors/sqla/views.py:195
-msgid ""
-"This fields acts a Superset view, meaning that Superset will run a query "
-"against this string as a subquery."
-msgstr ""
-"Ces champs agissent comme une vue Superset, i.e. Superset va lancer une "
-"requête pour cette expression comme une sous-requête"
-
-#: superset/connectors/sqla/views.py:199
-msgid ""
-"Predicate applied when fetching distinct value to populate the filter "
-"control component. Supports jinja template syntax. Applies only when "
-"`Enable Filter Select` is on."
-msgstr ""
-"Prédicat appliqué à la récupération des valeurs distinctes pour remplir "
-"le filtre de contrôle des composants. Supporte la syntaxe Jinja. "
-"S'applique uniquement si `Activer le filtre` est coché."
-
-#: superset/connectors/sqla/views.py:205
-msgid "Redirects to this endpoint when clicking on the table from the table list"
-msgstr ""
-"Redirige à cet endpoint quand on clique sur la table depuis la liste des "
-"tables"
-
-#: superset/connectors/sqla/views.py:217
-msgid "Changed By"
-msgstr "Modifié par"
-
-#: superset/connectors/sqla/views.py:218 superset/views/core.py:244
-#: superset/views/sql_lab.py:19 superset/views/sql_lab.py:55
-msgid "Database"
-msgstr "Base de données"
-
-#: superset/connectors/sqla/views.py:219 superset/views/core.py:246
-msgid "Last Changed"
-msgstr "Dernière modification"
-
-#: superset/connectors/sqla/views.py:221
-msgid "Schema"
-msgstr "Schéma"
-
-#: superset/connectors/sqla/views.py:223
-msgid "Offset"
-msgstr "Décalage"
-
-#: superset/connectors/sqla/views.py:225
-msgid "Table Name"
-msgstr "Nom de la table"
-
-#: superset/connectors/sqla/views.py:226
-msgid "Fetch Values Predicate"
-msgstr "Récupérer les valeurs des prédicats"
-
-#: superset/connectors/sqla/views.py:228
-msgid "Main Datetime Column"
-msgstr "Colonne Datetime principale"
-
-#: superset/connectors/sqla/views.py:248
-msgid ""
-"Table [{}] could not be found, please double check your database "
-"connection, schema, and table name"
-msgstr "La table [{}] n'a pu être trouvée, vérifiez à nouveau votre la connexion à votre base de données, le schéma et le nom de la table"
-
-#: superset/connectors/sqla/views.py:261
-msgid ""
-"The table was created. As part of this two phase configuration process, "
-"you should now click the edit button by the new table to configure it."
-msgstr ""
-"La table a été créée. Pour la deuxième partie de la configuration vous "
-"devez cliquer sur le bouton édition de la nouvelle table"
-
-#: superset/connectors/sqla/views.py:285
-msgid "Tables"
-msgstr "Tables"
-
-#: superset/templates/appbuilder/navbar_right.html:41
-msgid "Profile"
-msgstr "Profil"
-
-#: superset/templates/appbuilder/navbar_right.html:42
-msgid "Logout"
-msgstr "Déconnexion"
-
-#: superset/templates/appbuilder/navbar_right.html:47
-msgid "Login"
-msgstr "Connexion"
-
-#: superset/templates/appbuilder/general/widgets/base_list.html:37
-msgid "Record Count"
-msgstr "Nombre d'enregistrements"
-
-#: superset/templates/appbuilder/general/widgets/base_list.html:46
-msgid "No records found"
-msgstr "Aucun enregistrement trouvé"
-
-#: superset/templates/appbuilder/general/widgets/search.html:6
-msgid "Add Filter"
-msgstr "Ajouter un filtre"
-
-#: superset/templates/superset/import_dashboards.html:11
-msgid "Import"
-msgstr "Importation"
-
-#: superset/templates/superset/request_access.html:2
-msgid "No Access!"
-msgstr "Pas l'accès !"
-
-#: superset/templates/superset/request_access.html:7
-#, python-format
-msgid "You do not have permissions to access the datasource(s): %(name)s."
-msgstr "Vous n'avez pas les permissions pour accéder à(aux) source(s) : %(name)s."
-
-#: superset/templates/superset/request_access.html:13
-msgid "Request Permissions"
-msgstr "Besoin de permissions"
-
-#: superset/templates/superset/request_access.html:16
-msgid "Cancel"
-msgstr "Annuler"
-
-#: superset/templates/superset/welcome.html:3
-msgid "Welcome!"
-msgstr "Bienvenue ! "
-
-#: superset/templates/superset/welcome.html:13 superset/views/core.py:368
-#: superset/views/core.py:528
-msgid "Dashboards"
-msgstr "Tableaux de bords"
-
-#: superset/templates/superset/models/database/macros.html:4
-msgid "Test Connection"
-msgstr "Test de connexion"
-
-#: superset/views/base.py:58
-#, python-format
-msgid "Datasource %(name)s already exists"
-msgstr "La source de données %(name)s existe déjà"
-
-#: superset/views/base.py:206
-msgid "json isn't valid"
-msgstr "Le json n'est pas valide"
-
-#: superset/views/base.py:257
-msgid "Delete"
-msgstr "Effacer"
-
-#: superset/views/base.py:258
-msgid "Delete all Really?"
-msgstr "Vraiment tout effacer ?"
-
-#: superset/views/core.py:56
-msgid "This endpoint requires the `all_datasource_access` permission"
-msgstr "Cet endpoint nécessite la permission `all_datasource_access`"
-
-#: superset/views/core.py:58
-msgid "The datasource seems to have been deleted"
-msgstr "La source de données semble avoir été effacée"
-
-#: superset/views/core.py:59
-msgid "The access requests seem to have been deleted"
-msgstr "L'accée à cette requête semble avoir été effacé"
-
-#: superset/views/core.py:61
-msgid "The user seems to have been deleted"
-msgstr "L'utilisateur semble avoir été effacé"
-
-#: superset/views/core.py:62
-msgid "You don't have access to this datasource"
-msgstr "Vous n'avez pas l'accès à cette source de données"
-
-#: superset/views/core.py:66
-#, python-format
-msgid ""
-"This view requires the database %(name)s or `all_datasource_access` "
-"permission"
-msgstr ""
-"Cette page nécessite la permission à la base %(name)s ou "
-"`all_datasource_access`"
-
-#: superset/views/core.py:71
-#, python-format
-msgid ""
-"This endpoint requires the datasource %(name)s, database or "
-"`all_datasource_access` permission"
-msgstr ""
-"Cet endpoint nécessite la permission à la source de données %(name)s, à "
-"la base de données ou `all_datasource_access`"
-
-#: superset/views/core.py:174
-msgid "List Databases"
-msgstr "Lister les bases de données"
-
-#: superset/views/core.py:175
-msgid "Show Database"
-msgstr "Montrer les bases de données"
-
-#: superset/views/core.py:176
-msgid "Add Database"
-msgstr "Ajouter une base de données"
-
-#: superset/views/core.py:177
-msgid "Edit Database"
-msgstr "Éditer la base de données"
-
-#: superset/views/core.py:212
-msgid "Expose this DB in SQL Lab"
-msgstr "Expose cette BDD dans SQL Lab"
-
-#: superset/views/core.py:213
-msgid ""
-"Allow users to run synchronous queries, this is the default and should "
-"work well for queries that can be executed within a web request scope "
-"(<~1 minute)"
-msgstr ""
-"Autorise les utilisateurs à lancer des requêtes synchrones, il s'agit de "
-"la configuration par défaut qui devrait fonctionner correctement pour des"
-" reqêtes exécutables depuis le web (<~1 minute)"
-
-#: superset/views/core.py:217
-msgid ""
-"Allow users to run queries, against an async backend. This assumes that "
-"you have a Celery worker setup as well as a results backend."
-msgstr ""
-"Autorise les utilisateurs à lancer des requêtes sur un backend "
-"asynchrone. Suppose que vous ayez un worker Celery réglé comme un results"
-" backend"
-
-#: superset/views/core.py:221
-msgid "Allow CREATE TABLE AS option in SQL Lab"
-msgstr "Autorise l'option CREATE TABLE AS dans SQL Lab"
-
-#: superset/views/core.py:222
-msgid ""
-"Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
-" SQL Lab"
-msgstr ""
-"Autorise les utilisateurs à lancer des expression non-SELECT (UPDATE, "
-"DELETE, CREATE, etc.) dans SQL Lab"
-
-#: superset/views/core.py:226
-msgid ""
-"When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
-"table to be created in this schema"
-msgstr ""
-"Quand l'option autoriser CREATE TABLE AS dans SQL Lab est cochée, force "
-"la table a être créée dans le schéma"
-
-#: superset/views/core.py:240
-msgid "Expose in SQL Lab"
-msgstr "Exposer dans SQL Lab"
-
-#: superset/views/core.py:241
-msgid "Allow CREATE TABLE AS"
-msgstr "Autoriser CREATE TABLE AS"
-
-#: superset/views/core.py:242
-msgid "Allow DML"
-msgstr "Autoriser DML"
-
-#: superset/views/core.py:243
-msgid "CTAS Schema"
-msgstr "Schéma CTAS"
-
-#: superset/views/core.py:245 superset/views/core.py:367
-#: superset/views/core.py:475 superset/views/core.py:539
-msgid "Creator"
-msgstr "Créateur"
-
-#: superset/views/core.py:247
-msgid "SQLAlchemy URI"
-msgstr "URI SQLAlchemy"
-
-#: superset/views/core.py:249
-msgid "Extra"
-msgstr "Extra"
-
-#: superset/views/core.py:250
-msgid "Allow Run Sync"
-msgstr "Autoriser le lancement synchrone"
-
-#: superset/views/core.py:251
-msgid "Allow Run Async"
-msgstr "Autoriser le lancement asynchrone"
-
-#: superset/views/core.py:269
-msgid "Import Dashboards"
-msgstr "Importer des tableaux de bords"
-
-#: superset/views/core.py:273 superset/views/core.py:2330
-#: superset/views/sql_lab.py:30
-msgid "Manage"
-msgstr "Gestion"
-
-#: superset/views/core.py:280
-msgid "Databases"
-msgstr "Bases de données"
-
-#: superset/views/core.py:311 superset/views/core.py:552
-#: superset/views/sql_lab.py:18 superset/views/sql_lab.py:54
-msgid "User"
-msgstr "Utilisateur"
-
-#: superset/views/core.py:312
-msgid "User Roles"
-msgstr "Rôles utilisateurs"
-
-#: superset/views/core.py:313
-msgid "Database URL"
-msgstr "URL de la base de données"
-
-#: superset/views/core.py:315
-msgid "Roles to grant"
-msgstr "Röles à donner"
-
-#: superset/views/core.py:316
-msgid "Created On"
-msgstr "Créé le"
-
-#: superset/views/core.py:322
-msgid "Access requests"
-msgstr "Requêtes d'accès"
-
-#: superset/views/core.py:324 superset/views/core.py:563
-msgid "Security"
-msgstr "Sécurité"
-
-#: superset/views/core.py:331
-msgid "List Slices"
-msgstr "Lister les slices"
-
-#: superset/views/core.py:332
-msgid "Show Slice"
-msgstr "Montrer les slices"
-
-#: superset/views/core.py:333
-msgid "Add Slice"
-msgstr "Ajouter un slice"
-
-#: superset/views/core.py:334
-msgid "Edit Slice"
-msgstr "Éditer le slice"
-
-#: superset/views/core.py:355
-msgid ""
-"These parameters are generated dynamically when clicking the save or "
-"overwrite button in the explore view. This JSON object is exposed here "
-"for reference and for power users who may want to alter specific "
-"parameters."
-msgstr ""
-"Ces paramètres sont généré dynamiquement quand vous cliquez sur "
-"Sauvegarder ou forcer dans la page d'exploration. Cet objet JSON est "
-"exposé ici comme une référence et pour les experts qui voudraient "
-"modifier des paramètres"
-
-#: superset/views/core.py:360
-msgid "Duration (in seconds) of the caching timeout for this slice."
-msgstr "Durée (en secondes) pour le caching timout de ce slice"
-
-#: superset/views/core.py:371
-msgid "Last Modified"
-msgstr "Dernière modification"
-
-#: superset/views/core.py:372 superset/views/core.py:474
-msgid "Owners"
-msgstr "Propriétaires"
-
-#: superset/views/core.py:373
-msgid "Parameters"
-msgstr "Paramètres"
-
-#: superset/views/core.py:374 superset/views/core.py:416
-msgid "Slice"
-msgstr "Slice"
-
-#: superset/views/core.py:375
-msgid "Name"
-msgstr "Nom"
-
-#: superset/views/core.py:377
-msgid "Visualization Type"
-msgstr "Type de visualisation"
-
-#: superset/views/core.py:404 superset/views/core.py:473
-msgid "Slices"
-msgstr "Slice"
-
-#: superset/views/core.py:433
-msgid "List Dashboards"
-msgstr "Lister les tableaux de bords"
-
-#: superset/views/core.py:434
-msgid "Show Dashboard"
-msgstr "Montrer les tableaux de bords"
-
-#: superset/views/core.py:435
-msgid "Add Dashboard"
-msgstr "Ajouter un tableau de bord"
-
-#: superset/views/core.py:436
-msgid "Edit Dashboard"
-msgstr "Éditer le tableau de bord"
-
-#: superset/views/core.py:447
-msgid ""
-"This json object describes the positioning of the widgets in the "
-"dashboard. It is dynamically generated when adjusting the widgets size "
-"and positions by using drag & drop in the dashboard view"
-msgstr ""
-"Cet objet JSON décrit la position des widgets dans le tableau de bord. Il"
-" est généré dynamiquement quand on ajuste la taille ou la position des "
-"widgets"
-
-#: superset/views/core.py:452
-msgid ""
-"The css for individual dashboards can be altered here, or in the "
-"dashboard view where changes are immediately visible"
-msgstr ""
-"Le css pour certains tableaux de bords peut être modifié ici, ou dans  la"
-" page tableaux de bords pour que les changement soient visibles "
-"immédiatement"
-
-#: superset/views/core.py:456
-msgid "To get a readable URL for your dashboard"
-msgstr "Pour avoir une URL lisible pour votre tableau de bord"
-
-#: superset/views/core.py:457
-msgid ""
-"This JSON object is generated dynamically when clicking the save or "
-"overwrite button in the dashboard view. It is exposed here for reference "
-"and for power users who may want to alter specific parameters."
-msgstr ""
-"Ce JSON a été généré automatiquement quand vous avez cliqué sur "
-"sauvegarder ou forcer dans la page des tableaux de bords.  Il est exposé "
-"ici comme une référence et pour les experts qui voudraient modifier des "
-"paramètres"
-
-#: superset/views/core.py:462
-msgid "Owners is a list of users who can alter the dashboard."
-msgstr ""
-"Propriétaires est une liste d'utilisateurs qui peuvent modifier le "
-"tableau de bord"
-
-#: superset/views/core.py:470 superset/views/core.py:537
-msgid "Dashboard"
-msgstr "Tableau de bord"
-
-#: superset/views/core.py:471 superset/views/core.py:538
-msgid "Title"
-msgstr "Title"
-
-#: superset/views/core.py:472
-msgid "Slug"
-msgstr "Slug"
-
-#: superset/views/core.py:476 superset/views/core.py:540
-#: superset/views/sql_lab.py:57
-msgid "Modified"
-msgstr "Modifié"
-
-#: superset/views/core.py:477
-msgid "Position JSON"
-msgstr "JSON des positions"
-
-#: superset/views/core.py:478
-msgid "CSS"
-msgstr "CSS"
-
-#: superset/views/core.py:479
-msgid "JSON Metadata"
-msgstr "JSON des méta-données"
-
-#: superset/views/core.py:480
-msgid "Underlying Tables"
-msgstr "Tables sous-jacentes"
-
-#: superset/views/core.py:503
-msgid "Export"
-msgstr "Exporter"
-
-#: superset/views/core.py:503
-msgid "Export dashboards?"
-msgstr "Exporter les tableaux de bords ?"
-
-#: superset/views/core.py:553
-msgid "Action"
-msgstr "Action"
-
-#: superset/views/core.py:554
-msgid "dttm"
-msgstr "dttm"
-
-#: superset/views/core.py:561
-msgid "Action Log"
-msgstr "Journaux d'actions"
-
-#: superset/views/core.py:792
-msgid "Access was requested"
-msgstr "Accès demandé"
-
-#: superset/views/core.py:853
-#, python-format
-msgid ""
-"%(user)s was granted the role %(role)s that gives access to the "
-"%(datasource)s"
-msgstr "%(user)s a obtenu le rôle %(role)s qui donne accès à %(datasource)s"
-
-#: superset/views/core.py:869
-#, python-format
-msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
-msgstr ""
-"Le rôle %(r)s a été étendu pour donner l'accès à la source de données "
-"%(ds)s"
-
-#: superset/views/core.py:878
-msgid "You have no permission to approve this request"
-msgstr "Vous n'avez pas les permission pour approuver cette requête"
-
-#: superset/views/core.py:1618
-msgid ""
-"Malformed request. slice_id or table_name and db_name arguments are "
-"expected"
-msgstr ""
-"Requête malformée. Les arguments slice_id ou table_name et db_name sont "
-"attendus"
-
-#: superset/views/core.py:1624
-#, python-format
-msgid "Slice %(id)s not found"
-msgstr "Slice %(id)s non trouvé"
-
-#: superset/views/core.py:1636
-#, python-format
-msgid "Table %(t)s wasn't found in the database %(d)s"
-msgstr "Table %(t)s pas trouvée dans la base de données %(d)s"
-
-#: superset/views/core.py:1774
-#, python-format
-msgid "Can't find User '%(name)s', please ask your admin to create one."
-msgstr ""
-"Impossible de trouver l'utilisateur '%(name)s', demandez à votre "
-"administrateur de le créer."
-
-#: superset/views/core.py:1781
-#, python-format
-msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
-msgstr "Impossible de trouver le DruidCluster avec cluster_name = '%(name)s"
-
-#: superset/views/core.py:2042
-msgid "Query record was not created as expected."
-msgstr "L'enregistrement de la reqête n'a pas été créé comme prévu."
-
-#: superset/views/core.py:2316
-msgid "Template Name"
-msgstr "Nom du template"
-
-#: superset/views/core.py:2327
-msgid "CSS Templates"
-msgstr "Templates CSS"
-
-#: superset/views/core.py:2337
-msgid "SQL Editor"
-msgstr "Éditeur SQL"
-
-#: superset/views/core.py:2342 superset/views/core.py:2351
-msgid "SQL Lab"
-msgstr "SQL Lab"
-
-#: superset/views/core.py:2346
-msgid "Query Search"
-msgstr "Requêter"
-
-#: superset/views/sql_lab.py:20
-msgid "Status"
-msgstr "Status"
-
-#: superset/views/sql_lab.py:21
-msgid "Start Time"
-msgstr "Date de début"
-
-#: superset/views/sql_lab.py:22 superset/views/sql_lab.py:58
-msgid "End Time"
-msgstr "Date de fin"
-
-#: superset/views/sql_lab.py:28
-msgid "Queries"
-msgstr "Requêtes"
-
-#: superset/views/sql_lab.py:37
-msgid "List Saved Query"
-msgstr "Liste des requêtes sauvegardées"
-
-#: superset/views/sql_lab.py:38
-msgid "Show Saved Query"
-msgstr "Montrer les requếtes sauvagardées"
-
-#: superset/views/sql_lab.py:39
-msgid "Add Saved Query"
-msgstr "Ajouter une requête sauvegardée"
-
-#: superset/views/sql_lab.py:40
-msgid "Edit Saved Query"
-msgstr "Éditer la requête sauvegardée"
-
-#: superset/views/sql_lab.py:53
-msgid "Label"
-msgstr "Label"
-
-#: superset/views/sql_lab.py:59
-msgid "Pop Tab Link"
-msgstr ""
-
-#: superset/views/sql_lab.py:60
-msgid "Changed on"
-msgstr ""
-
-#: superset/views/sql_lab.py:79
-msgid "Saved Queries"
-msgstr "Requêtes sauvegardées"
-
diff --git a/superset/translations/it/LC_MESSAGES/messages.json b/superset/translations/it/LC_MESSAGES/messages.json
new file mode 100644
index 0000000..9671ea8
--- /dev/null
+++ b/superset/translations/it/LC_MESSAGES/messages.json
@@ -0,0 +1 @@
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=1; plural=0","lang":"it"},"Time Column":["Colonna del Tempo"],"second":["secondo"],"minute":["minuto"],"hour":["ora"],"day":["giorno"],"week":["settimana"],"month":["mese"],"quarter":["quartile"],"year":["anno"],"week_start_monday":["settimana_inizio_lunedì"],"week_ending_saturday":["settimana_fine_domenica"],"week_start_sunday":["settimana_inizio_domenica"],"5 minute":["5 minuti"],"half hour [...]
\ No newline at end of file
diff --git a/superset/translations/it/LC_MESSAGES/messages.mo b/superset/translations/it/LC_MESSAGES/messages.mo
index c3583a7..e89d558 100644
Binary files a/superset/translations/it/LC_MESSAGES/messages.mo and b/superset/translations/it/LC_MESSAGES/messages.mo differ
diff --git a/superset/translations/it/LC_MESSAGES/messages.po b/superset/translations/it/LC_MESSAGES/messages.po
index ea03d00..65b081a 100644
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-06-19 11:56+0800\n"
+"POT-Creation-Date: 2017-07-31 11:46+0800\n"
 "PO-Revision-Date: 2017-06-04 20:36+0200\n"
 "Last-Translator: Maurizio Napolitano <napo@fbk.eu>\n"
 "Language: it\n"
@@ -19,91 +19,98 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.4.0\n"
 
-#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:225
-#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:317
-#: superset/db_engine_specs.py:362 superset/db_engine_specs.py:770
-#: superset/db_engine_specs.py:806 superset/db_engine_specs.py:838
-#: superset/db_engine_specs.py:884
+#: superset/assets/javascripts/explore/stores/controls.jsx:491
+#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
+#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
+#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
+#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
+#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
 msgid "Time Column"
 msgstr "Colonna del Tempo"
 
-#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:226
-#: superset/db_engine_specs.py:318 superset/db_engine_specs.py:363
-#: superset/db_engine_specs.py:771 superset/db_engine_specs.py:839
+#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
+#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
+#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
+#: superset/db_engine_specs.py:962
 msgid "second"
 msgstr "secondo"
 
-#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:229
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
-#: superset/db_engine_specs.py:773 superset/db_engine_specs.py:807
-#: superset/db_engine_specs.py:841 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
+#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
+#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
+#: superset/db_engine_specs.py:963
 msgid "minute"
 msgstr "minuto"
 
-#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:233
-#: superset/db_engine_specs.py:323 superset/db_engine_specs.py:367
-#: superset/db_engine_specs.py:779 superset/db_engine_specs.py:809
-#: superset/db_engine_specs.py:843 superset/db_engine_specs.py:891
+#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
+#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
+#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
+#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
+#: superset/db_engine_specs.py:964
 msgid "hour"
 msgstr "ora"
 
-#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:238
-#: superset/db_engine_specs.py:270 superset/db_engine_specs.py:325
-#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:781
-#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:845
-#: superset/db_engine_specs.py:893
+#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
+#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
+#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
+#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
 msgid "day"
 msgstr "giorno"
 
-#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:244
-#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:783
-#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
+#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
+#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
+#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:966
 msgid "week"
 msgstr "settimana"
 
-#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:273 superset/db_engine_specs.py:328
-#: superset/db_engine_specs.py:373 superset/db_engine_specs.py:785
-#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:849
-#: superset/db_engine_specs.py:895
+#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
+#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
+#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
+#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
+#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
 msgid "month"
 msgstr "mese"
 
-#: superset/db_engine_specs.py:201 superset/db_engine_specs.py:248
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:375
-#: superset/db_engine_specs.py:787 superset/db_engine_specs.py:817
-#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:897
+#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
+#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
+#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
+#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
+#: superset/db_engine_specs.py:968
 msgid "quarter"
 msgstr "quartile"
 
-#: superset/db_engine_specs.py:202 superset/db_engine_specs.py:252
-#: superset/db_engine_specs.py:332 superset/db_engine_specs.py:789
-#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:899
+#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
+#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
+#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
+#: superset/db_engine_specs.py:969
 msgid "year"
 msgstr "anno"
 
-#: superset/db_engine_specs.py:334
+#: superset/db_engine_specs.py:332
 msgid "week_start_monday"
 msgstr "settimana_inizio_lunedì"
 
-#: superset/db_engine_specs.py:377 superset/db_engine_specs.py:853
+#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
 msgid "week_ending_saturday"
 msgstr "settimana_fine_domenica"
 
-#: superset/db_engine_specs.py:380 superset/db_engine_specs.py:856
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
 msgid "week_start_sunday"
 msgstr "settimana_inizio_domenica"
 
-#: superset/db_engine_specs.py:775 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
 msgid "5 minute"
 msgstr "5 minuti"
 
-#: superset/db_engine_specs.py:777
+#: superset/db_engine_specs.py:817
 msgid "half hour"
 msgstr "mezz'ora"
 
-#: superset/db_engine_specs.py:889
+#: superset/db_engine_specs.py:929
 msgid "10 minute"
 msgstr "10 minuti"
 
@@ -112,173 +119,2466 @@ msgstr "10 minuti"
 msgid "[Superset] Access to the datasource %(name)s was granted"
 msgstr ""
 
-#: superset/viz.py:311
+#: superset/assets/javascripts/explore/stores/visTypes.js:283
+#: superset/viz.py:312
 msgid "Table View"
 msgstr "Vista Tabella"
 
-#: superset/viz.py:364
-msgid "Pivot Table"
-msgstr "Vista Pivot"
+#: superset/assets/javascripts/explore/stores/visTypes.js:334
+#: superset/viz.py:368
+msgid "Pivot Table"
+msgstr "Vista Pivot"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:321
+#: superset/viz.py:423
+msgid "Markup"
+msgstr "Marcatore"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:348
+#: superset/viz.py:442
+msgid "Separator"
+msgstr "Separatore"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:369
+#: superset/viz.py:458
+msgid "Word Cloud"
+msgstr "Cloud di Parole"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:383
+#: superset/viz.py:481
+msgid "Treemap"
+msgstr "Treemap"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:403
+#: superset/viz.py:507
+msgid "Calendar Heatmap"
+msgstr "Calendario di Intensità"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:418
+#: superset/viz.py:565
+msgid "Box Plot"
+msgstr "Box Plot"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:437
+#: superset/viz.py:654
+msgid "Bubble Chart"
+msgstr "Grafico a Bolle"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:481
+#: superset/viz.py:704
+msgid "Bullet Chart"
+msgstr "Grafico a Proiettile"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:497
+#: superset/viz.py:753
+msgid "Big Number with Trendline"
+msgstr "Numero Grande con Linea del Trend"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:516
+#: superset/viz.py:782
+msgid "Big Number"
+msgstr "Numero Grande"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:21
+#: superset/assets/javascripts/explore/stores/visTypes.js:127
+#: superset/viz.py:809
+msgid "Time Series - Line Chart"
+msgstr "Serie Temporali - Grafico Lineare"
+
+#: superset/viz.py:936
+msgid "Time Series - Dual Axis Line Chart"
+msgstr "Serie Temporali - Grafico Lineare ad Assi Duali"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:22
+#: superset/assets/javascripts/explore/stores/visTypes.js:197
+#: superset/viz.py:1011
+msgid "Time Series - Bar Chart"
+msgstr "Serie Temporali - Grafico Barre"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:230
+#: superset/viz.py:1019
+msgid "Time Series - Percent Change"
+msgstr "Serie Temporali - Cambiamento Percentuale"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:251
+#: superset/viz.py:1027
+msgid "Time Series - Stacked"
+msgstr "Serie Temporali - Stacked"
+
+#: superset/viz.py:1036
+msgid "Distribution - NVD3 - Pie Chart"
+msgstr "Distribuzione - NVD3 - Grafico Torta"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:535
+#: superset/viz.py:1054
+msgid "Histogram"
+msgstr "Istogramma"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:19
+#: superset/assets/javascripts/explore/stores/visTypes.js:81
+#: superset/viz.py:1079
+msgid "Distribution - Bar Chart"
+msgstr "Distribuzione - Grafico Barre"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:565
+#: superset/viz.py:1146
+msgid "Sunburst"
+msgstr "Sunburst"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:595
+#: superset/viz.py:1179
+msgid "Sankey"
+msgstr "Sankey"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:615
+#: superset/viz.py:1228 superset/viz.py:1249
+msgid "Directed Force Layout"
+msgstr "Disposizione a Forza Diretta"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:672
+#: superset/viz.py:1282
+msgid "Country Map"
+msgstr "Mappa della Nazione"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:696
+#: superset/viz.py:1311
+msgid "World Map"
+msgstr "Mappa del Mondo"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:63
+#: superset/viz.py:1361
+msgid "Filters"
+msgstr "Filtri"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:758
+#: superset/viz.py:1396
+msgid "iFrame"
+msgstr "iFrame"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:770
+#: superset/viz.py:1413
+msgid "Parallel Coordinates"
+msgstr "Coordinate Parallele"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:786
+#: superset/viz.py:1438
+msgid "Heatmap"
+msgstr "Mappa di Intensità"
+
+#: superset/viz.py:1489
+msgid "Horizon Charts"
+msgstr "Grafici d'orizzonte"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:830
+#: superset/viz.py:1500
+msgid "Mapbox"
+msgstr "Mapbox"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:900
+#: superset/viz.py:1603
+msgid "Event flow"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:55
+msgid "Your query was saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:56
+msgid "Your query could not be saved"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:109
+msgid "Failed at retrieving results from the results backend"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:155
+msgid "Could not connect to server"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:160
+msgid "Your session timed out, please refresh your page and try again."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:179
+msgid "Query was stopped."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:182
+msgid "Failed at stopping query."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:295
+#: superset/assets/javascripts/SqlLab/actions.js:308
+msgid "Error occurred while fetching table metadata"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:358
+msgid "shared query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:366
+#: superset/assets/javascripts/SqlLab/actions.js:386
+msgid "The query couldn't be loaded"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:419
+msgid "An error occurred while creating the data source"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:29
+msgid "Pick a chart type!"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:30
+msgid "To use this chart type you need at least one column flagged as a date"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:31
+msgid "To use this chart type you need at least one dimension"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/constants.js:32
+msgid "To use this chart type you need at least one aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
+#: superset/assets/javascripts/SqlLab/reducers.js:11
+msgid "Untitled Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/reducers.js:44
+#, python-format
+msgid "Copy of %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:30
+msgid "share query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:33
+msgid "copy URL to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:56
+msgid "Raw SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:66
+msgid "Source SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:78
+#: superset/assets/javascripts/explore/stores/visTypes.js:31
+msgid "SQL"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryHistory.jsx:28
+msgid "No query history yet..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:106
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:66
+msgid "It seems you don't have access to any database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:154
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:90
+msgid "Search Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:160
+msgid "[From]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:171
+msgid "[To]-"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:181
+msgid "[Query Status]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:190
+msgid "Search"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:114
+msgid "Open in SQL Editor"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:133
+msgid "view results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:136
+msgid "Data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:176
+msgid "Visualize the data out of this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:182
+msgid "Overwrite text in editor with a query on this table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:188
+msgid "Run query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:193
+msgid "Remove query from log"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:68
+msgid ".CSV"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:79
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:235
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:274
+msgid "Visualize"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:151
+msgid "Query was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:135
+#: superset/connectors/sqla/views.py:213 superset/views/core.py:375
+msgid "Table"
+msgstr "Tabella"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+msgid "was created"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:201
+msgid "Query in a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:240
+msgid "Fetch data preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:244
+msgid "The query returned no data"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Selected Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+msgid "Run query asynchronously"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:56
+msgid "Stop"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+msgid "Undefined"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
+msgid "Label"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+msgid "Label for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
+#: superset/connectors/druid/views.py:107
+#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:131 superset/views/core.py:369
+msgid "Description"
+msgstr "Descrizione"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+msgid "Write a description for your query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:139
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:220
+msgid "Save"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/templates/superset/request_access.html:16
+msgid "Cancel"
+msgstr "Annulla"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+msgid "Save Query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:80
+msgid "Run a query to display results here"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:85
+#, python-format
+msgid "Preview for %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:109
+msgid "Results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:115
+msgid "Query History"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:112
+#, python-format
+msgid ""
+"It appears that the number of rows in the query results displayed was "
+"limited on the server side to the %s limit."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:123
+msgid "Create table as with query results"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:131
+msgid "new table name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:90
+msgid "Error while fetching table list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:131
+msgid "Error while fetching schema list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:153
+msgid "Error while fetching database list"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:159
+msgid "Database:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:163
+msgid "Select a database"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:170
+#, python-format
+msgid "Select a schema (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:175
+msgid "Schema:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:190
+#, python-format
+msgid "Add a table (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:203
+msgid "Type to search ..."
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:226
+msgid "Reset State"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:105
+msgid "Enter a new title for the tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:124
+#, python-format
+msgid "Untitled Query %s"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:170
+msgid "close tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:173
+msgid "rename tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "expand tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "hide tool bar"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:75
+msgid "Copy partition query to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:94
+msgid "latest partition:"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:110
+msgid "Keys for table"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:119
+#, python-format
+msgid "View keys & indexes (%s)"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:135
+msgid "Sort columns alphabetically"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:136
+msgid "Original table column order"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:146
+msgid "Copy SELECT statement to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:152
+msgid "Remove table preview"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:20
+#: superset/assets/javascripts/explore/stores/visTypes.js:111
+msgid "Pie Chart"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:85
+#, python-format
+msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "AS my_alias"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "using only alphanumeric characters and underscores"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:160
+msgid "Creating a data source and popping a new tab"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:190
+msgid "No results available for this query"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:242
+msgid "Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:245
+msgid "[Chart Type]"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:253
+msgid "Datasource Name"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:257
+msgid "datasource name"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:54
+msgid "Create a new slice"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:59
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:65
+msgid "Choose a datasource"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:71
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:77
+msgid "Choose a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:87
+msgid "Create new slice"
+msgstr ""
+
+#: superset/assets/javascripts/components/AsyncSelect.jsx:20
+msgid "Select ..."
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:26
+msgid "Loaded data cached"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:28
+msgid "Loaded from cache"
+msgstr ""
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:33
+msgid "Click to force-refresh"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+msgid "Copy to clipboard"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+msgid "Not successful"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
+msgstr ""
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+msgid "Copied!"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:12
+#: superset/views/core.py:470 superset/views/core.py:537
+msgid "Title"
+msgstr "Titolo"
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "click to edit title"
+msgstr ""
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "You don't have the rights to alter this title."
+msgstr ""
+
+#: superset/assets/javascripts/components/FaveStar.jsx:32
+#: superset/assets/javascripts/modules/superset.js:33
+msgid "Click to favorite/unfavorite"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:36
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "You have unsaved changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "Click the"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:55
+msgid "button on the top right to save your changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:158
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:163
+msgid "Click to force refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:337
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:93
+msgid "Error"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:338
+#, python-format
+msgid "Sorry, there was an error adding slices to this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
+#, python-format
+msgid "Checkout this dashboard: %s"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
+msgid "Force refresh the whole dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
+msgid "Edit this dashboard's properties"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+msgid "Load a template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+msgid "Load a CSS template"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
+#: superset/views/core.py:477
+msgid "CSS"
+msgstr "CSS"
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+msgid "Live CSS Editor"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
+msgid "Don't refresh"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:20
+msgid "10 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:21
+msgid "30 seconds"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:22
+msgid "1 minute"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:23
+msgid "5 minutes"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:38
+msgid "Refresh Interval"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:41
+msgid "Choose the refresh frequency for this dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:58
+msgid "This dashboard was saved successfully."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:64
+msgid "Sorry, there was an error saving this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:94
+msgid "You must pick a name for the new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:108
+msgid "Save Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:116
+#, python-format
+msgid "Overwrite Dashboard [%s]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+msgid "Save as:"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:127
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:208
+msgid "[dashboard name]"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:137
+#: superset/views/core.py:374
+msgid "Name"
+msgstr "Nome"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:143
+msgid "Viz"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:152
+#: superset/views/core.py:475 superset/views/core.py:539
+msgid "Modified"
+msgstr "Modificato"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:162
+msgid "Add Slices"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:171
+msgid "Add a new slice to the dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:175
+msgid "Add Slices to Dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:23
+msgid "Move chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:26
+msgid "Force refresh data"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:30
+msgid "Toggle chart description"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:40
+msgid "Edit chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:45
+msgid "Explore chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:50
+msgid "Remove chart from dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:170
+#, python-format
+msgid "%s - untitled"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:276
+msgid "Edit slice properties"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:60
+msgid "Takes effect on chart immediatly"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:56
+msgid "Error..."
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:92
+msgid "Query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+msgid "Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+msgid "Width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+msgid "Export to .json"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+msgid "Export to .csv format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:73
+msgid "Please enter a slice name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:88
+msgid "Please select a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:96
+msgid "Please enter a dashboard name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:134
+msgid "Save A Slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:155
+#, python-format
+msgid "Overwrite slice %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
+msgid "Save as"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:168
+msgid "[slice name]"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:181
+msgid "Do not add to a dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:189
+msgid "Add slice to existing dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:203
+msgid "Add to new dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:229
+msgid "Save & go to dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#, python-format
+msgid "Check out this slice: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+msgid "`Min` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+msgid "`Max` value should be numeric or empty"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
+msgid "Min"
+msgstr "Min"
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
+msgid "Max"
+msgstr "Max"
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:118
+msgid "Filter value"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:159
+msgid "Select operator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:70
+msgid "Add Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:62
+msgid "textarea"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "Edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "in modal"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:90
+#: superset/assets/javascripts/explore/stores/controls.jsx:46
+msgid "edit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:104
+msgid "Select a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:114
+msgid "Search / Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:61
+#, python-format
+msgid "fetching dashboards failed for %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:100
+msgid "Updating chart was stopped"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:106
+#: superset/assets/javascripts/modules/superset.js:220
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:117
+msgid "Query timeout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:118
+#, python-format
+msgid "- visualization query are set to timeout at %s seconds. "
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:119
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is to large to be processed within"
+" the timeout range. If that is the case, we recommend that you summarize "
+"your data further."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:127
+msgid "Network error."
+msgstr ""
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:150
+msgid "Failed to save slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:35
+#: superset/connectors/druid/views.py:45 superset/views/core.py:313
+#: superset/views/core.py:368
+msgid "Datasource"
+msgstr "Sorgente Dati"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:55
+#: superset/views/core.py:376
+msgid "Visualization Type"
+msgstr "Tipo di Visualizzazione"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:57
+msgid "The type of visualization to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:63
+msgid "Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:72
+#: superset/assets/javascripts/explore/stores/controls.jsx:90
+msgid "One or many metrics to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:79
+msgid ""
+"Bounds for the Y axis. When left empty, the bounds are dynamically "
+"defined based on the min/max of the data. Note that this feature will "
+"only expand the axis range. It won't narrow the data's extent."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:88
+msgid "Ordering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:100
+msgid "Choose the metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:113
+msgid "Right Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:117
+msgid "Choose a metric for right axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:128
+msgid "Stacked Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:140
+msgid "Linear Color Scheme"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:153
+msgid "Normalize Across"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:160
+msgid ""
+"Color will be rendered based on a ratio of the cell against the sum of "
+"across this criteria"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:167
+msgid "Horizon Color Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:174
+msgid "Defines how the color are attributed."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:179
+msgid "Rendering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:185
+msgid ""
+"image-rendering CSS attribute of the canvas object that defines how the "
+"browser scales up the image"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:191
+msgid "XScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:194
+msgid "Number of steps to take between ticks when displaying the X scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:200
+msgid "YScale Interval"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
+msgid "Number of steps to take between ticks when displaying the Y scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:209
+msgid "Include Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:210
+msgid "Whether to include the time granularity as defined in the time section"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:216
+msgid "Stacked Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:232
+msgid "Show Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:235
+msgid "Show data points as circle markers on the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:240
+msgid "Bar Values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:248
+msgid "Sort Bars"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:250
+msgid "Sort bars by x labels."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:263
+msgid "Extra Controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:266
+msgid ""
+"Whether to show extra controls or not. Extra controls include things like"
+" making mulitBar charts stacked or side by side."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:273
+msgid "Reduce X ticks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:276
+msgid ""
+"Reduces the number of X axis ticks to be rendered. If true, the x axis "
+"wont overflow and labels may be missing. If false, a minimum width will "
+"be applied to columns and the width may overflow into an horizontal "
+"scroll."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:285
+msgid "Include Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:288
+msgid "Include series name as an axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:293
+msgid "Color Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:295
+msgid "A metric to use for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:302
+msgid "Country Name"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:321
+msgid "The name of country that Superset should display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:325
+msgid "Country Field Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:333
+msgid ""
+"The country code standard that Superset should expect to find in the "
+"[country] column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:340
+msgid "Group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:342
+msgid "One or many controls to group by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:354
+#: superset/assets/javascripts/explore/stores/controls.jsx:368
+msgid "Columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:370
+#: superset/assets/javascripts/explore/stores/controls.jsx:380
+#: superset/assets/javascripts/explore/stores/controls.jsx:390
+msgid "Columns to display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:378
+msgid "X"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:388
+msgid "Y"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:399
+msgid "Origin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:405
+msgid ""
+"Defines the origin where time buckets start, accepts natural dates as in "
+"`now`, `sunday` or `1970-01-01`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
+msgid "Bottom marging, in pixels, allowing for more room for axis labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:421
+msgid "Time Granularity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:438
+msgid ""
+"The time granularity for the visualization. Note that you can type and "
+"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:445
+msgid "Domain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:448
+msgid "The time unit used for the grouping of blocks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:453
+msgid "Subdomain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:456
+msgid ""
+"The time unit for each block. Should be a smaller unit than "
+"domain_granularity. Should be larger or equal to Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:463
+msgid "Link Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:466
+msgid "Link length in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:472
+msgid "Charge"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:486
+msgid "Charge in the force layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:494
+msgid ""
+"The time column for the visualization. Note that you can define arbitrary"
+" expression that return a DATETIME column in the table or. Also note that"
+" the filter below is applied against this column or expression"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:506
+msgid "Time Grain"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:508
+msgid ""
+"The time granularity for the visualization. This applies a date "
+"transformation to alter your time column and defines a new time "
+"granularity. The options here are defined on a per database engine basis "
+"in the Superset source code."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:521
+msgid "Resample Rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:524
+msgid "Pandas resample rule"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:530
+msgid "Resample How"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:533
+msgid "Pandas resample how"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:539
+msgid "Resample Fill Method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:542
+msgid "Pandas resample fill method"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:548
+msgid "Since"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:560
+msgid ""
+"Timestamp from filter. This supports free form typing and natural "
+"language as in `1 day ago`, `28 days` or `3 years`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:567
+msgid "Until"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:582
+msgid "Max Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:590
+msgid "Whisker/outlier options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:592
+msgid "Determines how whiskers and outliers are calculated."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:603
+msgid "Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:606
+msgid "Target aspect ratio for treemap tiles."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:612
+#: superset/assets/javascripts/explore/stores/visTypes.js:510
+#: superset/assets/javascripts/explore/stores/visTypes.js:529
+#: superset/assets/javascripts/explore/stores/visTypes.js:654
+msgid "Number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:622
+msgid "Row limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:630
+msgid "Series limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:633
+msgid "Limits the number of time series that get displayed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:638
+msgid "Sort By"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:640
+msgid "Metric used to define the top series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:648
+msgid "Rolling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:651
+msgid ""
+"Defines a rolling window function to apply, works along with the "
+"[Periods] text box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:657
+msgid "Periods"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:659
+msgid ""
+"Defines the size of the rolling window function, relative to the time "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:665
+#: superset/assets/javascripts/explore/stores/visTypes.js:101
+msgid "Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:667
+msgid ""
+"Defines the grouping of entities. Each series is shown as a specific "
+"color on the chart and has a legend toggle"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:677
+msgid "Entity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:680
+msgid "This defines the element to be plotted on the chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:688
+#: superset/assets/javascripts/explore/stores/visTypes.js:459
+msgid "X Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:689
+msgid "Metric assigned to the [X] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:702
+#: superset/assets/javascripts/explore/stores/visTypes.js:466
+msgid "Y Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:705
+msgid "Metric assigned to the [Y] axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:716
+msgid "Bubble Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:729
+msgid "URL"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:730
+msgid ""
+"The URL, this control is templated, so you can integrate {{ width }} "
+"and/or {{ height }} in your URL string."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:737
+msgid "X Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:744
+msgid "Y Axis Label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:751
+msgid "Custom WHERE clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:753
+msgid ""
+"The text in this box gets included in your query's WHERE clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:761
+msgid "Custom HAVING clause"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:763
+msgid ""
+"The text in this box gets included in your query's HAVING clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:771
+msgid "Comparison Period Lag"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:773
+msgid "Based on granularity, number of time periods to compare against"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:778
+msgid "Comparison suffix"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:779
+msgid "Suffix to apply after the percentage display"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:785
+msgid "Table Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:790
+msgid "Timestamp Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:796
+msgid "Series Height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:799
+msgid "Pixel height of each series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:805
+msgid "Page Length"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:808
+msgid "Rows per page, 0 means no pagination"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:814
+#: superset/assets/javascripts/explore/stores/controls.jsx:824
+msgid "X Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:834
+msgid "Y Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:844
+msgid "Right Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:852
+msgid "Markup Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+msgid "Pick your favorite markup language"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:862
+msgid "Rotation"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:865
+msgid "Rotation to apply to words in the cloud"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:870
+msgid "Line Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:875
+msgid "Line interpolation as defined by d3.js"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:880
+msgid "Label Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:887
+msgid "What should be shown on the label?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:892
+msgid "Code"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:893
+msgid "Put your code here"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:902
+msgid "Aggregation function"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:914
+msgid ""
+"Aggregate function to apply when pivoting and computing the total rows "
+"and columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:921
+msgid "Font Size From"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:923
+msgid "Font size for the smallest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:929
+msgid "Font Size To"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:931
+msgid "Font size for the biggest value in the list"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:936
+msgid "Instant Filtering"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:940
+msgid ""
+"Whether to apply filters as they change, or wait forusers to hit an "
+"[Apply] button"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:947
+msgid "Range Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:950
+msgid "Whether to display the time range interactive selector"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:955
+msgid "Date Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:957
+msgid "Whether to include a time filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:962
+msgid "Data Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:964
+msgid "Whether to display the interactive data table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:969
+msgid "Search Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:972
+msgid "Whether to include a client side search box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:977
+msgid "Table Filter"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:979
+msgid "Whether to apply filter when table cell is clicked"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:984
+msgid "Show Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:987
+msgid "Whether to display bubbles on top of countries"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:992
+msgid "Legend"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:995
+msgid "Whether to display the legend (toggles)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1000
+msgid "X bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1003
+msgid "Whether to display the min and max values of the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1008
+msgid "Rich Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1011
+msgid "The rich tooltip shows a list of all series for that point in time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1017
+msgid "Y Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1020
+msgid "Use a log scale for the Y axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1025
+msgid "X Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1028
+msgid "Use a log scale for the X axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1033
+msgid "Donut"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1036
+msgid "Do you want a donut or a pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+msgid "Put labels outside"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1044
+msgid "Put the labels outside the pie?"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+msgid "Contribution"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1051
+msgid "Compute the contribution to the total"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1056
+msgid "Period Ratio"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1059
+msgid ""
+"[integer] Number of period to compare against, this is relative to the "
+"granularity selected"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1065
+msgid "Period Ratio Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1068
+msgid ""
+"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
+"is (new-previous)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1074
+msgid "Time Shift"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1076
+msgid ""
+"Overlay a timeseries from a relative time period. Expects relative time "
+"delta in natural language (example:  24 hours, 7 days, 56 weeks, 365 "
+"days)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1084
+msgid "Subheader"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1085
+msgid "Description text that shows up below your Big Number"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1091
+msgid "label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1093
+msgid ""
+"`count` is COUNT(*) if a group by is used. Numerical columns will be "
+"aggregated with the aggregator. Non-numerical columns will be used to "
+"label points. Leave empty to get a count of points in each cluster."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1104
+msgid "Map Style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1114
+msgid "Base layer map style"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1120
+msgid "Clustering Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1133
+msgid ""
+"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
+"to turn off clustering, but beware that a large number of points (>1000) "
+"will cause lag."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1140
+msgid "Point Radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1142
+msgid ""
+"The radius of individual points (ones that are not in a cluster). Either "
+"a numerical column or `Auto`, which scales the point based on the largest"
+" cluster"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1152
+msgid "Point Radius Unit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+msgid "The unit of measure for the specified point radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1160
+msgid "Opacity"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1163
+msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1169
+msgid "Zoom"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1172
+msgid "Zoom level of the map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1178
+msgid "Default latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1181
+msgid "Latitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1187
+msgid "Default longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1190
+msgid "Longitude of default viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1196
+msgid "Live render"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1198
+msgid "Points and clusters will update as viewport is being changed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1204
+msgid "RGB Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1214
+msgid "The color for points and clusters in RGB"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1219
+msgid "Ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1221
+msgid "Ranges to highlight with shading"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1226
+msgid "Range labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1228
+msgid "Labels for the ranges"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1233
+msgid "Markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1235
+msgid "List of values to mark with triangles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1240
+msgid "Marker labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1242
+msgid "Labels for the markers"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1247
+msgid "Marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1249
+msgid "List of values to mark with lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1254
+msgid "Marker line labels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1256
+msgid "Labels for the marker lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1283
+msgid "Slice ID"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1285
+msgid "The id of the active slice"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1290
+msgid "Cache Timeout (seconds)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1292
+msgid "The number of seconds before expiring the cache"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1297
+msgid "Order by entity id"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+msgid ""
+"Important! Select this if the table is not already sorted by entity id, "
+"else there is no guarantee that all events for each entity are returned."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1306
+msgid "Minimum leaf node event count"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1309
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:7
+#: superset/assets/javascripts/explore/stores/visTypes.js:23
+msgid "Time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:8
+#: superset/assets/javascripts/explore/stores/visTypes.js:24
+msgid "Time related form attributes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:15
+msgid "Datasource & Chart Type"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:36
+msgid "This section exposes ways to include snippets of SQL in your query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:48
+msgid "Advanced Analytics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:49
+msgid ""
+"This section contains options that allow for advanced analytical post "
+"processing of query results"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:64
+msgid ""
+"Filters are defined using comma delimited strings as in "
+"<US,FR,Other>Leave the value control empty to filter empty strings or "
+"nullsFor filters with comma in values, wrap them in single quotesas in "
+"<NY, 'Tahoe, CA', DC>"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:71
+msgid "Result Filters"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:72
+msgid ""
+"The filters to apply after post-aggregation.Leave the value control empty"
+" to filter empty strings or nulls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:84
+#: superset/assets/javascripts/explore/stores/visTypes.js:132
+#: superset/assets/javascripts/explore/stores/visTypes.js:163
+#: superset/assets/javascripts/explore/stores/visTypes.js:202
+#: superset/assets/javascripts/explore/stores/visTypes.js:235
+#: superset/assets/javascripts/explore/stores/visTypes.js:256
+#: superset/assets/javascripts/explore/stores/visTypes.js:393
+#: superset/assets/javascripts/explore/stores/visTypes.js:428
+#: superset/assets/javascripts/explore/stores/visTypes.js:447
+#: superset/assets/javascripts/explore/stores/visTypes.js:821
+msgid "Chart Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:104
+msgid "Breakdowns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:105
+msgid "Defines how each series is broken down"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:141
+#: superset/assets/javascripts/explore/stores/visTypes.js:211
+#: superset/assets/javascripts/explore/stores/visTypes.js:265
+msgid "Axes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:159
+msgid "Dual Axis Line Chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:169
+msgid "Y Axis 1"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:175
+msgid "Y Axis 2"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:183
+msgid "Left Axis Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:184
+msgid "Choose a metric for left axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:187
+msgid "Left Axis Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:286
+msgid "GROUP BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:287
+msgid "Use this section if you want a query that aggregates"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:294
+msgid "NOT GROUPED BY"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:295
+msgid "Use this section if you want to query atomic rows"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:302
+msgid "Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:453
+#: superset/assets/javascripts/explore/stores/visTypes.js:707
+msgid "Bubbles"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:545
+msgid "Histogram Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:553
+msgid "Numeric Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:554
+msgid "Select the numeric column to draw the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:557
+msgid "No of Bins"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:558
+msgid "Select number of bins for the histogram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:578
+msgid "Primary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:579
+msgid "The primary metric is used to define the arc segment sizes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:582
+msgid "Secondary Metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:583
+msgid ""
+"This secondary metric is used to define the color as a ratio against the "
+"primary metric. If the two metrics match, color is mapped level groups"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:588
+msgid "Hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:589
+msgid "This defines the level of the hierarchy"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:608
+#: superset/assets/javascripts/explore/stores/visTypes.js:635
+msgid "Source / Target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:609
+#: superset/assets/javascripts/explore/stores/visTypes.js:636
+msgid "Choose a source and a target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:626
+msgid "Force Layout"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:641
+msgid "Chord Diagram"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:655
+msgid "Choose a number format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:658
+msgid "Source"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:661
+msgid "Choose a source"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:664
+msgid "Target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:667
+msgid "Choose a target"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:686
+msgid "ISO 3166-1 codes of region/province/department"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:687
+msgid ""
+"It's ISO 3166-1 of your region/province/department in your table. (see "
+"documentation for list of ISO 3166-1)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:690
+#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:130
+msgid "Metric"
+msgstr "Metrica"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:691
+msgid "Metric to display bottom title"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:717
+msgid "Country Control"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:718
+msgid "3 letter code of the country"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:721
+msgid "Metric for color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:722
+msgid "Metric that defines the color of the country"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:725
+msgid "Bubble size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:726
+msgid "Metric that defines the size of the bubble"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:732
+msgid "Filter Box"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:745
+msgid "Filter controls"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:747
+msgid ""
+"The controls you want to filter on. Note that only columns checked as "
+"\"filterable\" will show up on this list."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:789
+msgid "Axis & Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:797
+msgid "Heatmap Options"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:817
+msgid "Horizon"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:843
+msgid "Points"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:850
+msgid "Labelling"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:857
+msgid "Visual Tweaks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:865
+msgid "Viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:875
+msgid "Longitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:876
+msgid "Column containing longitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:879
+msgid "Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:880
+msgid "Column containing latitude data"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:883
+msgid "Cluster label aggregator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:884
+msgid ""
+"Aggregate function applied to the list of points in each cluster to "
+"produce the cluster label."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:888
+msgid "Tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:889
+msgid "Show a tooltip when hovering over points and clusters describing the label"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:893
+msgid ""
+"One or many controls to group by. If grouping, latitude and longitude "
+"columns must be present."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:904
+msgid "Event definition"
+msgstr ""
 
-#: superset/viz.py:413
-msgid "Markup"
-msgstr "Marcatore"
+#: superset/assets/javascripts/explore/stores/visTypes.js:914
+msgid "Additional meta data"
+msgstr ""
 
-#: superset/viz.py:432
-msgid "Separator"
-msgstr "Separatore"
+#: superset/assets/javascripts/explore/stores/visTypes.js:922
+msgid "Column containing entity ids"
+msgstr ""
 
-#: superset/viz.py:448
-msgid "Word Cloud"
-msgstr "Cloud di Parole"
+#: superset/assets/javascripts/explore/stores/visTypes.js:923
+msgid "e.g., a \"user id\" column"
+msgstr ""
 
-#: superset/viz.py:471
-msgid "Treemap"
-msgstr "Treemap"
+#: superset/assets/javascripts/explore/stores/visTypes.js:926
+msgid "Column containing event names"
+msgstr ""
 
-#: superset/viz.py:497
-msgid "Calendar Heatmap"
-msgstr "Calendario di Intensità"
+#: superset/assets/javascripts/explore/stores/visTypes.js:934
+msgid "Event count limit"
+msgstr ""
 
-#: superset/viz.py:555
-msgid "Box Plot"
-msgstr "Box Plot"
+#: superset/assets/javascripts/explore/stores/visTypes.js:935
+msgid "The maximum number of events to return, equivalent to number of rows"
+msgstr ""
 
-#: superset/viz.py:644
-msgid "Bubble Chart"
-msgstr "Grafico a Bolle"
+#: superset/assets/javascripts/explore/stores/visTypes.js:938
+msgid "Meta data"
+msgstr ""
 
-#: superset/viz.py:693
-msgid "Bullet Chart"
-msgstr "Grafico a Proiettile"
+#: superset/assets/javascripts/explore/stores/visTypes.js:939
+msgid "Select any columns for meta data inspection"
+msgstr ""
 
-#: superset/viz.py:742
-msgid "Big Number with Trendline"
-msgstr "Numero Grande con Linea del Trend"
+#: superset/assets/javascripts/modules/superset.js:134
+msgid ""
+"The server could not be reached. You may want to verify your connection "
+"and try again."
+msgstr ""
 
-#: superset/viz.py:771
-msgid "Big Number"
-msgstr "Numero Grande"
+#: superset/assets/javascripts/modules/superset.js:137
+#, python-format
+msgid "An unknown error occurred. (Status: %s )"
+msgstr ""
 
-#: superset/viz.py:798
-msgid "Time Series - Line Chart"
-msgstr "Serie Temporali - Grafico Lineare"
+#: superset/assets/javascripts/modules/superset.js:162
+#, python-format
+msgid "Query timeout - visualization query are set to time out at %s seconds."
+msgstr ""
 
-#: superset/viz.py:925
-msgid "Time Series - Dual Axis Line Chart"
-msgstr "Serie Temporali - Grafico Lineare ad Assi Duali"
+#: superset/assets/javascripts/profile/components/App.jsx:24
+msgid "Favorites"
+msgstr ""
 
-#: superset/viz.py:1000
-msgid "Time Series - Bar Chart"
-msgstr "Serie Temporali - Grafico Barre"
+#: superset/assets/javascripts/profile/components/App.jsx:30
+msgid "Created Content"
+msgstr ""
 
-#: superset/viz.py:1008
-msgid "Time Series - Percent Change"
-msgstr "Serie Temporali - Cambiamento Percentuale"
+#: superset/assets/javascripts/profile/components/App.jsx:37
+msgid "Recent Activity"
+msgstr ""
 
-#: superset/viz.py:1016
-msgid "Time Series - Stacked"
-msgstr "Serie Temporali - Stacked"
+#: superset/assets/javascripts/profile/components/App.jsx:42
+msgid "Security & Access"
+msgstr ""
 
-#: superset/viz.py:1025
-msgid "Distribution - NVD3 - Pie Chart"
-msgstr "Distribuzione - NVD3 - Grafico Torta"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:33
+msgid "No slices"
+msgstr ""
 
-#: superset/viz.py:1043
-msgid "Histogram"
-msgstr "Istogramma"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:49
+msgid "No dashboards"
+msgstr ""
 
-#: superset/viz.py:1068
-msgid "Distribution - Bar Chart"
-msgstr "Distribuzione - Grafico Barre"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
+#: superset/assets/javascripts/profile/components/Favorites.jsx:59
+#: superset/templates/superset/welcome.html:20 superset/views/core.py:367
+#: superset/views/core.py:527
+msgid "Dashboards"
+msgstr "Elenco Dashboard"
 
-#: superset/viz.py:1135
-msgid "Sunburst"
-msgstr "Sunburst"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:403 superset/views/core.py:472
+msgid "Slices"
+msgstr "Slice"
 
-#: superset/viz.py:1168
-msgid "Sankey"
-msgstr "Sankey"
+#: superset/assets/javascripts/profile/components/Favorites.jsx:34
+msgid "No favorite slices yet, go click on stars!"
+msgstr ""
 
-#: superset/viz.py:1217
-msgid "Directed Force Layout"
-msgstr "Disposizione a Forza Diretta"
+#: superset/assets/javascripts/profile/components/Favorites.jsx:50
+msgid "No favorite dashboards yet, go click on stars!"
+msgstr ""
 
-#: superset/viz.py:1238
-msgid "Country Map"
-msgstr "Mappa della Nazione"
+#: superset/assets/javascripts/profile/components/Security.jsx:14
+msgid "Roles"
+msgstr ""
 
-#: superset/viz.py:1267
-msgid "World Map"
-msgstr "Mappa del Mondo"
+#: superset/assets/javascripts/profile/components/Security.jsx:23
+#: superset/views/core.py:279
+msgid "Databases"
+msgstr ""
 
-#: superset/viz.py:1317
-msgid "Filters"
-msgstr "Filtri"
+#: superset/assets/javascripts/profile/components/Security.jsx:34
+msgid "Datasources"
+msgstr ""
 
-#: superset/viz.py:1352
-msgid "iFrame"
-msgstr "iFrame"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+msgid "Profile picture provided by Gravatar"
+msgstr ""
 
-#: superset/viz.py:1369
-msgid "Parallel Coordinates"
-msgstr "Coordinate Parallele"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+msgid "joined"
+msgstr ""
 
-#: superset/viz.py:1394
-msgid "Heatmap"
-msgstr "Mappa di Intensità"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+msgid "id:"
+msgstr ""
 
-#: superset/viz.py:1445
-msgid "Horizon Charts"
-msgstr "Grafici d'orizzonte"
+#: superset/assets/visualizations/EventFlow.jsx:56
+msgid "Sorry, there appears to be no data"
+msgstr ""
 
-#: superset/viz.py:1456
-msgid "Mapbox"
-msgstr "Mapbox"
+#: superset/assets/visualizations/filter_box.jsx:88
+#, python-format
+msgid "Select [%s]"
+msgstr ""
 
-#: superset/connectors/druid/models.py:950
+#: superset/connectors/druid/models.py:970
 msgid "No data was returned."
 msgstr "Nessun dato restituito."
 
-#: superset/connectors/druid/views.py:36 superset/connectors/sqla/views.py:73
+#: superset/connectors/druid/views.py:28
+msgid "List Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:29
+msgid "Show Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:30
+msgid "Add Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:31
+msgid "Edit Druid Column"
+msgstr ""
+
+#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
 msgid "Column"
 msgstr "Colonna"
 
-#: superset/connectors/druid/views.py:37 superset/connectors/druid/views.py:96
-#: superset/connectors/sqla/views.py:119
+#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
+#: superset/connectors/sqla/views.py:133
 msgid "Type"
 msgstr "Tipo"
 
-#: superset/connectors/druid/views.py:38 superset/views/core.py:305
-#: superset/views/core.py:354
-msgid "Datasource"
-msgstr "Sorgente Dati"
-
-#: superset/connectors/druid/views.py:39 superset/connectors/sqla/views.py:76
+#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
 msgid "Groupable"
 msgstr "Raggruppabile"
 
-#: superset/connectors/druid/views.py:40 superset/connectors/sqla/views.py:77
+#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:85
 msgid "Filterable"
 msgstr "Filtrabile"
 
-#: superset/connectors/druid/views.py:41 superset/connectors/sqla/views.py:79
+#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:87
 msgid "Count Distinct"
 msgstr "Count Distinct"
 
-#: superset/connectors/druid/views.py:42 superset/connectors/sqla/views.py:80
+#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:88
 msgid "Sum"
 msgstr "Sum"
 
-#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
-msgid "Min"
-msgstr "Min"
-
-#: superset/connectors/druid/views.py:44 superset/connectors/sqla/views.py:82
-msgid "Max"
-msgstr "Max"
-
-#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:42
+#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
 msgid ""
 "Whether this column is exposed in the `Filters` section of the explore "
 "view."
@@ -286,7 +2586,23 @@ msgstr ""
 "Se questa colonna è esposta nella sezione `Filtri` della vista "
 "esplorazione."
 
-#: superset/connectors/druid/views.py:87 superset/connectors/sqla/views.py:101
+#: superset/connectors/druid/views.py:80
+msgid "List Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:81
+msgid "Show Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:82
+msgid "Add Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:83
+msgid "Edit Druid Metric"
+msgstr ""
+
+#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:115
 msgid ""
 "Whether the access to this metric is restricted to certain roles. Only "
 "roles with the permission 'metric access on XXX (the name of this "
@@ -296,70 +2612,92 @@ msgstr ""
 "ruoli con l'autorizzazione 'accesso metrico su XXX (il nome di questa "
 "metrica)' possono accedervi"
 
-#: superset/connectors/druid/views.py:93 superset/connectors/sqla/views.py:116
-msgid "Metric"
-msgstr "Metrica"
-
-#: superset/connectors/druid/views.py:94 superset/connectors/druid/views.py:204
-#: superset/connectors/sqla/views.py:75 superset/connectors/sqla/views.py:117
-#: superset/views/core.py:355
-msgid "Description"
-msgstr "Descrizione"
-
-#: superset/connectors/druid/views.py:95 superset/connectors/sqla/views.py:74
-#: superset/connectors/sqla/views.py:118
+#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
+#: superset/connectors/sqla/views.py:132
 msgid "Verbose Name"
 msgstr "Nome Completo"
 
-#: superset/connectors/druid/views.py:97 superset/views/core.py:534
+#: superset/connectors/druid/views.py:110 superset/views/core.py:554
 msgid "JSON"
 msgstr "JSON"
 
-#: superset/connectors/druid/views.py:98
+#: superset/connectors/druid/views.py:111
 msgid "Druid Datasource"
 msgstr "Sorgente Dati Druid"
 
-#: superset/connectors/druid/views.py:123
-#: superset/connectors/druid/views.py:203
+#: superset/connectors/druid/views.py:128
+msgid "List Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:129
+msgid "Show Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:130
+msgid "Add Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:131
+msgid "Edit Druid Cluster"
+msgstr ""
+
+#: superset/connectors/druid/views.py:142
+#: superset/connectors/druid/views.py:228
 msgid "Cluster"
 msgstr "Cluster"
 
-#: superset/connectors/druid/views.py:124
+#: superset/connectors/druid/views.py:143
 msgid "Coordinator Host"
 msgstr "Host Coordinatore"
 
-#: superset/connectors/druid/views.py:125
+#: superset/connectors/druid/views.py:144
 msgid "Coordinator Port"
 msgstr "Porta Coordinatore"
 
-#: superset/connectors/druid/views.py:126
+#: superset/connectors/druid/views.py:145
 msgid "Coordinator Endpoint"
 msgstr "Endpoint Coordinatore"
 
-#: superset/connectors/druid/views.py:127
+#: superset/connectors/druid/views.py:146
 msgid "Broker Host"
 msgstr "Host Broker"
 
-#: superset/connectors/druid/views.py:128
+#: superset/connectors/druid/views.py:147
 msgid "Broker Port"
 msgstr "Porta Broker"
 
-#: superset/connectors/druid/views.py:129
+#: superset/connectors/druid/views.py:148
 msgid "Broker Endpoint"
 msgstr "Endpoint Broker"
 
-#: superset/connectors/druid/views.py:144
+#: superset/connectors/druid/views.py:163
 msgid "Druid Clusters"
 msgstr ""
 
-#: superset/connectors/druid/views.py:147
-#: superset/connectors/druid/views.py:243
-#: superset/connectors/druid/views.py:282 superset/connectors/sqla/views.py:261
-#: superset/views/core.py:274
+#: superset/connectors/druid/views.py:166
+#: superset/connectors/druid/views.py:268
+#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:281
+#: superset/views/core.py:282
 msgid "Sources"
 msgstr ""
 
-#: superset/connectors/druid/views.py:172 superset/connectors/sqla/views.py:155
+#: superset/connectors/druid/views.py:173
+msgid "List Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:174
+msgid "Show Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:175
+msgid "Add Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:176
+msgid "Edit Druid Datasource"
+msgstr ""
+
+#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:175
 msgid ""
 "The list of slices associated with this table. By altering this "
 "datasource, you may change how these associated slices behave. Also note "
@@ -374,11 +2712,11 @@ msgstr ""
 "qualora si modifica un'origine dati. Se vuoi modificare l'origine dati "
 "per una slide, devi sovrascriverla dal 'vista di esplorazione'"
 
-#: superset/connectors/druid/views.py:180 superset/connectors/sqla/views.py:163
+#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:183
 msgid "Timezone offset (in hours) for this datasource"
 msgstr "Timezone offset (in ore) per questa sorgente dati"
 
-#: superset/connectors/druid/views.py:184
+#: superset/connectors/druid/views.py:209
 msgid ""
 "Time expression to use as a predicate when retrieving distinct values to "
 "populate the filter component. Only applies when `Enable Filter Select` "
@@ -391,7 +2729,7 @@ msgstr ""
 "inserisce `7 giorni fa`, l'elenco distinto di valori nel filtro verrà "
 "popolato in base al valore distinto della settimana passata"
 
-#: superset/connectors/druid/views.py:191 superset/connectors/sqla/views.py:185
+#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:205
 msgid ""
 "Whether to populate the filter's dropdown in the explore view's filter "
 "section with a list of distinct values fetched from the backend on the "
@@ -400,7 +2738,7 @@ msgstr ""
 "Usato per popolare la finestra a cascata dei filtri dall'elenco dei "
 "valori distinti prelevati dal backend al volo"
 
-#: superset/connectors/druid/views.py:195 superset/connectors/sqla/views.py:199
+#: superset/connectors/druid/views.py:220 superset/connectors/sqla/views.py:219
 msgid ""
 "Redirects to this endpoint when clicking on the datasource from the "
 "datasource list"
@@ -408,48 +2746,48 @@ msgstr ""
 "Rinvia a questo endpoint al clic sulla sorgente dati dall'elenco delle "
 "sorgenti dati"
 
-#: superset/connectors/druid/views.py:201 superset/connectors/sqla/views.py:192
+#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:212
 msgid "Associated Slices"
 msgstr "Slice associate"
 
-#: superset/connectors/druid/views.py:202
+#: superset/connectors/druid/views.py:227
 msgid "Data Source"
 msgstr "Sorgente Dati"
 
-#: superset/connectors/druid/views.py:205
+#: superset/connectors/druid/views.py:230
 msgid "Owner"
 msgstr "Proprietario"
 
-#: superset/connectors/druid/views.py:206
+#: superset/connectors/druid/views.py:231
 msgid "Is Hidden"
 msgstr "è nascosto"
 
-#: superset/connectors/druid/views.py:207 superset/connectors/sqla/views.py:197
+#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:217
 msgid "Enable Filter Select"
 msgstr "Abilita il filtro di Select"
 
-#: superset/connectors/druid/views.py:208
+#: superset/connectors/druid/views.py:233
 msgid "Default Endpoint"
 msgstr "Endpoint predefinito"
 
-#: superset/connectors/druid/views.py:209
+#: superset/connectors/druid/views.py:234
 msgid "Time Offset"
 msgstr "Offset temporale"
 
-#: superset/connectors/druid/views.py:210 superset/connectors/sqla/views.py:203
-#: superset/views/core.py:241 superset/views/core.py:351
+#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:223
+#: superset/views/core.py:249 superset/views/core.py:365
 msgid "Cache Timeout"
 msgstr "Cache Timeout"
 
-#: superset/connectors/druid/views.py:241
+#: superset/connectors/druid/views.py:266
 msgid "Druid Datasources"
 msgstr ""
 
-#: superset/connectors/druid/views.py:279
+#: superset/connectors/druid/views.py:304
 msgid "Refresh Druid Metadata"
 msgstr ""
 
-#: superset/connectors/sqla/models.py:388
+#: superset/connectors/sqla/models.py:386
 msgid ""
 "Datetime column not provided as part table configuration and is required "
 "by this type of chart"
@@ -457,11 +2795,27 @@ msgstr ""
 "la colonna Datetime è necessaria per questo tipo di grafico. Nella "
 "configurazione della tabella però non è stata definita"
 
-#: superset/connectors/sqla/models.py:393
+#: superset/connectors/sqla/models.py:391
 msgid "Metric '{}' is not valid"
 msgstr "Metrica '{}' non valida"
 
-#: superset/connectors/sqla/views.py:38
+#: superset/connectors/sqla/views.py:28
+msgid "List Columns"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:29
+msgid "Show Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:30
+msgid "Add Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:31
+msgid "Edit Column"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:46
 msgid ""
 "Whether to make this column available as a [Time Granularity] option, "
 "column has to be DATETIME or DATETIME-like"
@@ -469,7 +2823,7 @@ msgstr ""
 "Se rendere disponibile questa colonna come opzione [Time Granularity], la"
 " colonna deve essere di tipo DATETIME o simile"
 
-#: superset/connectors/sqla/views.py:45
+#: superset/connectors/sqla/views.py:53
 msgid ""
 "The data type that was inferred by the database. It may be necessary to "
 "input a type manually for expression-defined columns in some cases. In "
@@ -480,42 +2834,69 @@ msgstr ""
 "dall'espressione. Nella maggior parte dei casi gli utenti non hanno "
 "bisogno di fare questa modifica."
 
-#: superset/connectors/sqla/views.py:78 superset/connectors/sqla/views.py:121
-#: superset/connectors/sqla/views.py:193 superset/views/core.py:361
-msgid "Table"
-msgstr "Tabella"
-
-#: superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:91
 msgid "Expression"
 msgstr "Espressione"
 
-#: superset/connectors/sqla/views.py:84
+#: superset/connectors/sqla/views.py:92
 msgid "Is temporal"
 msgstr "è temporale"
 
-#: superset/connectors/sqla/views.py:85
+#: superset/connectors/sqla/views.py:93
 msgid "Datetime Format"
 msgstr "Formato Datetime"
 
-#: superset/connectors/sqla/views.py:86
+#: superset/connectors/sqla/views.py:94
 msgid "Database Expression"
 msgstr "Espressione del Database"
 
-#: superset/connectors/sqla/views.py:120
+#: superset/connectors/sqla/views.py:102
+msgid "List Metrics"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:103
+msgid "Show Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:104
+msgid "Add Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:105
+msgid "Edit Metric"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:134
 msgid "SQL Expression"
 msgstr "Espressione SQL"
 
-#: superset/connectors/sqla/views.py:164
+#: superset/connectors/sqla/views.py:152
+msgid "List Tables"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:153
+msgid "Show Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:154
+msgid "Add Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:155
+msgid "Edit Table"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:184
 msgid "Name of the table that exists in the source database"
 msgstr "Nome delle tabella esistente nella sorgente del database"
 
-#: superset/connectors/sqla/views.py:166
+#: superset/connectors/sqla/views.py:186
 msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
 msgstr ""
 "Schema, va utilizzato soltanto in alcuni database come Postgres, Redshift"
 " e DB2"
 
-#: superset/connectors/sqla/views.py:172
+#: superset/connectors/sqla/views.py:192
 msgid ""
 "This fields acts a Superset view, meaning that Superset will run a query "
 "against this string as a subquery."
@@ -523,7 +2904,7 @@ msgstr ""
 "Questo campo agisce come una vista Superset, il che vuol dire che "
 "Superset eseguirà una query su questa stringa come sotto-query."
 
-#: superset/connectors/sqla/views.py:176
+#: superset/connectors/sqla/views.py:196
 msgid ""
 "Predicate applied when fetching distinct value to populate the filter "
 "control component. Supports jinja template syntax. Applies only when "
@@ -534,31 +2915,31 @@ msgstr ""
 "jinja. È utilizzabile solo quando è abilitata l'opzione \"Abilita "
 "selezione filtro\"."
 
-#: superset/connectors/sqla/views.py:182
+#: superset/connectors/sqla/views.py:202
 msgid "Redirects to this endpoint when clicking on the table from the table list"
 msgstr "Reinvia a questo endpoint al clic sulla tabella dall'elenco delle tabelle"
 
-#: superset/connectors/sqla/views.py:194
+#: superset/connectors/sqla/views.py:214
 msgid "Changed By"
 msgstr "Modificato da"
 
-#: superset/connectors/sqla/views.py:195 superset/views/core.py:237
+#: superset/connectors/sqla/views.py:215 superset/views/core.py:245
 msgid "Database"
 msgstr "Database"
 
-#: superset/connectors/sqla/views.py:196 superset/views/core.py:239
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:247
 msgid "Last Changed"
 msgstr "Ultima Modifica"
 
-#: superset/connectors/sqla/views.py:198
+#: superset/connectors/sqla/views.py:218
 msgid "Schema"
 msgstr "Schema"
 
-#: superset/connectors/sqla/views.py:202
+#: superset/connectors/sqla/views.py:222
 msgid "Offset"
 msgstr "Offset"
 
-#: superset/connectors/sqla/views.py:235
+#: superset/connectors/sqla/views.py:255
 msgid ""
 "The table was created. As part of this two phase configuration process, "
 "you should now click the edit button by the new table to configure it."
@@ -567,7 +2948,7 @@ msgstr ""
 "fasi, è necessario andare sul pulsante di modifica della nuova tabella "
 "per configurarla."
 
-#: superset/connectors/sqla/views.py:259
+#: superset/connectors/sqla/views.py:279
 msgid "Tables"
 msgstr ""
 
@@ -600,19 +2981,10 @@ msgstr "Non hai i permessi per accedere alla/e sorgente/i dati: %(name)s."
 msgid "Request Permissions"
 msgstr "Richiesta di Permessi"
 
-#: superset/templates/superset/request_access.html:16
-msgid "Cancel"
-msgstr "Annulla"
-
 #: superset/templates/superset/welcome.html:10
 msgid "Welcome!"
 msgstr ""
 
-#: superset/templates/superset/welcome.html:20 superset/views/core.py:353
-#: superset/views/core.py:507
-msgid "Dashboards"
-msgstr "Elenco Dashboard"
-
 #: superset/templates/superset/models/database/macros.html:4
 msgid "Test Connection"
 msgstr "Testa la Connessione"
@@ -630,45 +3002,61 @@ msgstr ""
 msgid "Delete all Really?"
 msgstr ""
 
-#: superset/views/core.py:55
+#: superset/views/core.py:57
 msgid "This endpoint requires the `all_datasource_access` permission"
 msgstr ""
 
-#: superset/views/core.py:57
+#: superset/views/core.py:59
 msgid "The datasource seems to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:58
+#: superset/views/core.py:60
 msgid "The access requests seem to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:60
+#: superset/views/core.py:62
 msgid "The user seems to have been deleted"
 msgstr ""
 
-#: superset/views/core.py:61
+#: superset/views/core.py:63
 msgid "You don't have access to this datasource"
 msgstr ""
 
-#: superset/views/core.py:65
+#: superset/views/core.py:67
 #, python-format
 msgid ""
 "This view requires the database %(name)s or `all_datasource_access` "
 "permission"
 msgstr ""
 
-#: superset/views/core.py:70
+#: superset/views/core.py:72
 #, python-format
 msgid ""
 "This endpoint requires the datasource %(name)s, database or "
 "`all_datasource_access` permission"
 msgstr ""
 
-#: superset/views/core.py:205
+#: superset/views/core.py:175
+msgid "List Databases"
+msgstr ""
+
+#: superset/views/core.py:176
+msgid "Show Database"
+msgstr ""
+
+#: superset/views/core.py:177
+msgid "Add Database"
+msgstr ""
+
+#: superset/views/core.py:178
+msgid "Edit Database"
+msgstr ""
+
+#: superset/views/core.py:213
 msgid "Expose this DB in SQL Lab"
 msgstr "Esponi questo DB in SQL Lab"
 
-#: superset/views/core.py:206
+#: superset/views/core.py:214
 msgid ""
 "Allow users to run synchronous queries, this is the default and should "
 "work well for queries that can be executed within a web request scope "
@@ -678,7 +3066,7 @@ msgstr ""
 "predefinita e dovrebbe funzionare bene per query che possono essere "
 "eseguite con una richiesta web (<-1 minuto)"
 
-#: superset/views/core.py:210
+#: superset/views/core.py:218
 msgid ""
 "Allow users to run queries, against an async backend. This assumes that "
 "you have a Celery worker setup as well as a results backend."
@@ -687,11 +3075,11 @@ msgstr ""
 "Questo presuppone che si abbia una installazione funzionante di Celery "
 "nel backend."
 
-#: superset/views/core.py:214
+#: superset/views/core.py:222
 msgid "Allow CREATE TABLE AS option in SQL Lab"
 msgstr "Permetti l'opzione CREATE TABLE AS in SQL Lab"
 
-#: superset/views/core.py:215
+#: superset/views/core.py:223
 msgid ""
 "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
 " SQL Lab"
@@ -699,7 +3087,7 @@ msgstr ""
 "Permetti agli utenti di eseguire dichiarazioni diverse da SELECT (UPDATE,"
 " DELETE, CREATE, ...) nel SQL Lab"
 
-#: superset/views/core.py:219
+#: superset/views/core.py:227
 msgid ""
 "When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
 "table to be created in this schema"
@@ -707,77 +3095,89 @@ msgstr ""
 "Se si abilita l'opzione CREATE TABLE AS in SQL Lab, verrà forzata la "
 "creazione della tabella con questo schema"
 
-#: superset/views/core.py:233
+#: superset/views/core.py:241
 msgid "Expose in SQL Lab"
 msgstr "Esponi in SQL Lab"
 
-#: superset/views/core.py:234
+#: superset/views/core.py:242
 msgid "Allow CREATE TABLE AS"
 msgstr "Permetti CREATE TABLE AS"
 
-#: superset/views/core.py:235
+#: superset/views/core.py:243
 msgid "Allow DML"
 msgstr "Permetti DML"
 
-#: superset/views/core.py:236
+#: superset/views/core.py:244
 msgid "CTAS Schema"
 msgstr "Schema CTAS"
 
-#: superset/views/core.py:238 superset/views/core.py:352
-#: superset/views/core.py:454 superset/views/core.py:518
+#: superset/views/core.py:246 superset/views/core.py:366
+#: superset/views/core.py:474 superset/views/core.py:538
 msgid "Creator"
 msgstr "Creatore"
 
-#: superset/views/core.py:240
+#: superset/views/core.py:248
 msgid "SQLAlchemy URI"
 msgstr "URI SQLAlchemy"
 
-#: superset/views/core.py:242
+#: superset/views/core.py:250
 msgid "Extra"
 msgstr "Extra"
 
-#: superset/views/core.py:260
+#: superset/views/core.py:268
 msgid "Import Dashboards"
 msgstr ""
 
-#: superset/views/core.py:264 superset/views/core.py:2279
-#: superset/views/sql_lab.py:22
+#: superset/views/core.py:272 superset/views/core.py:2318
+#: superset/views/sql_lab.py:23
 msgid "Manage"
 msgstr ""
 
-#: superset/views/core.py:271
-msgid "Databases"
-msgstr ""
-
-#: superset/views/core.py:302 superset/views/core.py:531
+#: superset/views/core.py:310 superset/views/core.py:551
 msgid "User"
 msgstr "Utente"
 
-#: superset/views/core.py:303
+#: superset/views/core.py:311
 msgid "User Roles"
 msgstr "Ruoli Utente"
 
-#: superset/views/core.py:304
+#: superset/views/core.py:312
 msgid "Database URL"
 msgstr "URL del Database"
 
-#: superset/views/core.py:306
+#: superset/views/core.py:314
 msgid "Roles to grant"
 msgstr "Ruoli per l'accesso"
 
-#: superset/views/core.py:307
+#: superset/views/core.py:315
 msgid "Created On"
 msgstr "Creato il"
 
-#: superset/views/core.py:313
+#: superset/views/core.py:321
 msgid "Access requests"
 msgstr ""
 
-#: superset/views/core.py:315 superset/views/core.py:542
+#: superset/views/core.py:323 superset/views/core.py:562
 msgid "Security"
 msgstr ""
 
-#: superset/views/core.py:340
+#: superset/views/core.py:330
+msgid "List Slices"
+msgstr ""
+
+#: superset/views/core.py:331
+msgid "Show Slice"
+msgstr ""
+
+#: superset/views/core.py:332
+msgid "Add Slice"
+msgstr ""
+
+#: superset/views/core.py:333
+msgid "Edit Slice"
+msgstr ""
+
+#: superset/views/core.py:354
 msgid ""
 "These parameters are generated dynamically when clicking the save or "
 "overwrite button in the explore view. This JSON object is exposed here "
@@ -789,39 +3189,43 @@ msgstr ""
 "JSON è esposto qui per referenza e per utenti esperti che vogliono "
 "modificare parametri specifici."
 
-#: superset/views/core.py:345
+#: superset/views/core.py:359
 msgid "Duration (in seconds) of the caching timeout for this slice."
 msgstr "Durata (in secondi) per il timeout della cache per questa slice."
 
-#: superset/views/core.py:356
+#: superset/views/core.py:370
 msgid "Last Modified"
 msgstr "Ultima Modifica"
 
-#: superset/views/core.py:357 superset/views/core.py:453
+#: superset/views/core.py:371 superset/views/core.py:473
 msgid "Owners"
 msgstr "Proprietari"
 
-#: superset/views/core.py:358
+#: superset/views/core.py:372
 msgid "Parameters"
 msgstr "Parametri"
 
-#: superset/views/core.py:359 superset/views/core.py:401
+#: superset/views/core.py:373 superset/views/core.py:415
 msgid "Slice"
 msgstr "Slice"
 
-#: superset/views/core.py:360
-msgid "Name"
-msgstr "Nome"
+#: superset/views/core.py:432
+msgid "List Dashboards"
+msgstr ""
 
-#: superset/views/core.py:362
-msgid "Visualization Type"
-msgstr "Tipo di Visualizzazione"
+#: superset/views/core.py:433
+msgid "Show Dashboard"
+msgstr ""
 
-#: superset/views/core.py:389 superset/views/core.py:452
-msgid "Slices"
-msgstr "Slice"
+#: superset/views/core.py:434
+msgid "Add Dashboard"
+msgstr ""
+
+#: superset/views/core.py:435
+msgid "Edit Dashboard"
+msgstr ""
 
-#: superset/views/core.py:426
+#: superset/views/core.py:446
 msgid ""
 "This json object describes the positioning of the widgets in the "
 "dashboard. It is dynamically generated when adjusting the widgets size "
@@ -832,7 +3236,7 @@ msgstr ""
 "la dimensione usando la funzione di drag & drop nella vista della "
 "dashboard. "
 
-#: superset/views/core.py:431
+#: superset/views/core.py:451
 msgid ""
 "The css for individual dashboards can be altered here, or in the "
 "dashboard view where changes are immediately visible"
@@ -840,11 +3244,11 @@ msgstr ""
 "Il CSS di ogni singola dashboard può essere modificato qui, oppure nella "
 "vista della dashboard dove i cambiamenti sono visibili immediatamente"
 
-#: superset/views/core.py:435
+#: superset/views/core.py:455
 msgid "To get a readable URL for your dashboard"
 msgstr "ottenere una URL leggibile per la tua dashboard"
 
-#: superset/views/core.py:436
+#: superset/views/core.py:456
 msgid ""
 "This JSON object is generated dynamically when clicking the save or "
 "overwrite button in the dashboard view. It is exposed here for reference "
@@ -855,129 +3259,133 @@ msgstr ""
 "qui come riferimento e per gli utenti esperti che vogliono modificare "
 "parametri specifici."
 
-#: superset/views/core.py:441
+#: superset/views/core.py:461
 msgid "Owners is a list of users who can alter the dashboard."
 msgstr "Proprietari è una lista di utenti che può alterare la dashboard."
 
-#: superset/views/core.py:449 superset/views/core.py:516
+#: superset/views/core.py:469 superset/views/core.py:536
 msgid "Dashboard"
 msgstr "Dashboard"
 
-#: superset/views/core.py:450 superset/views/core.py:517
-msgid "Title"
-msgstr "Titolo"
-
-#: superset/views/core.py:451
+#: superset/views/core.py:471
 msgid "Slug"
 msgstr "Slug"
 
-#: superset/views/core.py:455 superset/views/core.py:519
-msgid "Modified"
-msgstr "Modificato"
-
-#: superset/views/core.py:456
+#: superset/views/core.py:476
 msgid "Position JSON"
 msgstr "Posizione del JSON"
 
-#: superset/views/core.py:457
-msgid "CSS"
-msgstr "CSS"
-
-#: superset/views/core.py:458
+#: superset/views/core.py:478
 msgid "JSON Metadata"
 msgstr "Metadati JSON"
 
-#: superset/views/core.py:459
+#: superset/views/core.py:479
 msgid "Underlying Tables"
 msgstr "Tabelle sottostanti"
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export"
 msgstr ""
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export dashboards?"
 msgstr ""
 
-#: superset/views/core.py:532
+#: superset/views/core.py:552
 msgid "Action"
 msgstr "Azione"
 
-#: superset/views/core.py:533
+#: superset/views/core.py:553
 msgid "dttm"
 msgstr "dttm"
 
-#: superset/views/core.py:540
+#: superset/views/core.py:560
 msgid "Action Log"
 msgstr ""
 
-#: superset/views/core.py:770
+#: superset/views/core.py:790
 msgid "Access was requested"
 msgstr ""
 
-#: superset/views/core.py:831
+#: superset/views/core.py:851
 #, python-format
 msgid ""
 "%(user)s was granted the role %(role)s that gives access to the "
 "%(datasource)s"
 msgstr ""
 
-#: superset/views/core.py:847
+#: superset/views/core.py:867
 #, python-format
 msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
 msgstr ""
 
-#: superset/views/core.py:856
+#: superset/views/core.py:876
 msgid "You have no permission to approve this request"
 msgstr ""
 
-#: superset/views/core.py:1589
+#: superset/views/core.py:1609
 msgid ""
 "Malformed request. slice_id or table_name and db_name arguments are "
 "expected"
 msgstr ""
 
-#: superset/views/core.py:1595
+#: superset/views/core.py:1615
 #, python-format
 msgid "Slice %(id)s not found"
 msgstr ""
 
-#: superset/views/core.py:1607
+#: superset/views/core.py:1627
 #, python-format
 msgid "Table %(t)s wasn't found in the database %(d)s"
 msgstr ""
 
-#: superset/views/core.py:1741
+#: superset/views/core.py:1761
 #, python-format
 msgid "Can't find User '%(name)s', please ask your admin to create one."
 msgstr ""
 
-#: superset/views/core.py:1748
+#: superset/views/core.py:1768
 #, python-format
 msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
 msgstr ""
 
-#: superset/views/core.py:2276
+#: superset/views/core.py:2315
 msgid "CSS Templates"
 msgstr ""
 
-#: superset/views/core.py:2286
+#: superset/views/core.py:2325
 msgid "SQL Editor"
 msgstr "Editor SQL"
 
-#: superset/views/core.py:2291 superset/views/core.py:2300
+#: superset/views/core.py:2330 superset/views/core.py:2339
 msgid "SQL Lab"
 msgstr ""
 
-#: superset/views/core.py:2295
+#: superset/views/core.py:2334
 msgid "Query Search"
 msgstr "Ricerca Query"
 
-#: superset/views/sql_lab.py:20
+#: superset/views/sql_lab.py:21
 msgid "Queries"
 msgstr ""
 
-#: superset/views/sql_lab.py:55
+#: superset/views/sql_lab.py:30
+msgid "List Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:31
+msgid "Show Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:32
+msgid "Add Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:33
+msgid "Edit Saved Query"
+msgstr ""
+
+#: superset/views/sql_lab.py:62
 msgid "Saved Queries"
 msgstr ""
 
diff --git a/superset/translations/utils.py b/superset/translations/utils.py
new file mode 100644
index 0000000..74a91a8
--- /dev/null
+++ b/superset/translations/utils.py
@@ -0,0 +1,33 @@
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
+import json
+import os
+
+# Global caching for JSON language packs
+ALL_LANGUAGE_PACKS = {'en': {}}
+
+DIR = os.path.dirname(os.path.abspath(__file__))
+
+
+def get_language_pack(locale):
+    """Get/cache a language pack
+
+    Returns the langugage pack from cache if it exists, caches otherwise
+
+    >>> get_language_pack('fr')['Dashboards']
+    "Tableaux de bords"
+    """
+    pack = ALL_LANGUAGE_PACKS.get(locale)
+    if not pack:
+        filename = DIR + '/{}/LC_MESSAGES/messages.json'.format(locale)
+        with open(filename) as f:
+            try:
+                pack = json.load(f)
+                ALL_LANGUAGE_PACKS[locale] = pack
+            except Exception:
+                # Assuming english, client side falls back on english
+                pass
+    return pack
diff --git a/superset/translations/zh/LC_MESSAGES/messages.json b/superset/translations/zh/LC_MESSAGES/messages.json
new file mode 100644
index 0000000..77fc770
--- /dev/null
+++ b/superset/translations/zh/LC_MESSAGES/messages.json
@@ -0,0 +1 @@
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=1; plural=0","lang":"zh"},"Time Column":["时间字段"],"second":["秒"],"minute":["分"],"hour":["小时"],"day":["天"],"week":["周"],"month":["月"],"quarter":["季度"],"year":["年"],"week_start_monday":["周一为一周开始"],"week_ending_saturday":["周日为一周开始"],"week_start_sunday":["周日为一周结束"],"5 minute":["5 分钟"],"half hour":["半小时"],"10 minute":["10 分钟"],"[Superset] Access to the datasource %(name)s was granted":["[Superset]  [...]
\ No newline at end of file
diff --git a/superset/translations/zh/LC_MESSAGES/messages.mo b/superset/translations/zh/LC_MESSAGES/messages.mo
index d35a0d6..3d7b00b 100644
Binary files a/superset/translations/zh/LC_MESSAGES/messages.mo and b/superset/translations/zh/LC_MESSAGES/messages.mo differ
diff --git a/superset/translations/zh/LC_MESSAGES/messages.po b/superset/translations/zh/LC_MESSAGES/messages.po
index 4c72d20..155b4cb 100644
--- a/superset/translations/zh/LC_MESSAGES/messages.po
+++ b/superset/translations/zh/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: 2017-06-19 11:56+0800\n"
+"POT-Creation-Date: 2017-07-31 11:46+0800\n"
 "PO-Revision-Date: 2016-05-01 23:07-0700\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: zh\n"
@@ -18,516 +18,2901 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.4.0\n"
 
-#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:225
-#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:317
-#: superset/db_engine_specs.py:362 superset/db_engine_specs.py:770
-#: superset/db_engine_specs.py:806 superset/db_engine_specs.py:838
-#: superset/db_engine_specs.py:884
+#: superset/assets/javascripts/explore/stores/controls.jsx:491
+#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
+#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
+#: superset/db_engine_specs.py:360 superset/db_engine_specs.py:810
+#: superset/db_engine_specs.py:846 superset/db_engine_specs.py:878
+#: superset/db_engine_specs.py:924 superset/db_engine_specs.py:961
 msgid "Time Column"
 msgstr "时间字段"
 
-#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:226
-#: superset/db_engine_specs.py:318 superset/db_engine_specs.py:363
-#: superset/db_engine_specs.py:771 superset/db_engine_specs.py:839
+#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
+#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:361
+#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:879
+#: superset/db_engine_specs.py:962
 msgid "second"
 msgstr "秒"
 
-#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:229
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
-#: superset/db_engine_specs.py:773 superset/db_engine_specs.py:807
-#: superset/db_engine_specs.py:841 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
+#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:363
+#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:881 superset/db_engine_specs.py:925
+#: superset/db_engine_specs.py:963
 msgid "minute"
 msgstr "分"
 
-#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:233
-#: superset/db_engine_specs.py:323 superset/db_engine_specs.py:367
-#: superset/db_engine_specs.py:779 superset/db_engine_specs.py:809
-#: superset/db_engine_specs.py:843 superset/db_engine_specs.py:891
+#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
+#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:365
+#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:849
+#: superset/db_engine_specs.py:883 superset/db_engine_specs.py:931
+#: superset/db_engine_specs.py:964
 msgid "hour"
 msgstr "小时"
 
-#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:238
-#: superset/db_engine_specs.py:270 superset/db_engine_specs.py:325
-#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:781
-#: superset/db_engine_specs.py:811 superset/db_engine_specs.py:845
-#: superset/db_engine_specs.py:893
+#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
+#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
+#: superset/db_engine_specs.py:367 superset/db_engine_specs.py:821
+#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:885
+#: superset/db_engine_specs.py:933 superset/db_engine_specs.py:965
 msgid "day"
 msgstr "天"
 
-#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:244
-#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:783
-#: superset/db_engine_specs.py:813 superset/db_engine_specs.py:847
+#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
+#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
+#: superset/db_engine_specs.py:369 superset/db_engine_specs.py:823
+#: superset/db_engine_specs.py:853 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:966
 msgid "week"
 msgstr "周"
 
-#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:273 superset/db_engine_specs.py:328
-#: superset/db_engine_specs.py:373 superset/db_engine_specs.py:785
-#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:849
-#: superset/db_engine_specs.py:895
+#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
+#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
+#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:825
+#: superset/db_engine_specs.py:855 superset/db_engine_specs.py:889
+#: superset/db_engine_specs.py:935 superset/db_engine_specs.py:967
 msgid "month"
 msgstr "月"
 
-#: superset/db_engine_specs.py:201 superset/db_engine_specs.py:248
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:375
-#: superset/db_engine_specs.py:787 superset/db_engine_specs.py:817
-#: superset/db_engine_specs.py:851 superset/db_engine_specs.py:897
+#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
+#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:373
+#: superset/db_engine_specs.py:827 superset/db_engine_specs.py:857
+#: superset/db_engine_specs.py:891 superset/db_engine_specs.py:937
+#: superset/db_engine_specs.py:968
 msgid "quarter"
 msgstr "季度"
 
-#: superset/db_engine_specs.py:202 superset/db_engine_specs.py:252
-#: superset/db_engine_specs.py:332 superset/db_engine_specs.py:789
-#: superset/db_engine_specs.py:819 superset/db_engine_specs.py:899
+#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
+#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:829
+#: superset/db_engine_specs.py:859 superset/db_engine_specs.py:939
+#: superset/db_engine_specs.py:969
 msgid "year"
 msgstr "年"
 
-#: superset/db_engine_specs.py:334
+#: superset/db_engine_specs.py:332
 msgid "week_start_monday"
 msgstr "周一为一周开始"
 
-#: superset/db_engine_specs.py:377 superset/db_engine_specs.py:853
+#: superset/db_engine_specs.py:375 superset/db_engine_specs.py:893
 msgid "week_ending_saturday"
 msgstr "周日为一周开始"
 
-#: superset/db_engine_specs.py:380 superset/db_engine_specs.py:856
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:896
 msgid "week_start_sunday"
 msgstr "周日为一周结束"
 
-#: superset/db_engine_specs.py:775 superset/db_engine_specs.py:887
+#: superset/db_engine_specs.py:815 superset/db_engine_specs.py:927
 msgid "5 minute"
 msgstr "5 分钟"
 
-#: superset/db_engine_specs.py:777
-msgid "half hour"
-msgstr "半小时"
+#: superset/db_engine_specs.py:817
+msgid "half hour"
+msgstr "半小时"
+
+#: superset/db_engine_specs.py:929
+msgid "10 minute"
+msgstr "10 分钟"
+
+#: superset/utils.py:472
+#, python-format
+msgid "[Superset] Access to the datasource %(name)s was granted"
+msgstr "[Superset] 允许访问数据源 %(name)s "
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:283
+#: superset/viz.py:312
+msgid "Table View"
+msgstr "表视图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:334
+#: superset/viz.py:368
+msgid "Pivot Table"
+msgstr "透视表"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:321
+#: superset/viz.py:423
+msgid "Markup"
+msgstr "标记"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:348
+#: superset/viz.py:442
+msgid "Separator"
+msgstr "分隔符"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:369
+#: superset/viz.py:458
+msgid "Word Cloud"
+msgstr "词汇云"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:383
+#: superset/viz.py:481
+msgid "Treemap"
+msgstr "树状图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:403
+#: superset/viz.py:507
+msgid "Calendar Heatmap"
+msgstr "时间热力图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:418
+#: superset/viz.py:565
+msgid "Box Plot"
+msgstr "箱线图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:437
+#: superset/viz.py:654
+msgid "Bubble Chart"
+msgstr "气泡图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:481
+#: superset/viz.py:704
+msgid "Bullet Chart"
+msgstr "子弹图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:497
+#: superset/viz.py:753
+msgid "Big Number with Trendline"
+msgstr "数字和趋势线"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:516
+#: superset/viz.py:782
+msgid "Big Number"
+msgstr "数字"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:21
+#: superset/assets/javascripts/explore/stores/visTypes.js:127
+#: superset/viz.py:809
+msgid "Time Series - Line Chart"
+msgstr "时间序列-折线图"
+
+#: superset/viz.py:936
+msgid "Time Series - Dual Axis Line Chart"
+msgstr "时间序列-双轴线图"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:22
+#: superset/assets/javascripts/explore/stores/visTypes.js:197
+#: superset/viz.py:1011
+msgid "Time Series - Bar Chart"
+msgstr "时间序列-柱状图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:230
+#: superset/viz.py:1019
+msgid "Time Series - Percent Change"
+msgstr "时间序列-百分比变化"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:251
+#: superset/viz.py:1027
+msgid "Time Series - Stacked"
+msgstr "时间序列-堆积图"
+
+#: superset/viz.py:1036
+msgid "Distribution - NVD3 - Pie Chart"
+msgstr "分布-饼图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:535
+#: superset/viz.py:1054
+msgid "Histogram"
+msgstr "直方图"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:19
+#: superset/assets/javascripts/explore/stores/visTypes.js:81
+#: superset/viz.py:1079
+msgid "Distribution - Bar Chart"
+msgstr "分布-柱状图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:565
+#: superset/viz.py:1146
+msgid "Sunburst"
+msgstr "环状层次图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:595
+#: superset/viz.py:1179
+msgid "Sankey"
+msgstr "蛇形图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:615
+#: superset/viz.py:1228 superset/viz.py:1249
+msgid "Directed Force Layout"
+msgstr "有向图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:672
+#: superset/viz.py:1282
+msgid "Country Map"
+msgstr "国家地图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:696
+#: superset/viz.py:1311
+msgid "World Map"
+msgstr "世界地图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:63
+#: superset/viz.py:1361
+msgid "Filters"
+msgstr "筛选"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:758
+#: superset/viz.py:1396
+msgid "iFrame"
+msgstr "内嵌框架"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:770
+#: superset/viz.py:1413
+msgid "Parallel Coordinates"
+msgstr "平行坐标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:786
+#: superset/viz.py:1438
+msgid "Heatmap"
+msgstr "热力图"
+
+#: superset/viz.py:1489
+msgid "Horizon Charts"
+msgstr "水平图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:830
+#: superset/viz.py:1500
+msgid "Mapbox"
+msgstr "箱图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:900
+#: superset/viz.py:1603
+msgid "Event flow"
+msgstr "事件流"
+
+#: superset/assets/javascripts/SqlLab/actions.js:55
+msgid "Your query was saved"
+msgstr "已保存你的查询"
+
+#: superset/assets/javascripts/SqlLab/actions.js:56
+msgid "Your query could not be saved"
+msgstr "不能保存你的查询"
+
+#: superset/assets/javascripts/SqlLab/actions.js:109
+msgid "Failed at retrieving results from the results backend"
+msgstr "解析后端数据失败"
+
+#: superset/assets/javascripts/SqlLab/actions.js:155
+msgid "Could not connect to server"
+msgstr "无法连接到服务器"
+
+#: superset/assets/javascripts/SqlLab/actions.js:160
+msgid "Your session timed out, please refresh your page and try again."
+msgstr "您的请求超时,请刷新您的页面,再试一次."
+
+#: superset/assets/javascripts/SqlLab/actions.js:179
+msgid "Query was stopped."
+msgstr "查询已停止."
+
+#: superset/assets/javascripts/SqlLab/actions.js:182
+msgid "Failed at stopping query."
+msgstr "停止查询失败"
+
+#: superset/assets/javascripts/SqlLab/actions.js:295
+#: superset/assets/javascripts/SqlLab/actions.js:308
+msgid "Error occurred while fetching table metadata"
+msgstr "获取表数据时发生错误"
+
+#: superset/assets/javascripts/SqlLab/actions.js:358
+msgid "shared query"
+msgstr "共享查询"
+
+#: superset/assets/javascripts/SqlLab/actions.js:366
+#: superset/assets/javascripts/SqlLab/actions.js:386
+msgid "The query couldn't be loaded"
+msgstr "无法加载查询"
+
+#: superset/assets/javascripts/SqlLab/actions.js:419
+msgid "An error occurred while creating the data source"
+msgstr "创建数据源时发生错误"
+
+#: superset/assets/javascripts/SqlLab/constants.js:29
+msgid "Pick a chart type!"
+msgstr "选择一个图表类型!"
+
+#: superset/assets/javascripts/SqlLab/constants.js:30
+msgid "To use this chart type you need at least one column flagged as a date"
+msgstr "您至少需要标记一个列作为日期来使用这个图表类型"
+
+#: superset/assets/javascripts/SqlLab/constants.js:31
+msgid "To use this chart type you need at least one dimension"
+msgstr "您至少需要设置一个维度来使用这个图表类型"
+
+#: superset/assets/javascripts/SqlLab/constants.js:32
+msgid "To use this chart type you need at least one aggregation function"
+msgstr "您至少需要一个聚合函数来使用这个图表类型"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
+#: superset/assets/javascripts/SqlLab/reducers.js:11
+msgid "Untitled Query"
+msgstr "无标题的查询"
+
+#: superset/assets/javascripts/SqlLab/reducers.js:44
+#, python-format
+msgid "Copy of %s"
+msgstr "复制 %s"
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:30
+msgid "share query"
+msgstr "共享查询"
+
+#: superset/assets/javascripts/SqlLab/components/CopyQueryTabUrl.jsx:33
+msgid "copy URL to clipboard"
+msgstr "将URL复制到剪贴板"
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:56
+msgid "Raw SQL"
+msgstr "原始SQL"
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:66
+msgid "Source SQL"
+msgstr "源SQL"
+
+#: superset/assets/javascripts/SqlLab/components/HighlightedSql.jsx:78
+#: superset/assets/javascripts/explore/stores/visTypes.js:31
+msgid "SQL"
+msgstr "SQL"
+
+#: superset/assets/javascripts/SqlLab/components/QueryHistory.jsx:28
+msgid "No query history yet..."
+msgstr "没有查询记录..."
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:106
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:66
+msgid "It seems you don't have access to any database"
+msgstr "您没有访问任何数据库"
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:154
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:90
+msgid "Search Results"
+msgstr "搜索结果"
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:160
+msgid "[From]-"
+msgstr "[开始日期]-"
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:171
+msgid "[To]-"
+msgstr "[截止日期]-"
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:181
+msgid "[Query Status]"
+msgstr "[查询状态]"
+
+#: superset/assets/javascripts/SqlLab/components/QuerySearch.jsx:190
+msgid "Search"
+msgstr "搜索"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:114
+msgid "Open in SQL Editor"
+msgstr "在SQL编辑器中打开"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:133
+msgid "view results"
+msgstr "查看结果"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:136
+msgid "Data preview"
+msgstr "预览数据"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:176
+msgid "Visualize the data out of this query"
+msgstr "可视化此查询中的数据"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:182
+msgid "Overwrite text in editor with a query on this table"
+msgstr "使用此表上的查询覆盖编辑器中的文本"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:188
+msgid "Run query in a new tab"
+msgstr "在新标签中运行查询"
+
+#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:193
+msgid "Remove query from log"
+msgstr "从日志中删除查询"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:68
+msgid ".CSV"
+msgstr ".CSV"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:79
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:235
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:274
+msgid "Visualize"
+msgstr "可视化选项"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:151
+msgid "Query was stopped"
+msgstr "查询已停止"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+#: superset/connectors/sqla/views.py:86 superset/connectors/sqla/views.py:135
+#: superset/connectors/sqla/views.py:213 superset/views/core.py:375
+msgid "Table"
+msgstr "表"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:194
+msgid "was created"
+msgstr "被创建"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:201
+msgid "Query in a new tab"
+msgstr "在新标签中查询"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:240
+msgid "Fetch data preview"
+msgstr "获取预览数据"
+
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:244
+msgid "The query returned no data"
+msgstr "该查询没有返回任何数据"
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Selected Query"
+msgstr "运行选择的查询"
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:19
+msgid "Run Query"
+msgstr "运行查询"
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+msgid "Run query asynchronously"
+msgstr "异步运行查询"
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:56
+msgid "Stop"
+msgstr "停止"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+msgid "Undefined"
+msgstr "未定义"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
+msgid "Label"
+msgstr "标签"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+msgid "Label for your query"
+msgstr "为你的查询设置标签"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
+#: superset/connectors/druid/views.py:107
+#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:131 superset/views/core.py:369
+msgid "Description"
+msgstr "描述"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+msgid "Write a description for your query"
+msgstr "为你的查询写一个描述"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:139
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:220
+msgid "Save"
+msgstr "保存"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/templates/superset/request_access.html:16
+msgid "Cancel"
+msgstr "取消"
+
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+msgid "Save Query"
+msgstr "保存查询"
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:80
+msgid "Run a query to display results here"
+msgstr "运行查询以在此显示结果"
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:85
+#, python-format
+msgid "Preview for %s"
+msgstr "预览 %s"
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:109
+msgid "Results"
+msgstr "结果"
+
+#: superset/assets/javascripts/SqlLab/components/SouthPane.jsx:115
+msgid "Query History"
+msgstr "查询历史"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:112
+#, python-format
+msgid ""
+"It appears that the number of rows in the query results displayed was "
+"limited on the server side to the %s limit."
+msgstr "显示的查询结果中的行数在服务器端限制为 %s 行"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:123
+msgid "Create table as with query results"
+msgstr "使用查询结果创建表"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:131
+msgid "new table name"
+msgstr "新表名"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:90
+msgid "Error while fetching table list"
+msgstr "获取表列表时出错"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:131
+msgid "Error while fetching schema list"
+msgstr "获取模式列表时出错"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:153
+msgid "Error while fetching database list"
+msgstr "获取数据库列表时出错"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:159
+msgid "Database:"
+msgstr "数据库:"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:163
+msgid "Select a database"
+msgstr "选择一个数据库"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:170
+#, python-format
+msgid "Select a schema (%s)"
+msgstr "选择一个模式 %s"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:175
+msgid "Schema:"
+msgstr "模式:"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:190
+#, python-format
+msgid "Add a table (%s)"
+msgstr "添加一个表 %s"
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:203
+msgid "Type to search ..."
+msgstr "类型搜索 ..."
+
+#: superset/assets/javascripts/SqlLab/components/SqlEditorLeftBar.jsx:226
+msgid "Reset State"
+msgstr "重置状态"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:105
+msgid "Enter a new title for the tab"
+msgstr "输入标签的新标题"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:124
+#, python-format
+msgid "Untitled Query %s"
+msgstr "无标题的查询 %s"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:170
+msgid "close tab"
+msgstr "关闭标签"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:173
+msgid "rename tab"
+msgstr "重命名标签"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "expand tool bar"
+msgstr "展开工具栏"
+
+#: superset/assets/javascripts/SqlLab/components/TabbedSqlEditors.jsx:181
+msgid "hide tool bar"
+msgstr "隐藏工具栏"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:75
+msgid "Copy partition query to clipboard"
+msgstr "将分区查询复制到剪贴板"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:94
+msgid "latest partition:"
+msgstr "最新的分区:"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:110
+msgid "Keys for table"
+msgstr "键表"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:119
+#, python-format
+msgid "View keys & indexes (%s)"
+msgstr "查看键和索引 (%s)"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:135
+msgid "Sort columns alphabetically"
+msgstr "按字母顺序排列列"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:136
+msgid "Original table column order"
+msgstr "原始表列顺序"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:146
+msgid "Copy SELECT statement to clipboard"
+msgstr "将查询语句复制到剪贴板"
+
+#: superset/assets/javascripts/SqlLab/components/TableElement.jsx:152
+msgid "Remove table preview"
+msgstr "删除表预览"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:20
+#: superset/assets/javascripts/explore/stores/visTypes.js:111
+msgid "Pie Chart"
+msgstr "饼图"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:85
+#, python-format
+msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
+msgstr "%s 作为列名不正确,请换别的列名(如在SELECT count(*)中查询)"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "AS my_alias"
+msgstr "作为我别的名字"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:86
+msgid "using only alphanumeric characters and underscores"
+msgstr "仅使用字母数字和下划线"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:160
+msgid "Creating a data source and popping a new tab"
+msgstr "创建数据源并弹出新标签"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:190
+msgid "No results available for this query"
+msgstr "此查询没有可用的结果"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:242
+msgid "Chart Type"
+msgstr "图表类型"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:245
+msgid "[Chart Type]"
+msgstr "[图表类型]"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:253
+msgid "Datasource Name"
+msgstr "数据源名称"
+
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:257
+msgid "datasource name"
+msgstr "数据源名称"
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:54
+msgid "Create a new slice"
+msgstr "创建一个新的切片"
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:59
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:65
+msgid "Choose a datasource"
+msgstr "选择一个数据源"
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:71
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:77
+msgid "Choose a visualization type"
+msgstr "选择一个可视化类型"
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:87
+msgid "Create new slice"
+msgstr "创建新的切片"
+
+#: superset/assets/javascripts/components/AsyncSelect.jsx:20
+msgid "Select ..."
+msgstr "选择 ..."
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:26
+msgid "Loaded data cached"
+msgstr "加载数据缓存"
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:28
+msgid "Loaded from cache"
+msgstr "从缓存加载"
+
+#: superset/assets/javascripts/components/CachedLabel.jsx:33
+msgid "Click to force-refresh"
+msgstr "点击强制刷新"
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+msgid "Copy to clipboard"
+msgstr "复制到剪贴板"
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+msgid "Not successful"
+msgstr "不成功"
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
+msgstr "对不起,您的浏览器不支持复制。使用Ctrl/Cmd + C!"
+
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+msgid "Copied!"
+msgstr "复制!"
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:12
+#: superset/views/core.py:470 superset/views/core.py:537
+msgid "Title"
+msgstr "标题"
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "click to edit title"
+msgstr "点击编辑标题"
+
+#: superset/assets/javascripts/components/EditableTitle.jsx:75
+msgid "You don't have the rights to alter this title."
+msgstr "你没有权限修改这个标题."
+
+#: superset/assets/javascripts/components/FaveStar.jsx:32
+#: superset/assets/javascripts/modules/superset.js:33
+msgid "Click to favorite/unfavorite"
+msgstr "点击收藏/取消收藏"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:36
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "You have unsaved changes."
+msgstr "您有未保存的更改。"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:53
+msgid "Click the"
+msgstr "点击"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:55
+msgid "button on the top right to save your changes."
+msgstr "右上角的按钮保存更改。"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:158
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
+msgstr "服务于数据缓存 %s .点击强制刷新."
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:163
+msgid "Click to force refresh"
+msgstr "点击强制刷新"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:337
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:93
+msgid "Error"
+msgstr "错误"
+
+#: superset/assets/javascripts/dashboard/Dashboard.jsx:338
+#, python-format
+msgid "Sorry, there was an error adding slices to this dashboard: %s"
+msgstr "抱歉,在仪表盘: %s 上添加切片出错"
+
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
+msgstr "仪表盘过滤器"
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
+#, python-format
+msgid "Checkout this dashboard: %s"
+msgstr "查看仪表盘: %s"
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
+msgid "Force refresh the whole dashboard"
+msgstr "强制刷新整个仪表盘"
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
+msgid "Edit this dashboard's properties"
+msgstr "编辑仪表盘的属性"
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+msgid "Load a template"
+msgstr "加载一个模板"
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+msgid "Load a CSS template"
+msgstr "加载一个CSS模板"
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
+#: superset/views/core.py:477
+msgid "CSS"
+msgstr "CSS"
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+msgid "Live CSS Editor"
+msgstr "实时CSS编辑器"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
+msgid "Don't refresh"
+msgstr "不刷新"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:20
+msgid "10 seconds"
+msgstr "10秒"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:21
+msgid "30 seconds"
+msgstr "30秒"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:22
+msgid "1 minute"
+msgstr "1分钟"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:23
+msgid "5 minutes"
+msgstr "5分钟"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:38
+msgid "Refresh Interval"
+msgstr "刷新间隔"
+
+#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:41
+msgid "Choose the refresh frequency for this dashboard"
+msgstr "选择仪表盘的刷新频率"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:58
+msgid "This dashboard was saved successfully."
+msgstr "成功保存此仪表盘。"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:64
+msgid "Sorry, there was an error saving this dashboard: "
+msgstr "对不起,这个仪表盘有一个错误保存:"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:94
+msgid "You must pick a name for the new dashboard"
+msgstr "您必须为新的仪表盘选择一个名称"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:108
+msgid "Save Dashboard"
+msgstr "保存仪表盘"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:116
+#, python-format
+msgid "Overwrite Dashboard [%s]"
+msgstr "覆盖仪表盘 [%s]"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+msgid "Save as:"
+msgstr "保存为:"
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:127
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:208
+msgid "[dashboard name]"
+msgstr "[仪表盘名称]"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:137
+#: superset/views/core.py:374
+msgid "Name"
+msgstr "名字"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:143
+msgid "Viz"
+msgstr "Viz"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:152
+#: superset/views/core.py:475 superset/views/core.py:539
+msgid "Modified"
+msgstr "已修改"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:162
+msgid "Add Slices"
+msgstr "添加切片"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:171
+msgid "Add a new slice to the dashboard"
+msgstr "向仪表盘添加一个新的切片"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:175
+msgid "Add Slices to Dashboard"
+msgstr "添加切片到仪表盘"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:23
+msgid "Move chart"
+msgstr "移动图表"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:26
+msgid "Force refresh data"
+msgstr "强制刷新数据"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:30
+msgid "Toggle chart description"
+msgstr "是否显示图表描述"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:40
+msgid "Edit chart"
+msgstr "编辑图表"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:45
+msgid "Explore chart"
+msgstr "检索图表"
+
+#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:50
+msgid "Remove chart from dashboard"
+msgstr "从仪表盘删除图表"
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:170
+#, python-format
+msgid "%s - untitled"
+msgstr "%s - 无标题"
+
+#: superset/assets/javascripts/explore/components/ChartContainer.jsx:276
+msgid "Edit slice properties"
+msgstr "编辑切片属性"
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:60
+msgid "Takes effect on chart immediatly"
+msgstr "立即生效"
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:56
+msgid "Error..."
+msgstr "错误..."
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:92
+msgid "Query"
+msgstr "查询"
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+msgid "Height"
+msgstr "高度"
+
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+msgid "Width"
+msgstr "宽度"
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+msgid "Export to .json"
+msgstr "导出为.json格式"
+
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+msgid "Export to .csv format"
+msgstr "导出为.csv格式"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:73
+msgid "Please enter a slice name"
+msgstr "请输入切片名称"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:88
+msgid "Please select a dashboard"
+msgstr "请选择一个仪表盘"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:96
+msgid "Please enter a dashboard name"
+msgstr "请输入仪表盘名称"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:134
+msgid "Save A Slice"
+msgstr "保存一个切片"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:155
+#, python-format
+msgid "Overwrite slice %s"
+msgstr "覆盖切片 %s"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
+msgid "Save as"
+msgstr "另存为"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:168
+msgid "[slice name]"
+msgstr "[切片名称]"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:181
+msgid "Do not add to a dashboard"
+msgstr "不要添加到仪表盘"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:189
+msgid "Add slice to existing dashboard"
+msgstr "将切片添加到现有仪表盘"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:203
+msgid "Add to new dashboard"
+msgstr "添加到新的仪表盘"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:229
+msgid "Save & go to dashboard"
+msgstr "保存并转到仪表盘"
+
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#, python-format
+msgid "Check out this slice: %s"
+msgstr "查看切片: %s"
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+msgid "`Min` value should be numeric or empty"
+msgstr "最小值应该是数字或空"
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+msgid "`Max` value should be numeric or empty"
+msgstr "最大值应该是数字或空"
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:89
+msgid "Min"
+msgstr "最小值"
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:90
+msgid "Max"
+msgstr "最大值"
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:118
+msgid "Filter value"
+msgstr "过滤值"
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select metric"
+msgstr "选择指标"
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:147
+msgid "Select column"
+msgstr "选择过滤字段"
+
+#: superset/assets/javascripts/explore/components/controls/Filter.jsx:159
+msgid "Select operator"
+msgstr "选择过滤方式"
+
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:70
+msgid "Add Filter"
+msgstr "增加过滤条件"
+
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#, python-format
+msgid "Select %s"
+msgstr "查询 %s"
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:62
+msgid "textarea"
+msgstr "文本区域"
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "Edit"
+msgstr "编辑"
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:80
+msgid "in modal"
+msgstr "在模型中"
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:90
+#: superset/assets/javascripts/explore/stores/controls.jsx:46
+msgid "edit"
+msgstr "编辑"
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:104
+msgid "Select a visualization type"
+msgstr "选择可视化类型"
+
+#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:114
+msgid "Search / Filter"
+msgstr "搜索/过滤"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:61
+#, python-format
+msgid "fetching dashboards failed for %s"
+msgstr "获取仪表盘 %s 失败"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:100
+msgid "Updating chart was stopped"
+msgstr "更新图表已停止"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:106
+#: superset/assets/javascripts/modules/superset.js:220
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr "在呈现可视化时发生了一个错误: %s"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:117
+msgid "Query timeout"
+msgstr "查询超时"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:118
+#, python-format
+msgid "- visualization query are set to timeout at %s seconds. "
+msgstr "- 可视化查询设置 %s 秒超时。"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:119
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is to large to be processed within"
+" the timeout range. If that is the case, we recommend that you summarize "
+"your data further."
+msgstr "也许您的数据增长,您的数据库处于异常负载状态,或者您在超时范围内要查询处理的数据过大。如果是这样,我们建议您进一步整理您的数据。"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:127
+msgid "Network error."
+msgstr "网络错误。"
+
+#: superset/assets/javascripts/explore/reducers/exploreReducer.js:150
+msgid "Failed to save slice"
+msgstr "无法保存切片"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:35
+#: superset/connectors/druid/views.py:45 superset/views/core.py:313
+#: superset/views/core.py:368
+msgid "Datasource"
+msgstr "数据源"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:55
+#: superset/views/core.py:376
+msgid "Visualization Type"
+msgstr "图表类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:57
+msgid "The type of visualization to display"
+msgstr "要显示的可视化类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:63
+msgid "Metrics"
+msgstr "指标"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:72
+#: superset/assets/javascripts/explore/stores/controls.jsx:90
+msgid "One or many metrics to display"
+msgstr "显示的一个或多个指标"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:79
+msgid ""
+"Bounds for the Y axis. When left empty, the bounds are dynamically "
+"defined based on the min/max of the data. Note that this feature will "
+"only expand the axis range. It won't narrow the data's extent."
+msgstr "Y轴的边界。当左侧空时,根据数据的min / max动态定义边界。注意,这个特性只会扩展轴的范围。它不会缩小数据的范围"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:88
+msgid "Ordering"
+msgstr "排序"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:100
+msgid "Choose the metric"
+msgstr "选择指标"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:113
+msgid "Right Axis Metric"
+msgstr "右轴指制"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:117
+msgid "Choose a metric for right axis"
+msgstr "为右轴选择一个指标"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:128
+msgid "Stacked Style"
+msgstr "堆叠样式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:140
+msgid "Linear Color Scheme"
+msgstr "线性颜色方案"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:153
+msgid "Normalize Across"
+msgstr "标准化"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:160
+msgid ""
+"Color will be rendered based on a ratio of the cell against the sum of "
+"across this criteria"
+msgstr "颜色将根据比例进行渲染"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:167
+msgid "Horizon Color Scale"
+msgstr "地平线色标"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:174
+msgid "Defines how the color are attributed."
+msgstr "定义颜色的属性。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:179
+msgid "Rendering"
+msgstr "渲染"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:185
+msgid ""
+"image-rendering CSS attribute of the canvas object that defines how the "
+"browser scales up the image"
+msgstr "浏览器渲染图片的方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:191
+msgid "XScale Interval"
+msgstr "X轴步长"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:194
+msgid "Number of steps to take between ticks when displaying the X scale"
+msgstr "X轴每个刻度的单位长度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:200
+msgid "YScale Interval"
+msgstr "Y轴步长"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
+msgid "Number of steps to take between ticks when displaying the Y scale"
+msgstr "Y轴每个刻度的单位长度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:209
+msgid "Include Time"
+msgstr "包括时间"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:210
+msgid "Whether to include the time granularity as defined in the time section"
+msgstr "是否包含在时间段中定义的时间粒度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:216
+msgid "Stacked Bars"
+msgstr "堆积"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:232
+msgid "Show Markers"
+msgstr "显示标记"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:235
+msgid "Show data points as circle markers on the lines"
+msgstr "将数据点显示为线上的圆圈标记"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:240
+msgid "Bar Values"
+msgstr "柱状图的值"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:248
+msgid "Sort Bars"
+msgstr "是否排序"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:250
+msgid "Sort bars by x labels."
+msgstr "根据X轴排序"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:263
+msgid "Extra Controls"
+msgstr "扩展控件"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:266
+msgid ""
+"Whether to show extra controls or not. Extra controls include things like"
+" making mulitBar charts stacked or side by side."
+msgstr "是否显示扩展控件,扩展的控件可以使mulitBar图堆叠或并排。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:273
+msgid "Reduce X ticks"
+msgstr "X轴自适应"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:276
+msgid ""
+"Reduces the number of X axis ticks to be rendered. If true, the x axis "
+"wont overflow and labels may be missing. If false, a minimum width will "
+"be applied to columns and the width may overflow into an horizontal "
+"scroll."
+msgstr "减少要渲染的X轴刻度的数量。 如果为真,则x轴不会溢出,标签可能会丢失。如果为false,则最小宽度将应用于列,并且宽度可能会溢出到水平滚动。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:285
+msgid "Include Series"
+msgstr "显示项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:288
+msgid "Include series name as an axis"
+msgstr "坐标上显示项目名称"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:293
+msgid "Color Metric"
+msgstr "颜色度量"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:295
+msgid "A metric to use for color"
+msgstr "颜色度量项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:302
+msgid "Country Name"
+msgstr "国家名"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:321
+msgid "The name of country that Superset should display"
+msgstr "Superset应显示的国家/地区的名称"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:325
+msgid "Country Field Type"
+msgstr "国家字段类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:333
+msgid ""
+"The country code standard that Superset should expect to find in the "
+"[country] column"
+msgstr "Superset期望在[country]列中找到国家/地区的代码标准"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:340
+msgid "Group by"
+msgstr "分组"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:342
+msgid "One or many controls to group by"
+msgstr "根据一个或多个字段分组"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:354
+#: superset/assets/javascripts/explore/stores/controls.jsx:368
+msgid "Columns"
+msgstr "列"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:370
+#: superset/assets/javascripts/explore/stores/controls.jsx:380
+#: superset/assets/javascripts/explore/stores/controls.jsx:390
+msgid "Columns to display"
+msgstr "显示列"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:378
+msgid "X"
+msgstr "X"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:388
+msgid "Y"
+msgstr "Y"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:399
+msgid "Origin"
+msgstr "起点"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:405
+msgid ""
+"Defines the origin where time buckets start, accepts natural dates as in "
+"`now`, `sunday` or `1970-01-01`"
+msgstr "定义时间起点,支持`now`, `sunday` 或 `1970-01-01`等"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
+msgid "Bottom marging, in pixels, allowing for more room for axis labels"
+msgstr "底部留白的像素大小"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:421
+msgid "Time Granularity"
+msgstr "时间粒度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:438
+msgid ""
+"The time granularity for the visualization. Note that you can type and "
+"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
+msgstr "图表时间粒度。可以使用`10 seconds`, `1 day`, `56 weeks`等"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:445
+msgid "Domain"
+msgstr "区域"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:448
+msgid "The time unit used for the grouping of blocks"
+msgstr "每个区域表示的时间段"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:453
+msgid "Subdomain"
+msgstr "方块"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:456
+msgid ""
+"The time unit for each block. Should be a smaller unit than "
+"domain_granularity. Should be larger or equal to Time Grain"
+msgstr "每个区域内方块表示的时间段。必须比区域时间段小,比时间粒度大。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:463
+msgid "Link Length"
+msgstr "链接长度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:466
+msgid "Link length in the force layout"
+msgstr "有向图中的链接长度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:472
+msgid "Charge"
+msgstr "缩放"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:486
+msgid "Charge in the force layout"
+msgstr "在有向图中缩放大小"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:494
+msgid ""
+"The time column for the visualization. Note that you can define arbitrary"
+" expression that return a DATETIME column in the table or. Also note that"
+" the filter below is applied against this column or expression"
+msgstr "图表中的时间字段。可以在表格编辑器中返回任意DATETIME列。另请注意,下面的过滤方式应用于此列或表达"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:506
+msgid "Time Grain"
+msgstr "时间粒度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:508
+msgid ""
+"The time granularity for the visualization. This applies a date "
+"transformation to alter your time column and defines a new time "
+"granularity. The options here are defined on a per database engine basis "
+"in the Superset source code."
+msgstr "图表中的时间粒度。用于替换时间字段默认的时间粒度。这些选项在Superset源代码中基于每个数据库引擎进行定义。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:521
+msgid "Resample Rule"
+msgstr "重新采样规则"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:524
+msgid "Pandas resample rule"
+msgstr "重新采样规则"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:530
+msgid "Resample How"
+msgstr "重采样方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:533
+msgid "Pandas resample how"
+msgstr "重采样方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:539
+msgid "Resample Fill Method"
+msgstr "插值方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:542
+msgid "Pandas resample fill method"
+msgstr "插值方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:548
+msgid "Since"
+msgstr "起始时间"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:560
+msgid ""
+"Timestamp from filter. This supports free form typing and natural "
+"language as in `1 day ago`, `28 days` or `3 years`"
+msgstr "时间范围。这支持`1天前`,`28天`或`3年`中的自由形式打字和自然语言"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:567
+msgid "Until"
+msgstr "结束时间"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:582
+msgid "Max Bubble Size"
+msgstr "气泡最大尺寸"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:590
+msgid "Whisker/outlier options"
+msgstr "非异常值选项"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:592
+msgid "Determines how whiskers and outliers are calculated."
+msgstr "计算最大/最小非异常值的方法"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:603
+msgid "Ratio"
+msgstr "比例"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:606
+msgid "Target aspect ratio for treemap tiles."
+msgstr "树状图中方块的比例"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:612
+#: superset/assets/javascripts/explore/stores/visTypes.js:510
+#: superset/assets/javascripts/explore/stores/visTypes.js:529
+#: superset/assets/javascripts/explore/stores/visTypes.js:654
+msgid "Number format"
+msgstr "数字格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:622
+msgid "Row limit"
+msgstr "行数上限"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:630
+msgid "Series limit"
+msgstr "项目上限"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:633
+msgid "Limits the number of time series that get displayed"
+msgstr "限制显示的时间序列数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:638
+msgid "Sort By"
+msgstr "排序"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:640
+msgid "Metric used to define the top series"
+msgstr "指标用于定义顶级项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:648
+msgid "Rolling"
+msgstr "滚动"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:651
+msgid ""
+"Defines a rolling window function to apply, works along with the "
+"[Periods] text box"
+msgstr "设置显示项目的数量上限"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:657
+msgid "Periods"
+msgstr "周期"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:659
+msgid ""
+"Defines the size of the rolling window function, relative to the time "
+"granularity selected"
+msgstr "滚动窗口大小,取值和时间粒度相关"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:665
+#: superset/assets/javascripts/explore/stores/visTypes.js:101
+msgid "Series"
+msgstr "项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:667
+msgid ""
+"Defines the grouping of entities. Each series is shown as a specific "
+"color on the chart and has a legend toggle"
+msgstr "定义分组实体。每个项目有特定的颜色和图例。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:677
+msgid "Entity"
+msgstr "实体"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:680
+msgid "This defines the element to be plotted on the chart"
+msgstr "这定义了要在图表上绘制的元素"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:688
+#: superset/assets/javascripts/explore/stores/visTypes.js:459
+msgid "X Axis"
+msgstr "X轴"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:689
+msgid "Metric assigned to the [X] axis"
+msgstr "X轴对应的项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:702
+#: superset/assets/javascripts/explore/stores/visTypes.js:466
+msgid "Y Axis"
+msgstr "Y轴"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:705
+msgid "Metric assigned to the [Y] axis"
+msgstr "Y轴对应的项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:716
+msgid "Bubble Size"
+msgstr "气泡大小"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:729
+msgid "URL"
+msgstr "URL"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:730
+msgid ""
+"The URL, this control is templated, so you can integrate {{ width }} "
+"and/or {{ height }} in your URL string."
+msgstr "URL,此字段是模板化的,因此您可以集成{{width}}和/或{{height}}您的URL字符串中。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:737
+msgid "X Axis Label"
+msgstr "X轴名称"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:744
+msgid "Y Axis Label"
+msgstr "\"Y轴名"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:751
+msgid "Custom WHERE clause"
+msgstr "WHERE语句"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:753
+msgid ""
+"The text in this box gets included in your query's WHERE clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr "语句将包含到WHERE子句中,并用AND连接到其他条件。您可以包括复杂的表达式,括号和其后面所支持的其他任何东西"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:761
+msgid "Custom HAVING clause"
+msgstr "HAVING语句"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:763
+msgid ""
+"The text in this box gets included in your query's HAVING clause, as an "
+"AND to other criteria. You can include complex expression, parenthesis "
+"and anything else supported by the backend it is directed towards."
+msgstr "语句将包含到WHERE子句中,并用AND连接到其他条件。您可以包括复杂的表达式,括号和其后面所支持的其他任何东西"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:771
+msgid "Comparison Period Lag"
+msgstr "滞后比较周期"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:773
+msgid "Based on granularity, number of time periods to compare against"
+msgstr "比较的时间周期,基于时间粒度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:778
+msgid "Comparison suffix"
+msgstr "后缀文字"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:779
+msgid "Suffix to apply after the percentage display"
+msgstr "百分比后面显示的文本"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:785
+msgid "Table Timestamp Format"
+msgstr "时间格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:790
+msgid "Timestamp Format"
+msgstr "时间格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:796
+msgid "Series Height"
+msgstr "项目高度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:799
+msgid "Pixel height of each series"
+msgstr "每个项目的像素高度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:805
+msgid "Page Length"
+msgstr "页面长度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:808
+msgid "Rows per page, 0 means no pagination"
+msgstr "每页行数,0表示无分页"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:814
+#: superset/assets/javascripts/explore/stores/controls.jsx:824
+msgid "X Axis Format"
+msgstr "X轴数值格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:834
+msgid "Y Axis Format"
+msgstr "Y轴数值格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:844
+msgid "Right Axis Format"
+msgstr "右轴格式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:852
+msgid "Markup Type"
+msgstr "标记类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+msgid "Pick your favorite markup language"
+msgstr "选择标记语言"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:862
+msgid "Rotation"
+msgstr "旋转"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:865
+msgid "Rotation to apply to words in the cloud"
+msgstr "词汇云中词语的旋转方式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:870
+msgid "Line Style"
+msgstr "线形"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:875
+msgid "Line interpolation as defined by d3.js"
+msgstr "定义线形"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:880
+msgid "Label Type"
+msgstr "标签类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:887
+msgid "What should be shown on the label?"
+msgstr "标签上应该显示什么?"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:892
+msgid "Code"
+msgstr "代码"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:893
+msgid "Put your code here"
+msgstr "输入代码"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:902
+msgid "Aggregation function"
+msgstr "聚合函数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:914
+msgid ""
+"Aggregate function to apply when pivoting and computing the total rows "
+"and columns"
+msgstr "透视时计算行和列的聚合函数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:921
+msgid "Font Size From"
+msgstr "最小字体"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:923
+msgid "Font size for the smallest value in the list"
+msgstr "列表中最小值的字体大小"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:929
+msgid "Font Size To"
+msgstr "最大字体"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:931
+msgid "Font size for the biggest value in the list"
+msgstr "列表中最大值的字体大小"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:936
+msgid "Instant Filtering"
+msgstr "即时过滤"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:940
+msgid ""
+"Whether to apply filters as they change, or wait forusers to hit an "
+"[Apply] button"
+msgstr "是否在更改过滤器时应用,或者等待用户点击[应用]按钮"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:947
+msgid "Range Filter"
+msgstr "区间过滤"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:950
+msgid "Whether to display the time range interactive selector"
+msgstr "是否显示时间区间选择控件"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:955
+msgid "Date Filter"
+msgstr "时间过滤器"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:957
+msgid "Whether to include a time filter"
+msgstr "是否包含时间过滤器"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:962
+msgid "Data Table"
+msgstr "明细表"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:964
+msgid "Whether to display the interactive data table"
+msgstr "是否显示明细表"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:969
+msgid "Search Box"
+msgstr "搜索框"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:972
+msgid "Whether to include a client side search box"
+msgstr "是否显示搜索框"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:977
+msgid "Table Filter"
+msgstr "表格过滤器"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:979
+msgid "Whether to apply filter when table cell is clicked"
+msgstr "是否应用表格过滤器"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:984
+msgid "Show Bubbles"
+msgstr "显示气泡"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:987
+msgid "Whether to display bubbles on top of countries"
+msgstr "是否在国家上显示气泡"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:992
+msgid "Legend"
+msgstr "图例"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:995
+msgid "Whether to display the legend (toggles)"
+msgstr "是否显示图例"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1000
+msgid "X bounds"
+msgstr "X轴边界"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1003
+msgid "Whether to display the min and max values of the X axis"
+msgstr "是否显示X轴的最大最小值"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1008
+msgid "Rich Tooltip"
+msgstr "详细信息"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1011
+msgid "The rich tooltip shows a list of all series for that point in time"
+msgstr "显示特定时间点的所有项目"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1017
+msgid "Y Log Scale"
+msgstr "Y轴对数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1020
+msgid "Use a log scale for the Y axis"
+msgstr "对Y轴使用对数刻度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1025
+msgid "X Log Scale"
+msgstr "X轴对数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1028
+msgid "Use a log scale for the X axis"
+msgstr "对X轴使用对数刻度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1033
+msgid "Donut"
+msgstr "环形图"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1036
+msgid "Do you want a donut or a pie?"
+msgstr "使用环形图或饼图"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+msgid "Put labels outside"
+msgstr "把标签放在外面"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1044
+msgid "Put the labels outside the pie?"
+msgstr "是否把标签放在饼图外面"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+msgid "Contribution"
+msgstr "贡献值"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1051
+msgid "Compute the contribution to the total"
+msgstr "在总和中的贡献值"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1056
+msgid "Period Ratio"
+msgstr "周期比"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1059
+msgid ""
+"[integer] Number of period to compare against, this is relative to the "
+"granularity selected"
+msgstr "[整数]要比较的周期数,和粒度有关"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1065
+msgid "Period Ratio Type"
+msgstr "周期比类型"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1068
+msgid ""
+"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
+"is (new-previous)"
+msgstr ""
+"`factor因子` 表示(new / previous),`growth`是((new / previous) - 1),'`value`是"
+"(new-previous)"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1074
+msgid "Time Shift"
+msgstr "时间飘移"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1076
+msgid ""
+"Overlay a timeseries from a relative time period. Expects relative time "
+"delta in natural language (example:  24 hours, 7 days, 56 weeks, 365 "
+"days)"
+msgstr "相关时间周期内的时间偏移。相对时间,如:  24 hours, 7 days, 56 weeks, 365 days"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1084
+msgid "Subheader"
+msgstr "子标题"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1085
+msgid "Description text that shows up below your Big Number"
+msgstr "在数字下显示的文本"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1091
+msgid "label"
+msgstr "标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1093
+msgid ""
+"`count` is COUNT(*) if a group by is used. Numerical columns will be "
+"aggregated with the aggregator. Non-numerical columns will be used to "
+"label points. Leave empty to get a count of points in each cluster."
+msgstr "如果使用group by,则`count`为COUNT(*)。数字列将与聚合器聚合。非数字列用于标记点。留空以获取每个群集中的点数。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1104
+msgid "Map Style"
+msgstr "图层样式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1114
+msgid "Base layer map style"
+msgstr "基本图层样式"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1120
+msgid "Clustering Radius"
+msgstr "簇半径"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1133
+msgid ""
+"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
+"to turn off clustering, but beware that a large number of points (>1000) "
+"will cause lag."
+msgstr "定义簇的半径大小(单位为像素)。0表示不显示簇。大量的点(>1000)会导致显示缓慢。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1140
+msgid "Point Radius"
+msgstr "点半径"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1142
+msgid ""
+"The radius of individual points (ones that are not in a cluster). Either "
+"a numerical column or `Auto`, which scales the point based on the largest"
+" cluster"
+msgstr "不在簇中点的半径。选择`Auto`时根据最大的簇自动调整。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1152
+msgid "Point Radius Unit"
+msgstr "点半径单位"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+msgid "The unit of measure for the specified point radius"
+msgstr "点半径的测量单位"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1160
+msgid "Opacity"
+msgstr "不透明度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1163
+msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
+msgstr "所有簇、点和标签的不透明度。在1和0之间。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1169
+msgid "Zoom"
+msgstr "縮放"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1172
+msgid "Zoom level of the map"
+msgstr "地图的缩放级别"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1178
+msgid "Default latitude"
+msgstr "默认纬度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1181
+msgid "Latitude of default viewport"
+msgstr "视窗默认纬度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1187
+msgid "Default longitude"
+msgstr "默认经度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1190
+msgid "Longitude of default viewport"
+msgstr "视窗默认经度"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1196
+msgid "Live render"
+msgstr "实时更新"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1198
+msgid "Points and clusters will update as viewport is being changed"
+msgstr "视窗发生改变时,点和簇实时更新"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1204
+msgid "RGB Color"
+msgstr "RGB 颜色"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1214
+msgid "The color for points and clusters in RGB"
+msgstr "RGB 分簇的颜色"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1219
+msgid "Ranges"
+msgstr "范围"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1221
+msgid "Ranges to highlight with shading"
+msgstr "范围用阴影高亮显示"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1226
+msgid "Range labels"
+msgstr "范围标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1228
+msgid "Labels for the ranges"
+msgstr "范围标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1233
+msgid "Markers"
+msgstr "标记"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1235
+msgid "List of values to mark with triangles"
+msgstr "用三角形标记的值列表"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1240
+msgid "Marker labels"
+msgstr "标记标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1242
+msgid "Labels for the markers"
+msgstr "标记标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1247
+msgid "Marker lines"
+msgstr "标记线"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1249
+msgid "List of values to mark with lines"
+msgstr "用线条标记的值列表"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1254
+msgid "Marker line labels"
+msgstr "线条标记的标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1256
+msgid "Labels for the marker lines"
+msgstr "标记线的标签"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1283
+msgid "Slice ID"
+msgstr "切片ID"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1285
+msgid "The id of the active slice"
+msgstr "切片的ID"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1290
+msgid "Cache Timeout (seconds)"
+msgstr "缓存超时(秒)"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1292
+msgid "The number of seconds before expiring the cache"
+msgstr "缓存到期之前的秒数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1297
+msgid "Order by entity id"
+msgstr "按实体ID排序"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+msgid ""
+"Important! Select this if the table is not already sorted by entity id, "
+"else there is no guarantee that all events for each entity are returned."
+msgstr "重要!如果表未按实体id排序,则选择此选项,否则无法保证返回每个实体的所有事件。"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1306
+msgid "Minimum leaf node event count"
+msgstr "最小叶子节点事件计数"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1309
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr "少于此事件数的叶子节点将隐藏在可视化中"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:7
+#: superset/assets/javascripts/explore/stores/visTypes.js:23
+msgid "Time"
+msgstr "时间"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:8
+#: superset/assets/javascripts/explore/stores/visTypes.js:24
+msgid "Time related form attributes"
+msgstr "时间相关的属性"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:15
+msgid "Datasource & Chart Type"
+msgstr "数据源和图表类型"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:36
+msgid "This section exposes ways to include snippets of SQL in your query"
+msgstr "用于定制SQL语句"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:48
+msgid "Advanced Analytics"
+msgstr "高级分析"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:49
+msgid ""
+"This section contains options that allow for advanced analytical post "
+"processing of query results"
+msgstr "允许对查询结果进行高级分析处理选项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:64
+msgid ""
+"Filters are defined using comma delimited strings as in "
+"<US,FR,Other>Leave the value control empty to filter empty strings or "
+"nullsFor filters with comma in values, wrap them in single quotesas in "
+"<NY, 'Tahoe, CA', DC>"
+msgstr ""
+"使用逗号分隔多个过滤条件,如`US,FR,Other`,将值控件留空以过滤空字符串或null,对于具有值的逗号的过滤器,将其包含在<NY, "
+"'Tahoe, CA', DC>中的单引号中"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:71
+msgid "Result Filters"
+msgstr "结果过滤器"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:72
+msgid ""
+"The filters to apply after post-aggregation.Leave the value control empty"
+" to filter empty strings or nulls"
+msgstr "在post-aggregation之后应用的过滤器。将值字段留空以过滤空字符串或空值"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:84
+#: superset/assets/javascripts/explore/stores/visTypes.js:132
+#: superset/assets/javascripts/explore/stores/visTypes.js:163
+#: superset/assets/javascripts/explore/stores/visTypes.js:202
+#: superset/assets/javascripts/explore/stores/visTypes.js:235
+#: superset/assets/javascripts/explore/stores/visTypes.js:256
+#: superset/assets/javascripts/explore/stores/visTypes.js:393
+#: superset/assets/javascripts/explore/stores/visTypes.js:428
+#: superset/assets/javascripts/explore/stores/visTypes.js:447
+#: superset/assets/javascripts/explore/stores/visTypes.js:821
+msgid "Chart Options"
+msgstr "图表选项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:104
+msgid "Breakdowns"
+msgstr "拆分"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:105
+msgid "Defines how each series is broken down"
+msgstr "定义每个项目的拆分方式"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:141
+#: superset/assets/javascripts/explore/stores/visTypes.js:211
+#: superset/assets/javascripts/explore/stores/visTypes.js:265
+msgid "Axes"
+msgstr "轴"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:159
+msgid "Dual Axis Line Chart"
+msgstr "双轴线图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:169
+msgid "Y Axis 1"
+msgstr "Y轴从1开始"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:175
+msgid "Y Axis 2"
+msgstr "Y轴从2开始"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:183
+msgid "Left Axis Metric"
+msgstr "左轴指标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:184
+msgid "Choose a metric for left axis"
+msgstr "为左轴选择指标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:187
+msgid "Left Axis Format"
+msgstr "左轴格式"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:286
+msgid "GROUP BY"
+msgstr "GROUP BY"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:287
+msgid "Use this section if you want a query that aggregates"
+msgstr "进行聚合查询"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:294
+msgid "NOT GROUPED BY"
+msgstr "NOT GROUPED BY"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:295
+msgid "Use this section if you want to query atomic rows"
+msgstr "进行原始行查询"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:302
+msgid "Options"
+msgstr "选项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:453
+#: superset/assets/javascripts/explore/stores/visTypes.js:707
+msgid "Bubbles"
+msgstr "气泡"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:545
+msgid "Histogram Options"
+msgstr "直方图选项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:553
+msgid "Numeric Column"
+msgstr "数字列"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:554
+msgid "Select the numeric column to draw the histogram"
+msgstr "选择数字列来绘制直方图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:557
+msgid "No of Bins"
+msgstr "不分组"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:558
+msgid "Select number of bins for the histogram"
+msgstr "选择直方图的数量"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:578
+msgid "Primary Metric"
+msgstr "主指标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:579
+msgid "The primary metric is used to define the arc segment sizes"
+msgstr "主要指标用来定义弧段尺寸"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:582
+msgid "Secondary Metric"
+msgstr "次指标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:583
+msgid ""
+"This secondary metric is used to define the color as a ratio against the "
+"primary metric. If the two metrics match, color is mapped level groups"
+msgstr "次指标用于定义相对主指标的颜色"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:588
+msgid "Hierarchy"
+msgstr "层次"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:589
+msgid "This defines the level of the hierarchy"
+msgstr "定义层次"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:608
+#: superset/assets/javascripts/explore/stores/visTypes.js:635
+msgid "Source / Target"
+msgstr "源/目标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:609
+#: superset/assets/javascripts/explore/stores/visTypes.js:636
+msgid "Choose a source and a target"
+msgstr "选择源和目标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:626
+msgid "Force Layout"
+msgstr "有向图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:641
+msgid "Chord Diagram"
+msgstr "弦图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:655
+msgid "Choose a number format"
+msgstr "选择数字格式"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:658
+msgid "Source"
+msgstr "源"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:661
+msgid "Choose a source"
+msgstr "选择源"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:664
+msgid "Target"
+msgstr "目标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:667
+msgid "Choose a target"
+msgstr "选择目标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:686
+msgid "ISO 3166-1 codes of region/province/department"
+msgstr "区域/省/部门的ISO 3166-1规范"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:687
+msgid ""
+"It's ISO 3166-1 of your region/province/department in your table. (see "
+"documentation for list of ISO 3166-1)"
+msgstr "您的地区/省/部门在您的表中符合ISO 3166-1规范。(参见ISO 3166-1的规范文件)"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:690
+#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:130
+msgid "Metric"
+msgstr "度量"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:691
+msgid "Metric to display bottom title"
+msgstr "显示底部标题的指标"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:717
+msgid "Country Control"
+msgstr "国家控件"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:718
+msgid "3 letter code of the country"
+msgstr "国家的3个字母代码"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:721
+msgid "Metric for color"
+msgstr "色彩度量项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:722
+msgid "Metric that defines the color of the country"
+msgstr "国家颜色表示的统计项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:725
+msgid "Bubble size"
+msgstr "气泡大小"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:726
+msgid "Metric that defines the size of the bubble"
+msgstr "气泡大小表示的度量项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:732
+msgid "Filter Box"
+msgstr "提示器"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:745
+msgid "Filter controls"
+msgstr "过滤器控件"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:747
+msgid ""
+"The controls you want to filter on. Note that only columns checked as "
+"\"filterable\" will show up on this list."
+msgstr "您要过滤的控件。注意,只有被检查为\"filterable\"的列才会出现在这个列表中。"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:789
+msgid "Axis & Metrics"
+msgstr "轴和度量"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:797
+msgid "Heatmap Options"
+msgstr "热力图选项"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:817
+msgid "Horizon"
+msgstr "热力图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:843
+msgid "Points"
+msgstr "点"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:850
+msgid "Labelling"
+msgstr "标记"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:857
+msgid "Visual Tweaks"
+msgstr "视觉调整"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:865
+msgid "Viewport"
+msgstr "视图"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:875
+msgid "Longitude"
+msgstr "经度"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:876
+msgid "Column containing longitude data"
+msgstr "表示经度的列"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:879
+msgid "Latitude"
+msgstr "纬度"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:880
+msgid "Column containing latitude data"
+msgstr "表示纬度的列"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:883
+msgid "Cluster label aggregator"
+msgstr "聚合标签"
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:884
+msgid ""
+"Aggregate function applied to the list of points in each cluster to "
+"produce the cluster label."
+msgstr "聚合函数用于集群标签"
 
-#: superset/db_engine_specs.py:889
-msgid "10 minute"
-msgstr ""
+#: superset/assets/javascripts/explore/stores/visTypes.js:888
+msgid "Tooltip"
+msgstr "提示"
 
-#: superset/utils.py:472
-#, python-format
-msgid "[Superset] Access to the datasource %(name)s was granted"
-msgstr ""
+#: superset/assets/javascripts/explore/stores/visTypes.js:889
+msgid "Show a tooltip when hovering over points and clusters describing the label"
+msgstr "鼠标放在集群上时显示的提示信息"
 
-#: superset/viz.py:311
-msgid "Table View"
-msgstr "表视图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:893
+msgid ""
+"One or many controls to group by. If grouping, latitude and longitude "
+"columns must be present."
+msgstr "一个或多个控件组合。如果分组,纬度和经度列必须存在。"
 
-#: superset/viz.py:364
-msgid "Pivot Table"
-msgstr "透视表"
+#: superset/assets/javascripts/explore/stores/visTypes.js:904
+msgid "Event definition"
+msgstr "事件定义"
 
-#: superset/viz.py:413
-msgid "Markup"
-msgstr "标记"
+#: superset/assets/javascripts/explore/stores/visTypes.js:914
+msgid "Additional meta data"
+msgstr "其他元数据"
 
-#: superset/viz.py:432
-msgid "Separator"
-msgstr "分隔符"
+#: superset/assets/javascripts/explore/stores/visTypes.js:922
+msgid "Column containing entity ids"
+msgstr "包含实体ID的列"
 
-#: superset/viz.py:448
-msgid "Word Cloud"
-msgstr "词汇云"
+#: superset/assets/javascripts/explore/stores/visTypes.js:923
+msgid "e.g., a \"user id\" column"
+msgstr "例如,`用户ID`列"
 
-#: superset/viz.py:471
-msgid "Treemap"
-msgstr "树状图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:926
+msgid "Column containing event names"
+msgstr "包含事件名称的列"
 
-#: superset/viz.py:497
-msgid "Calendar Heatmap"
-msgstr "时间热力图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:934
+msgid "Event count limit"
+msgstr "事件计数限制"
 
-#: superset/viz.py:555
-msgid "Box Plot"
-msgstr "箱线图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:935
+msgid "The maximum number of events to return, equivalent to number of rows"
+msgstr "返回事件的最大数目,等于行数"
 
-#: superset/viz.py:644
-msgid "Bubble Chart"
-msgstr "气泡图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:938
+msgid "Meta data"
+msgstr "元数据"
 
-#: superset/viz.py:693
-msgid "Bullet Chart"
-msgstr "子弹图"
+#: superset/assets/javascripts/explore/stores/visTypes.js:939
+msgid "Select any columns for meta data inspection"
+msgstr "选择任何列进行元数据检查"
 
-#: superset/viz.py:742
-msgid "Big Number with Trendline"
-msgstr "数字和趋势线"
+#: superset/assets/javascripts/modules/superset.js:134
+msgid ""
+"The server could not be reached. You may want to verify your connection "
+"and try again."
+msgstr "服务器无法成功连接.您可能需要验证您的连接并再次尝试。"
 
-#: superset/viz.py:771
-msgid "Big Number"
-msgstr "数字"
+#: superset/assets/javascripts/modules/superset.js:137
+#, python-format
+msgid "An unknown error occurred. (Status: %s )"
+msgstr "一个未知的错误发生.(状态: %s )"
 
-#: superset/viz.py:798
-msgid "Time Series - Line Chart"
-msgstr "时间序列-折线图"
+#: superset/assets/javascripts/modules/superset.js:162
+#, python-format
+msgid "Query timeout - visualization query are set to time out at %s seconds."
+msgstr "查询超时 - 可视化查询设置为超时 %s 秒."
 
-#: superset/viz.py:925
-msgid "Time Series - Dual Axis Line Chart"
-msgstr "时间序列-双轴线图"
+#: superset/assets/javascripts/profile/components/App.jsx:24
+msgid "Favorites"
+msgstr "收藏"
 
-#: superset/viz.py:1000
-msgid "Time Series - Bar Chart"
-msgstr "时间序列-柱状图"
+#: superset/assets/javascripts/profile/components/App.jsx:30
+msgid "Created Content"
+msgstr "创建内容"
 
-#: superset/viz.py:1008
-msgid "Time Series - Percent Change"
-msgstr "时间序列-百分比变化"
+#: superset/assets/javascripts/profile/components/App.jsx:37
+msgid "Recent Activity"
+msgstr "近期活动"
 
-#: superset/viz.py:1016
-msgid "Time Series - Stacked"
-msgstr "时间序列-堆积图"
+#: superset/assets/javascripts/profile/components/App.jsx:42
+msgid "Security & Access"
+msgstr "安全 & 访问"
 
-#: superset/viz.py:1025
-msgid "Distribution - NVD3 - Pie Chart"
-msgstr "分布-饼图"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:33
+msgid "No slices"
+msgstr "没有切片"
 
-#: superset/viz.py:1043
-msgid "Histogram"
-msgstr "直方图"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:49
+msgid "No dashboards"
+msgstr "没有仪表盘"
 
-#: superset/viz.py:1068
-msgid "Distribution - Bar Chart"
-msgstr "分布-柱状图"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
+#: superset/assets/javascripts/profile/components/Favorites.jsx:59
+#: superset/templates/superset/welcome.html:20 superset/views/core.py:367
+#: superset/views/core.py:527
+msgid "Dashboards"
+msgstr "看板"
 
-#: superset/viz.py:1135
-msgid "Sunburst"
-msgstr "环状层次图"
+#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:403 superset/views/core.py:472
+msgid "Slices"
+msgstr "切片"
 
-#: superset/viz.py:1168
-msgid "Sankey"
-msgstr "蛇形图"
+#: superset/assets/javascripts/profile/components/Favorites.jsx:34
+msgid "No favorite slices yet, go click on stars!"
+msgstr "没有收藏的切片,去点击星星收藏!"
 
-#: superset/viz.py:1217
-msgid "Directed Force Layout"
-msgstr "有向图"
+#: superset/assets/javascripts/profile/components/Favorites.jsx:50
+msgid "No favorite dashboards yet, go click on stars!"
+msgstr "没有收藏的仪表盘,去点击星星收藏!"
 
-#: superset/viz.py:1238
-msgid "Country Map"
-msgstr ""
+#: superset/assets/javascripts/profile/components/Security.jsx:14
+msgid "Roles"
+msgstr "角色"
 
-#: superset/viz.py:1267
-msgid "World Map"
-msgstr "世界地图"
+#: superset/assets/javascripts/profile/components/Security.jsx:23
+#: superset/views/core.py:279
+msgid "Databases"
+msgstr "数据库"
 
-#: superset/viz.py:1317
-msgid "Filters"
-msgstr "筛选"
+#: superset/assets/javascripts/profile/components/Security.jsx:34
+msgid "Datasources"
+msgstr "数据源"
 
-#: superset/viz.py:1352
-msgid "iFrame"
-msgstr "内嵌框架"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+msgid "Profile picture provided by Gravatar"
+msgstr "Gravatar提供的个人资料图片"
 
-#: superset/viz.py:1369
-msgid "Parallel Coordinates"
-msgstr "平行坐标"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+msgid "joined"
+msgstr "加入"
 
-#: superset/viz.py:1394
-msgid "Heatmap"
-msgstr "热力图"
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+msgid "id:"
+msgstr "id:"
 
-#: superset/viz.py:1445
-msgid "Horizon Charts"
-msgstr "水平图"
+#: superset/assets/visualizations/EventFlow.jsx:56
+msgid "Sorry, there appears to be no data"
+msgstr "对不起,似乎没有数据"
 
-#: superset/viz.py:1456
-msgid "Mapbox"
-msgstr "箱图"
+#: superset/assets/visualizations/filter_box.jsx:88
+#, python-format
+msgid "Select [%s]"
+msgstr "选择 [%s]"
 
-#: superset/connectors/druid/models.py:950
+#: superset/connectors/druid/models.py:970
 msgid "No data was returned."
 msgstr "没有数据"
 
-#: superset/connectors/druid/views.py:36 superset/connectors/sqla/views.py:73
+#: superset/connectors/druid/views.py:28
+msgid "List Druid Column"
+msgstr "Druid列的列表"
+
+#: superset/connectors/druid/views.py:29
+msgid "Show Druid Column"
+msgstr "显示Druid列"
+
+#: superset/connectors/druid/views.py:30
+msgid "Add Druid Column"
+msgstr "添加Druid列"
+
+#: superset/connectors/druid/views.py:31
+msgid "Edit Druid Column"
+msgstr "编辑Druid列"
+
+#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
 msgid "Column"
 msgstr "列"
 
-#: superset/connectors/druid/views.py:37 superset/connectors/druid/views.py:96
-#: superset/connectors/sqla/views.py:119
+#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
+#: superset/connectors/sqla/views.py:133
 msgid "Type"
 msgstr "类型"
 
-#: superset/connectors/druid/views.py:38 superset/views/core.py:305
-#: superset/views/core.py:354
-msgid "Datasource"
-msgstr "数据源"
-
-#: superset/connectors/druid/views.py:39 superset/connectors/sqla/views.py:76
+#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:84
 msgid "Groupable"
 msgstr "可分组"
 
-#: superset/connectors/druid/views.py:40 superset/connectors/sqla/views.py:77
+#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:85
 msgid "Filterable"
 msgstr "可筛选"
 
-#: superset/connectors/druid/views.py:41 superset/connectors/sqla/views.py:79
+#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:87
 msgid "Count Distinct"
 msgstr "计数"
 
-#: superset/connectors/druid/views.py:42 superset/connectors/sqla/views.py:80
+#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:88
 msgid "Sum"
 msgstr "求和"
 
-#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:81
-msgid "Min"
-msgstr "最小值"
-
-#: superset/connectors/druid/views.py:44 superset/connectors/sqla/views.py:82
-msgid "Max"
-msgstr "最大值"
-
-#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:42
+#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:50
 msgid ""
 "Whether this column is exposed in the `Filters` section of the explore "
 "view."
-msgstr ""
+msgstr "该列是否在浏览视图的`过滤器`部分显示。"
+
+#: superset/connectors/druid/views.py:80
+msgid "List Druid Metric"
+msgstr "Druid指标列表"
+
+#: superset/connectors/druid/views.py:81
+msgid "Show Druid Metric"
+msgstr "显示Druid指标"
+
+#: superset/connectors/druid/views.py:82
+msgid "Add Druid Metric"
+msgstr "添加Druid指标"
+
+#: superset/connectors/druid/views.py:83
+msgid "Edit Druid Metric"
+msgstr "编辑Druid指标"
 
-#: superset/connectors/druid/views.py:87 superset/connectors/sqla/views.py:101
+#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:115
 msgid ""
 "Whether the access to this metric is restricted to certain roles. Only "
 "roles with the permission 'metric access on XXX (the name of this "
 "metric)' are allowed to access this metric"
 msgstr "是否访问受限。只有有权限的用户才能访问。"
 
-#: superset/connectors/druid/views.py:93 superset/connectors/sqla/views.py:116
-msgid "Metric"
-msgstr "度量"
-
-#: superset/connectors/druid/views.py:94 superset/connectors/druid/views.py:204
-#: superset/connectors/sqla/views.py:75 superset/connectors/sqla/views.py:117
-#: superset/views/core.py:355
-msgid "Description"
-msgstr "描述"
-
-#: superset/connectors/druid/views.py:95 superset/connectors/sqla/views.py:74
-#: superset/connectors/sqla/views.py:118
+#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:82
+#: superset/connectors/sqla/views.py:132
 msgid "Verbose Name"
 msgstr "全称"
 
-#: superset/connectors/druid/views.py:97 superset/views/core.py:534
+#: superset/connectors/druid/views.py:110 superset/views/core.py:554
 msgid "JSON"
-msgstr ""
+msgstr "JSON"
 
-#: superset/connectors/druid/views.py:98
+#: superset/connectors/druid/views.py:111
 msgid "Druid Datasource"
 msgstr "Druid数据源"
 
-#: superset/connectors/druid/views.py:123
-#: superset/connectors/druid/views.py:203
+#: superset/connectors/druid/views.py:128
+msgid "List Druid Cluster"
+msgstr "Druid集群列表"
+
+#: superset/connectors/druid/views.py:129
+msgid "Show Druid Cluster"
+msgstr "显示Druid集群"
+
+#: superset/connectors/druid/views.py:130
+msgid "Add Druid Cluster"
+msgstr "添加Druid集群"
+
+#: superset/connectors/druid/views.py:131
+msgid "Edit Druid Cluster"
+msgstr "编辑Druid集群"
+
+#: superset/connectors/druid/views.py:142
+#: superset/connectors/druid/views.py:228
 msgid "Cluster"
 msgstr "集群"
 
-#: superset/connectors/druid/views.py:124
+#: superset/connectors/druid/views.py:143
 msgid "Coordinator Host"
-msgstr ""
+msgstr "协调器主机"
 
-#: superset/connectors/druid/views.py:125
+#: superset/connectors/druid/views.py:144
 msgid "Coordinator Port"
-msgstr ""
+msgstr "协调器端口"
 
-#: superset/connectors/druid/views.py:126
+#: superset/connectors/druid/views.py:145
 msgid "Coordinator Endpoint"
-msgstr ""
+msgstr "协调器端点"
 
-#: superset/connectors/druid/views.py:127
+#: superset/connectors/druid/views.py:146
 msgid "Broker Host"
-msgstr ""
+msgstr "代理主机"
 
-#: superset/connectors/druid/views.py:128
+#: superset/connectors/druid/views.py:147
 msgid "Broker Port"
-msgstr ""
+msgstr "代理端口"
 
-#: superset/connectors/druid/views.py:129
+#: superset/connectors/druid/views.py:148
 msgid "Broker Endpoint"
-msgstr ""
+msgstr "代理端点"
 
-#: superset/connectors/druid/views.py:144
+#: superset/connectors/druid/views.py:163
 msgid "Druid Clusters"
 msgstr "Druid集群"
 
-#: superset/connectors/druid/views.py:147
-#: superset/connectors/druid/views.py:243
-#: superset/connectors/druid/views.py:282 superset/connectors/sqla/views.py:261
-#: superset/views/core.py:274
+#: superset/connectors/druid/views.py:166
+#: superset/connectors/druid/views.py:268
+#: superset/connectors/druid/views.py:307 superset/connectors/sqla/views.py:281
+#: superset/views/core.py:282
 msgid "Sources"
 msgstr "数据源"
 
-#: superset/connectors/druid/views.py:172 superset/connectors/sqla/views.py:155
+#: superset/connectors/druid/views.py:173
+msgid "List Druid Datasource"
+msgstr "Druid数据源列表"
+
+#: superset/connectors/druid/views.py:174
+msgid "Show Druid Datasource"
+msgstr "显示Druid数据源"
+
+#: superset/connectors/druid/views.py:175
+msgid "Add Druid Datasource"
+msgstr "添加Druid数据源"
+
+#: superset/connectors/druid/views.py:176
+msgid "Edit Druid Datasource"
+msgstr "编辑Druid数据源"
+
+#: superset/connectors/druid/views.py:197 superset/connectors/sqla/views.py:175
 msgid ""
 "The list of slices associated with this table. By altering this "
 "datasource, you may change how these associated slices behave. Also note "
 "that slices need to point to a datasource, so this form will fail at "
 "saving if removing slices from a datasource. If you want to change the "
 "datasource for a slice, overwrite the slice from the 'explore view'"
-msgstr ""
+msgstr "与此表关联的切片列表。通过更改此数据源,您可以更改相关的切片。还要注意,切片需要指向数据源,因此如果从数据源中删除切片,则此形式将无法保存。如果要更改切片的数据源,请从`浏览视图`覆盖切片,"
 
-#: superset/connectors/druid/views.py:180 superset/connectors/sqla/views.py:163
+#: superset/connectors/druid/views.py:205 superset/connectors/sqla/views.py:183
 msgid "Timezone offset (in hours) for this datasource"
 msgstr "数据源的时差(单位:小时)"
 
-#: superset/connectors/druid/views.py:184
+#: superset/connectors/druid/views.py:209
 msgid ""
 "Time expression to use as a predicate when retrieving distinct values to "
 "populate the filter component. Only applies when `Enable Filter Select` "
 "is on. If you enter `7 days ago`, the distinct list of values in the "
 "filter will be populated based on the distinct value over the past week"
-msgstr ""
+msgstr "当检索不同的值以填充过滤器组件时,时间表达式用作条件。只适用于`启用过滤器选择`。如果您输入`7天前`,将根据过去一周的不同值来填充ilter中不同的值列表"
 
-#: superset/connectors/druid/views.py:191 superset/connectors/sqla/views.py:185
+#: superset/connectors/druid/views.py:216 superset/connectors/sqla/views.py:205
 msgid ""
 "Whether to populate the filter's dropdown in the explore view's filter "
 "section with a list of distinct values fetched from the backend on the "
 "fly"
-msgstr ""
+msgstr "是否在浏览视图的过滤器部分中填充过滤器的下拉列表,并提供从后端获取的不同值的列表"
 
-#: superset/connectors/druid/views.py:195 superset/connectors/sqla/views.py:199
+#: superset/connectors/druid/views.py:220 superset/connectors/sqla/views.py:219
 msgid ""
 "Redirects to this endpoint when clicking on the datasource from the "
 "datasource list"
-msgstr ""
+msgstr "在数据源列表中点击数据源将重定向到此端点"
 
-#: superset/connectors/druid/views.py:201 superset/connectors/sqla/views.py:192
+#: superset/connectors/druid/views.py:226 superset/connectors/sqla/views.py:212
 msgid "Associated Slices"
-msgstr ""
+msgstr "相关切片"
 
-#: superset/connectors/druid/views.py:202
+#: superset/connectors/druid/views.py:227
 msgid "Data Source"
 msgstr "数据源"
 
-#: superset/connectors/druid/views.py:205
+#: superset/connectors/druid/views.py:230
 msgid "Owner"
 msgstr "所有者"
 
-#: superset/connectors/druid/views.py:206
+#: superset/connectors/druid/views.py:231
 msgid "Is Hidden"
 msgstr "隐藏"
 
-#: superset/connectors/druid/views.py:207 superset/connectors/sqla/views.py:197
+#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:217
 msgid "Enable Filter Select"
-msgstr ""
+msgstr "启用过滤器选择"
 
-#: superset/connectors/druid/views.py:208
+#: superset/connectors/druid/views.py:233
 msgid "Default Endpoint"
-msgstr ""
+msgstr "默认端点"
 
-#: superset/connectors/druid/views.py:209
+#: superset/connectors/druid/views.py:234
 msgid "Time Offset"
 msgstr "时间偏移"
 
-#: superset/connectors/druid/views.py:210 superset/connectors/sqla/views.py:203
-#: superset/views/core.py:241 superset/views/core.py:351
+#: superset/connectors/druid/views.py:235 superset/connectors/sqla/views.py:223
+#: superset/views/core.py:249 superset/views/core.py:365
 msgid "Cache Timeout"
 msgstr "缓存时间"
 
-#: superset/connectors/druid/views.py:241
+#: superset/connectors/druid/views.py:266
 msgid "Druid Datasources"
 msgstr "Druid数据源"
 
-#: superset/connectors/druid/views.py:279
+#: superset/connectors/druid/views.py:304
 msgid "Refresh Druid Metadata"
 msgstr "刷新Druid元数据"
 
-#: superset/connectors/sqla/models.py:388
+#: superset/connectors/sqla/models.py:386
 msgid ""
 "Datetime column not provided as part table configuration and is required "
 "by this type of chart"
 msgstr "缺少时间字段"
 
-#: superset/connectors/sqla/models.py:393
+#: superset/connectors/sqla/models.py:391
 msgid "Metric '{}' is not valid"
-msgstr ""
+msgstr "'{}'是无效的"
+
+#: superset/connectors/sqla/views.py:28
+msgid "List Columns"
+msgstr "列列表"
 
-#: superset/connectors/sqla/views.py:38
+#: superset/connectors/sqla/views.py:29
+msgid "Show Column"
+msgstr "显示列"
+
+#: superset/connectors/sqla/views.py:30
+msgid "Add Column"
+msgstr "添加列"
+
+#: superset/connectors/sqla/views.py:31
+msgid "Edit Column"
+msgstr "编辑列"
+
+#: superset/connectors/sqla/views.py:46
 msgid ""
 "Whether to make this column available as a [Time Granularity] option, "
 "column has to be DATETIME or DATETIME-like"
 msgstr "是否将此列作为[时间粒度]选项, 列中的数据类型必须是DATETIME"
 
-#: superset/connectors/sqla/views.py:45
+#: superset/connectors/sqla/views.py:53
 msgid ""
 "The data type that was inferred by the database. It may be necessary to "
 "input a type manually for expression-defined columns in some cases. In "
 "most case users should not need to alter this."
-msgstr ""
+msgstr "由数据库推断的数据类型。在某些情况下,可能需要为表达式定义的列手工输入一个类型。在大多数情况下,用户不需要修改这个数据类型。"
 
-#: superset/connectors/sqla/views.py:78 superset/connectors/sqla/views.py:121
-#: superset/connectors/sqla/views.py:193 superset/views/core.py:361
-msgid "Table"
-msgstr "表"
-
-#: superset/connectors/sqla/views.py:83
+#: superset/connectors/sqla/views.py:91
 msgid "Expression"
 msgstr "表达式"
 
-#: superset/connectors/sqla/views.py:84
+#: superset/connectors/sqla/views.py:92
 msgid "Is temporal"
 msgstr "表示时间"
 
-#: superset/connectors/sqla/views.py:85
+#: superset/connectors/sqla/views.py:93
 msgid "Datetime Format"
 msgstr "时间格式"
 
-#: superset/connectors/sqla/views.py:86
+#: superset/connectors/sqla/views.py:94
 msgid "Database Expression"
 msgstr "数据库表达式"
 
-#: superset/connectors/sqla/views.py:120
+#: superset/connectors/sqla/views.py:102
+msgid "List Metrics"
+msgstr "指标列"
+
+#: superset/connectors/sqla/views.py:103
+msgid "Show Metric"
+msgstr "显示指标"
+
+#: superset/connectors/sqla/views.py:104
+msgid "Add Metric"
+msgstr "添加指标"
+
+#: superset/connectors/sqla/views.py:105
+msgid "Edit Metric"
+msgstr "编辑指标"
+
+#: superset/connectors/sqla/views.py:134
 msgid "SQL Expression"
 msgstr "SQL表达式"
 
-#: superset/connectors/sqla/views.py:164
+#: superset/connectors/sqla/views.py:152
+msgid "List Tables"
+msgstr "表列表"
+
+#: superset/connectors/sqla/views.py:153
+msgid "Show Table"
+msgstr "显示表"
+
+#: superset/connectors/sqla/views.py:154
+msgid "Add Table"
+msgstr "添加表"
+
+#: superset/connectors/sqla/views.py:155
+msgid "Edit Table"
+msgstr "编辑表"
+
+#: superset/connectors/sqla/views.py:184
 msgid "Name of the table that exists in the source database"
-msgstr ""
+msgstr "源数据库中存在的表的名称"
 
-#: superset/connectors/sqla/views.py:166
+#: superset/connectors/sqla/views.py:186
 msgid "Schema, as used only in some databases like Postgres, Redshift and DB2"
-msgstr ""
+msgstr "模式,只在一些数据库中使用,比如Postgres、Redshift和DB2"
 
-#: superset/connectors/sqla/views.py:172
+#: superset/connectors/sqla/views.py:192
 msgid ""
 "This fields acts a Superset view, meaning that Superset will run a query "
 "against this string as a subquery."
-msgstr ""
+msgstr "这个字段执行Superset视图时,意味着Superset将以子查询的形式对字符串运行查询。"
 
-#: superset/connectors/sqla/views.py:176
+#: superset/connectors/sqla/views.py:196
 msgid ""
 "Predicate applied when fetching distinct value to populate the filter "
 "control component. Supports jinja template syntax. Applies only when "
 "`Enable Filter Select` is on."
-msgstr ""
+msgstr "当获取不同的值来填充过滤器组件应用时。支持jinja的模板语法。只在`启用过滤器选择`时应用。"
 
-#: superset/connectors/sqla/views.py:182
+#: superset/connectors/sqla/views.py:202
 msgid "Redirects to this endpoint when clicking on the table from the table list"
-msgstr ""
+msgstr "点击表列表中的表时将重定向到此端点"
 
-#: superset/connectors/sqla/views.py:194
+#: superset/connectors/sqla/views.py:214
 msgid "Changed By"
 msgstr "修改人"
 
-#: superset/connectors/sqla/views.py:195 superset/views/core.py:237
+#: superset/connectors/sqla/views.py:215 superset/views/core.py:245
 msgid "Database"
 msgstr "数据库"
 
-#: superset/connectors/sqla/views.py:196 superset/views/core.py:239
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:247
 msgid "Last Changed"
 msgstr "更新时间"
 
-#: superset/connectors/sqla/views.py:198
+#: superset/connectors/sqla/views.py:218
 msgid "Schema"
 msgstr "模式"
 
-#: superset/connectors/sqla/views.py:202
+#: superset/connectors/sqla/views.py:222
 msgid "Offset"
 msgstr "偏移"
 
-#: superset/connectors/sqla/views.py:235
+#: superset/connectors/sqla/views.py:255
 msgid ""
 "The table was created. As part of this two phase configuration process, "
 "you should now click the edit button by the new table to configure it."
-msgstr ""
+msgstr "表被创建。作为这两个阶段配置过程的一部分,您现在应该单击新表的编辑按钮来配置它。"
 
-#: superset/connectors/sqla/views.py:259
+#: superset/connectors/sqla/views.py:279
 msgid "Tables"
 msgstr "数据表"
 
@@ -549,30 +2934,21 @@ msgstr "导入"
 
 #: superset/templates/superset/request_access.html:2
 msgid "No Access!"
-msgstr ""
+msgstr "不能访问!"
 
 #: superset/templates/superset/request_access.html:7
 #, python-format
 msgid "You do not have permissions to access the datasource(s): %(name)s."
-msgstr ""
+msgstr "您没有权限访问数据源(s): %(name)s"
 
 #: superset/templates/superset/request_access.html:13
 msgid "Request Permissions"
-msgstr ""
-
-#: superset/templates/superset/request_access.html:16
-msgid "Cancel"
-msgstr "取消"
+msgstr "请求权限"
 
 #: superset/templates/superset/welcome.html:10
 msgid "Welcome!"
 msgstr "欢迎!"
 
-#: superset/templates/superset/welcome.html:20 superset/views/core.py:353
-#: superset/views/core.py:507
-msgid "Dashboards"
-msgstr "看板"
-
 #: superset/templates/superset/models/database/macros.html:4
 msgid "Test Connection"
 msgstr "测试连接"
@@ -584,150 +2960,178 @@ msgstr "数据源%(name)s 已存在"
 
 #: superset/views/base.py:256
 msgid "Delete"
-msgstr ""
+msgstr "删除"
 
 #: superset/views/base.py:257
 msgid "Delete all Really?"
-msgstr ""
+msgstr "确定删除全部?"
 
-#: superset/views/core.py:55
+#: superset/views/core.py:57
 msgid "This endpoint requires the `all_datasource_access` permission"
-msgstr ""
+msgstr "这个端点需要“all_datasource_access”的权限"
 
-#: superset/views/core.py:57
+#: superset/views/core.py:59
 msgid "The datasource seems to have been deleted"
-msgstr ""
+msgstr "数据源已经被删除"
 
-#: superset/views/core.py:58
+#: superset/views/core.py:60
 msgid "The access requests seem to have been deleted"
-msgstr ""
+msgstr "访问请求已被删除"
 
-#: superset/views/core.py:60
+#: superset/views/core.py:62
 msgid "The user seems to have been deleted"
-msgstr ""
+msgstr "用户已经被删除"
 
-#: superset/views/core.py:61
+#: superset/views/core.py:63
 msgid "You don't have access to this datasource"
-msgstr ""
+msgstr "你不能访问这个数据源"
 
-#: superset/views/core.py:65
+#: superset/views/core.py:67
 #, python-format
 msgid ""
 "This view requires the database %(name)s or `all_datasource_access` "
 "permission"
-msgstr ""
+msgstr "此视图需要数据库 %(name)s或“all_datasource_access”权限"
 
-#: superset/views/core.py:70
+#: superset/views/core.py:72
 #, python-format
 msgid ""
 "This endpoint requires the datasource %(name)s, database or "
 "`all_datasource_access` permission"
-msgstr ""
+msgstr "此端点需要数据源 %(name)s、数据库或“all_datasource_access”权限"
+
+#: superset/views/core.py:175
+msgid "List Databases"
+msgstr "数据库列表"
+
+#: superset/views/core.py:176
+msgid "Show Database"
+msgstr "显示数据库"
 
-#: superset/views/core.py:205
+#: superset/views/core.py:177
+msgid "Add Database"
+msgstr "添加数据库"
+
+#: superset/views/core.py:178
+msgid "Edit Database"
+msgstr "编辑数据库"
+
+#: superset/views/core.py:213
 msgid "Expose this DB in SQL Lab"
-msgstr ""
+msgstr "在SQL工具箱中公开这个数据库"
 
-#: superset/views/core.py:206
+#: superset/views/core.py:214
 msgid ""
 "Allow users to run synchronous queries, this is the default and should "
 "work well for queries that can be executed within a web request scope "
 "(<~1 minute)"
-msgstr ""
+msgstr "允许用户运行同步查询,这是默认值,可以很好地处理在web请求范围内执行的查询(<~1分钟)"
 
-#: superset/views/core.py:210
+#: superset/views/core.py:218
 msgid ""
 "Allow users to run queries, against an async backend. This assumes that "
 "you have a Celery worker setup as well as a results backend."
-msgstr ""
+msgstr "允许用户对异步后端运行查询。 假设您有一个Celery工作者设置以及后端结果。"
 
-#: superset/views/core.py:214
+#: superset/views/core.py:222
 msgid "Allow CREATE TABLE AS option in SQL Lab"
-msgstr ""
+msgstr "在SQL编辑器中允许CREATE TABLE AS选项"
 
-#: superset/views/core.py:215
+#: superset/views/core.py:223
 msgid ""
 "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
 " SQL Lab"
-msgstr ""
+msgstr "允许用户在SQL编辑器中运行非SELECT语句(UPDATE,DELETE,CREATE,...)"
 
-#: superset/views/core.py:219
+#: superset/views/core.py:227
 msgid ""
 "When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
 "table to be created in this schema"
-msgstr ""
+msgstr "当在SQL编辑器中允许CREATE TABLE AS选项时,此选项可以此模式中强制创建表"
 
-#: superset/views/core.py:233
+#: superset/views/core.py:241
 msgid "Expose in SQL Lab"
-msgstr ""
+msgstr "在SQL工具箱中公开"
 
-#: superset/views/core.py:234
+#: superset/views/core.py:242
 msgid "Allow CREATE TABLE AS"
-msgstr ""
+msgstr "允许 CREATE TABLE AS"
 
-#: superset/views/core.py:235
+#: superset/views/core.py:243
 msgid "Allow DML"
-msgstr ""
+msgstr "允许 DML"
 
-#: superset/views/core.py:236
+#: superset/views/core.py:244
 msgid "CTAS Schema"
-msgstr ""
+msgstr "CTAS模式"
 
-#: superset/views/core.py:238 superset/views/core.py:352
-#: superset/views/core.py:454 superset/views/core.py:518
+#: superset/views/core.py:246 superset/views/core.py:366
+#: superset/views/core.py:474 superset/views/core.py:538
 msgid "Creator"
 msgstr "作者"
 
-#: superset/views/core.py:240
+#: superset/views/core.py:248
 msgid "SQLAlchemy URI"
-msgstr ""
+msgstr "SQLAlchemy URI"
 
-#: superset/views/core.py:242
+#: superset/views/core.py:250
 msgid "Extra"
 msgstr "扩展"
 
-#: superset/views/core.py:260
+#: superset/views/core.py:268
 msgid "Import Dashboards"
 msgstr "导入仪表盘"
 
-#: superset/views/core.py:264 superset/views/core.py:2279
-#: superset/views/sql_lab.py:22
+#: superset/views/core.py:272 superset/views/core.py:2318
+#: superset/views/sql_lab.py:23
 msgid "Manage"
 msgstr "管理"
 
-#: superset/views/core.py:271
-msgid "Databases"
-msgstr "数据库"
-
-#: superset/views/core.py:302 superset/views/core.py:531
+#: superset/views/core.py:310 superset/views/core.py:551
 msgid "User"
 msgstr "用户"
 
-#: superset/views/core.py:303
+#: superset/views/core.py:311
 msgid "User Roles"
 msgstr "用户角色"
 
-#: superset/views/core.py:304
+#: superset/views/core.py:312
 msgid "Database URL"
 msgstr "数据库URL"
 
-#: superset/views/core.py:306
+#: superset/views/core.py:314
 msgid "Roles to grant"
-msgstr ""
+msgstr "角色授权"
 
-#: superset/views/core.py:307
+#: superset/views/core.py:315
 msgid "Created On"
 msgstr "创建日期"
 
-#: superset/views/core.py:313
+#: superset/views/core.py:321
 msgid "Access requests"
 msgstr "访问请求"
 
-#: superset/views/core.py:315 superset/views/core.py:542
+#: superset/views/core.py:323 superset/views/core.py:562
 msgid "Security"
 msgstr "安全"
 
-#: superset/views/core.py:340
+#: superset/views/core.py:330
+msgid "List Slices"
+msgstr "切片列表"
+
+#: superset/views/core.py:331
+msgid "Show Slice"
+msgstr "显示切片"
+
+#: superset/views/core.py:332
+msgid "Add Slice"
+msgstr "添加切片"
+
+#: superset/views/core.py:333
+msgid "Edit Slice"
+msgstr "编辑切片"
+
+#: superset/views/core.py:354
 msgid ""
 "These parameters are generated dynamically when clicking the save or "
 "overwrite button in the explore view. This JSON object is exposed here "
@@ -735,185 +3139,193 @@ msgid ""
 "parameters."
 msgstr "当单击“保存”或“覆盖”按钮时,这些参数会在视图中动态生成。高级用户可以在这里改变特定的参数。"
 
-#: superset/views/core.py:345
+#: superset/views/core.py:359
 msgid "Duration (in seconds) of the caching timeout for this slice."
 msgstr "切片数据过期时间(秒)"
 
-#: superset/views/core.py:356
+#: superset/views/core.py:370
 msgid "Last Modified"
 msgstr "最后修改"
 
-#: superset/views/core.py:357 superset/views/core.py:453
+#: superset/views/core.py:371 superset/views/core.py:473
 msgid "Owners"
 msgstr "所有者"
 
-#: superset/views/core.py:358
+#: superset/views/core.py:372
 msgid "Parameters"
 msgstr "参数"
 
-#: superset/views/core.py:359 superset/views/core.py:401
+#: superset/views/core.py:373 superset/views/core.py:415
 msgid "Slice"
 msgstr "切片"
 
-#: superset/views/core.py:360
-msgid "Name"
-msgstr "名字"
+#: superset/views/core.py:432
+msgid "List Dashboards"
+msgstr "仪表盘列表"
 
-#: superset/views/core.py:362
-msgid "Visualization Type"
-msgstr "图表类型"
+#: superset/views/core.py:433
+msgid "Show Dashboard"
+msgstr "显示仪表盘"
 
-#: superset/views/core.py:389 superset/views/core.py:452
-msgid "Slices"
-msgstr "切片"
+#: superset/views/core.py:434
+msgid "Add Dashboard"
+msgstr "添加仪表盘"
 
-#: superset/views/core.py:426
+#: superset/views/core.py:435
+msgid "Edit Dashboard"
+msgstr "编辑仪表盘"
+
+#: superset/views/core.py:446
 msgid ""
 "This json object describes the positioning of the widgets in the "
 "dashboard. It is dynamically generated when adjusting the widgets size "
 "and positions by using drag & drop in the dashboard view"
 msgstr "这个JSON对象描述了部件在看板中的位置。它是动态生成的,可以通过拖放,在看板中调整整部件的大小和位置。"
 
-#: superset/views/core.py:431
+#: superset/views/core.py:451
 msgid ""
 "The css for individual dashboards can be altered here, or in the "
 "dashboard view where changes are immediately visible"
 msgstr "可以在这里或者在看板视图修改单个看板的CSS样式"
 
-#: superset/views/core.py:435
+#: superset/views/core.py:455
 msgid "To get a readable URL for your dashboard"
 msgstr "为看板生成一个可读的URL"
 
-#: superset/views/core.py:436
+#: superset/views/core.py:456
 msgid ""
 "This JSON object is generated dynamically when clicking the save or "
 "overwrite button in the dashboard view. It is exposed here for reference "
 "and for power users who may want to alter specific parameters."
 msgstr "当在看板视图中单击“保存”或“覆盖”按钮时,这些参数会在视图中动态生成。高级用户可以在这里改变特定的参数。"
 
-#: superset/views/core.py:441
+#: superset/views/core.py:461
 msgid "Owners is a list of users who can alter the dashboard."
 msgstr "“所有者”是一组可以修改看板的用户列表"
 
-#: superset/views/core.py:449 superset/views/core.py:516
+#: superset/views/core.py:469 superset/views/core.py:536
 msgid "Dashboard"
 msgstr "看板"
 
-#: superset/views/core.py:450 superset/views/core.py:517
-msgid "Title"
-msgstr "标题"
-
-#: superset/views/core.py:451
+#: superset/views/core.py:471
 msgid "Slug"
-msgstr ""
-
-#: superset/views/core.py:455 superset/views/core.py:519
-msgid "Modified"
-msgstr "已修改"
+msgstr "Slug"
 
-#: superset/views/core.py:456
+#: superset/views/core.py:476
 msgid "Position JSON"
 msgstr "位置参数"
 
-#: superset/views/core.py:457
-msgid "CSS"
-msgstr ""
-
-#: superset/views/core.py:458
+#: superset/views/core.py:478
 msgid "JSON Metadata"
 msgstr "JSON模板"
 
-#: superset/views/core.py:459
+#: superset/views/core.py:479
 msgid "Underlying Tables"
 msgstr "底层表"
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export"
-msgstr ""
+msgstr "导出"
 
-#: superset/views/core.py:482
+#: superset/views/core.py:502
 msgid "Export dashboards?"
-msgstr ""
+msgstr "导出仪表盘?"
 
-#: superset/views/core.py:532
+#: superset/views/core.py:552
 msgid "Action"
 msgstr "操作"
 
-#: superset/views/core.py:533
+#: superset/views/core.py:553
 msgid "dttm"
 msgstr "DTTM"
 
-#: superset/views/core.py:540
+#: superset/views/core.py:560
 msgid "Action Log"
 msgstr "操作日志"
 
-#: superset/views/core.py:770
+#: superset/views/core.py:790
 msgid "Access was requested"
-msgstr ""
+msgstr "请求访问"
 
-#: superset/views/core.py:831
+#: superset/views/core.py:851
 #, python-format
 msgid ""
 "%(user)s was granted the role %(role)s that gives access to the "
 "%(datasource)s"
-msgstr ""
+msgstr "授予 %(user)s %(role)s 角色来访问 %(datasource)s 数据库"
 
-#: superset/views/core.py:847
+#: superset/views/core.py:867
 #, python-format
 msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
-msgstr ""
+msgstr "扩展角色 %(r)s以提供对datasource %(ds)s的访问"
 
-#: superset/views/core.py:856
+#: superset/views/core.py:876
 msgid "You have no permission to approve this request"
-msgstr ""
+msgstr "您没有权限批准此请求"
 
-#: superset/views/core.py:1589
+#: superset/views/core.py:1609
 msgid ""
 "Malformed request. slice_id or table_name and db_name arguments are "
 "expected"
-msgstr ""
+msgstr "格式错误的请求。需要使用slice_id或table_name和db_name参数"
 
-#: superset/views/core.py:1595
+#: superset/views/core.py:1615
 #, python-format
 msgid "Slice %(id)s not found"
-msgstr ""
+msgstr "切片 %(id)s 没有找到"
 
-#: superset/views/core.py:1607
+#: superset/views/core.py:1627
 #, python-format
 msgid "Table %(t)s wasn't found in the database %(d)s"
-msgstr ""
+msgstr "在数据库 %(d)s中找不到表 %(t)s"
 
-#: superset/views/core.py:1741
+#: superset/views/core.py:1761
 #, python-format
 msgid "Can't find User '%(name)s', please ask your admin to create one."
-msgstr ""
+msgstr "找不到用户'%(name)',请您让管理员创建一个。"
 
-#: superset/views/core.py:1748
+#: superset/views/core.py:1768
 #, python-format
 msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
-msgstr ""
+msgstr "不能找到具有cluster_name = '%(name)s'的Druid集群"
 
-#: superset/views/core.py:2276
+#: superset/views/core.py:2315
 msgid "CSS Templates"
 msgstr "CSS模板"
 
-#: superset/views/core.py:2286
+#: superset/views/core.py:2325
 msgid "SQL Editor"
 msgstr "SQL编辑器"
 
-#: superset/views/core.py:2291 superset/views/core.py:2300
+#: superset/views/core.py:2330 superset/views/core.py:2339
 msgid "SQL Lab"
 msgstr "SQL工具箱"
 
-#: superset/views/core.py:2295
+#: superset/views/core.py:2334
 msgid "Query Search"
 msgstr "查询搜索"
 
-#: superset/views/sql_lab.py:20
+#: superset/views/sql_lab.py:21
 msgid "Queries"
 msgstr "查询"
 
-#: superset/views/sql_lab.py:55
+#: superset/views/sql_lab.py:30
+msgid "List Saved Query"
+msgstr "保存的查询列表"
+
+#: superset/views/sql_lab.py:31
+msgid "Show Saved Query"
+msgstr "显示保存的查询"
+
+#: superset/views/sql_lab.py:32
+msgid "Add Saved Query"
+msgstr "添加保存的查询"
+
+#: superset/views/sql_lab.py:33
+msgid "Edit Saved Query"
+msgstr "编辑保存的查询"
+
+#: superset/views/sql_lab.py:62
 msgid "Saved Queries"
 msgstr "已保存查询"
 
diff --git a/superset/views/base.py b/superset/views/base.py
index 73627d0..bc8d46e 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -6,6 +6,7 @@ import traceback
 from flask import g, redirect, Response, flash, abort, get_flashed_messages
 from flask_babel import gettext as __
 from flask_babel import lazy_gettext as _
+from flask_babel import get_locale
 
 from flask_appbuilder import BaseView
 from flask_appbuilder import ModelView
@@ -16,6 +17,7 @@ from flask_appbuilder.models.sqla.filters import BaseFilter
 from superset import appbuilder, conf, db, utils, sm, sql_parse
 from superset.connectors.connector_registry import ConnectorRegistry
 from superset.connectors.sqla.models import SqlaTable
+from superset.translations.utils import get_language_pack
 
 FRONTEND_CONF_KEYS = ('SUPERSET_WEBSERVER_TIMEOUT',)
 
@@ -191,9 +193,12 @@ class BaseSupersetView(BaseView):
     def common_bootsrap_payload(self):
         """Common data always sent to the client"""
         messages = get_flashed_messages(with_categories=True)
+        locale = str(get_locale())
         return {
             'flash_messages': messages,
             'conf': {k: conf.get(k) for k in FRONTEND_CONF_KEYS},
+            'locale': locale,
+            'language_pack': get_language_pack(locale),
         }
 
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@superset.apache.org" <commits@superset.apache.org>'].

Mime
View raw message