summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang
diff options
context:
space:
mode:
authorHerbert Eiselt <herbert.eiselt@highstreet-technologies.com>2019-02-07 17:50:41 +0100
committerHerbert Eiselt <herbert.eiselt@highstreet-technologies.com>2019-02-07 17:51:11 +0100
commit12a8c669f52c0e84d580c078cee849b25133b585 (patch)
tree1a0ddb6cc13f225e8a58833b8975f98b453a8d52 /sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang
parentbd2aa3c75e0073ff07fb46b14b8b51926915d5c8 (diff)
Add sdnr wt devicemanager
Add complete sdnr wireless transport app devicemanager Change-Id: I433014ee579a3c8833b3b8f84c4087c5f776704f Issue-ID: SDNC-575 Signed-off-by: Herbert Eiselt <herbert.eiselt@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang')
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/en_strings.js177
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/fr_strings.js164
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/pt_strings.js174
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/tr_strings.js177
-rw-r--r--sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/zh_strings.js172
5 files changed, 864 insertions, 0 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/en_strings.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/en_strings.js
new file mode 100644
index 000000000..3679dfbbc
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/en_strings.js
@@ -0,0 +1,177 @@
+i18n.setKeys({
+ "General.Elasticsearch": "Elasticsearch",
+ "General.LoadingAggs": "Loading Aggregations...",
+ "General.Searching": "Searching...",
+ "General.Search": "Search",
+ "General.Help": "Help",
+ "General.HelpGlyph": "?",
+ "General.CloseGlyph": "X",
+ "General.RefreshResults": "Refresh",
+ "General.ManualRefresh": "Manual Refresh",
+ "General.RefreshQuickly": "Refresh quickly",
+ "General.Refresh5seconds": "Refresh every 5 seconds",
+ "General.Refresh1minute": "Refresh every minute",
+ "AliasForm.AliasName": "Alias Name",
+ "AliasForm.NewAliasForIndex": "New Alias for {0}",
+ "AliasForm.DeleteAliasMessage": "type ''{0}'' to delete {1}. There is no undo",
+ "AnyRequest.DisplayOptions" : "Display Options",
+ "AnyRequest.AsGraph" : "Graph Results",
+ "AnyRequest.AsJson" : "Show Raw JSON",
+ "AnyRequest.AsTable" : "Show Search Results Table",
+ "AnyRequest.History" : "History",
+ "AnyRequest.RepeatRequest" : "Repeat Request",
+ "AnyRequest.RepeatRequestSelect" : "Repeat request every ",
+ "AnyRequest.Transformer" : "Result Transformer",
+ "AnyRequest.Pretty": "Pretty",
+ "AnyRequest.Query" : "Query",
+ "AnyRequest.Request": "Request",
+ "AnyRequest.Requesting": "Requesting...",
+ "AnyRequest.ValidateJSON": "Validate JSON",
+ "Browser.Title": "Browser",
+ "Browser.ResultSourcePanelTitle": "Result Source",
+ "Command.DELETE": "DELETE",
+ "Command.SHUTDOWN": "SHUTDOWN",
+ "Command.DeleteAliasMessage": "Delete Alias?",
+ "ClusterOverView.IndexName": "Index Name",
+ "ClusterOverview.NumShards": "Number of Shards",
+ "ClusterOverview.NumReplicas": "Number of Replicas",
+ "ClusterOverview.NewIndex": "New Index",
+ "IndexActionsMenu.Title": "Actions",
+ "IndexActionsMenu.NewAlias": "New Alias...",
+ "IndexActionsMenu.Refresh": "Refresh",
+ "IndexActionsMenu.Flush": "Flush",
+ "IndexActionsMenu.Optimize": "Optimize...",
+ "IndexActionsMenu.Snapshot": "Gateway Snapshot",
+ "IndexActionsMenu.Analyser": "Test Analyser",
+ "IndexActionsMenu.Open": "Open",
+ "IndexActionsMenu.Close": "Close",
+ "IndexActionsMenu.Delete": "Delete...",
+ "IndexInfoMenu.Title": "Info",
+ "IndexInfoMenu.Status": "Index Status",
+ "IndexInfoMenu.Metadata": "Index Metadata",
+ "IndexCommand.TextToAnalyze": "Text to Analyse",
+ "IndexCommand.ShutdownMessage": "type ''{0}'' to shutdown {1}. Node can NOT be restarted from this interface",
+ "IndexOverview.PageTitle": "Indices Overview",
+ "IndexSelector.NameWithDocs": "{0} ({1} docs)",
+ "IndexSelector.SearchIndexForDocs": "Search {0} for documents where:",
+ "FilterBrowser.OutputType": "Output Results: {0}",
+ "FilterBrowser.OutputSize": "Number of Results: {0}",
+ "Header.ClusterHealth": "cluster health: {0} ({1} of {2})",
+ "Header.ClusterNotConnected": "cluster health: not connected",
+ "Header.Connect": "Connect",
+ "Nav.AnyRequest": "Any Request",
+ "Nav.Browser": "Browser",
+ "Nav.ClusterHealth": "Cluster Health",
+ "Nav.ClusterState": "Cluster State",
+ "Nav.ClusterNodes": "Nodes Info",
+ "Nav.Info": "Info",
+ "Nav.NodeStats": "Nodes Stats",
+ "Nav.Overview": "Overview",
+ "Nav.Indices": "Indices",
+ "Nav.Plugins": "Plugins",
+ "Nav.Status": "Indices Stats",
+ "Nav.Templates": "Templates",
+ "Nav.StructuredQuery": "Structured Query",
+ "NodeActionsMenu.Title": "Actions",
+ "NodeActionsMenu.Shutdown": "Shutdown...",
+ "NodeInfoMenu.Title": "Info",
+ "NodeInfoMenu.ClusterNodeInfo": "Cluster Node Info",
+ "NodeInfoMenu.NodeStats": "Node Stats",
+ "NodeType.Client": "Client Node",
+ "NodeType.Coord": "Coordinator",
+ "NodeType.Master": "Master Node",
+ "NodeType.Tribe": "Tribe Node",
+ "NodeType.Worker": "Worker Node",
+ "NodeType.Unassigned": "Unassigned",
+ "OptimizeForm.OptimizeIndex": "Optimize {0}",
+ "OptimizeForm.MaxSegments": "Maximum # Of Segments",
+ "OptimizeForm.ExpungeDeletes": "Only Expunge Deletes",
+ "OptimizeForm.FlushAfter": "Flush After Optimize",
+ "OptimizeForm.WaitForMerge": "Wait For Merge",
+ "Overview.PageTitle" : "Cluster Overview",
+ "Output.JSON": "JSON",
+ "Output.Table": "Table",
+ "Output.CSV": "CSV",
+ "Output.ShowSource": "Show query source",
+ "Preference.SortCluster": "Sort Cluster",
+ "Sort.ByName": "By Name",
+ "Sort.ByAddress": "By Address",
+ "Sort.ByType": "By Type",
+ "Preference.SortIndices": "Sort Indices",
+ "SortIndices.Descending": "Descending",
+ "SortIndices.Ascending": "Ascending",
+ "Preference.ViewAliases": "View Aliases",
+ "ViewAliases.Grouped": "Grouped",
+ "ViewAliases.List": "List",
+ "ViewAliases.None": "None",
+ "Overview.IndexFilter": "Index Filter",
+ "TableResults.Summary": "Searched {0} of {1} shards. {2} hits. {3} seconds",
+ "QueryFilter.AllIndices": "All Indices",
+ "QueryFilter.AnyValue": "any",
+ "QueryFilter-Header-Indices": "Indices",
+ "QueryFilter-Header-Types": "Types",
+ "QueryFilter-Header-Fields": "Fields",
+ "QueryFilter.DateRangeHint.from": "From : {0}",
+ "QueryFilter.DateRangeHint.to": " To : {0}",
+ "Query.FailAndUndo": "Query Failed. Undoing last changes",
+ "StructuredQuery.ShowRawJson": "Show Raw JSON"
+});
+
+i18n.setKeys({
+ "AnyRequest.TransformerHelp" : "\
+ <p>The Result Transformer can be used to post process the raw json results from a request into a more useful format.</p>\
+ <p>The transformer should contain the body of a javascript function. The return value from the function becomes the new value passed to the json printer</p>\
+ <p>Example:<br>\
+ <code>return root.hits.hits[0];</code> would traverse a result set to show just the first match<br>\
+ <code>return Object.keys(root.nodes).reduce(function(tot, node) { return tot + root.nodes[node].os.mem.used_in_bytes; }, 0);</code> would return the total memory used across an entire cluster<br></p>\
+ <p>The following functions are available and can be useful processing arrays and objects<br>\
+ <ul>\
+ <li><i>Object.keys</i>(object) := array</li>\
+ <li>array.<i>forEach</i>(function(prop, index))</li>\
+ <li>array.<i>map</i>(function(prop, index)) := array</li>\
+ <li>array.<i>reduce</i>(function(accumulator, prop, index), initial_value) := final_value</li>\
+ </ul>\
+ <p>When Repeat Request is running, an extra parameter called prev is passed to the transformation function. This allows comparisons, and cumulative graphing</p>\
+ <p>Example:<br>\
+ <code>var la = [ root.nodes[Object.keys(root.nodes)[0]].os.load_average[0] ]; return prev ? la.concat(prev) : la;</code> would return the load average on the first cluster node over the last minute\
+ This could be fed into the Graph to produce a load graph for the node\
+ "
+});
+
+i18n.setKeys({
+ "AnyRequest.DisplayOptionsHelp" : "\
+ <p>Raw Json: shows complete results of the query and transformation in raw JSON format </p>\
+ <p>Graph Results: To produce a graph of your results, use the result transformer to produce an array of values</p>\
+ <p>Search Results Table: If your query is a search, you can display the results of the search in a table.</p>\
+ "
+});
+
+i18n.setKeys({
+ "QueryFilter.DateRangeHelp" : "\
+ <p>Date fields accept a natural language query to produce a From and To date that form a range that the results are queried over.</p>\
+ <p>The following formats are supported:</p>\
+ <ul>\
+ <li><b>Keywords / Key Phrases</b><br>\
+ <code>now<br> today<br> tomorrow<br> yesterday<br> last / this / next + week / month / year</code><br>\
+ searches for dates matching the keyword. <code>last year</code> would search all of last year.</li>\
+ <li><b>Ranges</b><br>\
+ <code>1000 secs<br> 5mins<br> 1day<br> 2days<br> 80d<br> 9 months<br> 2yrs</code> (spaces optional, many synonyms for range qualifiers)<br>\
+ Create a search range centered on <code>now</code> extending into the past and future by the amount specified.</li>\
+ <li><b>DateTime and Partial DateTime</b><br>\
+ <code>2011<br> 2011-01<br> 2011-01-18<br> 2011-01-18 12<br> 2011-01-18 12:32<br> 2011-01-18 12:32:45</code><br>\
+ these formats specify a specific date range. <code>2011</code> would search the whole of 2011, while <code>2011-01-18 12:32:45</code> would only search for results in that 1 second range</li>\
+ <li><b>Time and Time Partials</b><br>\
+ <code>12<br> 12:32<br> 12:32:45</code><br>\
+ these formats search for a particular time during the current day. <code>12:32</code> would search that minute during today</li>\
+ <li><b>Date Ranges</b><br>\
+ <code>2010 -&gt; 2011<br> last week -&gt; next week<br> 2011-05 -&gt;<br> &lt; now</code><br>\
+ A Date Range is created by specifying two dates in any format (Keyword / DateTime / Time) separated by &lt; or -&gt; (both do the same thing). If either end of the date range is missing, it is the same as having no constraint in that direction.</li>\
+ <li><b>Date Range using Offset</b><br>\
+ <code>2010 -> 1yr<br> 3mins < now</code>\
+ Searches the specified date including the range in the direction specified.</li>\
+ <li><b>Anchored Ranges</b><br>\
+ <code>2010-05-13 05:13 <> 10m<br> now <> 1yr<br> lastweek <> 1month</code><br>\
+ Similar to above except the range is extend in both directions from the anchor date</li>\
+ </ul>\
+ "
+});
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/fr_strings.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/fr_strings.js
new file mode 100644
index 000000000..2cc9bbb0c
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/fr_strings.js
@@ -0,0 +1,164 @@
+i18n.setKeys({
+// "General.Elasticsearch": "Elasticsearch",
+ "General.LoadingAggs" : "Chargement des facettes...",
+ "General.Searching": "Recherche en cours...",
+ "General.Search": "Recherche",
+ "General.Help": "Aide",
+// "General.HelpGlyph": "?",
+// "General.CloseGlyph": "X",
+ "General.RefreshResults": "Rafraîchir",
+ "General.ManualRefresh": "Rafraîchissement manuel",
+ "General.RefreshQuickly": "Rafraîchissement rapide",
+ "General.Refresh5seconds": "Rafraîchissement toutes les 5 secondes",
+ "General.Refresh1minute": "Rafraîchissement toutes les minutes",
+ "AliasForm.AliasName": "Alias",
+ "AliasForm.NewAliasForIndex": "Nouvel Alias pour {0}",
+ "AliasForm.DeleteAliasMessage": "Entrez ''{0}'' pour effacer {1}. Attention, action irréversible.",
+ "AnyRequest.DisplayOptions" : "Options d'affichage",
+ "AnyRequest.AsGraph" : "En graphe",
+ "AnyRequest.AsJson" : "En JSON brut",
+ "AnyRequest.AsTable" : "En tableau",
+ "AnyRequest.History" : "Historique",
+ "AnyRequest.RepeatRequest" : "Répétition automatique de la requête",
+ "AnyRequest.RepeatRequestSelect" : "Répéter la requête toutes les ",
+ "AnyRequest.Transformer" : "Transformation des résultats",
+// "AnyRequest.Pretty": "Pretty",
+ "AnyRequest.Query" : "Recherche",
+ "AnyRequest.Request": "Requête",
+ "AnyRequest.Requesting": "Requête en cours...",
+ "AnyRequest.ValidateJSON": "Valider le JSON",
+ "Browser.Title": "Navigateur",
+ "Browser.ResultSourcePanelTitle": "Résultat au format JSON",
+ "Command.DELETE": "SUPPRIMER",
+ "Command.SHUTDOWN": "ETEINDRE",
+ "Command.DeleteAliasMessage": "Supprimer l'Alias?",
+ "ClusterOverView.IndexName": "Index",
+ "ClusterOverview.NumShards": "Nombre de shards",
+ "ClusterOverview.NumReplicas": "Nombre de replica",
+ "ClusterOverview.NewIndex": "Nouvel Index",
+// "IndexActionsMenu.Title": "Actions",
+ "IndexActionsMenu.NewAlias": "Nouvel Alias...",
+ "IndexActionsMenu.Refresh": "Rafraîchir",
+ "IndexActionsMenu.Flush": "Flusher",
+ "IndexActionsMenu.Optimize": "Optimiser...",
+ "IndexActionsMenu.Snapshot": "Dupliquer l'index (Snapshot)",
+ "IndexActionsMenu.Analyser": "Tester un analyseur",
+ "IndexActionsMenu.Open": "Ouvrir",
+ "IndexActionsMenu.Close": "Fermer",
+ "IndexActionsMenu.Delete": "Effacer...",
+// "IndexInfoMenu.Title": "Info",
+ "IndexInfoMenu.Status": "Etat de l'Index",
+ "IndexInfoMenu.Metadata": "Métadonnées de l'Index",
+ "IndexCommand.TextToAnalyze": "Texte à analyser",
+ "IndexCommand.ShutdownMessage": "Entrez ''{0}'' pour éteindre {1}. Le noeud NE PEUT PAS être redémarré depuis cette interface.",
+// "IndexSelector.NameWithDocs": "{0} ({1} docs)",
+ "IndexSelector.SearchIndexForDocs": "Chercher dans {0} les documents correspondant à",
+ "FilterBrowser.OutputType": "Format d'affichage des résultats {0}",
+ "FilterBrowser.OutputSize": "Nombre de Résultats: {0}",
+ "Header.ClusterHealth": "Santé du cluster: {0} ({1} {2})",
+ "Header.ClusterNotConnected": "Santé du cluster: non connecté",
+ "Header.Connect": "Se connecter",
+ "Nav.AnyRequest": "Autres requêtes",
+ "Nav.StructuredQuery": "Requêtes structurées",
+ "Nav.Browser": "Navigateur",
+ "Nav.ClusterHealth": "Santé du cluster",
+ "Nav.ClusterState": "Etat du cluster",
+ "Nav.ClusterNodes": "Noeuds du cluster",
+// "Nav.Info": "Info",
+ "Nav.NodeStats": "Statistiques sur les noeuds",
+ "Nav.Overview": "Aperçu",
+ "Nav.Indices": "Index",
+ "Nav.Plugins": "Plugins",
+ "Nav.Status": "Etat",
+ "Nav.Templates": "Templates",
+ "Nav.StructuredQuery": "Recherche Structurée",
+// "NodeActionsMenu.Title": "Actions",
+ "NodeActionsMenu.Shutdown": "Eteindre...",
+// "NodeInfoMenu.Title": "Info",
+ "NodeInfoMenu.ClusterNodeInfo": "Infos sur le noeud du cluster",
+ "NodeInfoMenu.NodeStats": "Statistiques du noeud",
+ "NodeType.Client": "Noeud Client",
+ "NodeType.Coord": "Coordinateur",
+ "NodeType.Master": "Noeud Master",
+ "NodeType.Tribe": "Noeud Tribe",
+ "NodeType.Worker": "Noeud Worker",
+ "NodeType.Unassigned": "Non assigné",
+ "OptimizeForm.OptimizeIndex": "Optimiser {0}",
+ "OptimizeForm.MaxSegments": "Nombre maximum de segments",
+ "OptimizeForm.ExpungeDeletes": "Seulement purger les suppressions",
+ "OptimizeForm.FlushAfter": "Flusher après l'optimisation",
+ "OptimizeForm.WaitForMerge": "Attendre la fin de la fusion",
+ "Overview.PageTitle" : "Aperçu du cluster",
+// "Output.JSON": "JSON",
+ "Output.Table": "Tableau",
+ "Output.ShowSource": "Voir la requête source",
+ "TableResults.Summary": "Recherche sur {0} des {1} shards. {2} résultats. {3} secondes",
+ "QueryFilter.AllIndices": "Tous les index",
+ "QueryFilter.AnyValue": "Tout",
+ "QueryFilter-Header-Indices": "Index",
+// "QueryFilter-Header-Types": "Types",
+ "QueryFilter-Header-Fields": "Champs",
+ "QueryFilter.DateRangeHint.from": "De : {0}",
+ "QueryFilter.DateRangeHint.to": " A : {0}",
+ "Query.FailAndUndo": "Requête en échec. Annulation des dernières modifications.",
+ "StructuredQuery.ShowRawJson": "Voir le JSON brut"
+});
+
+i18n.setKeys({
+ "AnyRequest.TransformerHelp" : "\
+ <p>Le transformateur de résultats peut être utilisé pour modifier a posteriori les résultats JSON bruts dans un format plus utile.</p>\
+ <p>Le transformateur devrait contenir le corps d'une fonction javascript. La valeur de retour de la fonction devient la nouvelle valeur qui sera passée à l'afficheur des documents JSON.</p>\
+ <p>Exemple:<br>\
+ <code>return root.hits.hits[0];</code> ne renverra que le premier élément de l'ensemble des résultats.<br>\
+ <code>return Object.keys(root.nodes).reduce(function(tot, node) { return tot + root.nodes[node].os.mem.used_in_bytes; }, 0);</code> retournera la mémoire totale utilisée dans l'ensemble du cluster.<br></p>\
+ <p>Les fonctions suivantes sont disponibles et peuvent vous être utiles pour travailler sur les tableaux et les objets:<br>\
+ <ul>\
+ <li><i>Object.keys</i>(object) := array</li>\
+ <li>array.<i>forEach</i>(function(prop, index))</li>\
+ <li>array.<i>map</i>(function(prop, index)) := array</li>\
+ <li>array.<i>reduce</i>(function(accumulator, prop, index), initial_value) := final_value</li>\
+ </ul>\
+ <p>Lorsque vous activez la répétition automatique de la requête, un paramètre supplémentaire nommé prev est passé à la fonction de transformation. Cela permet les comparaisons et les graphes cumulatifs.</p>\
+ <p>Exemple:<br>\
+ <code>var la = [ root.nodes[Object.keys(root.nodes)[0]].os.load_average[0] ]; return prev ? la.concat(prev) : la;</code> retournera la charge moyenne du premier noeud du cluster pour la dernière minute écoulée.\
+ Cela peut alimenter ensuite le graphe pour produire un graphe de charge du noeud.\
+ "
+});
+
+i18n.setKeys({
+ "AnyRequest.DisplayOptionsHelp" : "\
+ <p>En JSON brut: affiche les résultats complets de la recherche éventuellement transformée au format JSON brut.</p>\
+ <p>En graphe: pour fabriquer un graphe de vos résultats, utilsez la transformation de résultats pour générer un tableau de valeurs.</p>\
+ <p>En tableau: si votre requête est une recherche, vous pouvez alors afficher les résultats dans un tableau.</p>\
+ "
+});
+
+i18n.setKeys({
+ "QueryFilter.DateRangeHelp" : "\
+ <p>Les champs Date acceptent une requête en langage naturel pour produire un écart de date (from/to) correspondant.</p>\
+ <p>Les formats suivants sont acceptés :</p>\
+ <ul>\
+ <li><b>Mots clés</b><br>\
+ <code>now<br> today<br> tomorrow<br> yesterday<br> last / this / next + week / month / year</code><br>\
+ Cherchera pour des dates correspondant au mot clé. <code>last year</code> cherchera sur toute l'année précédente.</li>\
+ <li><b>Ecarts</b><br>\
+ <code>1000 secs<br> 5mins<br> 1day<br> 2days<br> 80d<br> 9 months<br> 2yrs</code> (les espaces sont optionnels et il existe beaucoup de synonymes pour qualifier les écarts)<br>\
+ Créé un écart de date basé sur l'heure courante (maintenant) avec plus ou moins l'écart indiqué.</li>\
+ <li><b>Dates et Dates partielles</b><br>\
+ <code>2011<br> 2011-01<br> 2011-01-18<br> 2011-01-18 12<br> 2011-01-18 12:32<br> 2011-01-18 12:32:45</code><br>\
+ Ces formats indiquent un écart de date spécifique. <code>2011</code> cherchera sur toute l'année 2011, alors que <code>2011-01-18 12:32:45</code> ne cherchera que pour la date précise à la seconde près.</li>\
+ <li><b>Heures et heures partielles</b><br>\
+ <code>12<br> 12:32<br> 12:32:45</code><br>\
+ Ces formats indiquent un espace de temps pour la date du jour. <code>12:32</code> cherchera les éléments d'aujourd'hui à cette minute précise.</li>\
+ <li><b>Ecart de Date</b><br>\
+ <code>2010 -&gt; 2011<br> last week -&gt; next week<br> 2011-05 -&gt;<br> &lt; now</code><br>\
+ Un écart de date est créé en spécifiant deux dates dans n'importe lequel des formats précédents (Mot clé / Dates / Heures) séparées par &lt; ou -&gt; (les deux produisent le même effet). Si la date de fin n'est pas indiquée, alors il n'y aura aucune contrainte de fin.</li>\
+ <li><b>Ecart de date avec décalage</b><br>\
+ <code>2010 -> 1yr<br> 3mins < now</code>\
+ Cherche en incluant un décalage de la date dans la direction indiquée.</li>\
+ <li><b>Ecart de date avec bornes</b><br>\
+ <code>2010-05-13 05:13 <> 10m<br> now <> 1yr<br> lastweek <> 1month</code><br>\
+ Similaire à ci-dessus excepté que le décalage est appliqué dans les deux sens à partir de la date indiquée.</li>\
+ </ul>\
+ "
+});
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/pt_strings.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/pt_strings.js
new file mode 100644
index 000000000..d4b6abff5
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/pt_strings.js
@@ -0,0 +1,174 @@
+i18n.setKeys({
+ "General.Elasticsearch": "Elasticsearch",
+ "General.LoadingAggs": "Carregando Facetas...",
+ "General.Searching": "Buscando...",
+ "General.Search": "Busca",
+ "General.Help": "Ajuda",
+ "General.HelpGlyph": "?",
+ "General.CloseGlyph": "X",
+ "General.RefreshResults": "Atualizar",
+ "General.ManualRefresh": "Atualização Manual",
+ "General.RefreshQuickly": "Atualização rápida",
+ "General.Refresh5seconds": "Atualização a cada 5 segundos",
+ "General.Refresh1minute": "Atualização a cada minuto",
+ "AliasForm.AliasName": "Apelido",
+ "AliasForm.NewAliasForIndex": "Novo apelido para {0}",
+ "AliasForm.DeleteAliasMessage": "digite ''{0}'' para deletar {1}. Não há como voltar atrás",
+ "AnyRequest.DisplayOptions" : "Mostrar Opções",
+ "AnyRequest.AsGraph" : "Mostrar como gráfico",
+ "AnyRequest.AsJson" : "Mostrar JSON bruto",
+ "AnyRequest.AsTable" : "Mostrar tabela de resultados da consulta",
+ "AnyRequest.History" : "Histórico",
+ "AnyRequest.RepeatRequest" : "Refazer requisição",
+ "AnyRequest.RepeatRequestSelect" : "Repetir requisição a cada ",
+ "AnyRequest.Transformer" : "Transformador de resultado",
+ "AnyRequest.Pretty": "Amigável",
+ "AnyRequest.Query" : "Consulta",
+ "AnyRequest.Request": "Requisição",
+ "AnyRequest.Requesting": "Realizando requisição...",
+ "AnyRequest.ValidateJSON": "Validar JSON",
+ "Browser.Title": "Navegador",
+ "Browser.ResultSourcePanelTitle": "Resultado",
+ "Command.DELETE": "DELETAR",
+ "Command.SHUTDOWN": "DESLIGAR",
+ "Command.DeleteAliasMessage": "Remover apelido?",
+ "ClusterOverView.IndexName": "Nome do índice",
+ "ClusterOverview.NumShards": "Número de Shards",
+ "ClusterOverview.NumReplicas": "Número de Réplicas",
+ "ClusterOverview.NewIndex": "Novo índice",
+ "IndexActionsMenu.Title": "Ações",
+ "IndexActionsMenu.NewAlias": "Novo apelido...",
+ "IndexActionsMenu.Refresh": "Atualizar",
+ "IndexActionsMenu.Flush": "Flush",
+ "IndexActionsMenu.Optimize": "Otimizar...",
+ "IndexActionsMenu.Snapshot": "Snapshot do Gateway",
+ "IndexActionsMenu.Analyser": "Analizador de teste",
+ "IndexActionsMenu.Open": "Abrir",
+ "IndexActionsMenu.Close": "Fechar",
+ "IndexActionsMenu.Delete": "Deletar...",
+ "IndexInfoMenu.Title": "Info",
+ "IndexInfoMenu.Status": "Status do índice",
+ "IndexInfoMenu.Metadata": "Metadados do índice",
+ "IndexCommand.TextToAnalyze": "Texto para analizar",
+ "IndexCommand.ShutdownMessage": "digite ''{0}'' para desligar {1}. Nó NÃO PODE ser reiniciado à partir dessa interface",
+ "IndexOverview.PageTitle": "Visão geral dos índices",
+ "IndexSelector.NameWithDocs": "{0} ({1} documentoss)",
+ "IndexSelector.SearchIndexForDocs": "Busca {0} por documentos onde:",
+ "FilterBrowser.OutputType": "Resultados: {0}",
+ "FilterBrowser.OutputSize": "Número de Resultados: {0}",
+ "Header.ClusterHealth": "saúde do cluster: {0} ({1} {2})",
+ "Header.ClusterNotConnected": "saúde do cluster: não conectado",
+ "Header.Connect": "Conectar",
+ "Nav.AnyRequest": "Qualquer requisição",
+ "Nav.Browser": "Navegador",
+ "Nav.ClusterHealth": "Saúde do Cluster",
+ "Nav.ClusterState": "Estado do Cluster",
+ "Nav.ClusterNodes": "Nós do Cluster",
+ "Nav.Info": "Informações",
+ "Nav.NodeStats": "Estatísticas do nó",
+ "Nav.Overview": "Visão Geral",
+ "Nav.Indices": "Índices",
+ "Nav.Plugins": "Plugins",
+ "Nav.Status": "Status",
+ "Nav.Templates": "Modelos",
+ "Nav.StructuredQuery": "Consulta Estruturada",
+ "NodeActionsMenu.Title": "Ações",
+ "NodeActionsMenu.Shutdown": "Desligar...",
+ "NodeInfoMenu.Title": "Informações",
+ "NodeInfoMenu.ClusterNodeInfo": "Informações do Nó do Cluster",
+ "NodeInfoMenu.NodeStats": "Estatísticas do Nó",
+ "NodeType.Client": "Nó cliente",
+ "NodeType.Coord": "Coordenador",
+ "NodeType.Master": "Nó mestre",
+ "NodeType.Tribe": "Nó tribo",
+ "NodeType.Worker": "Nó trabalhador",
+ "NodeType.Unassigned": "Não atribuido",
+ "OptimizeForm.OptimizeIndex": "Otimizar {0}",
+ "OptimizeForm.MaxSegments": "# Máximo De Segmentos",
+ "OptimizeForm.ExpungeDeletes": "Apenas Expurgar Exclusões",
+ "OptimizeForm.FlushAfter": "Flush após Otimizar",
+ "OptimizeForm.WaitForMerge": "Esperar Por Merge",
+ "Overview.PageTitle": "Visão geral do Cluster",
+ "Output.JSON": "JSON",
+ "Output.Table": "Tabela",
+ "Output.CSV": "CSV",
+ "Output.ShowSource": "Mostrar consulta original",
+ "Preference.SortCluster": "Ordenar Cluster",
+ "Sort.ByName": "Por nome",
+ "Sort.ByAddress": "Por endereço",
+ "Sort.ByType": "Por tipo",
+ "Preference.ViewAliases": "Ver Alias",
+ "ViewAliases.Grouped": "Agrupado",
+ "ViewAliases.List": "Lista",
+ "ViewAliases.None": "Nenhum",
+ "Overview.IndexFilter": "Filtar Índice",
+ "TableResults.Summary": "Buscado {0} de {1} shards. {2} resultados. {3} segundos",
+ "QueryFilter.AllIndices": "Todos os Índices",
+ "QueryFilter.AnyValue": "qualquer",
+ "QueryFilter-Header-Indices": "Índices",
+ "QueryFilter-Header-Types": "Tipos",
+ "QueryFilter-Header-Fields": "Campos",
+ "QueryFilter.DateRangeHint.from": "De : {0}",
+ "QueryFilter.DateRangeHint.to": " A : {0}",
+ "Query.FailAndUndo": "Consulta falhou. Desfazendo últimas alterações",
+ "StructuredQuery.ShowRawJson": "Mostrar JSON bruto"
+});
+
+i18n.setKeys({
+ "AnyRequest.TransformerHelp" : "\
+ <p>O Transformador de Resultados pode ser usado para transformar os resultados de uma consulta de json bruto para um formato mais útil.</p>\
+ <p>O transformador deve possuir o corpo de uma função javascript. O retorno da função se torna o novo valor passado para o json printer</p>\
+ <p>Exemplo:<br>\
+ <code>return root.hits.hits[0];</code> irá alterar a resposta para mostrar apenas o primeiro resultado<br>\
+ <code>return Object.keys(root.nodes).reduce(function(tot, node) { return tot + root.nodes[node].os.mem.used_in_bytes; }, 0);</code> irá retornar o total de memória utilizada pelo cluster<br></p>\
+ <p>As seguintes funções estão disponíveis e podem ser úteis no processamento de vetores e objetos<br>\
+ <ul>\
+ <li><i>Object.keys</i>(object) := array</li>\
+ <li>array.<i>forEach</i>(function(prop, index))</li>\
+ <li>array.<i>map</i>(function(prop, index)) := array</li>\
+ <li>array.<i>reduce</i>(function(accumulator, prop, index), initial_value) := final_value</li>\
+ </ul>\
+ <p>Durante a execução da opção Refazer Requisição, um parâmetro extra chamado prev é passado para a função de transformação. Isso permite fazer comparações e marcações cumulativas</p>\
+ <p>Exemplo:<br>\
+ <code>var la = [ root.nodes[Object.keys(root.nodes)[0]].os.load_average[0] ]; return prev ? la.concat(prev) : la;</code> irá retornar a carga média no primeiro nó do cluster no último minuto\
+ Essa informação pode ser inserida no Gráfico para fazer um gráfico de carga do nó\
+ "
+});
+
+i18n.setKeys({
+ "AnyRequest.DisplayOptionsHelp" : "\
+ <p>Json Bruto: Exibe o resultado completo da consulta e da transformação no formato de JSON bruto</p>\
+ <p>Gráfico de Resultados: Para gerar um gráfico com seus resultados, utilize o tranformador de resultados para produzir um vetor de valores</p>\
+ <p>Tabela de Resultados da Consulta: Se sua consulta for uma busca, você pode exibir seus resultados no formato de uma tabela.</p>\
+ "
+});
+
+i18n.setKeys({
+ "QueryFilter.DateRangeHelp" : "\
+ <p>Campos do tipo Data aceitam consultas em linguagem natural (em inglês) para produzir um <i>From</i> e um <i>To</i> de modo a formar um intervalo dentro do qual os resultados são filtrados.</p>\
+ <p>Os seguintes formatos são suportados:</p>\
+ <ul>\
+ <li><b>Palavras-chave</b><br>\
+ <code>now<br> today<br> tomorrow<br> yesterday<br> last / this / next + week / month / year</code><br>\
+ buscam por datas de acordo com a palavra-chave. <code>last year</code> irá buscar tudo do último ano.</li>\
+ <li><b>Intervalos</b><br>\
+ <code>1000 secs<br> 5mins<br> 1day<br> 2days<br> 80d<br> 9 months<br> 2yrs</code> (espaços são opcionais, diversos sinônimos para qualificadores de intervalo)<br>\
+ Cria um intervalo de busca a partir de agora (<code>now</code>), extendendo este intervalo no passado e no futuro de acordo com intervalo especificado.</li>\
+ <li><b>Data/Hora (<i>DateTime</i>) e Data/Hora parcial</b><br>\
+ <code>2011<br> 2011-01<br> 2011-01-18<br> 2011-01-18 12<br> 2011-01-18 12:32<br> 2011-01-18 12:32:45</code><br>\
+ esses formatos especificam um intervalo especifico. <code>2011</code> irá buscar todo o ano de 2011, enquanto <code>2011-01-18 12:32:45</code> irá buscar apenas por resultados dentro deste intervalo de 1 segundo</li>\
+ <li><b>Tempo (<i>Time</i>) e Tempo parcial</b><br>\
+ <code>12<br> 12:32<br> 12:32:45</code><br>\
+ esses formatos buscam por um horário específico no dia atual. <code>12:32</code> irá buscar este minuto específico do dia</li>\
+ <li><b>Intervalos de Data</b><br>\
+ <code>2010 -&gt; 2011<br> last week -&gt; next week<br> 2011-05 -&gt;<br> &lt; now</code><br>\
+ Um intervalo de data é criado especificando-se duas datas em qualquer formato (Palavras-chave, Data/Hora ou Tempo) separados por &lt; ou -&gt; (ambos fazem a mesma coisa). Se a data de início ou fim do intervalo não for especificada é a mesma coisa que não impor limites na busca nesta direção.</li>\
+ <li><b>Intervalo de Data com Deslocamento</b><br>\
+ <code>2010 -> 1yr<br> 3mins < now</code>\
+ Busca a data especificada incluindo o intervalo na direção determinada pelo deslocamento</li>\
+ <li><b>Intervalos Bidirecionais</b><br>\
+ <code>2010-05-13 05:13 <> 10m<br> now <> 1yr<br> lastweek <> 1month</code><br>\
+ Idêntico ao exemplo anterior porém o intervalo é extendido em ambas as direções a partir da data especificada</li>\
+ </ul>\
+ "
+});
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/tr_strings.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/tr_strings.js
new file mode 100644
index 000000000..f61195616
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/tr_strings.js
@@ -0,0 +1,177 @@
+i18n.setKeys({
+ "General.Elasticsearch": "Elasticsearch",
+ "General.LoadingAggs": "Gruplar Yükleniyor...",
+ "General.Searching": "Aranıyor...",
+ "General.Search": "Ara",
+ "General.Help": "Yardım",
+ "General.HelpGlyph": "?",
+ "General.CloseGlyph": "X",
+ "General.RefreshResults": "Yenile",
+ "General.ManualRefresh": "Manuel Yenileme",
+ "General.RefreshQuickly": "Hızlı yenile",
+ "General.Refresh5seconds": "5 saniyede bir yenile",
+ "General.Refresh1minute": "Her dakika yenile",
+ "AliasForm.AliasName": "Alternatif İsim",
+ "AliasForm.NewAliasForIndex": "{0} için yeni alternatif isim",
+ "AliasForm.DeleteAliasMessage": "{1} silmek için ''{0}'' . Geriye dönüş yoktur.",
+ "AnyRequest.DisplayOptions" : "Seçenekleri Göster",
+ "AnyRequest.AsGraph" : "Sonuçları Çizdir",
+ "AnyRequest.AsJson" : "JSON formatında göster",
+ "AnyRequest.AsTable" : "Arama sonuçlarını tablo halinde göster",
+ "AnyRequest.History" : "Geçmiş",
+ "AnyRequest.RepeatRequest" : "İsteği Tekrarla",
+ "AnyRequest.RepeatRequestSelect" : "İsteği sürekli tekrarla ",
+ "AnyRequest.Transformer" : "Sonuç Dönüştürücü",
+ "AnyRequest.Pretty": "Düzenli",
+ "AnyRequest.Query" : "Sorgu",
+ "AnyRequest.Request": "Gönder",
+ "AnyRequest.Requesting": "İsteniyor...",
+ "AnyRequest.ValidateJSON": "JSON Doğrula",
+ "Browser.Title": "Browser",
+ "Browser.ResultSourcePanelTitle": "Sonuç Kaynağı",
+ "Command.DELETE": "SİL",
+ "Command.SHUTDOWN": "KAPA",
+ "Command.DeleteAliasMessage": "Alternatif ismi sil?",
+ "ClusterOverView.IndexName": "Indeks İsmi",
+ "ClusterOverview.NumShards": "Sektör Sayısı",
+ "ClusterOverview.NumReplicas": "Yedek Sayısı",
+ "ClusterOverview.NewIndex": "Yeni Indeks",
+ "IndexActionsMenu.Title": "İşlemler",
+ "IndexActionsMenu.NewAlias": "Yeni Alternatif İsim...",
+ "IndexActionsMenu.Refresh": "Yenile",
+ "IndexActionsMenu.Flush": "Boşalt",
+ "IndexActionsMenu.Optimize": "Optimize et...",
+ "IndexActionsMenu.Snapshot": "Gateway Snapshot (Kopya Al)",
+ "IndexActionsMenu.Analyser": "Analizi test et",
+ "IndexActionsMenu.Open": "Aç",
+ "IndexActionsMenu.Close": "Kapa",
+ "IndexActionsMenu.Delete": "Sil...",
+ "IndexInfoMenu.Title": "Bilgi",
+ "IndexInfoMenu.Status": "Indeks Durumu",
+ "IndexInfoMenu.Metadata": "Indeks Metaveri",
+ "IndexCommand.TextToAnalyze": "Analiz edilecek metin",
+ "IndexCommand.ShutdownMessage": "{1} kapatmak için ''{0}'' yazın . Nod bu arayüzden tekrar BAŞLATILAMAZ",
+ "IndexOverview.PageTitle": "Indeksler Genel Bakış",
+ "IndexSelector.NameWithDocs": "{0} ({1} döküman)",
+ "IndexSelector.SearchIndexForDocs": "{0} indeksinde ara:",
+ "FilterBrowser.OutputType": "Sonuç Formatı: {0}",
+ "FilterBrowser.OutputSize": "Sonuç Sayısı: {0}",
+ "Header.ClusterHealth": "Küme Durumu: {0} ({1} de {2})",
+ "Header.ClusterNotConnected": "Küme Durumu: Bağlı Değil",
+ "Header.Connect": "Bağlan",
+ "Nav.AnyRequest": "Özel Sorgu",
+ "Nav.Browser": "Görüntüle",
+ "Nav.ClusterHealth": "Küme Durumu",
+ "Nav.ClusterState": "Küme Statüsü",
+ "Nav.ClusterNodes": "Nod Bilgileri",
+ "Nav.Info": "Bilgi",
+ "Nav.NodeStats": "Nod İstatistikleri",
+ "Nav.Overview": "Genel Bakış",
+ "Nav.Indices": "Indeksler",
+ "Nav.Plugins": "Eklentiler",
+ "Nav.Status": "Indeks İstatistikleri",
+ "Nav.Templates": "Şablonlar",
+ "Nav.StructuredQuery": "Yapılandırılmış Sorgu",
+ "NodeActionsMenu.Title": "İşlemler",
+ "NodeActionsMenu.Shutdown": "Kapat...",
+ "NodeInfoMenu.Title": "Bilgi",
+ "NodeInfoMenu.ClusterNodeInfo": "Küme Nod Bilgileri",
+ "NodeInfoMenu.NodeStats": "Nod İstatistikleri",
+ "NodeType.Client": "Client Nod",
+ "NodeType.Coord": "Coordinator",
+ "NodeType.Master": "Master Nod",
+ "NodeType.Tribe": "Tribe Nod",
+ "NodeType.Worker": "Worker Nod",
+ "NodeType.Unassigned": "Sahipsiz",
+ "OptimizeForm.OptimizeIndex": "{0} Optimize Et",
+ "OptimizeForm.MaxSegments": "Maksimum Segment Sayısı",
+ "OptimizeForm.ExpungeDeletes": "Silme İşlemi Artıklarını Temizle",
+ "OptimizeForm.FlushAfter": "Optimize Ettikten Sonra Boşalt",
+ "OptimizeForm.WaitForMerge": "Birleştirme İçin Bekle",
+ "Overview.PageTitle" : "Kümeler Genelbakış",
+ "Output.JSON": "JSON",
+ "Output.Table": "Tablo",
+ "Output.CSV": "CSV",
+ "Output.ShowSource": "Sorgu kaynağını göster",
+ "Preference.SortCluster": "Kümeyi Sırala",
+ "Sort.ByName": "İsme göre",
+ "Sort.ByAddress": "Adrese göre",
+ "Sort.ByType": "Tipe göre",
+ "Preference.SortIndices": "Indeksleri sırala",
+ "SortIndices.Descending": "Azalan",
+ "SortIndices.Ascending": "Artan",
+ "Preference.ViewAliases": "Alternatif isimleri görüntüle",
+ "ViewAliases.Grouped": "Gruplanmış",
+ "ViewAliases.List": "Liste",
+ "ViewAliases.None": "Karışık",
+ "Overview.IndexFilter": "Indeks Filtresi",
+ "TableResults.Summary": "{0} parçanın {1} tanesi arandı. {2} sonuç. {3} saniye",
+ "QueryFilter.AllIndices": "Tüm Indeksler",
+ "QueryFilter.AnyValue": "herhangi",
+ "QueryFilter-Header-Indices": "Indeksler",
+ "QueryFilter-Header-Types": "Tipler",
+ "QueryFilter-Header-Fields": "Alanlar",
+ "QueryFilter.DateRangeHint.from": "{0}'dan",
+ "QueryFilter.DateRangeHint.to": " {0}'a",
+ "Query.FailAndUndo": "Sorgu Başarısız. Son değişiklikler geri alınıyor.",
+ "StructuredQuery.ShowRawJson": "Formatsız JSON göster"
+});
+
+i18n.setKeys({
+ "AnyRequest.TransformerHelp" : "\
+ <p>Sonuç Dönüştürücü sorgudan dönen JSON sonuçlarını işleyip daha kullanışlı bir formata dönüştürmek için kullanılabilir.</p>\
+ <p>Dönüştürücü içierisinde javascript fonksiyonu tanımlanmalıdır. Bu fonksiyondan dönen yeni sonuç çıktı kısmına yazdırılır.</p>\
+ <p>Örnek:<br>\
+ <code>return root.hits.hits[0];</code> sonucu dolaşarak ilk eşleşmeyi göster<br>\
+ <code>return Object.keys(root.nodes).reduce(function(tot, node) { return tot + root.nodes[node].os.mem.used_in_bytes; }, 0);</code> tüm kümede kullanılan toplam belleği gösterir<br></p>\
+ <p>Aşağıdaki fonksiyonlar dizi ve objelerin işlenmesinde yardımcı olması için kullanılabilir<br>\
+ <ul>\
+ <li><i>Object.keys</i>(object) := array</li>\
+ <li>array.<i>forEach</i>(function(prop, index))</li>\
+ <li>array.<i>map</i>(function(prop, index)) := array</li>\
+ <li>array.<i>reduce</i>(function(accumulator, prop, index), initial_value) := final_value</li>\
+ </ul>\
+ <p>Sorgu tekrarlama çalışırken, prev isimli ekstra bir parametre dönüştürücü fonksiyonuna verilir. Bu sayede karşılaştırmalar ve toplu grafik gösterimleri yapılabilir.</p>\
+ <p>Örnek:<br>\
+ <code>var la = [ root.nodes[Object.keys(root.nodes)[0]].os.load_average[0] ]; return prev ? la.concat(prev) : la;</code> önceki dakika boyunca kümede bulunan ilk nod üzerindeki averaj yükü verir.\
+ Bu sonuç nod için yük grafiği yaratılmasında kullanılabilir.\
+ "
+});
+
+i18n.setKeys({
+ "AnyRequest.DisplayOptionsHelp" : "\
+ <p>Sade Json: Sorgunun tüm sonuçlarını ve (yapıldıysa) dönüştürüldükten sonraki halini sade JSON formatında gösterir </p>\
+ <p>Sonuçları Çizdir: Sonuçları grafiksel olarak görüntülemek için sonuç dörücüyü kullanarak değerleri dizi haline getirin.</p>\
+ <p>Arama Sonuçları Tablosu: Eğer sorgunuz bir arama ise, sonuçları bir tabloda görüntüleyebilirsiniz.</p>\
+ "
+});
+
+i18n.setKeys({
+ "QueryFilter.DateRangeHelp" : "\
+ <p>Tarih alanları ana dile yakın kelimeler kullanarak iki tarih aralığında sorgu yapılabilmesini sağlar.</p>\
+ <p>Aşağıdaki tanımlar kullanılabilir:</p>\
+ <ul>\
+ <li><b>Anahtar Kelimeler</b><br>\
+ <code>now<br> today<br> tomorrow<br> yesterday<br> last / this / next + week / month / year</code><br>\
+ kelimeleri eşleşen tarihleri verir. Örneğin <code>last year</code> geçen yıl tarihli bütün verileri döndürür.</li>\
+ <li><b>Aralıklar</b><br>\
+ <code>1000 secs<br> 5mins<br> 1day<br> 2days<br> 80d<br> 9 months<br> 2yrs</code> (boşluklar isteğe bağlıdır, ayni kelime için farklı yazım şekilleri kullanılabilir)<br>\
+ Şu anki tarihi (<code>now</code>) baz alarak geçmiş veya ileriki bir tarih aralığındaki kayıtları verir.</li>\
+ <li><b>Tarih ve Kısmi Tarihler</b><br>\
+ <code>2011<br> 2011-01<br> 2011-01-18<br> 2011-01-18 12<br> 2011-01-18 12:32<br> 2011-01-18 12:32:45</code><br>\
+ bu formatlar spesifik bir tarihi tanımlarlar. <code>2011</code> tüm 2011 yılını ararken, <code>2011-01-18 12:32:45</code> şeklinde bir sorgu sadece o saniyedeki sonuçları verir.</li>\
+ <li><b>Zaman ve Kısmi Zamanlar</b><br>\
+ <code>12<br> 12:32<br> 12:32:45</code><br>\
+ bu formatlar gün içerisinde spesifik bir zamanı tanımlarlar. Örneğin <code>12:32</code> sadece bu saat ve dakikadaki kayıtları verir.</li>\
+ <li><b>Tarih Aralıkları</b><br>\
+ <code>2010 -&gt; 2011<br> last week -&gt; next week<br> 2011-05 -&gt;<br> &lt; now</code><br>\
+ Tarih aralıkları yukarda belirtilen herhangi bir formatı &lt; or -&gt; ile ayırarak yapılabilir. Eğer aralığın bir tarafı eksikse, sorgu ucu açıkmış gibi davranır.</li>\
+ <li><b>Ofsetli Tarih Aralığı</b><br>\
+ <code>2010 -> 1yr<br> 3mins < now</code>\
+ Verilen yöndeki tarih aralığına bakar.</li>\
+ <li><b>Çakılı Aralıklar</b><br>\
+ <code>2010-05-13 05:13 <> 10m<br> now <> 1yr<br> lastweek <> 1month</code><br>\
+ Yukarıdakiyle ayni fakat belirtilen tarihten her iki yöne de bakılır.</li>\
+ </ul>\
+ "
+});
diff --git a/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/zh_strings.js b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/zh_strings.js
new file mode 100644
index 000000000..0038de173
--- /dev/null
+++ b/sdnr/wt/devicemanager/provider/src/main/resources/elasticsearch/plugins/head/_site/lang/zh_strings.js
@@ -0,0 +1,172 @@
+i18n.setKeys({
+ "General.Elasticsearch": "Elasticsearch",
+ "General.LoadingAggs": "加载聚合查询...",
+ "General.Searching": "搜索中...",
+ "General.Search": "搜索",
+ "General.Help": "帮助",
+ "General.HelpGlyph": "?",
+ "General.CloseGlyph": "X",
+ "General.RefreshResults": "刷新",
+ "General.ManualRefresh": "手动刷新",
+ "General.RefreshQuickly": "快速刷新",
+ "General.Refresh5seconds": "每5秒刷新",
+ "General.Refresh1minute": "每1分钟刷新",
+ "AliasForm.AliasName": "别名",
+ "AliasForm.NewAliasForIndex": "为 {0} 创建新别名",
+ "AliasForm.DeleteAliasMessage": "输入 ''{0}'' 删除 {1}. 此操作无法恢复",
+ "AnyRequest.DisplayOptions" : "显示选项",
+ "AnyRequest.AsGraph" : "图形视图",
+ "AnyRequest.AsJson" : "原始 JSON",
+ "AnyRequest.AsTable" : "表格视图",
+ "AnyRequest.History" : "历史记录",
+ "AnyRequest.RepeatRequest" : "重复请求",
+ "AnyRequest.RepeatRequestSelect" : "重复周期 ",
+ "AnyRequest.Transformer" : "结果转换器",
+ "AnyRequest.Pretty": "易读",
+ "AnyRequest.Query" : "查询",
+ "AnyRequest.Request": "提交请求",
+ "AnyRequest.Requesting": "请求中...",
+ "AnyRequest.ValidateJSON": "验证 JSON",
+ "Browser.Title": "数据浏览",
+ "Browser.ResultSourcePanelTitle": "原始数据",
+ "Command.DELETE": "删除",
+ "Command.SHUTDOWN": "关闭",
+ "Command.DeleteAliasMessage": "删除别名?",
+ "ClusterOverView.IndexName": "索引名称",
+ "ClusterOverview.NumShards": "分片数",
+ "ClusterOverview.NumReplicas": "副本数",
+ "ClusterOverview.NewIndex": "新建索引",
+ "IndexActionsMenu.Title": "动作",
+ "IndexActionsMenu.NewAlias": "新建别名...",
+ "IndexActionsMenu.Refresh": "刷新",
+ "IndexActionsMenu.Flush": "Flush刷新",
+ "IndexActionsMenu.Optimize": "优化...",
+ "IndexActionsMenu.Snapshot": "网关快照",
+ "IndexActionsMenu.Analyser": "测试分析器",
+ "IndexActionsMenu.Open": "开启",
+ "IndexActionsMenu.Close": "关闭",
+ "IndexActionsMenu.Delete": "删除...",
+ "IndexInfoMenu.Title": "信息",
+ "IndexInfoMenu.Status": "索引状态",
+ "IndexInfoMenu.Metadata": "索引信息",
+ "IndexCommand.TextToAnalyze": "文本分析",
+ "IndexCommand.ShutdownMessage": "输入 ''{0}'' 以关闭 {1} 节点. 关闭的节点无法从此界面重新启动",
+ "IndexOverview.PageTitle": "索引概览",
+ "IndexSelector.NameWithDocs": "{0} ({1} 个文档)",
+ "IndexSelector.SearchIndexForDocs": "搜索 {0} 的文档, 查询条件:",
+ "FilterBrowser.OutputType": "返回格式: {0}",
+ "FilterBrowser.OutputSize": "显示数量: {0}",
+ "Header.ClusterHealth": "集群健康值: {0} ({1} of {2})",
+ "Header.ClusterNotConnected": "集群健康值: 未连接",
+ "Header.Connect": "连接",
+ "Nav.AnyRequest": "复合查询",
+ "Nav.Browser": "数据浏览",
+ "Nav.ClusterHealth": "集群健康值",
+ "Nav.ClusterState": "群集状态",
+ "Nav.ClusterNodes": "集群节点",
+ "Nav.Info": "信息",
+ "Nav.NodeStats": "节点状态",
+ "Nav.Overview": "概览",
+ "Nav.Indices": "索引",
+ "Nav.Plugins": "插件",
+ "Nav.Status": "状态",
+ "Nav.Templates": "模板",
+ "Nav.StructuredQuery": "基本查询",
+ "NodeActionsMenu.Title": "动作",
+ "NodeActionsMenu.Shutdown": "关停...",
+ "NodeInfoMenu.Title": "信息",
+ "NodeInfoMenu.ClusterNodeInfo": "集群节点信息",
+ "NodeInfoMenu.NodeStats": "节点状态",
+ "NodeType.Client": "节点客户端",
+ "NodeType.Coord": "协调器",
+ "NodeType.Master": "主节点",
+ "NodeType.Tribe": "分支结点",
+ "NodeType.Worker": "工作节点",
+ "NodeType.Unassigned": "未分配",
+ "OptimizeForm.OptimizeIndex": "优化 {0}",
+ "OptimizeForm.MaxSegments": "最大索引段数",
+ "OptimizeForm.ExpungeDeletes": "只删除被标记为删除的",
+ "OptimizeForm.FlushAfter": "优化后刷新",
+ "OptimizeForm.WaitForMerge": "等待合并",
+ "Overview.PageTitle" : "集群概览",
+ "Output.JSON": "JSON",
+ "Output.Table": "Table",
+ "Output.CSV": "CSV",
+ "Output.ShowSource": "显示查询语句",
+ "Preference.SortCluster": "集群排序",
+ "Sort.ByName": "按名称",
+ "Sort.ByAddress": "按地址",
+ "Sort.ByType": "按类型",
+ "TableResults.Summary": "查询 {1} 个分片中用的 {0} 个. {2} 命中. 耗时 {3} 秒",
+ "QueryFilter.AllIndices": "所有索引",
+ "QueryFilter.AnyValue": "任意",
+ "QueryFilter-Header-Indices": "索引",
+ "QueryFilter-Header-Types": "类型",
+ "QueryFilter-Header-Fields": "字段",
+ "QueryFilter.DateRangeHint.from": "从 : {0}",
+ "QueryFilter.DateRangeHint.to": " 到 : {0}",
+ "Query.FailAndUndo": "查询失败. 撤消最近的更改",
+ "StructuredQuery.ShowRawJson": "显示原始 JSON"
+});
+
+i18n.setKeys({
+ "AnyRequest.TransformerHelp" : "\
+ <p>结果转换器用于返回结果原始JSON的后续处理, 将结果转换为更有用的格式.</p>\
+ <p>转换器应当包含javascript函数体. 函数的返回值将传递给json分析器</p>\
+ <p>Example:<br>\
+ <code>return root.hits.hits[0];</code><br>\
+ 遍历结果并只显示第一个元素<br>\
+ <code>return Object.keys(root.nodes).reduce(function(tot, node) { return tot + root.nodes[node].os.mem.used_in_bytes; }, 0);</code><br>\
+ 将返回整个集群使用的总内存<br></p>\
+ <p>以下函数可以方便的处理数组与对象<br>\
+ <ul>\
+ <li><i>Object.keys</i>(object) := array</li>\
+ <li>array.<i>forEach</i>(function(prop, index))</li>\
+ <li>array.<i>map</i>(function(prop, index)) := array</li>\
+ <li>array.<i>reduce</i>(function(accumulator, prop, index), initial_value) := final_value</li>\
+ </ul>\
+ <p>当启用重复请求时, prev 参数将会传递给转换器函数. 这将用于比较并累加图形</p>\
+ <p>Example:<br>\
+ <code>var la = [ root.nodes[Object.keys(root.nodes)[0]].os.load_average[0] ]; return prev ? la.concat(prev) : la;</code><br>\
+ 将返回第一个集群节点最近一分钟内的平均负载\
+ 将会把结果送人图表以产生一个负载曲线图\
+ "
+});
+
+i18n.setKeys({
+ "AnyRequest.DisplayOptionsHelp" : "\
+ <p>原始 Json: 将完整的查询结果转换为原始JSON格式 </p>\
+ <p>图形视图: 将查询结果图形化, 将查询结果转换为数组值的形式</p>\
+ <p>表格视图: 如果查询是一个搜索, 可以将搜索结果以表格形式显示.</p>\
+ "
+});
+
+i18n.setKeys({
+ "QueryFilter.DateRangeHelp" : "\
+ <p>Date 字段接受日期范围的形式查询.</p>\
+ <p>一下格式被支持:</p>\
+ <ul>\
+ <li><b>关键词 / 关键短语</b><br>\
+ <code>now<br> today<br> tomorrow<br> yesterday<br> last / this / next + week / month / year</code><br>\
+ 搜索关键字匹配的日期. <code>last year</code> 将搜索过去全年.</li>\
+ <li><b>范围</b><br>\
+ <code>1000 secs<br> 5mins<br> 1day<br> 2days<br> 80d<br> 9 months<br> 2yrs</code> (空格可选, 同等于多个范围修饰词)<br>\
+ 创建一个指定时间范围的搜索, 将围绕<code>现在</code> 并延伸至过去与未来时间段.</li>\
+ <li><b>DateTime 与 DateTime局部</b><br>\
+ <code>2011<br> 2011-01<br> 2011-01-18<br> 2011-01-18 12<br> 2011-01-18 12:32<br> 2011-01-18 12:32:45</code><br>\
+ 指定一个特定的日期范围. <code>2011</code>会搜索整个 2011年, 而 <code>2011-01-18 12:32:45</code> 将只搜索1秒范围内</li>\
+ <li><b>Time 与 Time局部</b><br>\
+ <code>12<br> 12:32<br> 12:32:45</code><br>\
+ 这些格式只搜索当天的特定时间. <code>12:32</code> 将搜索当天的那一分钟</li>\
+ <li><b>日期范围</b><br>\
+ <code>2010 -&gt; 2011<br> last week -&gt; next week<br> 2011-05 -&gt;<br> &lt; now</code><br>\
+ 日期范围是将两个日期格式串 (日期关键字 / DateTime / Time) 用 &lt; 或 -&gt; (效果相同) 分隔. 如果缺少任意一端,那么在这个方向上时间将没有限制.</li>\
+ <li><b>偏移日期范围</b><br>\
+ <code>2010 -> 1yr<br> 3mins < now</code>\
+ 搜索包括指定方向上偏移的日期.</li>\
+ <li><b>锚定范围</b><br>\
+ <code>2010-05-13 05:13 <> 10m<br> now <> 1yr<br> lastweek <> 1month</code><br>\
+ 类似于上面的便宜日期,在两个方向上将锚定的日期延长</li>\
+ </ul>\
+ "
+});