Update UI

-Fix two blocker bugs: bug 13743 and bug 13729

-Add more localization

-Misc. fixes

reviewed-by: jessica
This commit is contained in:
Brian Federle 2012-02-15 17:03:21 -08:00
parent 5aaf15f0a7
commit 57bba4a0e0
21 changed files with 3231 additions and 2785 deletions

View File

@ -1,3 +1,71 @@
label.installWizard.title=Hello and Welcome to CloudStack&#8482.
label.agree=Agree
label.license.agreement=License Agreement
label.license.agreement.subtitle=Please accept the CloudStack&#8482 EULA before installing.
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
label.previous=Previous
label.add.to.group=Add to group
message.vm.review.launch=Please review the following information and confirm that your virtual instance is correct before launch.
message.select.security.groups=Please select security group(s) for your new VM
label.new=New
message.please.select.networks=Please select networks for your virtual machine.
message.please.proceed=Please proceed to the next step.
message.zone.no.network.selection=The zone you selected does not have any choices for network selection.
label.no.thanks=No thanks
label.my.templates=My templates
message.select.template=Please select a template for your new virtual instance.
message.select.iso=Please select an ISO for your new virtual instance.
message.template.desc=OS image that can be used to boot VMs
message.iso.desc=Disc image containing data or bootable media for OS
label.select.iso.or.template=Select ISO or template
message.select.a.zone=A zone typically corresponds to a single datacenter. Multiple zones help make the cloud more reliable by providing physical isolation and redundancy.
label.select.a.zone=Select a zone
label.review=Review
label.select.a.template=Select a template
label.setup=Setup
state.Allocated=Allocated
changed.item.properties=Changed item properties
label.apply=Apply
label.default=Default
label.viewing=Viewing
label.move.to.top=Move to top
label.move.up.row=Move up one row
label.move.down.row=Move down one row
label.drag.new.position=Drag to new position
label.order=Order
label.no.data=No data to show
label.change.value=Change value
label.clear.list=Clear list
label.full.path=Full path
message.add.domain=Please specify the subdomain you want to create under this domain
message.delete.user=Please confirm that you would like to delete this user.
@ -50,7 +118,6 @@ label.clean.up=Clean up
message.restart.network=Please confirm that you want to restart network
label.restart.network=Restart network
label.edit.network.details=Edit network details
message.add.guest.network=Please specify name and zone for this network; note that network will be isolated and source NAT-enabled.
label.add.guest.network=Add guest network
label.guest.networks=Guest networks
message.ip.address.changed=Your IP addresses may have changed; would you like to refresh the listing? Note that in this case the details pane will close.
@ -64,6 +131,7 @@ message.create.template=Are you sure you want to create template?
label.create.template=Create template
message.download.volume.confirm=Please confirm that you want to download this volume
message.detach.disk=Are you sure you want to detach this disk?
state.ready=Ready
state.Ready=Ready
label.vm.display.name=VM display name
label.select-view=Select view
@ -1013,4 +1081,91 @@ specify.IP.ranges=Specify IP ranges
conserve.mode=Conserve mode
created.by.system=Created by system
label.menu.system.service.offerings=System Service Offerings
label.add.system.service.offering=Add System Service Offering
label.add.system.service.offering=Add System Service Offering
redundant.router.capability=Redundant router capability
supported.source.NAT.type=Supported Source NAT type
elastic.LB=Elastic LB
LB.isolation=LB isolation
elastic.IP=Elastic IP
network.label.display.for.blank.value=Use default gateway
Xen.traffic.label=XenServer traffic label
KVM.traffic.label=KVM traffic label
VMware.traffic.label=VMware traffic label
start.IP=Start IP range
end.IP=End IP range
IP.range.is.added=IP range is added
remove.IP.range=Remove IP range
storage.traffic.type.is.updated=Storage traffic type is updated
management.traffic.type.is.updated=Management traffic type is updated
public.traffic.type.is.updated=Public traffic type is updated
guest.traffic.type.is.updated=Guest traffic type is updated
IP.ranges=IP Ranges
start.Vlan=Start Vlan
end.Vlan=End Vlan
broadcast.domain.range=Broadcast domain range
label.compute=Compute
message.add.guest.network=Please confirm that you would like to add a guest network
subdomain.access=Subdomain Access
guest.start.IP=Guest start IP
guest.end.IP=Guest end IP
restart.required=Restart required
virtual.router=Virtual Router
physical.network.ID=Physical network ID
destination.physical.network.ID=Destination physical network ID
DHCP=DHCP
destroy.router=Destroy router
confirm.destroy.router=Please confirm that you would like to destroy this router
change.service.offering=Change service offering
view.console=View console
redundant.state=Redundant state
enable.provider=Enable provider
confirm.enable.provider=Please confirm that you would like to enable this provider
disable.provider=Disable provider
confirm.disable.provider=Please confirm that you would like to disable this provider
shutdown.provider=Shutdown provider
confirm.shutdown.provider=Please confirm that you would like to shutdown this provider
NetScaler=NetScaler
add.new.NetScaler=Add new NetScaler
number.of.retries=Number of retries
capacity=Capacity
dedicated=Dedicated
F5=F5
add.new.F5=Add new F5
SRX=SRX
providers=Providers
add.new.SRX=Add new SRX
timeout=Timeout
public.network=Public network
private.network=Private network
public=Public
enable.swift=Enable Swift
confirm.enable.swift=Please fill in the following information to enable support for Swift
message.after.enable.swift=Swift configured. Note: When you leave this page, you will not be able to re-configure Swift again.
URL=URL
key=Key
domain=Domain
delete.NetScaler=Delete NetScaler
confirm.delete.NetScaler=Please confirm that you would like to delete NetScaler
delete.F5=Delete F5
confirm.delete.F5=Please confirm that you would like to delete F5
delete.SRX=Delete SRX
confirm.delete.SRX=Please confirm that you would like to delete SRX
label.pods=Pods
pod.name=Pod name
reserved.system.gateway=Reserved system gateway
reserved.system.netmask=Reserved system netmask
start.reserved.system.IP=Start Reserved system IP
end.reserved.system.IP=End Reserved system IP
label.clusters=Clusters
cluster.name=Cluster Name
host.MAC=Host MAC
agent.username=Agent Username
agent.password=Agent Password
confirm.action.force.reconnect=Please confirm that you want to force reconnect this host.
resource.state=Resource state
LUN.number=LUN #
confirm.remove.IP.range=Please confirm that you would like to remove this IP range.

View File

@ -1,8 +1,211 @@
#cloudstack 3.0 (begin) ********************************************************************************************
create.template.confirm=は、テンプレートを作成することを確認してください
create.template.success=新しいテンプレートが作成されている
label.installWizard.title=こんにちは、CloudStack&#8482 へようこそ。
label.agree=同意する
label.license.agreement=ライセンス契約
label.license.agreement.subtitle=インストールする前に、CloudStack&#8482 ライセンスに同意してください。
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
label.previous=
label.add.to.group=グループに追加する
message.vm.review.launch=次の情報を確認して、仮想インスタンスが起動する前に、正しいことを確認してください。
message.select.security.groups=新しいVMのセキュリティグループを選択してください。
label.new=新しい
message.please.select.networks=仮想マシンのネットワークを選択してください。
message.please.proceed=次のステップに進んでください。
message.zone.no.network.selection=あなたが選択したゾーンは、ネットワークの選択の任意の選択肢を持っていません。
label.no.thanks=遠慮します
label.my.templates=私のテンプレート
message.select.template=新しい仮想インスタンス用のテンプレートを選択してください。
message.select.iso=新しい仮想インスタンスは、ISOを選択してください。
message.template.desc=VMを起動するために使用することができ、OSイメージ
message.iso.desc=データやOSのブータブルメディアを含むディスクイメージ
label.select.iso.or.template=を選択し、ISOまたはテンプレート
message.select.a.zone=ゾーンは、通常、単一のデータセンターに対応しています。複数のゾーンは、物理的な隔離と冗長性を提供することにより、クラウドの信頼性を高める。
label.select.a.zone=ゾーンを選択します
label.review=レビュー
label.select.a.template=テンプレートを選択します。
label.setup=セットアップ
state.Allocated=割り当てられた
changed.item.properties=変更された項目のプロパティ
label.apply=適用される
label.default=デフォルト
label.viewing=表示
label.move.to.top=トップに移動
label.move.up.row=1行上に移動
label.move.down.row=1行下に移動
label.drag.new.position=新しい位置にドラッグ
label.order=オーダー
label.no.data=表示するデータがありません
label.change.value=値を変更する
label.clear.list=一覧をクリアする
label.full.path=フルパス
message.add.domain=このドメインの下に作成するサブドメインを指定してください
message.delete.user=このユーザーを削除したいことを確認してください。
message.enable.user=このユーザーを有効にしたいことを確認してください。
message.disable.user=このユーザーを無効にしたいことを確認してください。
message.generate.keys=このユーザーの新しい鍵を生成したいことを確認してください。
message.update.resource.count=このアカウントのリソースカウントを更新することを確認してください。
message.edit.account=編集( "-1"リソース作成の量に制限がないことを示します)
label.total.of.vm=VMの合計
label.total.of.ip=IPアドレスの合計
state.enabled=使用可能
message.action.download.iso=このISOイメージをダウンロードすることを確認してください。
message.action.download.template=このテンプレートをダウンロードすることを確認してください。
label.destination.zone=宛先ゾーン
label.keyboard.type=キーボードの種類
label.nic.adapter.type=NICアダプタの種類
label.root.disk.controller=ルート·ディスク·コントローラ
label.community=コミュニティ
label.remove.egress.rule=出力ルールを削除する
label.add.egress.rule=出力ルールを追加
label.egress.rule=出力ルール
label.remove.ingress.rule=入力規則を削除する
label.delete.vpn.user=VPNユーザを削除します。
label.add.vpn.user=VPNユーザを追加します。
label.remove.pf=ポートフォワーディングルールを削除する
label.remove.vm.from.lb=ロード·バランサのルールからVMを削除します。
label.add.vms.to.lb=バランサのルールをロードするためにVMsを追加する
label.add.vm=VMを追加します。
label.remove.static.nat.rule=スタティックNATルールを削除します。
label.remove.rule=ルールを削除する
label.add.static.nat.rule=スタティックNATルールを追加します。
label.add.rule=ルールを追加します。
label.configuration=設定
message.disable.vpn=あなたは、VPNを無効にしてもよろしいですか
label.disable.vpn=VPNを無効にします。
message.enable.vpn=あなたがこのIPアドレスに対して有効になってVPNアクセスが必要であることを確認してください。
label.enable.vpn=VPNを有効にする
message.acquire.new.ip=あなたはこのネットワークのネットのIPアドレスを取得したいことを確認してください。
label.elastic=エラスティック
label.my.network=私のネットワーク
label.add.vms=VMを追加する
label.configure=設定する
label.stickiness=粘り
label.source=ソース
label.least.connections=最小接続
label.round.robin=ラウンドロビン
label.network.domain.text=ネットワーク·ドメインのテキスト
label.restart.required=必要な再起動
label.clean.up=クリーンアップ
message.restart.network=あなたは、ネットワークを再起動することを確認してください
label.restart.network=ネットワークを再起動します
label.edit.network.details=ネットワークの詳細を編集
label.add.guest.network=ゲストネットワークを追加します。
label.guest.networks=ゲストネットワーク
message.ip.address.changed=あなたのIPアドレスが変更されている場合があります。あなたは、リストをリフレッシュしたいですかこのケースでは、詳細ペインを閉じることに注意してください。
state.BackingUp=バックアップ
state.BackedUp=バックアップ
label.done=行われ
label.vm.name=VMの名前
message.migrate.volume=別のプライマリ·ストレージにボリュームを移行することを確認してください。
label.migrate.volume=別のプライマリ·ストレージへのボリュームの移行
message.create.template=あなたがテンプレートを作成してもよろしいですか?
label.create.template=テンプレートを作成する
message.download.volume.confirm=あなたはこのボリュームをダウンロードすることを確認してください。
message.detach.disk=あなたは、このディスクをデタッチしてもよろしいですか?
state.ready=レディ
state.Ready=レディ
label.vm.display.name=VMの表示名
label.select-view=ビューを選択します。
label.local.storage=ローカルストレージ
label.direct.ips=直接IPアドレス
label.view.all=すべてを見る
label.zone.details=ゾーンの詳細
message.alert.state.detected=アラート状態が検出されました
state.Starting=出発
state.Expunging=抹消
state.Creating=作成
message.decline.invitation=このプロジェクトに招待を辞退してもよろしいですか?
label.decline.invitation=衰退への招待
message.confirm.join.project=あなたはこのプロジェクトに参加したい確認してください。
message.join.project=これで、プロジェクトに参加しています。プロジェクトを参照するビューをプロジェクトに切り替えてください。
label.accept.project.invitation=プロジェクトへの招待を受け入れる
label.token=トークン
label.project.id=プロジェクトID
message.enter.token=あなたがあなたの招待状を電​​子メールで与えられているトークンを入力してください。
label.enter.token=トークンを入力します。
state.Accepted=受け入れ
state.Pending=ペンディング
state.Completed=完了する
state.Declined=減少しました
label.project=プロジェクト
label.invitations=招待状
label.delete.project=プロジェクトを削除します。
message.delete.project=このプロジェクトを削除してもよろしいですか?
message.activate.project=あなたはこのプロジェクトをアクティブにしてもよろしいですか?
label.activate.project=プロジェクトをアクティブにする
label.suspend.project=プロジェクトを一時停止
message.suspend.project=あなたはこのプロジェクトを中断してもよろしいですか?
state.Suspended=サスペンド
label.edit.project.details=プロジェクトの詳細を編集します。
label.new.project=新規プロジェクト
state.Active=アクティブ
state.Disabled=無効にする
label.projects=プロジェクト
label.make.project.owner=アカウントのプロジェクトの所有者を作る
label.remove.project.account=プロジェクトからアカウントを削除する
message.project.invite.sent=ユーザーに送信される招待し、彼らが招待を受け入れた後、彼らがプロジェクトに追加されます
label.add.account.to.project=プロジェクトにアカウントを追加する
label.revoke.project.invite=招待を取り消す
label.project.invite=プロジェクトへの招待
label.select.project=プロジェクトを選択します。
message.no.projects=任意のプロジェクトを持っていません。<br/>プロジェクトセクションから新しいものを作成してください。
message.no.projects.adminOnly=任意のプロジェクトを持っていません。<br/>新しいプロジェクトを作成するには、管理者にお問い合わせください。
message.pending.projects.1=あなたは、プロジェクトへの招待を保留されている。
message.pending.projects.2=表示するには、プロジェクトの項を参照してくださいし、ドロップダウンからの招待を選択します。
message.instanceWizard.noTemplates=使用可能な任意のテンプレートを持っていません。インスタンスウィザードを互換性のあるテンプレートを追加してください、再起動します。
label.view=ビュー
create.template.complete=テンプレートが正常に作成された
create.template.confirm=テンプレートを作成することを確認してください。
create.template.notification=新しいテンプレートを作成する
create.template.complete=テンプレートは正常に作成された
create.template.success=新しいテンプレートが作成されています
instances.actions.reboot.label=再起動のインスタンス
label.filterBy=によるフィルタ
label.ok=[OK]
notification.reboot.instance=再起動のインスタンス
notification.start.instance=インスタンスを起動します。
notification.stop.instance=インスタンスを停止します。
label.display.name=表示名
label.zone.name=ゾーン名
ui.listView.filters.all=すべて
ui.listView.filters.mine=鉱山
state.Running=ランニング
state.Stopped=停止
state.Destroyed=破壊された
state.Error=エラー
message.reset.password.warning.notPasswordEnabled=このインスタンスが作成されたテンプレートには、パスワードは有効ではありません
message.reset.password.warning.notStopped=インスタンスは、その現在のパスワードを変更しようとする前に停止する必要があります。
label.notifications=通知
label.default.view=デフォルトのビュー
label.project.view=プロジェクトビュー
#cloudstack 3.0 (end) **********************************************************************************************
@ -881,4 +1084,88 @@ specify.IP.ranges=指定したIPの範囲
conserve.mode=モードを節約
created.by.system=システムによって作成され
label.menu.system.service.offerings=システムサービスの提供
label.add.system.service.offering=システムサービスの提供を追加します。
label.add.system.service.offering=システムサービスの提供を追加します。
redundant.router.capability=Redundant router capability
supported.source.NAT.type=Supported Source NAT type
elastic.LB=Elastic LB
LB.isolation=LB isolation
elastic.IP=Elastic IP
network.label.display.for.blank.value=デフォルトゲートウェイを使用する
Xen.traffic.label=XenServerのトラフィックのラベル
KVM.traffic.label=KVMトラフィックのラベル
VMware.traffic.label=VMwareのトラフィックのラベル
start.IP=IPアドレスの範囲を起動します。
end.IP=終了IPアドレスの範囲
IP.range.is.added=IPアドレスの範囲が追加されました
remove.IP.range=IPアドレス範囲を削除します。
storage.traffic.type.is.updated=ストレージ·トラフィック·タイプが更新されます。
management.traffic.type.is.updated=管理トラフィックタイプが更新されます。
public.traffic.type.is.updated=公共交通の種類が更新されます。
guest.traffic.type.is.updated=ゲストのトラフィック·タイプが更新されます。
IP.ranges=IP範囲
start.Vlan=スタートVLAN
end.Vlan=エンドVLAN
broadcast.domain.range=ドメインの範囲をブロードキャスト
label.compute=計算
message.add.guest.network=あなたがゲストネットワークを追加したいことを確認してください
subdomain.access=サブドメインアクセス
guest.start.IP=ゲストの開始IP
guest.end.IP=ゲストの終了IP
restart.required=要な再起動
virtual.router=Virtual Router
physical.network.ID=物理的なネットワークID
destination.physical.network.ID=先の物理的なネットワークID
DHCP=DHCP
destroy.router=ルータを破壊する
confirm.destroy.router=このルータを破壊することを確認してください
change.service.offering=サービス·オファリングを変更する
view.console=コンソールを表示する
redundant.state=冗長状態
enable.provider=プロバイダを有効にする
confirm.enable.provider=このプロバイダを有効にしたいことを確認してください
disable.provider=プロバイダを無効にする
confirm.disable.provider=このプロバイダを無効にしたいことを確認してください
shutdown.provider=シャットダウン·プロバイダー
confirm.shutdown.provider=このプロバイダをシャットダウンすることを確認してください
NetScaler=NetScaler
add.new.NetScaler=新しいNetScalerを追加する
number.of.retries=再試行の回数
capacity=容量
dedicated=専用の
F5=F5
add.new.F5=新しいF5キーを追加する
SRX=SRX
providers=プロバイダー
add.new.SRX=新しいSRXを追加します。
timeout=タイムアウト
public.network=パブリックネットワーク
private.network=プライベートネットワーク
public=公共
enable.swift=スウィフトを有効にする
confirm.enable.swift=スウィフトのサポートを有効にするには、次の情報を入力してください。
message.after.enable.swift=スウィフトは、設定されています。注:このページを出るときは、もう一度再構成するスウィフトにはできません。
URL=URL
key=キー
domain=ドメイン
delete.NetScaler=削除NetScalerは
confirm.delete.NetScaler=あなたがNetScalerを削除したいことを確認してください
delete.F5=削除F5
confirm.delete.F5=F5キーを削除したいことを確認してください
delete.SRX=削除SRX
confirm.delete.SRX=あなたはSRXを削除したいことを確認してください
label.pods=ポッド
pod.name=ポッド名
reserved.system.gateway=予約システムのゲートウェイ
reserved.system.netmask=予約システムのネットマスク
start.reserved.system.IP=予約システムのIPを起動します。
end.reserved.system.IP=最後の予約システムのIP
label.clusters=クラスタ
cluster.name=クラスタ名
host.MAC=ホストのMAC
agent.username=エージェントのユーザー名
agent.password=エージェントのパスワード
confirm.action.force.reconnect=このホストを再接続を強制することを確認してください。
resource.state=リソースの状態
LUN.number=LUN #
confirm.remove.IP.range=あなたがこのIPアドレス範囲の削除を希望することを確認してください。

View File

@ -5346,6 +5346,10 @@ label.error {
border-radius: 4px 4px 4px 4px;
}
.multi-wizard.zone-wizard .setup-storage-traffic .info-desc {
margin-bottom: 10px;
}
.multi-wizard.zone-wizard .setup-public-traffic .info-desc,
.multi-wizard.zone-wizard .setup-guest-traffic .info-desc,
.multi-wizard.zone-wizard .setup-physical-network .info-desc {
@ -6008,6 +6012,9 @@ label.error {
/*** Review / launch*/
.multi-wizard.zone-wizard .review .launch-container {
width: 98%;
max-height: 438px;
overflow: auto;
overflow-x: hidden;
float: left;
background: #FFFFFF;
margin: 11px 0 0 7px;

View File

@ -1,7 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<c:if test="${!empty cookie.lang}">
<fmt:setLocale value="${cookie.lang.value}" />
<fmt:setLocale value="${cookie.lang.value}" />
</c:if>
<fmt:setBundle basename="resources/messages"/>
@ -58,12 +58,12 @@
<div class="multi-wizard instance-wizard">
<div class="progress">
<ul>
<li class="first"><span class="number">1</span><span>Setup</span><span class="arrow"></span></li>
<li><span class="number">2</span><span class="multiline">Select a template</span><span class="arrow"></span></li>
<li><span class="number">3</span><span class="multiline">Service Offering</span><span class="arrow"></span></li>
<li><span class="number">4</span><span class="multiline">Data Disk Offering</span><span class="arrow"></span></li>
<li><span class="number">5</span><span>Network</span><span class="arrow"></span></li>
<li class="last"><span class="number">6</span><span>Review</span></li>
<li class="first"><span class="number">1</span><span><fmt:message key="label.setup"/></span><span class="arrow"></span></li>
<li><span class="number">2</span><span class="multiline"><fmt:message key="label.select.a.template"/></span><span class="arrow"></span></li>
<li><span class="number">3</span><span class="multiline"><fmt:message key="label.service.offering"/></span><span class="arrow"></span></li>
<li><span class="number">4</span><span class="multiline"><fmt:message key="label.data.disk.offering"/></span><span class="arrow"></span></li>
<li><span class="number">5</span><span><fmt:message key="label.menu.network"/></span><span class="arrow"></span></li>
<li class="last"><span class="number">6</span><span><fmt:message key="label.review"/></span></li>
</ul>
</div>
<form>
@ -73,27 +73,27 @@
<div class="content">
<!-- Select a zone -->
<div class="section select-zone">
<h3>Select a zone</h3>
<p>A zone typically corresponds to a single datacenter. Multiple zones help make the cloud more reliable by providing physical isolation and redundancy.</p>
<h3><fmt:message key="label.select.a.zone"/></h3>
<p><fmt:message key="message.select.a.zone"/></p>
<div class="select-area">
<div class="desc"></div>
<select name="zoneid" class="required">
<option default="default" value="" >Select a zone</option>
<option default="default" value="" ><fmt:message key="label.select.a.zone"/></option>
</select>
</div>
</div>
<!-- Select template -->
<div class="section select-template">
<h3>Select ISO or template</h3>
<h3><fmt:message key="label.select.iso.or.template" /></h3>
<p></p>
<div class="select-area">
<div class="desc">OS image that can be used to boot VMs</div>
<div class="desc"><fmt:message key="message.template.desc"/></div>
<input type="radio" name="select-template" value="select-template" />
<label>Template</label>
<label><fmt:message key="label.template"/></label>
</div>
<div class="select-area">
<div class="desc">Disc image containing data or bootable media for OS</div>
<div class="desc"><fmt:message key="message.iso.desc"/></div>
<input type="radio" name="select-template" value="select-iso" />
<label>ISO</label>
</div>
@ -106,15 +106,13 @@
<!-- Select template -->
<div class="wizard-step-conditional select-template">
<div class="main-desc">
<p>
Please select a template for your new virtual instance.
</p>
<p><fmt:message key="message.select.template"/></p>
</div>
<div class="template-select content tab-view">
<ul>
<li class="first"><a href="#instance-wizard-featured-templates">Featured</a></li>
<li><a href="#instance-wizard-community-templates">Community</a></li>
<li class="last"><a href="#instance-wizard-my-templates">My Template</a></li>
<li class="first"><a href="#instance-wizard-featured-templates"><fmt:message key="label.featured"/></a></li>
<li><a href="#instance-wizard-community-templates"><fmt:message key="label.community"/></a></li>
<li class="last"><a href="#instance-wizard-my-templates"><fmt:message key="label.my.templates"/></a></li>
</ul>
<div id="instance-wizard-featured-templates">
@ -135,39 +133,36 @@
<!-- Select ISO -->
<div class="wizard-step-conditional select-iso">
<div class="main-desc">
<p>
Please select an ISO for your new virtual instance.
You can also choose to upload your own iso as well.
</p>
<p><fmt:message key="message.select.iso"/></p>
</div>
<div class="iso-select content tab-view">
<ul>
<li class="first"><a href="#instance-wizard-featured-isos">Featured</a></li>
<li><a href="#instance-wizard-community-isos">Community</a></li>
<li class="last"><a href="#instance-wizard-my-isos">My ISO</a></li>
<div class="iso-select content tab-view">
<ul>
<li class="first"><a href="#instance-wizard-featured-isos"><fmt:message key="label.featured"/></a></li>
<li><a href="#instance-wizard-community-isos"><fmt:message key="label.community"/></a></li>
<li class="last"><a href="#instance-wizard-my-isos"><fmt:message key="label.menu.my.isos"/></a></li>
</ul>
<div id="instance-wizard-featured-isos">
<div id="instance-wizard-featured-isos">
<div class="select-container">
</div>
</div>
<div id="instance-wizard-community-isos">
<div id="instance-wizard-community-isos">
<div class="select-container">
</div>
</div>
<div id="instance-wizard-my-isos">
<div id="instance-wizard-my-isos">
<div class="select-container">
</div>
</div>
<!--
<ul>
<!--
<ul>
<li class="first last"><a href="#instance-wizard-all-isos">All ISOs</a></li>
</ul>
<div id="instance-wizard-all-isos">
<div class="select-container">
</div>
</div>
-->
-->
</div>
</div>
</div>
@ -185,7 +180,7 @@
<div class="content">
<div class="section no-thanks">
<input type="radio" name="diskofferingid" value="0" />
<label>No thanks</label>
<label><fmt:message key="label.no.thanks"/></label>
</div>
<!-- Existing offerings -->
@ -194,7 +189,7 @@
<!-- Custom size slider -->
<div class="section custom-size">
<label>Disk size</label>
<label><fmt:message key="label.disk.size"/></label>
<!-- Slider -->
<label class="size">1 GB</label>
@ -211,21 +206,19 @@
<div class="step network" wizard-step-id="network">
<!-- 5a: Network description -->
<div class="wizard-step-conditional nothing-to-select">
<p>The zone you selected does not have any choices for network selection</p>
<p>Please proceed to the next step.</p>
<p><fmt:message key="message.zone.no.network.selection"/></p>
<p><fmt:message key="message.please.proceed"/></p>
</div>
<!-- 5b: Select network -->
<div class="wizard-step-conditional select-network">
<div class="content">
<div class="main-desc">
Please select networks for your virtual machine
</div>
<div class="main-desc"><fmt:message key="message.please.select.networks"/></div>
<div class="select my-networks">
<table>
<thead>
<tr>
<th>Networks</th>
<th><fmt:message key="label.networks"/></th>
</tr>
</thead>
<tbody>
@ -242,7 +235,7 @@
<table>
<thead>
<tr>
<th>Add new network</th>
<th><fmt:message key="label.add.network"/></th>
</tr>
</thead>
<tbody>
@ -256,12 +249,12 @@
checked="checked" />
<!-- Default (NEW) -->
<div class="select-desc hide-if-selected">
<div class="name">NEW</div>
<div class="name"><fmt:message key="label.new"/></div>
</div>
<!-- Name -->
<div class="field name hide-if-unselected">
<div class="name">Name</div>
<div class="name"><fmt:message key="label.name"/></div>
<div class="value">
<input type="text" class="required" name="new-network-name" />
</div>
@ -269,7 +262,7 @@
<!-- Service offering -->
<div class="select-desc field service-offering hide-if-unselected">
<div class="name">Network Offering</div>
<div class="name"><fmt:message key="label.service.offering"/></div>
<div class="desc">
<select name="new-network-networkofferingid">
</select>
@ -278,7 +271,7 @@
<div class="secondary-input hide-if-unselected">
<input type="radio" name="defaultNetwork" value="new-network" />
<div class="name">Default</div>
<div class="name"><fmt:message key="label.default"/></div></div>
</div>
</div>
</div>
@ -293,7 +286,7 @@
<!-- Step 5c: Select security group -->
<div class="wizard-step-conditional select-security-group">
<div class="main-desc">
Please select security group(s) for your new virtual instance
<fmt:message key="message.select.security.groups"/>
</div>
<div class="content security-groups">
<div class="select-container">
@ -305,14 +298,14 @@
<!-- Step 6: Review -->
<div class="step review" wizard-step-id="review">
<div class="main-desc">
Please review the following information and confirm that your virtual instance is correct before launch
<fmt:message key="message.vm.review.launch"/>
</div>
<div class="content">
<div class="select-container">
<!-- Name -->
<div class="select vm-instance-name">
<div class="name">
<span>Name (optional)</span>
<span><fmt:message key="label.name"/> (<fmt:message key="label.optional"/>)</span>
</div>
<div class="value">
<input type="text" name="displayname" />
@ -322,7 +315,7 @@
<!-- Add to group -->
<div class="select odd">
<div class="name">
<span>Add to group (optional)</span>
<span><fmt:message key="label.add.to.group"/> (<fmt:message key="label.optional"/></span>
</div>
<div class="value">
<input type="text" name="groupname" />
@ -332,78 +325,78 @@
<!-- Zone -->
<div class="select">
<div class="name">
<span>Zone</span>
<span><fmt:message key="label.zone"/></span>
</div>
<div class="value">
<span wizard-field="zone"></span>
</div>
<div class="edit">
<a href="1">Edit</a>
<a href="1"><fmt:message key="label.edit"/></a>
</div>
</div>
<!-- Hypervisor -->
<div class="select odd">
<div class="name">
<span>Hypervisor</span>
<span><fmt:message key="label.hypervisor"/></span>
</div>
<div class="value">
<span wizard-field="hypervisor"></span>
</div>
<div class="edit">
<a href="1">Edit</a>
<a href="1"><fmt:message key="label.edit"/></a>
</div>
</div>
<!-- Template -->
<div class="select">
<div class="name">
<span>Template</span>
<span><fmt:message key="label.template"/></span>
</div>
<div class="value">
<span wizard-field="template"></span>
</div>
<div class="edit">
<a href="2">Edit</a>
<a href="2"><fmt:message key="label.edit"/></a>
</div>
</div>
<!-- Service offering -->
<div class="select odd">
<div class="name">
<span>Service offering</span>
<span><fmt:message key="label.service.offering"/></span>
</div>
<div class="value">
<span wizard-field="service-offering"></span>
</div>
<div class="edit">
<a href="3">Edit</a>
<a href="3"><fmt:message key="label.edit"/></a>
</div>
</div>
<!-- Data disk offering -->
<div class="select">
<div class="name">
<span>Data disk offering</span>
<span><fmt:message key="label.data.disk.offering"/></span>
</div>
<div class="value">
<span wizard-field="disk-offering"></span>
</div>
<div class="edit">
<a href="4">Edit</a>
<a href="4"><fmt:message key="label.edit"/></a>
</div>
</div>
<!-- Primary network -->
<div class="select odd">
<div class="name">
<span>Primary network</span>
<span><fmt:message key="label.primary.storage"/></span>
</div>
<div class="value">
<span wizard-field="default-network"></span>
</div>
<div class="edit">
<a href="5">Edit</a>
<a href="5"><fmt:message key="label.edit"/></a>
</div>
</div>
</div>
@ -427,9 +420,9 @@
<!-- Buttons -->
<div class="buttons">
<div class="button previous"><span>Previous</span></div>
<div class="button cancel"><span>Cancel</span></div>
<div class="button next"><span>Next</span></div>
<div class="button previous"><span><fmt:message key="label.previous"/></span></div>
<div class="button cancel"><span><fmt:message key="label.cancel"/></span></div>
<div class="button next"><span><fmt:message key="label.next"/></span></div>
</div>
</div>
@ -461,7 +454,7 @@
<h3>Set up zone type</h3>
<p>Please select a configuration for your zone.</p>
<div class="select-area">
<div class="desc">
<div class="desc">
Provide a single network where each VM instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering)
</div>
<input type="radio" name="network-model" value="Basic" checked="checked" />
@ -499,6 +492,7 @@
<li class="public-network">Public traffic</li>
<li class="pod">Pod</li>
<li class="guest-traffic">Guest Traffic</li>
<li class="conditional storage-traffic">Storage Traffic</li>
</ul>
<div class="info-desc">
When adding an advanced zone, you need to set up one or more physical networks. Each network corresponds to a NIC on the management server. Each physical network can carry one or more types of traffic, with certain restrictions on how they may be combined.<br/><br/><strong>Drag and drop one or more traffic types</strong> onto each physical network.
@ -572,6 +566,7 @@
<li class="public-network">Public traffic</li>
<li class="pod">Pod</li>
<li class="guest-traffic">Guest Traffic</li>
<li class="conditional storage-traffic">Storage Traffic</li>
</ul>
<div class="info-desc">Please specify Netscaler info</div>
@ -588,6 +583,7 @@
<li class="public-network active">Public traffic</li>
<li class="pod">Pod</li>
<li class="guest-traffic">Guest Traffic</li>
<li class="conditional storage-traffic">Storage Traffic</li>
</ul>
<div class="info-desc">
@ -604,6 +600,7 @@
<li class="public-network">Public traffic</li>
<li class="pod active">Pod</li>
<li class="guest-traffic">Guest Traffic</li>
<li class="conditional storage-traffic">Storage Traffic</li>
</ul>
<div class="info-desc">
@ -624,16 +621,34 @@
<li class="public-network">Public traffic</li>
<li class="pod">Pod</li>
<li class="guest-traffic active">Guest Traffic</li>
<li class="conditional storage-traffic">Storage Traffic</li>
</ul>
<div class="info-desc">
Guest network traffic is communication between end-user virtual machines.
</div>
Guest network traffic is communication between end-user virtual machines.
</div>
<div class="content input-area">
<div class="select-container"></div>
</div>
</div>
<!-- Step 3.5: Configure storage traffic -->
<div class="setup-storage-traffic" zone-wizard-prefilter="configureStorageTraffic"
zone-wizard-step-id="configureStorageTraffic">
<ul class="subnav">
<li class="conditional elb physical-network">Netscaler</li>
<li class="public-network">Public traffic</li>
<li class="pod">Pod</li>
<li class="guest-traffic">Guest Traffic</li>
<li class="storage-traffic active">Storage Traffic</li>
</ul>
<div class="info-desc">
Traffic between CloudStack's internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs. Please configure storage traffic here.
</div>
<div ui-custom="storageTrafficIPRange"></div>
</div>
<!-- Step 4.1: Add cluster -->
<div class="add-cluster" zone-wizard-form="cluster"
zone-wizard-step-id="addCluster">
@ -764,41 +779,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>
@ -813,7 +828,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">
@ -829,25 +844,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 -->
@ -861,7 +876,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>
@ -872,9 +887,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>
@ -1599,6 +1614,73 @@
<script language="javascript">
dictionary = {
'label.installWizard.title': '<fmt:message key="label.installWizard.title"/>',
'label.agree': '<fmt:message key="label.agree"/>',
'label.license.agreement.subtitle': '<fmt:message key="label.license.agreement.subtitle"/>',
'label.license.agreement': '<fmt:message key="label.license.agreement"/>',
'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"/>',
'label.previous': '<fmt:message key="label.previous"/>',
'label.add.to.group': '<fmt:message key="label.add.to.group"/>',
'message.vm.review.launch': '<fmt:message key="message.vm.review.launch"/>',
'label.new': '<fmt:message key="label.new"/>',
'message.select.security.groups': '<fmt:message key="message.select.security.groups"/>',
'message.please.proceed': '<fmt:message key="message.please.proceed"/>',
'message.please.select.networks': '<fmt:message key="message.please.select.networks"/>',
'message.zone.no.network.selection': '<fmt:message key="message.zone.no.network.selection"/>',
'label.no.thanks': '<fmt:message key="label.no.thanks"/>',
'label.my.templates': '<fmt:message key="label.my.templates"/>',
'message.select.iso': '<fmt:message key="message.select.iso"/>',
'message.select.template': '<fmt:message key="message.select.template"/>',
'message.template.desc': '<fmt:message key="message.template.desc"/>',
'message.iso.desc': '<fmt:message key="message.iso.desc"/>',
'label.select.iso.or.template': '<fmt:message key="label.select.iso.or.template"/>',
'message.select.a.zone': '<fmt:message key="message.select.a.zone"/>',
'label.select.a.zone': '<fmt:message key="label.select.a.zone"/>',
'label.review': '<fmt:message key="label.review"/>',
'label.select.a.template': '<fmt:message key="label.select.a.template"/>',
'label.setup': '<fmt:message key="label.setup"/>',
'state.Allocated': '<fmt:message key="state.Allocated"/>',
'changed.item.properties': '<fmt:message key="changed.item.properties"/>',
'label.apply': '<fmt:message key="label.apply"/>',
'label.default': '<fmt:message key="label.default"/>',
'label.viewing': '<fmt:message key="label.viewing"/>',
'label.drag.new.position': '<fmt:message key="label.drag.new.position"/>',
'label.move.down.row': '<fmt:message key="label.move.down.row"/>',
'label.move.up.row': '<fmt:message key="label.move.up.row"/>',
'label.move.to.top': '<fmt:message key="label.move.to.top"/>',
'label.order': '<fmt:message key="label.order"/>',
'label.no.data': '<fmt:message key="label.no.data"/>',
'label.change.value': '<fmt:message key="label.change.value"/>',
'label.clear.list': '<fmt:message key="label.clear.list"/>',
'label.add.vm': '<fmt:message key="label.add.vm"/>',
'label.full.path': '<fmt:message key="label.full.path"/>',
'message.add.domain': '<fmt:message key="message.add.domain"/>',
@ -1665,6 +1747,7 @@ dictionary = {
'label.create.template': '<fmt:message key="label.create.template" />',
'message.download.volume.confirm': '<fmt:message key="message.download.volume.confirm" />',
'message.detach.disk': '<fmt:message key="message.detach.disk" />',
'state.ready': '<fmt:message key="state.ready" />',
'state.Ready': '<fmt:message key="state.Ready" />',
'label.vm.display.name': '<fmt:message key="label.vm.display.name" />',
'label.select-view': '<fmt:message key="label.select-view" />',
@ -2573,6 +2656,89 @@ dictionary = {
'conserve.mode': '<fmt:message key="conserve.mode" />',
'created.by.system': '<fmt:message key="created.by.system" />',
'label.menu.system.service.offerings': '<fmt:message key="label.menu.system.service.offerings" />',
'label.add.system.service.offering': '<fmt:message key="label.add.system.service.offering" />'
'label.add.system.service.offering': '<fmt:message key="label.add.system.service.offering" />',
'redundant.router.capability': '<fmt:message key="redundant.router.capability" />',
'supported.source.NAT.type': '<fmt:message key="supported.source.NAT.type" />',
'elastic.LB': '<fmt:message key="elastic.LB" />',
'LB.isolation': '<fmt:message key="LB.isolation" />',
'elastic.IP': '<fmt:message key="elastic.IP" />',
'network.label.display.for.blank.value': '<fmt:message key="network.label.display.for.blank.value" />',
'Xen.traffic.label': '<fmt:message key="Xen.traffic.label" />',
'KVM.traffic.label': '<fmt:message key="KVM.traffic.label" />',
'VMware.traffic.label': '<fmt:message key="VMware.traffic.label" />',
'start.IP': '<fmt:message key="start.IP" />',
'end.IP': '<fmt:message key="end.IP" />',
'IP.range.is.added': '<fmt:message key="IP.range.is.added" />',
'remove.IP.range': '<fmt:message key="remove.IP.range" />',
'storage.traffic.type.is.updated': '<fmt:message key="storage.traffic.type.is.updated" />',
'management.traffic.type.is.updated': '<fmt:message key="management.traffic.type.is.updated" />',
'public.traffic.type.is.updated': '<fmt:message key="public.traffic.type.is.updated" />',
'guest.traffic.type.is.updated': '<fmt:message key="guest.traffic.type.is.updated" />',
'IP.ranges': '<fmt:message key="IP.ranges" />',
'start.Vlan': '<fmt:message key="start.Vlan" />',
'end.Vlan': '<fmt:message key="end.Vlan" />',
'broadcast.domain.range': '<fmt:message key="broadcast.domain.range" />',
'label.compute': '<fmt:message key="label.compute" />',
'message.add.guest.network': '<fmt:message key="message.add.guest.network" />',
'subdomain.access': '<fmt:message key="subdomain.access" />',
'guest.start.IP': '<fmt:message key="guest.start.IP" />',
'guest.end.IP': '<fmt:message key="guest.end.IP" />',
'restart.required': '<fmt:message key="restart.required" />',
'virtual.router': '<fmt:message key="virtual.router" />',
'physical.network.ID': '<fmt:message key="physical.network.ID" />',
'destination.physical.network.ID': '<fmt:message key="destination.physical.network.ID" />',
'DHCP': '<fmt:message key="DHCP" />',
'destroy.router': '<fmt:message key="destroy.router" />',
'confirm.destroy.router': '<fmt:message key="confirm.destroy.router" />',
'change.service.offering': '<fmt:message key="change.service.offering" />',
'view.console': '<fmt:message key="view.console" />',
'redundant.state': '<fmt:message key="redundant.state" />',
'enable.provider': '<fmt:message key="enable.provider" />',
'confirm.enable.provider': '<fmt:message key="confirm.enable.provider" />',
'disable.provider': '<fmt:message key="disable.provider" />',
'confirm.disable.provider': '<fmt:message key="confirm.disable.provider" />',
'shutdown.provider': '<fmt:message key="shutdown.provider" />',
'confirm.shutdown.provider': '<fmt:message key="confirm.shutdown.provider" />',
'NetScaler': '<fmt:message key="NetScaler" />',
'add.new.NetScaler': '<fmt:message key="add.new.NetScaler" />',
'number.of.retries': '<fmt:message key="number.of.retries" />',
'capacity': '<fmt:message key="capacity" />',
'dedicated': '<fmt:message key="dedicated" />',
'F5': '<fmt:message key="F5" />',
'add.new.F5': '<fmt:message key="add.new.F5" />',
'SRX': '<fmt:message key="SRX" />',
'providers': '<fmt:message key="providers" />',
'add.new.SRX': '<fmt:message key="add.new.SRX" />',
'timeout': '<fmt:message key="timeout" />',
'public.network': '<fmt:message key="public.network" />',
'private.network': '<fmt:message key="private.network" />',
'public': '<fmt:message key="public" />',
'enable.swift': '<fmt:message key="enable.swift" />',
'confirm.enable.swift': '<fmt:message key="confirm.enable.swift" />',
'message.after.enable.swift': '<fmt:message key="message.after.enable.swift" />',
'URL': '<fmt:message key="URL" />',
'key': '<fmt:message key="key" />',
'domain': '<fmt:message key="domain" />',
'delete.NetScaler': '<fmt:message key="delete.NetScaler" />',
'confirm.delete.NetScaler': '<fmt:message key="confirm.delete.NetScaler" />',
'delete.F5': '<fmt:message key="delete.F5" />',
'confirm.delete.F5': '<fmt:message key="confirm.delete.F5" />',
'delete.SRX': '<fmt:message key="delete.SRX" />',
'confirm.delete.SRX': '<fmt:message key="confirm.delete.SRX" />',
'label.pods': '<fmt:message key="label.pods" />',
'pod.name': '<fmt:message key="pod.name" />',
'reserved.system.gateway': '<fmt:message key="reserved.system.gateway" />',
'reserved.system.netmask': '<fmt:message key="reserved.system.netmask" />',
'start.reserved.system.IP': '<fmt:message key="start.reserved.system.IP" />',
'end.reserved.system.IP': '<fmt:message key="end.reserved.system.IP" />',
'label.clusters': '<fmt:message key="label.clusters" />',
'cluster.name': '<fmt:message key="cluster.name" />',
'host.MAC': '<fmt:message key="host.MAC" />',
'agent.username': '<fmt:message key="agent.username" />',
'agent.password': '<fmt:message key="agent.password" />',
'confirm.action.force.reconnect': '<fmt:message key="confirm.action.force.reconnect" />',
'resource.state': '<fmt:message key="resource.state" />',
'LUN.number': '<fmt:message key="LUN.number" />',
'confirm.remove.IP.range': '<fmt:message key="confirm.remove.IP.range" />'
};
</script>

View File

@ -1084,7 +1084,8 @@
$serviceOfferingId.css('display', 'inline-block');
else
$serviceOfferingId.hide();
$(':ui-dialog').dialog('option', 'position', 'center');
});
},
fields: {
@ -1248,7 +1249,7 @@
//show or hide upon checked services and selected providers above (begin)
serviceOfferingId: {
label: 'Service Offering',
label: 'label.service.offering',
select: function(args) {
$.ajax({
url: createURL('listServiceOfferings&issystem=true'),
@ -1280,14 +1281,14 @@
},
"service.SourceNat.redundantRouterCapabilityCheckbox" : {
label: "Redundant router capability",
label: "redundant.router.capability",
isHidden: true,
dependsOn: 'service.SourceNat.isEnabled',
isBoolean: true
},
"service.SourceNat.sourceNatTypeDropdown": {
label: 'Supported Source NAT type',
label: 'supported.source.NAT.type',
isHidden: true,
dependsOn: 'service.SourceNat.isEnabled',
select: function(args) {
@ -1300,13 +1301,13 @@
}
},
"service.Lb.elasticLbCheckbox" : {
label: "Elastic LB",
label: "elastic.LB",
isHidden: true,
dependsOn: 'service.Lb.isEnabled',
isBoolean: true
},
"service.Lb.lbIsolationDropdown": {
label: 'LB isolation',
label: 'LB.isolation',
isHidden: true,
dependsOn: 'service.Lb.isEnabled',
select: function(args) {
@ -1319,7 +1320,7 @@
}
},
"service.StaticNat.elasticIpCheckbox" : {
label: "Elastic IP",
label: "elastic.IP",
isHidden: true,
dependsOn: 'service.StaticNat.isEnabled',
isBoolean: true

View File

@ -236,13 +236,15 @@
complete($.extend(data, {
zoneCapacities: $.map(capacities, function(capacity) {
if (capacity.podname) {
capacity.zonename = capacity.zonename.concat('<br/>Pod: ' + capacity.podname);
capacity.zonename = capacity.zonename.concat('<br/>' + _l('label.pod') + ': ' + capacity.podname);
}
if (capacity.clustername) {
capacity.zonename = capacity.zonename.concat('<br/>Cluster: ' + capacity.clustername);
capacity.zonename = capacity.zonename.concat('<br/>' + _l('label.cluster') + ': ' + capacity.clustername);
}
capacity.zonename.replace('Zone:', _l('label.zone') + ':');
return {
zoneID: capacity.zoneid, // Temporary fix for dashboard
zoneName: capacity.zonename,

View File

@ -1,12 +1,12 @@
(function(cloudStack) {
cloudStack.sections['global-settings'] = {
title: 'Global Settings',
title: 'label.menu.global.settings',
id: 'global-settings',
listView: {
label: 'Global Settings',
label: 'label.menu.global.settings',
actions: {
edit: {
label: 'Change value',
label: 'label.change.value',
action: function(args) {
var name = args.data.jsonObj.name;
var value = args.data.value;
@ -19,7 +19,7 @@
async: true,
success: function(json) {
var item = json.updateconfigurationresponse.configuration;
cloudStack.dialog.notice({ message: 'Please restart your management server for your change to take effect.' });
cloudStack.dialog.notice({ message: _l('message.restart.mgmt.server') });
args.response.success({data: item});
},
error: function(json) {
@ -30,9 +30,9 @@
}
},
fields: {
name: { label: 'Name', id: true },
description: { label: 'Description' },
value: { label: 'Value', editable: true }
name: { label: 'label.name', id: true },
description: { label: 'label.description' },
value: { label: 'label.value', editable: true }
},
dataProvider: function(args) {
var data = {

View File

@ -21,7 +21,7 @@
else
return false;
},
label: 'ui.listView.filters.destroyed'
label: 'state.Destroyed'
}
},
fields: {
@ -1016,10 +1016,10 @@
},
attachISO: {
label: 'label.attach.iso',
label: 'label.action.attach.iso',
createForm: {
title: 'label.attach.iso',
desc: 'label.attach.iso',
title: 'label.action.attach.iso',
desc: 'label.action.attach.iso',
fields: {
iso: {
label: 'ISO',
@ -1077,13 +1077,13 @@
},
detachISO: {
label: 'label.detach.iso',
label: 'label.action.detach.iso',
messages: {
confirm: function(args) {
return 'message.detach.iso.confirm';
},
notification: function(args) {
return 'label.detach.iso';
return 'label.action.detach.iso';
}
},
action: function(args) {
@ -1569,7 +1569,7 @@
isdefault: {
label: 'label.is.default',
converter: function(data) {
return data ? 'label.yes' : 'label.no';
return data ? _l('label.yes') : _l('label.no');
}
}
}
@ -1579,7 +1579,7 @@
var name = 'NIC ' + (index + 1);
if (nic.isdefault) {
name += ' (Default)';
name += ' (' + _l('label.default') + ')';
}
return $.extend(nic, {
name: name
@ -1610,12 +1610,12 @@
* Statistics tab
*/
stats: {
title: 'Statistics',
title: 'label.statistics',
fields: {
totalCPU: { label: 'Total CPU' },
cpuused: { label: 'CPU Utilized' },
networkkbsread: { label: 'Network Read' },
networkkbswrite: { label: 'Network Write' }
totalCPU: { label: 'label.total.cpu' },
cpuused: { label: 'label.cpu.utilized' },
networkkbsread: { label: 'label.network.read' },
networkkbswrite: { label: 'label.network.write' }
},
dataProvider: function(args) {
var jsonObj = args.context.instances[0];

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: {
@ -558,9 +558,9 @@
state: {
converter: function(str) {
// For localization
return str;
return 'state.' + str;
},
label: 'Status', indicator: {
label: 'label.status', indicator: {
converter: function(str) {
return 'state.' + str;
},
@ -752,7 +752,7 @@
},
tabs: {
details: {
title: 'Details',
title: 'label.details',
fields: [
{
name: { label: 'label.name' }
@ -838,7 +838,7 @@
project: { label: 'label.project' },
domain: { label: 'label.domain' },
state: {
label: 'Status',
label: 'label.status',
converter: function(str) {
// For localization
return 'state.' + str;

File diff suppressed because it is too large Load Diff

View File

@ -202,7 +202,7 @@
return $('<div></div>').addClass('header')
.append(
$.merge(
$('<h2></h2>').html('Hello and Welcome to CloudStack.'),
$('<h2></h2>').html(_l('label.installWizard.title')),
$('<h3></h3>').html('This tour will aid you in setting up your CloudStack installation')
)
);
@ -285,10 +285,10 @@
var steps = {
eula: function(args) {
var $intro = $('<div></div>').addClass('intro eula');
var $title = $('<div></div>').addClass('title').html('License Agreement');
var $subtitle = $('<div></div>').addClass('subtitle').html('Please accept the CloudStack&#8482 EULA before installing.');
var $title = $('<div></div>').addClass('title').html(_l('label.license.agreement'));
var $subtitle = $('<div></div>').addClass('subtitle').html(_l('label.license.agreement.subtitle'));
var $copy = getCopy('eula', $('<div></div>').addClass('eula-copy'));
var $continue = elems.nextButton('Agree');
var $continue = elems.nextButton(_l('label.agree'));
$continue.click(function() {
goTo('intro');

View File

@ -31,7 +31,7 @@
var $loading = $('.list-view').listView('prependItem', {
data: [
{
name: data.displayname ? data.displayname : 'New VM',
name: data.displayname ? data.displayname : _l('label.new.vm'),
zonename: $wizard.find('select[name=zoneid] option').filter(function() {
return $(this).val() == data.zoneid;
}).html(),
@ -531,7 +531,7 @@
if (fieldName) {
$(this).html(fieldName);
} else {
$(this).html('(None)');
$(this).html('(' + _l('label.none') + ')');
}
});
}
@ -574,10 +574,10 @@
// Show launch vm button if last step
var $nextButton = $wizard.find('.button.next');
$nextButton.find('span').html('Next');
$nextButton.find('span').html(_l('label.next'));
$nextButton.removeClass('final');
if ($targetStep.hasClass('review')) {
$nextButton.find('span').html('Launch VM');
$nextButton.find('span').html(_l('label.launch.vm'));
$nextButton.addClass('final');
}
@ -693,7 +693,7 @@
});
return $wizard.dialog({
title: 'Add instance',
title: _l('label.vm.add'),
width: 800,
height: 570,
zIndex: 5000

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);

View File

@ -13,8 +13,16 @@
).filter(':not(.disabled)');
var $publicTrafficItems = $wizard.find(
'.steps .setup-public-traffic .data-body .data-item');
var $storageTrafficItems = $wizard.find(
'.steps .setup-storage-traffic .data-body .data-item');
var groupedForms = {};
if ($physicalNetworkItems.find('li.traffic-type-draggable.storage').size()) {
$wizard.find('li.conditional.storage-traffic').show();
} else {
$wizard.find('li.conditional.storage-traffic').hide();
}
if (options.all) {
return cloudStack.serializeForm($forms, { escapeSlashes: true });
}
@ -60,7 +68,7 @@
$publicTrafficItems,
function(publicTrafficItem) {
var $publicTrafficItem = $(publicTrafficItem);
publicTrafficData = {};
var publicTrafficData = {};
var fields = [
'gateway',
'netmask',
@ -78,6 +86,28 @@
}
);
// Get storage traffic data (multi-edit)
groupedForms.storageTraffic = $.map(
$storageTrafficItems,
function(storageTrafficItem) {
var $storageTrafficItem = $(storageTrafficItem);
var storageTrafficData = {};
var fields = [
'netmask',
'vlanid',
'startip',
'endip'
];
$(fields).each(function() {
storageTrafficData[this] =
$storageTrafficItem.find('td.' + this + ' span').html();
});
return storageTrafficData;
}
);
// Hack to fix forward slash JS error
$.each(groupedForms, function(key1, value1) {
$.each(value1, function(key2, value2) {
@ -451,7 +481,7 @@
});
$physicalNetworkItem.find('li.traffic-type-draggable.clone').remove();
physicalNetwork.update($physicalNetworkItem.parent().find('.multi'));
physicalNetwork.update($physicalNetworkItem.parent().find('.multi'));
});
$physicalNetworkItem.addClass('disabled'); // Since there are no traffic types yet
@ -648,13 +678,16 @@
$('<span>').addClass('icon').html('&nbsp;'),
$('<span>').addClass('text').html(message)
);
var $launchContainer = $launchStep.find('.launch-container');
$launchStep.find('ul').append($li);
$li.prev().removeClass('loading');
$launchContainer.scrollTop($launchContainer.height());
if (isError) {
$li.prev().addClass('error');
}
};
args.action({
@ -840,7 +873,7 @@
if ($targetStep.index() == $steps.size() - 1 || options.nextStep) {
$nextButton.find('span').html(options.nextStep ? 'Save changes' : 'Launch zone');
$nextButton.addClass('final');
if (options.nextStep) { $nextButton.addClass('post-launch'); }
}
@ -1015,7 +1048,7 @@
} else if (!ui.draggable.closest('.traffic-types-drag-area').size()) {
ui.draggable.remove();
}
return true;
}
});

View File

@ -246,13 +246,13 @@
// User options
var $options = $('<div>').attr({ id: 'user-options' })
.appendTo($('#header'));
$(['Logout', 'Help']).each(function() {
$(['label.logout', 'label.help']).each(function() {
var $link = $('<a>')
.attr({ href: '#' })
.html(_l(this.toString()))
.appendTo($options);
if (this == 'Help') {
if (this == 'label.help') {
$link.click(function() {
var helpURL = 'http://docs.cloud.com/CloudStack_Documentation';

View File

@ -366,12 +366,12 @@
_l(args.message)
)
).dialog({
title: 'Confirm',
title: _l('label.confirmation'),
dialogClass: 'confirm',
zIndex: 5000,
buttons: [
{
text: 'Cancel',
text: _l('label.no'),
'class': 'cancel',
click: function() {
$(this).dialog('destroy');
@ -380,7 +380,7 @@
}
},
{
text: 'Yes',
text: _l('label.yes'),
'class': 'ok',
click: function() {
args.action();
@ -401,7 +401,7 @@
_l(args.message)
)
).dialog({
title: 'Status',
title: _l('label.status'),
dialogClass: 'notice',
zIndex: 5000,
buttons: [

View File

@ -257,7 +257,7 @@
var $inputs = $detailView.find('input, select');
var action = args.actions[args.actionName];
var id = $detailView.data('view-args').id;
var $editButton = $('<div>').addClass('button done').html(_l('Apply')).hide()
var $editButton = $('<div>').addClass('button done').html(_l('label.apply')).hide()
.appendTo(
$detailView.find('.ui-tabs-panel .detail-group.actions')
).fadeIn();
@ -276,7 +276,7 @@
var val = $input.is(':checked');
$value.data('detail-view-boolean-value', val);
$value.html(val ? _l('Yes') : _l('No'));
$value.html(val ? _l('label.yes') : _l('label.no'));
}
else if ($input.is('select')) {
$value.html(
@ -316,7 +316,7 @@
success: function(args) {
var notificationArgs = {
section: id,
desc: 'Changed item properties',
desc: _l('changed.item.properties'),
_custom: args ? args._custom : null
};
@ -880,7 +880,7 @@
$('<div>')
.addClass('button refresh')
.append(
$('<span>').html(_l('Refresh'))
$('<span>').html(_l('label.refresh'))
)
);
};

View File

@ -543,7 +543,7 @@
if (reorder) {
$thead.find('tr').append(
$('<th>').html(_l('Order')).addClass('reorder-actions reduced-hide')
$('<th>').html(_l('label.order')).addClass('reorder-actions reduced-hide')
);
}
@ -711,7 +711,7 @@
if (!$tbody.find('tr').size()) {
return [
$('<tr>').addClass('empty').append(
$('<td>').html(_l('No data to show'))
$('<td>').html(_l('label.no.data'))
).appendTo($tbody)
];
}
@ -800,10 +800,10 @@
$.each(reorder, function(actionName, action) {
var fnLabel = {
moveTop: 'Move to top',
moveUp: 'Move up one row',
moveDown: 'Move down one row',
moveDrag: 'Drag to new position'
moveTop: _l('label.move.to.top'),
moveUp: _l('label.move.up.row'),
moveDown: _l('label.move.down.row'),
moveDrag: _l('label.drag.new.position')
};
$('<div>')
@ -997,7 +997,7 @@
if (sectionPreFilter && sectionPreFilter.length == 1) {
$switcher.find('select').hide();
$switcher.find('label').html(
_l('Viewing') + ' ' + _l(sections[sectionPreFilter[0]].title)
_l('label.viewing') + ' ' + _l(sections[sectionPreFilter[0]].title)
);
}

View File

@ -118,7 +118,7 @@
_medit.vmList($multi,
options.listView,
options.context,
options.multipleAdd, 'Add VMs',
options.multipleAdd, _l('label.add.vms'),
addItemAction,
{
multiRule: multiRule
@ -200,7 +200,7 @@
$('<div>').addClass('action')
.addClass(actionID)
.append($('<span>').addClass('icon'))
.attr({ title: action.label })
.attr({ title: _l(action.label) })
.click(function() {
var $target = $(this);
var $dataItem = $target.closest('.data-item');
@ -208,7 +208,7 @@
var isDestroy = $target.hasClass('destroy');
if (isDestroy) {
var $loading = _medit.loadingItem($multi, 'Removing...');
var $loading = _medit.loadingItem($multi, _l('label.removing') + '...');
if ($expandable.is(':visible')) {
$expandable.slideToggle(function() {
@ -340,11 +340,11 @@
title: label,
buttons: [
{
text: 'Apply',
text: _l('label.apply'),
'class': 'ok',
click: function() {
if (!$listView.find('input[type=radio]:checked, input[type=checkbox]:checked').size()) {
cloudStack.dialog.notice({ message: 'Please select an instance '});
cloudStack.dialog.notice({ message: _l('message.select.item')});
return false;
}
@ -369,7 +369,7 @@
}
},
{
text: 'Cancel',
text: _l('label.cancel'),
'class': 'cancel',
click: function() {
$dataList.fadeOut(function() {
@ -463,7 +463,7 @@
// Show list view of selected VMs
$browser.cloudBrowser('addPanel', {
title: 'Load Balanced VMs',
title: _l('label.item.listing'),
data: '',
noSelectPanel: true,
maximizeIfSelected: true,
@ -668,7 +668,7 @@
$td.data('multi-custom-data', args.data);
}
}
})
});
}).appendTo($td);
} else if (field.addButton) {
$addVM = $('<div>').addClass('button add-vm').html(
@ -678,7 +678,7 @@
});
if (args.actions && !args.noHeaderActionsColumn) {
$thead.append($('<th>Actions</th>').addClass('multi-actions'));
$thead.append($('<th></th>').html(_l('label.actions')).addClass('multi-actions'));
$inputForm.append($('<td></td>').addClass('multi-actions'));
}
@ -714,7 +714,7 @@
});
// Loading appearance
var $loading = _medit.loadingItem($multi, 'Adding...');
var $loading = _medit.loadingItem($multi, _l('label.adding') + '...');
$dataBody.prepend($loading);
// Clear out fields
@ -785,7 +785,7 @@
_medit.vmList($multi,
args.listView,
args.context,
multipleAdd, 'Add VMs',
multipleAdd, _l('label.add.vms'),
addItem);
return true;

View File

@ -14,7 +14,7 @@
.append(
$('<div>').addClass('title').append(
$('<span>').html(
options.error ? options.error : _l('Task completed')
options.error ? options.error : _l('label.task.completed')
)
)
)
@ -159,7 +159,7 @@
.addClass('notification-box')
.append(
// Header
$('<h3>').html(_l('Notifications'))
$('<h3>').html(_l('label.notifications'))
)
.append(
// Container
@ -176,13 +176,13 @@
// Clear list
$('<div>').addClass('button clear-list')
.append(
$('<span>').html(_l('Clear List'))
$('<span>').html(_l('label.clear.list'))
)
)
.append(
$('<div>').addClass('button close')
.append(
$('<span>').html(_l('Close'))
$('<span>').html(_l('label.close'))
)
)
)

File diff suppressed because it is too large Load Diff