More updates for I18N (#647)

This commit is contained in:
Westly Wright 2016-05-10 23:23:45 -07:00 committed by Vincent Fiduccia
parent a208c8ebf8
commit a3943205b0
20 changed files with 297 additions and 123 deletions

View File

@ -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 &amp; 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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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">&nbsp;</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>

View File

@ -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">

View File

@ -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">&nbsp;</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>

View File

@ -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">

View File

@ -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">&nbsp;</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>

View File

@ -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">

View File

@ -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">&nbsp;</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>

View File

@ -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">&nbsp;</th>
</tr>
</thead>

View File

@ -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>

View File

@ -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}}

View File

@ -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 &quot;dev&quot;, &quot;test&quot;, and &quot;production&quot; environments to keep things isolated from each other, and give &quot;dev&quot; access to your entire organization but restrict the &quot;production&quot; 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">&nbsp;</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>

View File

@ -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;
}

View File

@ -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 &quot;dev&quot;, &quot;test&quot;, and &quot;production&quot; environments to keep things isolated from each other, and give &quot;dev&quot; access to your entire organization but restrict the &quot;production&quot; 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