mirror of https://github.com/rancher/ui.git
More updates for I18N (#647)
This commit is contained in:
parent
a208c8ebf8
commit
a3943205b0
|
|
@ -5,14 +5,14 @@
|
|||
<div class="well">
|
||||
<div class="form-inline r-mb25 inline-block">
|
||||
<div class="form-group">
|
||||
{{input class="form-control input-sm r-mr5" value=filters.eventType placeholder="auditLogsPage.form.eventType.placeholder"}}
|
||||
{{input class="form-control input-sm r-mr5" value=filters.eventType placeholder=(t "auditLogsPage.form.eventType.placeholder")}}
|
||||
<div class="input-group r-mr5">
|
||||
<span class="input-group-btn">
|
||||
{{input class="form-control input-sm pull-right" value=filters.resourceId placeholder="auditLogsPage.form.resourceId.placeholder" disabled=resourceIdReady}}
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">{{if filters.resourceType filters.resourceType "auditLogsPage.form.resourceType.placeholder"}} <i class="icon icon-chevron-down"></i></button>
|
||||
{{input class="form-control input-sm pull-right" value=filters.resourceId placeholder=(t "auditLogsPage.form.resourceId.placeholder") disabled=resourceIdReady}}
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">{{if filters.resourceType filters.resourceType (t "auditLogsPage.form.resourceType.placeholder")}} <i class="icon icon-chevron-down"></i></button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li role="presentation" class="dropdown-header">
|
||||
Select a Resource Type:
|
||||
{{t 'auditLogsPage.form.resourceType.dropdownPlaceholder'}}
|
||||
</li>
|
||||
{{#each model.resourceTypes as |resource|}}
|
||||
<li {{action "updateResourceType" resource}}>
|
||||
|
|
@ -22,12 +22,12 @@
|
|||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
{{input class="form-control input-sm r-mr5" value=filters.clientIp placeholder="auditLogsPage.form.requestIp.placeholder"}}
|
||||
{{input class="form-control input-sm r-mr5" value=filters.clientIp placeholder=(t "auditLogsPage.form.requestIp.placeholder")}}
|
||||
<span class="dropdown">
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">{{if authTypeReadable authTypeReadable "auditLogsPage.form.authType.placeholder"}} <i class="icon icon-chevron-down"></i></button>
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">{{if authTypeReadable authTypeReadable (t "auditLogsPage.form.authType.placeholder")}} <i class="icon icon-chevron-down"></i></button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li role="presentation" class="dropdown-header">
|
||||
Select an Auth Type:
|
||||
{{t 'auditLogsPage.form.authType.dropdownPlaceholder'}}
|
||||
</li>
|
||||
{{#each authTypes as |type|}}
|
||||
<li {{action "updateAuthType" type}}>
|
||||
|
|
@ -53,27 +53,27 @@
|
|||
<tbody>
|
||||
{{#each model.auditLog as |log|}}
|
||||
<tr>
|
||||
<td data-title="Time:">{{format-relative log.created interval=C.LANGUAGE.FORMAT_RELATIVE_TIMEOUT}}</td>
|
||||
<td data-title="Event Type:" class="force-wrap" title="{{log.eventType}}">
|
||||
<td data-title="{{t 'auditLogsPage.table.time'}}:">{{format-relative log.created interval=C.LANGUAGE.FORMAT_RELATIVE_TIMEOUT}}</td>
|
||||
<td data-title="{{t 'auditLogsPage.table.eventType'}}:" class="force-wrap" title="{{log.eventType}}">
|
||||
{{log.eventType}} <i class="icon icon-info addtl-info-trigger" {{action 'showResponseObjects' log.requestObject log.responseObject }}></i>
|
||||
</td>
|
||||
<td data-title="Description:">{{#if log.description}}{{log.description}}{{else}}<span class="text-muted">None</span>{{/if}}</td>
|
||||
<td data-title="Environment:" class="clip">
|
||||
<td data-title="{{t 'auditLogsPage.table.description'}}:">{{#if log.description}}{{log.description}}{{else}}<span class="text-muted">None</span>{{/if}}</td>
|
||||
<td data-title="{{t 'auditLogsPage.table.environment'}}:" class="clip">
|
||||
{{#if (eq log.account.type "project")}}
|
||||
{{log.account.name}}
|
||||
{{else}}
|
||||
<span class="text-muted">-</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td data-title="Resource Type(ID):" class="clip" title="{{log.resourceType}}">
|
||||
<td data-title="{{t 'auditLogsPage.table.resourceTypeId'}}:" class="clip" title="{{log.resourceType}}">
|
||||
{{#if log.links.resource}}
|
||||
<a href="{{log.links.resource}}" target="_blank">{{log.resourceType}}{{#if log.resourceId}}: {{log.resourceId}}{{/if}}</a>
|
||||
{{else}}
|
||||
{{log.resourceType}}{{#if log.resourceId}}: {{log.resourceId}}{{/if}}
|
||||
{{/if}}
|
||||
</td>
|
||||
<td data-title="Identity:">{{identity-block identityNotParsed=log.authenticatedAsIdentityId}}</td>
|
||||
<td data-title="Auth & IP:" class="clip">{{auth-type log.authType}}<div>{{format-ip ip=log.clientIp noIp='generic.emptyString'}}</div></td>
|
||||
<td data-title="{{t 'auditLogsPage.table.identity'}}:">{{identity-block identityNotParsed=log.authenticatedAsIdentityId}}</td>
|
||||
<td data-title="{{t 'auditLogsPage.table.authIp'}}:" class="clip">{{auth-type log.authType}}<div>{{format-ip ip=log.clientIp noIp='generic.emptyString'}}</div></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
<section class="header">
|
||||
<h1>
|
||||
Catalog: <span class="text-capitalize">{{selectedCatalog}}</span>
|
||||
</h1>
|
||||
<h1>{{t 'catalogPage.index.header'}} <span class="text-capitalize">{{selectedCatalog}}</span></h1>
|
||||
|
||||
<div class="pull-right">
|
||||
<button type="button" class="btn btn-default btn-sm" disabled={{eq updating 'yes'}} {{action "update"}}>
|
||||
|
|
@ -32,7 +30,7 @@
|
|||
|
||||
<div class="btn-group searchable pull-right">
|
||||
<i class="icon icon-search"></i>
|
||||
{{input placeholder="Search..." class="form-control input-sm" value=search}}
|
||||
{{input placeholder=(t 'catalogPage.index.search.placeholder') class="form-control input-sm" value=search}}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
@ -41,7 +39,7 @@
|
|||
<div class="container-catalog text-center">
|
||||
{{#if catalogItem.official}}
|
||||
<div class='badge-certified'>
|
||||
<strong>Certified</strong>
|
||||
<strong>{{t 'catalogPage.index.certified'}}</strong>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="catalog-icon">
|
||||
|
|
@ -61,5 +59,12 @@
|
|||
</div>
|
||||
{{else}}
|
||||
<div class="text-muted r-mt20">There are no compatible templates{{#if showCatalogDropdown}} in this Catalog{{/if}}.</div>
|
||||
<div class="text-muted r-mt20">
|
||||
{{#if showCatalogDropdown}}
|
||||
{{t 'catalogPage.index.noData.plural'}}
|
||||
{{else}}
|
||||
{{t 'catalogPage.index.noData.singular'}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
<thead>
|
||||
{{#if labelArray.length}}
|
||||
<tr>
|
||||
{{#if showKind}}{{sortable-th sortable=this action="changeSort" name="kind" width="90"}}{{/if}}
|
||||
{{sortable-th sortable=this action="changeSort" name="key"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="value"}}
|
||||
{{#if showKind}}{{sortable-th sortable=this action="changeSort" name="kind" label='labelsSection.kind' width="90"}}{{/if}}
|
||||
{{sortable-th sortable=this action="changeSort" name="key" label='labelsSection.key'}}
|
||||
{{sortable-th sortable=this action="changeSort" name="value" label='labelsSection.value'}}
|
||||
</tr>
|
||||
{{/if}}
|
||||
</thead>
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
<td data-title="Value:" class="force-wrap">{{pretty-json value=label.value}}</td>
|
||||
</tr>
|
||||
{{else}}
|
||||
<tr><td colspan="3" class="text-center text-muted">No labels</td></tr>
|
||||
<tr><td colspan="3" class="text-center text-muted">{{t 'labelsSection.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<div class="col-md-4">
|
||||
{{input-text-file
|
||||
value=subscriptionCert
|
||||
placeholder="Your Azure subscription certificate"
|
||||
placeholder="machine.driverAzure.accountAccess.subscriptionCert.placeholder"
|
||||
accept="text/*, .cer"
|
||||
}}
|
||||
</div>
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
<div class="col-md-4">
|
||||
{{input-text-file
|
||||
value=azureConfig.publishSettingsFile
|
||||
placeholder="Your Publish Settings file"
|
||||
placeholder="machine.driverAzure.instance.publishSettingsFile.placeholder"
|
||||
accept="text/*, .publishsettings"
|
||||
}}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<div class="shell-popup">
|
||||
<h2><i class="icon icon-terminal"></i> Shell: {{model.displayName}}</h2>
|
||||
<h2><i class="icon icon-terminal"></i> {{t 'consolePage.header'}} {{model.displayName}}</h2>
|
||||
{{#container-shell
|
||||
instance=model
|
||||
showProtip=false
|
||||
|
|
@ -8,6 +8,6 @@
|
|||
dismiss=(action "cancel")
|
||||
disconncted=(action "cancel")
|
||||
}}
|
||||
<button {{action "cancel"}} class="btn btn-primary">Close</button>
|
||||
<button {{action "cancel"}} class="btn btn-primary">{{t 'consolePage.closeButton'}}</button>
|
||||
{{/container-shell}}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
<section class="fail-whale">
|
||||
<div class="error">
|
||||
<h2 class="bg-danger">Error</h2>
|
||||
<h2 class="bg-danger">{{t 'failWhalePage.header'}}</h2>
|
||||
<div class="r-p20">
|
||||
<h4 class="r-mt20">{{model.code}} {{#if model.status}}({{model.status}}){{/if}}</h4>
|
||||
<p>{{model.message}}</p>
|
||||
<p class="small">{{model.detail}}</p>
|
||||
<div class="r-mt20">
|
||||
<a href="#" onclick="window.location.href = window.location.href; return false;">Reload</a> to try again
|
||||
or <a class="hand" {{action "logout"}}>log out</a>
|
||||
{{format-html-message 'failWhalePage.reloadButton'}} <a class="hand" {{action "logout"}}>{{t 'failWhalePage.logoutButton'}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<section class="header">
|
||||
<h1 style="display: block">kubectl</h1>
|
||||
<h1 style="display: block">{{t 'k8sTab.kubectl.header'}}</h1>
|
||||
</section>
|
||||
|
||||
<section class="well">
|
||||
{{#if (eq step 1)}}
|
||||
<p>To use <a href="http://kubernetes.io/docs/getting-started-guides/docker/#download-kubectl" target="_blank">kubectl</a> (v1.2+ only) on your workstation, click the button to generate an API key and config file:</p>
|
||||
<button {{action "generate"}} class="btn btn-primary">Generate Config</button>
|
||||
<p>{{format-html-message 'k8sTab.kubectl.stepOne.generateConfigText'}}</p>
|
||||
<button {{action "generate"}} class="btn btn-primary">{{t 'k8sTab.kubectl.stepOne.generateButton'}}</button>
|
||||
{{/if}}
|
||||
{{#if (eq step 2)}}
|
||||
<i class="icon icon-spinner icon-spin"></i> Generating...
|
||||
<i class="icon icon-spinner icon-spin"></i> {{t 'k8sTab.kubectl.stepTwo.progress'}}
|
||||
{{/if}}
|
||||
{{#if (eq step 3)}}
|
||||
<p>Put this into <code>~/.kube/config</code>:</p>
|
||||
<p>{{format-html-message 'k8sTab.kubectl.stepThree.helpText'}}</p>
|
||||
<pre><code>{{kubeconfig}}</code></pre>
|
||||
{{copy-to-clipboard tooltipText="" buttonText="copyToClipboard.tooltip" clipboardText=kubeconfig class="with-clip"}}
|
||||
<p class="r-mt10 r-mb0">Then <a href="http://kubernetes.io/docs/getting-started-guides/docker/#download-kubectl" target="_blank">download</a> (if needed) and run <code>kubectl</code></p>
|
||||
|
|
@ -19,14 +19,14 @@
|
|||
</section>
|
||||
|
||||
<section class="well">
|
||||
<p>Or use this handy shell to directly execute <code>kubectl</code> commands:</p>
|
||||
<p>{{format-html-message 'k8sTab.kubectl.shell.helpText'}}</p>
|
||||
|
||||
{{container-shell
|
||||
classNames="inline-block"
|
||||
command=model.command
|
||||
instance=model.instance
|
||||
cols=120
|
||||
rows=30
|
||||
showProtip=false
|
||||
classNames="inline-block"
|
||||
command=model.command
|
||||
instance=model.instance
|
||||
cols=120
|
||||
rows=30
|
||||
showProtip=false
|
||||
}}
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<section class="header">
|
||||
<h1>Pods</h1>
|
||||
<h1>{{t 'k8sTab.namespace.pods.index.header'}}</h1>
|
||||
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Pod") classNames="btn btn-sm btn-primary"}}Add Pod{{/link-to}}
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Pod") classNames="btn btn-sm btn-primary"}}{{t 'k8sTab.namespace.pods.index.linkTo'}}{{/link-to}}
|
||||
</section>
|
||||
|
||||
<section class="well instances">
|
||||
<table class="grid fixed" style="margin-bottom: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
<th width="80">Status</th>
|
||||
<th>Containers</th>
|
||||
<th>Host IP</th>
|
||||
<th>Pod IP</th>
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label='generic.name'}}
|
||||
<th width="80">{{t 'k8sTab.namespace.pods.index.table.header.status'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.pods.index.table.header.containers'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.pods.index.table.header.host'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.pods.index.table.header.pod'}}</th>
|
||||
<th class="actions" width="85"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
{{#each arranged as |pod|}}
|
||||
{{k8s/pod-row model=pod}}
|
||||
{{else}}
|
||||
<tr><td colspan="7" class="text-center text-muted">You do not have any Pods yet.</td></tr>
|
||||
<tr><td colspan="7" class="text-center text-muted">{{t 'k8sTab.namespace.pods.index.table.body.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<section class="header">
|
||||
<h1>{{#link-to "k8s-tab.namespace.pods"}}Pod:{{/link-to}} {{model.displayName}}</h1>
|
||||
<h1>{{#link-to "k8s-tab.namespace.pods"}}{{t 'k8sTab.namespace.pods.pod.header.linkTo'}}{{/link-to}} {{model.displayName}}</h1>
|
||||
<div class="pull-right">
|
||||
{{action-menu model=model}}
|
||||
</div>
|
||||
|
|
@ -8,14 +8,14 @@
|
|||
<section>
|
||||
<div class="container-multi-stat">
|
||||
<div class="container-flex bordered">
|
||||
<div class="col-flex"><label>Type:</label> {{model.spec.type}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.namespace.pods.pod.type.header'}}</label> {{model.spec.type}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<ul class="nav nav-tabs nav-tabs-well" role="tablist">
|
||||
<li role="tab" class="tab" data-section="containers" {{action "selectTab" "containers" target="view"}}><a href="#">Containers</a></li>
|
||||
<li role="tab" class="tab" data-section="containers" {{action "selectTab" "containers" target="view"}}><a href="#">{{t 'k8sTab.namespace.pods.pod.navTabs.containers'}}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-form well nav-well" role="tabpanel">
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<section class="header">
|
||||
<h1>RCs</h1>
|
||||
<h1>{{t 'k8sTab.namespace.rcs.index.header'}}</h1>
|
||||
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="ReplicationController") classNames="btn btn-sm btn-primary"}}Add RC{{/link-to}}
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="ReplicationController") classNames="btn btn-sm btn-primary"}}{{t 'k8sTab.namespace.rcs.index.linkTo'}}{{/link-to}}
|
||||
</section>
|
||||
|
||||
<section class="well instances">
|
||||
<table class="grid fixed" style="margin-bottom: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
<th width="80">Replicas</th>
|
||||
<th>Selectors</th>
|
||||
<th>Containers</th>
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label='generic.name'}}
|
||||
<th width="80">{{t 'k8sTab.namespace.rcs.index.table.header.replicas'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.rcs.index.table.header.selectors'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.rcs.index.table.header.containers'}}</th>
|
||||
<th class="actions" width="85"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
{{#each arranged as |rc|}}
|
||||
{{k8s/rc-row model=rc}}
|
||||
{{else}}
|
||||
<tr><td colspan="5" class="text-center text-muted">You do not have any Replication Controllers yet.</td></tr>
|
||||
<tr><td colspan="5" class="text-center text-muted">{{t 'k8sTab.namespace.rcs.index.table.body.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<section class="header">
|
||||
<h1>{{#link-to "k8s-tab.namespace.rcs"}}RC:{{/link-to}} {{model.displayName}}</h1>
|
||||
<h1>{{#link-to "k8s-tab.namespace.rcs"}}{{t 'k8sTab.namespace.rcs.rc.header'}}{{/link-to}} {{model.displayName}}</h1>
|
||||
<div class="pull-right">
|
||||
{{action-menu model=model}}
|
||||
</div>
|
||||
|
|
@ -8,24 +8,24 @@
|
|||
<section>
|
||||
<div class="container-multi-stat">
|
||||
<div class="container-flex bordered">
|
||||
<div class="col-flex"><label>Type:</label> {{model.spec.type}}</div>
|
||||
<div class="col-flex"><label>Cluster IP:</label> {{model.spec.clusterIP}}</div>
|
||||
<div class="col-flex"><label>Balancer IP:</label> {{default-str model.spec.loadBalancerIP default="None"}}</div>
|
||||
<div class="col-flex"><label>Session Affinity:</label> {{model.spec.sessionAffinity}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.type'}}</label> {{model.spec.type}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.cluster'}}</label> {{model.spec.clusterIP}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.balancer'}}</label> {{default-str model.spec.loadBalancerIP default="None"}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.session'}}</label> {{model.spec.sessionAffinity}}</div>
|
||||
<div class="col-flex">
|
||||
<label>External IPs:</label>
|
||||
<label>{{t 'k8sTab.multistat.header.external'}}</label>
|
||||
{{#each model.spec.externalIPs as |ip index|}}
|
||||
{{if (eq index 0) '' ','}}{{ip}}
|
||||
{{else}}
|
||||
None
|
||||
{{t 'generic.none'}}
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="col-flex">
|
||||
<label>Selectors:</label>
|
||||
<label>{{t 'k8sTab.multistat.header.selectors'}}</label>
|
||||
{{#each model.selectorsAsArray as |sel|}}
|
||||
<span class="badge badge-default">{{sel.label}}={{sel.value}}</span>
|
||||
{{else}}
|
||||
None
|
||||
{{t 'generic.none'}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -34,9 +34,9 @@
|
|||
|
||||
<section>
|
||||
<ul class="nav nav-tabs nav-tabs-well shadowed" role="tablist">
|
||||
<li role="tab" class="tab" data-section="pods" {{action "selectTab" "pods" target="view"}}><a href="#">Pods</a></li>
|
||||
<li role="tab" class="tab" data-section="labels" {{action "selectTab" "labels" target="view"}}><a href="#">Labels</a></li>
|
||||
<li role="tab" class="tab" data-section="ports" {{action "selectTab" "ports" target="view"}}><a href="#">Ports</a></li>
|
||||
<li role="tab" class="tab" data-section="pods" {{action "selectTab" "pods" target="view"}}><a href="#">{{t 'k8sTab.navTabs.pods'}}</a></li>
|
||||
<li role="tab" class="tab" data-section="labels" {{action "selectTab" "labels" target="view"}}><a href="#">{{t 'k8sTab.navTabs.labels'}}</a></li>
|
||||
<li role="tab" class="tab" data-section="ports" {{action "selectTab" "ports" target="view"}}><a href="#">{{t 'k8sTab.navTabs.ports'}}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-form well" role="tabpanel">
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
<section class="header">
|
||||
<h1>Services</h1>
|
||||
<h1>{{t 'k8sTab.namespace.services.header'}}</h1>
|
||||
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Service") classNames="btn btn-sm btn-primary"}}Add Service{{/link-to}}
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Service") classNames="btn btn-sm btn-primary"}}{{t 'k8sTab.namespace.services.linkTo'}}{{/link-to}}
|
||||
</section>
|
||||
|
||||
<section class="well instances">
|
||||
<table class="grid fixed" style="margin-bottom: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="serviceType" width="150" label="Type"}}
|
||||
<th width="150">Cluster IP</th>
|
||||
<th width="80">Pods</th>
|
||||
<th>Ports</th>
|
||||
<th>Selectors</th>
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label="generic.name"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="serviceType" width="150" label="generic.type"}}
|
||||
<th width="150">{{t 'k8sTab.namespace.services.table.header.cluster'}}</th>
|
||||
<th width="80">{{t 'k8sTab.namespace.services.table.header.pods'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.services.table.header.ports'}}</th>
|
||||
<th>{{t 'k8sTab.namespace.services.table.header.selectors'}}</th>
|
||||
<th class="actions" width="85"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
{{#each arranged as |service|}}
|
||||
{{k8s/service-row model=service}}
|
||||
{{else}}
|
||||
<tr><td colspan="7" class="text-center text-muted">You do not have any Services yet.</td></tr>
|
||||
<tr><td colspan="7" class="text-center text-muted">{{t 'k8sTab.namespace.services.table.body.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<section class="header">
|
||||
<h1>{{#link-to "k8s-tab.namespace.services"}}Service:{{/link-to}} {{model.displayName}}</h1>
|
||||
<h1>{{#link-to "k8s-tab.namespace.services"}}{{t 'k8sTab.namespace.services.service.index.header'}}{{/link-to}} {{model.displayName}}</h1>
|
||||
<div class="pull-right">
|
||||
{{action-menu model=model}}
|
||||
</div>
|
||||
|
|
@ -8,24 +8,24 @@
|
|||
<section>
|
||||
<div class="container-multi-stat">
|
||||
<div class="container-flex bordered">
|
||||
<div class="col-flex"><label>Type:</label> {{model.spec.type}}</div>
|
||||
<div class="col-flex"><label>Cluster IP:</label> {{model.spec.clusterIP}}</div>
|
||||
<div class="col-flex"><label>Balancer IP:</label> {{default-str model.spec.loadBalancerIP default="None"}}</div>
|
||||
<div class="col-flex"><label>Session Affinity:</label> {{model.spec.sessionAffinity}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.type'}}</label> {{model.spec.type}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.cluster'}}</label> {{model.spec.clusterIP}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.balancer'}}</label> {{default-str model.spec.loadBalancerIP default="None"}}</div>
|
||||
<div class="col-flex"><label>{{t 'k8sTab.multistat.header.session'}}</label> {{model.spec.sessionAffinity}}</div>
|
||||
<div class="col-flex">
|
||||
<label>External IPs:</label>
|
||||
<label>{{t 'k8sTab.multistat.header.external'}}</label>
|
||||
{{#each model.spec.externalIPs as |ip index|}}
|
||||
{{if (eq index 0) '' ','}}{{ip}}
|
||||
{{else}}
|
||||
None
|
||||
{{t 'generic.none'}}
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="col-flex">
|
||||
<label>Selectors:</label>
|
||||
<label>{{t 'k8sTab.multistat.header.selectors'}}</label>
|
||||
{{#each model.selectorsAsArray as |sel|}}
|
||||
<span class="badge badge-default">{{sel.label}}={{sel.value}}</span>
|
||||
{{else}}
|
||||
None
|
||||
{{t 'generic.none'}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -34,9 +34,9 @@
|
|||
|
||||
<section>
|
||||
<ul class="nav nav-tabs nav-tabs-well" role="tablist">
|
||||
<li role="tab" class="tab" data-section="pods" {{action "selectTab" "pods" target="view"}}><a href="#">Pods</a></li>
|
||||
<li role="tab" class="tab" data-section="labels" {{action "selectTab" "labels" target="view"}}><a href="#">Labels</a></li>
|
||||
<li role="tab" class="tab" data-section="ports" {{action "selectTab" "ports" target="view"}}><a href="#">Ports</a></li>
|
||||
<li role="tab" class="tab" data-section="pods" {{action "selectTab" "pods" target="view"}}><a href="#">{{t 'k8sTab.navTabs.pods'}}</a></li>
|
||||
<li role="tab" class="tab" data-section="labels" {{action "selectTab" "labels" target="view"}}><a href="#">{{t 'k8sTab.navTabs.labels'}}</a></li>
|
||||
<li role="tab" class="tab" data-section="ports" {{action "selectTab" "ports" target="view"}}><a href="#">{{t 'k8sTab.navTabs.ports'}}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="horizontal-form well nav-well" role="tabpanel">
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<section class="header">
|
||||
<h1>Namespaces</h1>
|
||||
<h1>{{t 'k8sTab.namespaces.header'}}</h1>
|
||||
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Namespace") classNames="btn btn-sm btn-primary"}}Add Namespace{{/link-to}}
|
||||
{{#link-to "k8s-tab.apply" (query-params kind="Namespace") classNames="btn btn-sm btn-primary"}}{{t 'k8sTab.namespaces.linkTo'}}{{/link-to}}
|
||||
</section>
|
||||
|
||||
<section class="well instances">
|
||||
<table class="grid fixed" style="margin-bottom: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label='generic.name'}}
|
||||
<th class="actions" width="85"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
{{k8s/ns-row model=ns}}
|
||||
{{/unless}}
|
||||
{{else}}
|
||||
<tr><td colspan="5" class="text-center text-muted">You do not have any Namespaces yet.</td></tr>
|
||||
<tr><td colspan="5" class="text-center text-muted">{{t 'k8sTab.namespaces.table.body.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<table class="grid fixed" style="margin-bottom: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="state" width="125"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="ip" width="110" label="IP Address"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="host"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="image" label="Image"}}
|
||||
<th class="stats">Stats</th>
|
||||
{{sortable-th sortable=this action="changeSort" name="state" width="125" label='generic.state'}}
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label='generic.name'}}
|
||||
{{sortable-th sortable=this action="changeSort" name="ip" width="110" label="servicePage.containersTab.table.header.ipAddress"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="host" label="servicePage.containersTab.table.header.host"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="image" label="servicePage.containersTab.table.header.image"}}
|
||||
<th class="stats">{{t 'servicePage.containersTab.table.header.stats'}}</th>
|
||||
<th class="actions" width="75"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<label class="text-muted r-ml15">Links</label>
|
||||
<label class="text-muted r-ml15">{{t 'servicePage.linksTab.header'}}</label>
|
||||
<ul class="list-unstyled list-inline with-room">
|
||||
{{#each model.consumedServicesWithNames as |link|}}
|
||||
<li>{{#link-to 'service' link.service.environmentId link.service.id}} {{link.service.name}} {{/link-to}}</li>
|
||||
{{else}}
|
||||
<li class="text-muted">No Links</li>
|
||||
<li class="text-muted">{{t 'servicePage.linksTab.noData'}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
<table class="grid fixed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="150">Port</th>
|
||||
<th>Host IP</th>
|
||||
<th width="150">{{t 'servicePage.portsTab.table.header.port'}}</th>
|
||||
<th>{{t 'servicePage.portsTab.table.header.host'}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -21,12 +21,12 @@
|
|||
{{else}}
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="text-muted text-center">This Service has no ports.</div>
|
||||
<div class="text-muted text-center">{{t 'servicePage.portsTab.table.body.noData'}}</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{else}}
|
||||
<div class="text-center text-muted">Ports are only available while the service is Active.</div>
|
||||
<div class="text-center text-muted">{{t 'servicePage.portsTab.notActive'}}</div>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,15 @@
|
|||
<section class="header">
|
||||
<h1>Environments</h1>
|
||||
<h1>{{t 'settingsPage.index.header'}}</h1>
|
||||
|
||||
{{#link-to "settings.projects.new" class="btn btn-sm btn-primary"}}Add Environment{{/link-to}}
|
||||
{{#link-to "settings.projects.new" class="btn btn-sm btn-primary"}}{{t 'settingsPage.index.linkTo'}}{{/link-to}}
|
||||
</section>
|
||||
<section>
|
||||
<div class="well">
|
||||
<p>{{settings.appName}} supports grouping resources into multiple <b>environments</b>. Each one gets its own set of services and infrastructure resources, and is owned by one or more GitHub users, teams or organizations.</p>
|
||||
<p>For example, you might create separate "dev", "test", and "production" environments to keep things isolated from each other, and give "dev" access to your entire organization but restrict the "production" environment to a smaller team.</p>
|
||||
{{format-html-message 'settingsPage.index.subtext' appName=settings.appName}}
|
||||
</div>
|
||||
|
||||
{{#unless projects.current}}
|
||||
<div class="alert alert-danger"><i class="icon icon-alert"></i> There are no active environments. You will need to create or activate one before you can do anything else.</div>
|
||||
<div class="alert alert-danger"><i class="icon icon-alert"></i> {{t 'settingsPage.index.alert'}}</div>
|
||||
{{/unless}}
|
||||
</section>
|
||||
|
||||
|
|
@ -18,11 +17,11 @@
|
|||
<table class="grid fixed" style="margin-bottom: 0">
|
||||
<thead>
|
||||
<tr>
|
||||
{{sortable-th sortable=this action="changeSort" name="state" width="125"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="name"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="description"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="orchestration"}}
|
||||
<th width="80">Default</th>
|
||||
{{sortable-th sortable=this action="changeSort" name="state" label='generic.state' width="125"}}
|
||||
{{sortable-th sortable=this action="changeSort" name="name" label='generic.name'}}
|
||||
{{sortable-th sortable=this action="changeSort" name="description" label='generic.description'}}
|
||||
{{sortable-th sortable=this action="changeSort" name="orchestration" label='settingsPage.index.table.header.orchestration'}}
|
||||
<th width="80">{{t 'generic.default'}}</th>
|
||||
<th width="75"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -30,7 +29,7 @@
|
|||
{{#each arranged as |p|}}
|
||||
{{project-row model=p}}
|
||||
{{else}}
|
||||
<tr><td colspan="5" class="text-center text-muted">You don't have any environments yet.</td></tr>
|
||||
<tr><td colspan="5" class="text-center text-muted">{{t 'settingsPage.index.table.body.noData'}}</td></tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ HEADER {
|
|||
& .theme-toggle, .dropdown-header {
|
||||
padding: 5px 20px;
|
||||
color: $lightTeal;
|
||||
|
||||
|
||||
.icon-chevron-down {
|
||||
color: $lightGray;
|
||||
height: 45px;
|
||||
|
|
@ -222,7 +222,7 @@ HEADER {
|
|||
border-style: solid;
|
||||
border-width: 8px;
|
||||
position: absolute;
|
||||
right: -16px;
|
||||
right: -15px;
|
||||
top: 33%;
|
||||
z-index: 2;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@ generic:
|
|||
remove: Remove
|
||||
state: State
|
||||
unknown: Unknown
|
||||
description: Description
|
||||
default: Default
|
||||
type: Type
|
||||
|
||||
##############################
|
||||
# Routes
|
||||
|
|
@ -84,6 +87,7 @@ auditLogsPage:
|
|||
placeholder: Event Type
|
||||
resourceType:
|
||||
placeholder: "Resource Type:"
|
||||
dropdownPlaceholder: 'Select a Resource Type:'
|
||||
dropdownList:
|
||||
resourceId:
|
||||
placeholder: Resource ID
|
||||
|
|
@ -91,6 +95,7 @@ auditLogsPage:
|
|||
placeholder: Request IP
|
||||
authType:
|
||||
placeholder: "Auth Type:"
|
||||
dropdownPlaceholder: 'Select an Auth Type:'
|
||||
dropdownList:
|
||||
clearButtonText: Clear All
|
||||
searchButtonText: Search
|
||||
|
|
@ -216,6 +221,23 @@ authPage:
|
|||
pre: Enable Local Auth
|
||||
post: 'Enabling...'
|
||||
|
||||
|
||||
catalogPage:
|
||||
index:
|
||||
header: 'Catalog:'
|
||||
search:
|
||||
placeholder: Search...
|
||||
certified: Certified
|
||||
noData:
|
||||
singular: There are no compatible templates.
|
||||
plural: There are no compatible templates in this catalog.
|
||||
|
||||
|
||||
consolePage:
|
||||
header: 'Shell:'
|
||||
closeButton: Close
|
||||
|
||||
|
||||
certificatesPage:
|
||||
table:
|
||||
cn: Domain Name
|
||||
|
|
@ -340,6 +362,13 @@ containerSubpod:
|
|||
childContainers: Containers
|
||||
childSidekicks: Sidekicks
|
||||
|
||||
failWhalePage:
|
||||
header: Error
|
||||
reloadButton: |
|
||||
<a href="#" onclick="window.location.href = window.location.href; return false;">Reload</a> to try again or
|
||||
logoutButton: log out
|
||||
|
||||
|
||||
haPage:
|
||||
header:
|
||||
enabled: 'High Availability is <b class="text-success">enabled</b>'
|
||||
|
|
@ -474,7 +503,7 @@ helpPage:
|
|||
content:
|
||||
paragraph1: |
|
||||
{appName} is an open source software platform that implements a purpose-built infrastructure for running containers in production. Docker containers, as an increasingly popular application workload, create new requirements in infrastructure services such as networking, storage, load balancer, security, service discovery, and resource management.
|
||||
graphic8:
|
||||
graphic1:
|
||||
text: Find a bug?
|
||||
link: File an issue on GitHub.
|
||||
graphic2:
|
||||
|
|
@ -578,6 +607,98 @@ hostsPage:
|
|||
body:
|
||||
noData: This host does not have any volumes.
|
||||
|
||||
|
||||
k8sTab:
|
||||
kubectl:
|
||||
header: kubectl
|
||||
stepOne:
|
||||
generateConfigText: |
|
||||
To use <a href="http://kubernetes.io/docs/getting-started-guides/docker/#download-kubectl" target="_blank">kubectl</a> (v1.2+ only) on your workstation, click the button to generate an API key and config file:
|
||||
generateButton: Generate Config
|
||||
stepTwo:
|
||||
progress: Generating...
|
||||
stepThree:
|
||||
helpText: |
|
||||
Put this into <code>~/.kube/config</code>:
|
||||
downloadText: |
|
||||
Then <a href="http://kubernetes.io/docs/getting-started-guides/docker/#download-kubectl" target="_blank">download</a> (if needed) and run <code>kubectl</code>
|
||||
shell:
|
||||
helpText: |
|
||||
Or use this handy shell to directly execute <code>kubectl</code> commands:
|
||||
multistat:
|
||||
header:
|
||||
type: 'Type:'
|
||||
cluster: 'Cluster IP:'
|
||||
balancer: 'Balancer IP:'
|
||||
session: 'Session Affinity:'
|
||||
external: 'External IPs:'
|
||||
selectors: 'Selectors'
|
||||
navTabs:
|
||||
pods: Pods
|
||||
labels: Labels
|
||||
ports: Ports
|
||||
namespace:
|
||||
pods:
|
||||
index:
|
||||
header: Pods
|
||||
linkTo: Add Pod
|
||||
table:
|
||||
header:
|
||||
status: Status
|
||||
containers: Containers
|
||||
host: Host IP
|
||||
pod: Pod IP
|
||||
body:
|
||||
noData: You do not have any Pods yet.
|
||||
pod:
|
||||
header:
|
||||
linkTo: 'Pod:'
|
||||
type:
|
||||
header: 'Type:'
|
||||
navTabs:
|
||||
containers: Containers
|
||||
rcs:
|
||||
index:
|
||||
header: RCs
|
||||
linkTo: Add RC
|
||||
table:
|
||||
header:
|
||||
replicas: Replicas
|
||||
selectors: Selectors
|
||||
containers: Containers
|
||||
body:
|
||||
noData: You do not have any Replication Controllers yet.
|
||||
rc:
|
||||
header: 'RC:'
|
||||
navTabs:
|
||||
pods: Pods
|
||||
labels: Labels
|
||||
ports: Ports
|
||||
services:
|
||||
header: Services
|
||||
linkTo: Add Service
|
||||
table:
|
||||
header:
|
||||
cluster: Cluster IP
|
||||
pods: Pods
|
||||
ports: Ports
|
||||
selectors: Selectors
|
||||
body:
|
||||
noData: You do not have any Services yet.
|
||||
service:
|
||||
index:
|
||||
header: 'Service:'
|
||||
namespaces:
|
||||
header: Namespaces
|
||||
linkTo: Add Namespace
|
||||
table:
|
||||
body:
|
||||
noData: You do not have any Namespaces yet.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
loginPage:
|
||||
greeting: "Howdy!<br>Welcome to {appName}"
|
||||
githubMessage: "{appName} uses GitHub to manage accounts and teams. Click the button below to log in and give us read-only access to your basic GitHub account information."
|
||||
|
|
@ -613,6 +734,16 @@ registriesPage:
|
|||
|
||||
|
||||
servicePage:
|
||||
containersTab:
|
||||
table:
|
||||
header:
|
||||
ipAddress: IP Address
|
||||
host: Host
|
||||
image: Image
|
||||
stats: Stats
|
||||
linksTab:
|
||||
header: Links
|
||||
noData: No Links
|
||||
new:
|
||||
form:
|
||||
name:
|
||||
|
|
@ -631,6 +762,31 @@ servicePage:
|
|||
placeholder: e.g. website
|
||||
description:
|
||||
placeholder: e.g. Balancer for mycompany.com
|
||||
portsTab:
|
||||
table:
|
||||
header:
|
||||
port: Port
|
||||
host: Host IP
|
||||
body:
|
||||
noData: This Service has no ports.
|
||||
notActive: Ports are only available while the service is Active.
|
||||
|
||||
|
||||
settingsPage:
|
||||
index:
|
||||
header: Environments
|
||||
linkTo: Add Environment
|
||||
subtext: |
|
||||
<p>{appName} supports grouping resources into multiple <b>environments</b>. Each one gets its own set of services and infrastructure resources, and is owned by one or more GitHub users, teams or organizations.</p>
|
||||
<p>For example, you might create separate "dev", "test", and "production" environments to keep things isolated from each other, and give "dev" access to your entire organization but restrict the "production" environment to a smaller team.</p>
|
||||
|
||||
alert: There are no active environments. You will need to create or activate one before you can do anything else.
|
||||
table:
|
||||
header:
|
||||
orchestration: Orchestration
|
||||
body:
|
||||
noData: You don't have any environments yet.
|
||||
|
||||
|
||||
stacksPage:
|
||||
header:
|
||||
|
|
@ -1307,6 +1463,15 @@ hostSettings:
|
|||
alert: |
|
||||
Are you sure all the hosts you will create will be able to reach <code>{activeValue}</code> ?<br/>It looks like a private IP or local network.
|
||||
|
||||
machine:
|
||||
driverAzure:
|
||||
accountAccess:
|
||||
subscriptionCert:
|
||||
placeholder: Your Azure subscription certificate
|
||||
instance:
|
||||
publishSettingsFile:
|
||||
placeholder: Your Publish Settings file
|
||||
|
||||
schema:
|
||||
inputCertificate:
|
||||
prompt: Choose a Certificate...
|
||||
|
|
@ -1319,6 +1484,12 @@ inputPassword:
|
|||
inputTextFile:
|
||||
tooltip: Read from a file
|
||||
|
||||
labelsSection:
|
||||
kind: Kind
|
||||
key: Key
|
||||
value: Value
|
||||
noData: No labels
|
||||
|
||||
loginGithub:
|
||||
buttonText: Authenticate with GitHub
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue