Projects UI localization

-Dashboard
-New project wizard
-Misc. missing localized strings
This commit is contained in:
Brian Federle 2012-02-14 16:00:40 -08:00
parent 667d8188e2
commit 34999a25ae
5 changed files with 138 additions and 55 deletions

View File

@ -1,3 +1,31 @@
label.manage.resources=Manage Resources
label.port.forwarding.policies=Port forwarding policies
label.load.balancing.policies=Load balancing policies
label.networking.and.security=Networking and security
label.bandwidth=Bandwidth
label.virtual.machines=Virtual machines
label.compute.and.storage=Compute and Storage
label.task.completed=Task completed
label.update.project.resources=Update project resources
label.remove.project.account=Remove project account
label.item.listing=Item listing
message.select.item=Please select an item.
label.removing=Removing
label.invite=Invite
label.add.by=Add by
label.max.vms=Max. user VMs
label.max.public.ips=Max. public IPs
label.max.volumes=Max. volumes
label.max.snapshots=Max. snapshots
label.max.templates=Max. templates
label.project.dashboard=Project dashboard
label.remind.later=Remind me later
label.invited.accounts=Invited accounts
label.invite.to=Invite to
label.add.accounts.to=Add accounts to
label.add.accounts=Add accounts
label.project.name=Project name
label.create.project=Create project
label.networks=Networks
label.launch.vm=Launch VM
label.new.vm=New VM

View File

@ -1,4 +1,32 @@
#cloudstack 3.0 (begin) ********************************************************************************************
label.manage.resources=リソースを管理する
label.port.forwarding.policies=ポートフォワーディングのポリシー
label.load.balancing.policies=バランサポリシーをロードする
label.networking.and.security=ネットワークとセキュリティ
label.bandwidth=帯域幅
label.virtual.machines=仮想マシン
label.compute.and.storage=コンピューティングとストレージ
label.task.completed=タスクが完了する
label.update.project.resources=プロジェクトリソースを更新
label.remove.project.account=プロジェクト·アカウントを削除します。
label.item.listing=アイテムリスト
message.select.item=項目を選択してください。
label.removing=削除する
label.invite=招待
label.add.by=して追加
label.max.vms=最大ユーザーのVM
label.max.public.ips=最大のパブリックIP
label.max.volumes=最大ボリューム
label.max.snapshots=最大スナップショット
label.max.templates=最大のテンプレート
label.project.dashboard=プロジェクトダッシュボード
label.remind.later=私に後で通知する
label.invited.accounts=招待アカウント
label.invite.to=への招待
label.add.accounts.to=にアカウントを追加します。
label.add.accounts=アカウントを追加する
label.project.name=プロジェクト名
label.create.project=プロジェクトを作成します。
label.networks=ネットワーク
label.launch.vm=VMを起動します。
label.new.vm=新しいVM

View File

@ -757,41 +757,41 @@
<div class="compute-and-storage">
<div class="system-dashboard">
<div class="head">
<span>Compute and Storage</span>
<span><fmt:message key="label.compute.and.storage"/></span>
</div>
<ul class="status_box good">
<!-- Virtual Machines -->
<li class="block virtual-machines">
<span class="header">Virtual Machines</span>
<span class="header"><fmt:message key="label.virtual.machines"/></span>
<div class="icon"></div>
<div class="overview">
<!-- Running -->
<div class="overview-item running">
<div class="total" data-item="runningInstances">5</div>
<div class="label">Running</div>
<div class="label"><fmt:message key="state.Running"/></div>
</div>
<!-- Stopped -->
<div class="overview-item stopped">
<div class="total" data-item="stoppedInstances">10</div>
<div class="label">Stopped</div>
<div class="label"><fmt:message key="state.Stopped"/></div>
</div>
</div>
</li>
<!-- Storage -->
<li class="block storage">
<span class="header">Storage</span>
<span class="header"><fmt:message key="label.storage"/></span>
<div class="icon"></div>
<div class="overview">
<div class="total" data-item="totalVolumes">10</div>
<div class="label">volumes</div>
<div class="label"><fmt:message key="label.volumes"/></div>
</div>
</li>
<!-- Bandwidth -->
<li class="block storage bandwidth">
<span class="header">Bandwidth</span>
<span class="header"><fmt:message key="label.bandwidth"/></span>
<div class="icon"></div>
<div class="overview">
<div class="total" data-item="totalBandwidth">200</div>
@ -806,7 +806,7 @@
<div class="users">
<div class="system-dashboard">
<div class="head">
<span>Users</span>
<span><fmt:message key="label.users"/></span>
</div>
<ul class="status_box good" data-item="users">
<li class="block user">
@ -822,25 +822,25 @@
<!-- Networking and security -->
<div class="info-box networking-and-security">
<div class="title">
<span>Networking and Security</span>
<span><fmt:message key="label.networking.and.security"/></span>
</div>
<ul>
<!-- IP addresses -->
<li class="odd">
<div class="total"><span data-item="totalIPAddresses"></span></div>
<div class="desc">IP addresses</div>
<div class="desc"><fmt:message key="label.menu.ipaddresses"/></div>
</li>
<!-- Load balancing policies -->
<li>
<div class="total"><span data-item="totalLoadBalancers"></span></div>
<div class="desc">Load balancing policies</div>
<div class="desc"><fmt:message key="label.load.balancing.policies"/></div>
</li>
<!-- Port forwarding policies -->
<li class="odd">
<div class="total"><span data-item="totalPortForwards"></span></div>
<div class="desc">Port forwarding policies</div>
<div class="desc"><fmt:message key="label.port.forwarding.policies"/></div>
</li>
<!-- Blank -->
@ -854,7 +854,7 @@
<div class="total"></div>
<div class="desc">
<div class="button manage-resources">
<span>Manage Resources</span>
<span><fmt:message key="label.manage.resources"/></span>
<span class="arrow"></span>
</div>
</div>
@ -865,9 +865,9 @@
<!-- Events -->
<div class="info-box events">
<div class="title">
<span>Events</span>
<span><fmt:message key="label.menu.events"/></span>
<div class="button view-all">
<span>View all</span>
<span><fmt:message key="label.view.all"/></span>
<span class="arrow"></span>
</div>
</div>
@ -1592,6 +1592,33 @@
<script language="javascript">
dictionary = {
'label.port.forwarding.policies': '<fmt:message key="label.port.forwarding.policies"/>',
'label.load.balancing.policies': '<fmt:message key="label.load.balancing.policies"/>',
'label.networking.and.security': '<fmt:message key="label.networking.and.security"/>',
'label.bandwidth': '<fmt:message key="label.bandwidth"/>',
'label.virtual.machines': '<fmt:message key="label.virtual.machines"/>',
'label.compute.and.storage': '<fmt:message key="label.compute.and.storage"/>',
'label.task.completed': '<fmt:message key="label.task.completed"/>',
'label.update.project.resources': '<fmt:message key="label.update.project.resources"/>',
'label.remove.project.account': '<fmt:message key="label.remove.project.account"/>',
'label.item.listing': '<fmt:message key="label.item.listing"/>',
'message.select.item': '<fmt:message key="message.select.item"/>',
'label.removing': '<fmt:message key="label.removing"/>',
'label.invite': '<fmt:message key="label.invite"/>',
'label.project.dashboard': '<fmt:message key="label.project.dashboard"/>',
'label.add.by': '<fmt:message key="label.add.by"/>',
'label.max.vms': '<fmt:message key="label.max.vms"/>',
'label.max.public.ips': '<fmt:message key="label.max.public.ips"/>',
'label.max.volumes': '<fmt:message key="label.max.volumes"/>',
'label.max.snapshots': '<fmt:message key="label.max.snapshots"/>',
'label.max.templates': '<fmt:message key="label.max.templates"/>',
'label.remind.later': '<fmt:message key="label.remind.later"/>',
'label.invited.accounts': '<fmt:message key="label.invited.accounts"/>',
'label.add.accounts.to': '<fmt:message key="label.add.accounts.to"/>',
'label.invite.to': '<fmt:message key="label.invite.to"/>',
'label.add.accounts': '<fmt:message key="label.add.accounts"/>',
'label.project.name': '<fmt:message key="label.project.name"/>',
'label.create.project': '<fmt:message key="label.create.project"/>',
'label.networks': '<fmt:message key="label.networks"/>',
'label.launch.vm': '<fmt:message key="label.launch.vm"/>',
'label.new.vm': '<fmt:message key="label.new.vm"/>',

View File

@ -65,28 +65,28 @@
var resourceMap = {
0: {
id: 'user_vm',
label: 'Max. User VMs'
label: 'label.max.vms'
},
1: {
id: 'public_ip',
label: 'Max. Public IPs'
label: 'label.max.public.ips'
},
2: {
id: 'volume',
label: 'Max. Volumes'
label: 'label.max.volumes'
},
3: {
id: 'snapshot',
label: 'Max. Snapshots'
label: 'label.max.snapshots'
},
4: {
id: 'template',
label: 'Max. Templates'
label: 'label.max.templates'
}
};
return {
id: resourceMap[resource.resourcetype].id,
label: resourceMap[resource.resourcetype].label,
label: _l(resourceMap[resource.resourcetype].label),
type: resource.resourcetype,
value: resource.max
};
@ -281,13 +281,13 @@
noHeaderActionsColumn: true,
ignoreEmptyFields: true,
fields: {
'email': { edit: true, label: 'E-mail' },
'account': { edit: true, label: 'Account' },
'state': { edit: 'ignore', label: 'Status' },
'email': { edit: true, label: 'label.email' },
'account': { edit: true, label: 'label.account' },
'state': { edit: 'ignore', label: 'label.status' },
'add-user': { addButton: true, label: '' }
},
add: {
label: 'Invite',
label: 'label.invite',
action: function(args) {
$.ajax({
url: createURL('addAccountToProject', { ignoreProject: true }),
@ -542,7 +542,7 @@
title: 'label.projects',
id: 'projects',
sectionSelect: {
label: 'Select view'
label: 'label.select-view'
},
sections: {
projects: {
@ -752,7 +752,7 @@
},
tabs: {
details: {
title: 'Details',
title: 'label.details',
fields: [
{
name: { label: 'label.name' }

View File

@ -23,7 +23,7 @@
$multi.prepend(
$('<div>').addClass('add-by')
.append($('<span>').html('Add by:'))
.append($('<span>').html(_l('label.add.by') + ':'))
.append(
$('<div>').addClass('selection')
.append(
@ -39,7 +39,7 @@
return true;
}).click()
)
.append($('<label>').html('Account'))
.append($('<label>').html(_l('label.account')))
.append(
$('<input>').attr({
type: 'radio',
@ -52,7 +52,7 @@
return true;
})
)
.append($('<label>').html('E-mail'))
.append($('<label>').html(_l('label.email')))
)
);
}
@ -63,7 +63,7 @@
dashboardTabs: {
overview: function() {
var $dashboard = $('#template').find('.project-dashboard-view').clone();
$dashboard.data('tab-title', 'Dashboard');
$dashboard.data('tab-title', _l('label.menu.dashboard'));
var getData = function() {
// Populate data
@ -127,21 +127,21 @@
},
users: function() {
return $('<div>').addClass('management').data('tab-title', 'Accounts');
return $('<div>').addClass('management').data('tab-title', _l('label.menu.accounts'));
},
invitations: function() {
return $('<div>').addClass('management-invite').data('tab-title', 'Invitations');
return $('<div>').addClass('management-invite').data('tab-title', _l('label.invitations'));
},
resources: function(options) {
if (!options) options = {};
var $resources = $('<div>').addClass('resources').data('tab-title', 'Resources');
var $resources = $('<div>').addClass('resources').data('tab-title', _l('label.resources'));
var $form = $('<form>');
var $submit = $('<input>').attr({
type: 'submit'
}).val('Apply');
}).val(_l('label.apply'));
cloudStack.projects.resourceManagement.dataProvider({
response: {
@ -177,7 +177,7 @@
$loading.remove();
$('.notifications').notifications('add', {
section: 'dashboard',
desc: 'Updated project resources',
desc: 'label.update.project.resources',
interval: 1000,
poll: function(args) {
args.complete();
@ -281,24 +281,24 @@
*/
newProjectForm: function() {
var $newProject = $('<div>').addClass('new-project');
$newProject.append($('<div>').addClass('title').html('Create a project'));
$newProject.append($('<div>').addClass('title').html(_l('label.create.project')));
var $form = $('<form>');
var $formDesc = $('<div>').addClass('form-desc');
var $projectName = $('<div>').addClass('field name')
.append($('<label>').attr('for', 'project-name').html('Project name'))
.append($('<label>').attr('for', 'project-name').html(_l('label.project.name')))
.append($('<input>').addClass('required').attr({
type: 'text',
name: 'project-name'
}));
var $projectDesc = $('<div>').addClass('field desc')
.append($('<label>').attr('for', 'project-desc').html('Display text'))
.append($('<label>').attr('for', 'project-desc').html(_l('label.display.text')))
.append($('<input>').attr({
type: 'text',
name: 'project-display-text'
}));
var $submit = $('<input>').attr({ type: 'submit' }).val('Create Project');
var $cancel = $('<div>').addClass('button cancel').html('Cancel');
var $submit = $('<input>').attr({ type: 'submit' }).val(_l('label.create.project'));
var $cancel = $('<div>').addClass('button cancel').html(_l('label.cancel'));
var $loading = $('<div>').addClass('loading-overlay');
// Form events/validation
@ -339,7 +339,7 @@
);
var $buttons = $('<div>').addClass('buttons');
var $addAccountButton = $('<div>').addClass('button confirm').html('Add Accounts');
var $addAccountButton = $('<div>').addClass('button confirm').html(_l('label.add.accounts'));
$addAccountButton.click(function() {
// Show add user form
@ -350,15 +350,15 @@
}),
useInvites: cloudStack.projects.requireInvitation()
});
var $nextButton = $('<div>').addClass('button confirm next').html('Next');
var $nextButton = $('<div>').addClass('button confirm next').html(_l('label.next'));
$newProject.find('.title').html(
cloudStack.projects.requireInvitation() ?
'Invite to ' + args.data.name :
'Add Accounts to ' + args.data.name
_l('label.invite.to') + ' ' + args.data.name :
_l('label.add.accounts.to') + ' ' + args.data.name
);
$nextButton.appendTo($userManagement).click(function() {
$newProject.find('.title').html('Review');
$newProject.find('.title').html(_l('label.review'));
$userManagement.replaceWith(function() {
var $review = $('<div>').addClass('review');
var $projectData = $('<div>').addClass('project-data');
@ -384,7 +384,7 @@
$('<li>').addClass('first').append(
$('<a>').attr({ href: '#new-project-review-tabs-users'}).html(
cloudStack.projects.requireInvitation() ?
'Invitations' : 'Accounts'
_l('label.invitations') : _l('label.accounts')
)
)
);
@ -393,7 +393,7 @@
$ul.append(
// Resources tab
$('<li>').addClass('last').append(
$('<a>').attr({ href: '#new-project-review-tabs-resouces'}).html('Resources')
$('<a>').attr({ href: '#new-project-review-tabs-resouces'}).html(_l('label.resources'))
)
);
}
@ -416,9 +416,9 @@
id: 'project-accounts',
disableInfiniteScrolling: true,
fields: !cloudStack.projects.requireInvitation() ? {
username: { label: 'Account' }
username: { label: _l('label.account') }
} : {
account: { label: 'Invited Accounts'}
account: { label: _l('label.invited.accounts') }
},
dataProvider: function(args) {
setTimeout(function() {
@ -439,7 +439,7 @@
// Save button
var $saveButton = $nextButton.clone().appendTo($review);
$saveButton.html('Save');
$saveButton.html(_l('label.save'));
$saveButton.click(function() {
$('#new-project-review-tabs-resouces').find('form').submit();
$('.ui-dialog, .overlay').remove();
@ -456,7 +456,7 @@
$(':ui-dialog').dialog('option', 'position', 'center');
});
$laterButton.html('Close').appendTo($userManagement);
$laterButton.html(_l('label.close')).appendTo($userManagement);
return $userManagement;
});
@ -466,7 +466,7 @@
return false;
});
var $laterButton = $('<div>').addClass('button later').html('Remind me later');
var $laterButton = $('<div>').addClass('button later').html(_l('label.remind.later'));
$laterButton.click(function() {
$(':ui-dialog, .overlay').remove();
@ -511,7 +511,7 @@
var $selector = $('<div>').addClass('project-selector');
var $toolbar = $('<div>').addClass('toolbar');
var $list = $('<div>').addClass('listing')
.append($('<div>').addClass('header').html('Name'))
.append($('<div>').addClass('header').html(_l('label.name')))
.append($('<div>').addClass('data').append($('<ul>')));
var $searchForm = $('<form>');
var $search = $('<div>').appendTo($toolbar).addClass('search')
@ -661,7 +661,7 @@
$browser.cloudBrowser('removeAllPanels');
$browser.cloudBrowser('addPanel', {
title: 'Project Dashboard',
title: _l('label.project.dashboard'),
complete: function($newPanel) {
$('#navigation li.dashboard').addClass('active').siblings().removeClass('active');
$newPanel.append(pageElems.dashboard);