From 8e83bc8bc406a70432ea52084010f03765c3aa1c Mon Sep 17 00:00:00 2001 From: Jim Yeh Date: Thu, 22 Mar 2012 21:15:56 +0800 Subject: [PATCH 1/2] Use ugettext_lazy for verbose_texts instead of unicode. * Fix bug 962417 * Change the ugettext to ugettext_lazy * Unicode the verbose_name while the DataTableOption is initialize will make the translation fixed. * Similar scenario in Column class and Action class. Change-Id: I69ce9f89b0f0c2afb32b26e15ea8db84828d840f --- .../nova/access_and_security/floating_ips/forms.py | 2 +- .../nova/access_and_security/floating_ips/tables.py | 2 +- .../nova/access_and_security/floating_ips/views.py | 2 +- .../nova/access_and_security/keypairs/forms.py | 2 +- .../nova/access_and_security/keypairs/tables.py | 2 +- .../nova/access_and_security/keypairs/views.py | 2 +- .../nova/access_and_security/security_groups/forms.py | 2 +- .../nova/access_and_security/security_groups/tables.py | 2 +- .../nova/access_and_security/security_groups/views.py | 2 +- horizon/dashboards/nova/access_and_security/views.py | 2 +- horizon/dashboards/nova/containers/forms.py | 2 +- horizon/dashboards/nova/containers/tables.py | 2 +- horizon/dashboards/nova/containers/views.py | 2 +- .../nova/images_and_snapshots/images/forms.py | 2 +- .../nova/images_and_snapshots/images/tables.py | 2 +- .../nova/images_and_snapshots/images/tabs.py | 2 +- .../nova/images_and_snapshots/images/views.py | 2 +- .../nova/images_and_snapshots/snapshots/forms.py | 2 +- .../nova/images_and_snapshots/snapshots/tables.py | 2 +- .../nova/images_and_snapshots/snapshots/views.py | 2 +- horizon/dashboards/nova/images_and_snapshots/views.py | 2 +- .../images_and_snapshots/volume_snapshots/tables.py | 2 +- .../nova/instances_and_volumes/instances/forms.py | 2 +- .../nova/instances_and_volumes/instances/tables.py | 2 +- .../nova/instances_and_volumes/instances/tabs.py | 2 +- .../nova/instances_and_volumes/instances/views.py | 2 +- horizon/dashboards/nova/instances_and_volumes/views.py | 2 +- .../nova/instances_and_volumes/volumes/forms.py | 2 +- .../nova/instances_and_volumes/volumes/tables.py | 2 +- .../nova/instances_and_volumes/volumes/tabs.py | 2 +- .../nova/instances_and_volumes/volumes/views.py | 2 +- horizon/dashboards/syspanel/flavors/forms.py | 2 +- horizon/dashboards/syspanel/flavors/views.py | 2 +- horizon/dashboards/syspanel/images/tables.py | 2 +- horizon/dashboards/syspanel/images/views.py | 2 +- horizon/dashboards/syspanel/instances/tables.py | 2 +- horizon/dashboards/syspanel/instances/views.py | 2 +- horizon/dashboards/syspanel/projects/forms.py | 2 +- horizon/dashboards/syspanel/projects/views.py | 2 +- horizon/dashboards/syspanel/users/forms.py | 2 +- horizon/dashboards/syspanel/users/tables.py | 2 +- horizon/dashboards/syspanel/users/views.py | 2 +- horizon/tables/actions.py | 8 ++++---- horizon/tables/base.py | 10 +++++----- horizon/usage/tables.py | 2 +- 45 files changed, 52 insertions(+), 52 deletions(-) diff --git a/horizon/dashboards/nova/access_and_security/floating_ips/forms.py b/horizon/dashboards/nova/access_and_security/floating_ips/forms.py index 59225a1c4..e2f35f5f1 100644 --- a/horizon/dashboards/nova/access_and_security/floating_ips/forms.py +++ b/horizon/dashboards/nova/access_and_security/floating_ips/forms.py @@ -23,7 +23,7 @@ import logging from django.contrib import messages from django import shortcuts -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from novaclient import exceptions as novaclient_exceptions from horizon import api diff --git a/horizon/dashboards/nova/access_and_security/floating_ips/tables.py b/horizon/dashboards/nova/access_and_security/floating_ips/tables.py index 74fe0664a..b71fea112 100644 --- a/horizon/dashboards/nova/access_and_security/floating_ips/tables.py +++ b/horizon/dashboards/nova/access_and_security/floating_ips/tables.py @@ -19,7 +19,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/access_and_security/floating_ips/views.py b/horizon/dashboards/nova/access_and_security/floating_ips/views.py index 898422347..07bd4c894 100644 --- a/horizon/dashboards/nova/access_and_security/floating_ips/views.py +++ b/horizon/dashboards/nova/access_and_security/floating_ips/views.py @@ -25,7 +25,7 @@ Views for managing Nova floating IPs. import logging from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/access_and_security/keypairs/forms.py b/horizon/dashboards/nova/access_and_security/keypairs/forms.py index c96174125..d83e400da 100644 --- a/horizon/dashboards/nova/access_and_security/keypairs/forms.py +++ b/horizon/dashboards/nova/access_and_security/keypairs/forms.py @@ -23,7 +23,7 @@ import logging from django import shortcuts from django.contrib import messages from django.core import validators -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from novaclient import exceptions as novaclient_exceptions from horizon import api diff --git a/horizon/dashboards/nova/access_and_security/keypairs/tables.py b/horizon/dashboards/nova/access_and_security/keypairs/tables.py index 54306ae65..8a9345c32 100644 --- a/horizon/dashboards/nova/access_and_security/keypairs/tables.py +++ b/horizon/dashboards/nova/access_and_security/keypairs/tables.py @@ -16,7 +16,7 @@ import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/access_and_security/keypairs/views.py b/horizon/dashboards/nova/access_and_security/keypairs/views.py index 5bfba1655..a4b8683cf 100644 --- a/horizon/dashboards/nova/access_and_security/keypairs/views.py +++ b/horizon/dashboards/nova/access_and_security/keypairs/views.py @@ -27,7 +27,7 @@ from django import http from django.core.urlresolvers import reverse from django.template.defaultfilters import slugify from django.views.generic import View, TemplateView -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from .forms import CreateKeypair, ImportKeypair from horizon import api diff --git a/horizon/dashboards/nova/access_and_security/security_groups/forms.py b/horizon/dashboards/nova/access_and_security/security_groups/forms.py index bc5acce8f..af2ee3567 100644 --- a/horizon/dashboards/nova/access_and_security/security_groups/forms.py +++ b/horizon/dashboards/nova/access_and_security/security_groups/forms.py @@ -24,7 +24,7 @@ from django import shortcuts from django.contrib import messages from django.core import validators from django.forms import ValidationError -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from novaclient import exceptions as novaclient_exceptions from horizon import api diff --git a/horizon/dashboards/nova/access_and_security/security_groups/tables.py b/horizon/dashboards/nova/access_and_security/security_groups/tables.py index 49acc7a2a..d5321b29b 100644 --- a/horizon/dashboards/nova/access_and_security/security_groups/tables.py +++ b/horizon/dashboards/nova/access_and_security/security_groups/tables.py @@ -17,7 +17,7 @@ import logging from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/access_and_security/security_groups/views.py b/horizon/dashboards/nova/access_and_security/security_groups/views.py index 9d38f9a4b..f856d73e7 100644 --- a/horizon/dashboards/nova/access_and_security/security_groups/views.py +++ b/horizon/dashboards/nova/access_and_security/security_groups/views.py @@ -24,7 +24,7 @@ Views for managing Nova instances. import logging from django import shortcuts -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/access_and_security/views.py b/horizon/dashboards/nova/access_and_security/views.py index 36ae9297e..ec2072a96 100644 --- a/horizon/dashboards/nova/access_and_security/views.py +++ b/horizon/dashboards/nova/access_and_security/views.py @@ -25,7 +25,7 @@ Views for Instances and Volumes. import logging from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from novaclient import exceptions as novaclient_exceptions from horizon import api diff --git a/horizon/dashboards/nova/containers/forms.py b/horizon/dashboards/nova/containers/forms.py index 308dd1f45..1aeba8c11 100644 --- a/horizon/dashboards/nova/containers/forms.py +++ b/horizon/dashboards/nova/containers/forms.py @@ -24,7 +24,7 @@ from django import shortcuts from django.contrib import messages from django.core import validators from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/containers/tables.py b/horizon/dashboards/nova/containers/tables.py index 049dd3e29..27b915e26 100644 --- a/horizon/dashboards/nova/containers/tables.py +++ b/horizon/dashboards/nova/containers/tables.py @@ -22,7 +22,7 @@ from django.contrib import messages from django.core.urlresolvers import reverse from django.template.defaultfilters import filesizeformat from django.utils import http -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/containers/views.py b/horizon/dashboards/nova/containers/views.py index 4b31ec5df..c8720319f 100644 --- a/horizon/dashboards/nova/containers/views.py +++ b/horizon/dashboards/nova/containers/views.py @@ -26,7 +26,7 @@ import os from django import http from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/images/forms.py b/horizon/dashboards/nova/images_and_snapshots/images/forms.py index 3db5d44e0..2650b9918 100644 --- a/horizon/dashboards/nova/images_and_snapshots/images/forms.py +++ b/horizon/dashboards/nova/images_and_snapshots/images/forms.py @@ -29,7 +29,7 @@ from django.contrib import messages from django.core.urlresolvers import reverse from django.forms import ValidationError from django.utils.text import normalize_newlines -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/images/tables.py b/horizon/dashboards/nova/images_and_snapshots/images/tables.py index 0e81cf8c7..df57e6f01 100644 --- a/horizon/dashboards/nova/images_and_snapshots/images/tables.py +++ b/horizon/dashboards/nova/images_and_snapshots/images/tables.py @@ -17,7 +17,7 @@ import logging from django.template import defaultfilters as filters -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/images_and_snapshots/images/tabs.py b/horizon/dashboards/nova/images_and_snapshots/images/tabs.py index 685f819d7..78d71350e 100644 --- a/horizon/dashboards/nova/images_and_snapshots/images/tabs.py +++ b/horizon/dashboards/nova/images_and_snapshots/images/tabs.py @@ -15,7 +15,7 @@ # under the License. from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/images/views.py b/horizon/dashboards/nova/images_and_snapshots/images/views.py index 95c8801ed..f30614566 100644 --- a/horizon/dashboards/nova/images_and_snapshots/images/views.py +++ b/horizon/dashboards/nova/images_and_snapshots/images/views.py @@ -24,7 +24,7 @@ Views for managing Nova images. import logging from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py b/horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py index 7dee4e93c..d59c8271f 100644 --- a/horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py +++ b/horizon/dashboards/nova/images_and_snapshots/snapshots/forms.py @@ -23,7 +23,7 @@ import logging from django import shortcuts from django.core.urlresolvers import reverse from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py b/horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py index 37f4fe53f..13b19dd31 100644 --- a/horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py +++ b/horizon/dashboards/nova/images_and_snapshots/snapshots/tables.py @@ -16,7 +16,7 @@ import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from ..images.tables import ImagesTable, LaunchImage, EditImage, DeleteImage diff --git a/horizon/dashboards/nova/images_and_snapshots/snapshots/views.py b/horizon/dashboards/nova/images_and_snapshots/snapshots/views.py index 5d3f1061a..a45c4313e 100644 --- a/horizon/dashboards/nova/images_and_snapshots/snapshots/views.py +++ b/horizon/dashboards/nova/images_and_snapshots/snapshots/views.py @@ -25,7 +25,7 @@ Views for managing Nova instance snapshots. import logging from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/views.py b/horizon/dashboards/nova/images_and_snapshots/views.py index cc6588e17..82d0d0b9c 100644 --- a/horizon/dashboards/nova/images_and_snapshots/views.py +++ b/horizon/dashboards/nova/images_and_snapshots/views.py @@ -25,7 +25,7 @@ Views for managing Images and Snapshots. import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py b/horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py index c73b1ab44..5868e0bbf 100644 --- a/horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py +++ b/horizon/dashboards/nova/images_and_snapshots/volume_snapshots/tables.py @@ -16,7 +16,7 @@ import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/instances_and_volumes/instances/forms.py b/horizon/dashboards/nova/instances_and_volumes/instances/forms.py index a9cb4847e..bf8219e19 100644 --- a/horizon/dashboards/nova/instances_and_volumes/instances/forms.py +++ b/horizon/dashboards/nova/instances_and_volumes/instances/forms.py @@ -22,7 +22,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/instances_and_volumes/instances/tables.py b/horizon/dashboards/nova/instances_and_volumes/instances/tables.py index d178249c5..cf4a7581b 100644 --- a/horizon/dashboards/nova/instances_and_volumes/instances/tables.py +++ b/horizon/dashboards/nova/instances_and_volumes/instances/tables.py @@ -19,7 +19,7 @@ import logging from django import template from django.template.defaultfilters import title from django.utils.datastructures import SortedDict -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/instances_and_volumes/instances/tabs.py b/horizon/dashboards/nova/instances_and_volumes/instances/tabs.py index 4ae2fba80..5cc707dca 100644 --- a/horizon/dashboards/nova/instances_and_volumes/instances/tabs.py +++ b/horizon/dashboards/nova/instances_and_volumes/instances/tabs.py @@ -14,7 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/instances_and_volumes/instances/views.py b/horizon/dashboards/nova/instances_and_volumes/instances/views.py index 21856d1fc..e48b58591 100644 --- a/horizon/dashboards/nova/instances_and_volumes/instances/views.py +++ b/horizon/dashboards/nova/instances_and_volumes/instances/views.py @@ -27,7 +27,7 @@ from django import http from django import shortcuts from django.core.urlresolvers import reverse from django.utils.datastructures import SortedDict -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/instances_and_volumes/views.py b/horizon/dashboards/nova/instances_and_volumes/views.py index 5a27426d2..9d2b6903c 100644 --- a/horizon/dashboards/nova/instances_and_volumes/views.py +++ b/horizon/dashboards/nova/instances_and_volumes/views.py @@ -25,7 +25,7 @@ Views for Instances and Volumes. import logging from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.utils.datastructures import SortedDict from novaclient import exceptions as novaclient_exceptions diff --git a/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py b/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py index 0d8133fb6..7e3084388 100644 --- a/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py +++ b/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py @@ -11,7 +11,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import forms diff --git a/horizon/dashboards/nova/instances_and_volumes/volumes/tables.py b/horizon/dashboards/nova/instances_and_volumes/volumes/tables.py index ed4618910..71ee00630 100644 --- a/horizon/dashboards/nova/instances_and_volumes/volumes/tables.py +++ b/horizon/dashboards/nova/instances_and_volumes/volumes/tables.py @@ -19,7 +19,7 @@ import logging from django.core.urlresolvers import reverse from django.template.defaultfilters import title from django.utils import safestring -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/nova/instances_and_volumes/volumes/tabs.py b/horizon/dashboards/nova/instances_and_volumes/volumes/tabs.py index 81d349ea9..07b27b77a 100644 --- a/horizon/dashboards/nova/instances_and_volumes/volumes/tabs.py +++ b/horizon/dashboards/nova/instances_and_volumes/volumes/tabs.py @@ -15,7 +15,7 @@ # under the License. from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/nova/instances_and_volumes/volumes/views.py b/horizon/dashboards/nova/instances_and_volumes/volumes/views.py index 491a6ace4..15d634d71 100644 --- a/horizon/dashboards/nova/instances_and_volumes/volumes/views.py +++ b/horizon/dashboards/nova/instances_and_volumes/volumes/views.py @@ -20,7 +20,7 @@ Views for managing Nova volumes. import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/syspanel/flavors/forms.py b/horizon/dashboards/syspanel/flavors/forms.py index 809535207..5ced33d11 100644 --- a/horizon/dashboards/syspanel/flavors/forms.py +++ b/horizon/dashboards/syspanel/flavors/forms.py @@ -22,7 +22,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import forms diff --git a/horizon/dashboards/syspanel/flavors/views.py b/horizon/dashboards/syspanel/flavors/views.py index 4ae1f1711..236987ea0 100644 --- a/horizon/dashboards/syspanel/flavors/views.py +++ b/horizon/dashboards/syspanel/flavors/views.py @@ -21,7 +21,7 @@ import logging from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from novaclient import exceptions as api_exceptions from horizon import api diff --git a/horizon/dashboards/syspanel/images/tables.py b/horizon/dashboards/syspanel/images/tables.py index 57bf996a0..d4cfe2100 100644 --- a/horizon/dashboards/syspanel/images/tables.py +++ b/horizon/dashboards/syspanel/images/tables.py @@ -14,7 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon.dashboards.nova.images_and_snapshots.images.tables import ( ImagesTable, EditImage, DeleteImage) diff --git a/horizon/dashboards/syspanel/images/views.py b/horizon/dashboards/syspanel/images/views.py index 28ac07023..bf422ad7d 100644 --- a/horizon/dashboards/syspanel/images/views.py +++ b/horizon/dashboards/syspanel/images/views.py @@ -20,7 +20,7 @@ import logging -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/syspanel/instances/tables.py b/horizon/dashboards/syspanel/instances/tables.py index d9afde2ba..7aa073639 100644 --- a/horizon/dashboards/syspanel/instances/tables.py +++ b/horizon/dashboards/syspanel/instances/tables.py @@ -18,7 +18,7 @@ import logging from django.template.defaultfilters import title -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import tables from horizon.dashboards.nova.instances_and_volumes.instances.tables import ( diff --git a/horizon/dashboards/syspanel/instances/views.py b/horizon/dashboards/syspanel/instances/views.py index f6692705f..354f7846c 100644 --- a/horizon/dashboards/syspanel/instances/views.py +++ b/horizon/dashboards/syspanel/instances/views.py @@ -22,7 +22,7 @@ import logging from django.utils.datastructures import SortedDict -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/syspanel/projects/forms.py b/horizon/dashboards/syspanel/projects/forms.py index 340dc28de..8361387f5 100644 --- a/horizon/dashboards/syspanel/projects/forms.py +++ b/horizon/dashboards/syspanel/projects/forms.py @@ -22,7 +22,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/syspanel/projects/views.py b/horizon/dashboards/syspanel/projects/views.py index c4300aa15..cf2217ac2 100644 --- a/horizon/dashboards/syspanel/projects/views.py +++ b/horizon/dashboards/syspanel/projects/views.py @@ -22,7 +22,7 @@ import logging import operator from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import exceptions diff --git a/horizon/dashboards/syspanel/users/forms.py b/horizon/dashboards/syspanel/users/forms.py index 2301c026e..516e24030 100644 --- a/horizon/dashboards/syspanel/users/forms.py +++ b/horizon/dashboards/syspanel/users/forms.py @@ -22,7 +22,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.forms import ValidationError from horizon import api diff --git a/horizon/dashboards/syspanel/users/tables.py b/horizon/dashboards/syspanel/users/tables.py index 4c813bb45..eb4498263 100644 --- a/horizon/dashboards/syspanel/users/tables.py +++ b/horizon/dashboards/syspanel/users/tables.py @@ -2,7 +2,7 @@ import logging from django import shortcuts from django.contrib import messages -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from horizon import api from horizon import tables diff --git a/horizon/dashboards/syspanel/users/views.py b/horizon/dashboards/syspanel/users/views.py index 5edf20034..b9ccb03c7 100644 --- a/horizon/dashboards/syspanel/users/views.py +++ b/horizon/dashboards/syspanel/users/views.py @@ -22,7 +22,7 @@ import logging from django.contrib import messages from django.core.urlresolvers import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from keystoneclient import exceptions as api_exceptions from horizon import api diff --git a/horizon/tables/actions.py b/horizon/tables/actions.py index 6689fe4a1..66f1c18ea 100644 --- a/horizon/tables/actions.py +++ b/horizon/tables/actions.py @@ -22,7 +22,7 @@ from django.conf import settings from django.contrib import messages from django.core import urlresolvers from django.utils.functional import Promise -from django.utils.translation import string_concat, ugettext as _ +from django.utils.translation import string_concat, ugettext_lazy as _ from horizon import exceptions from horizon.utils import html @@ -230,9 +230,9 @@ class LinkAction(BaseAction): def __init__(self, verbose_name=None, url=None, attrs=None): super(LinkAction, self).__init__() - self.verbose_name = verbose_name or unicode(getattr(self, + self.verbose_name = verbose_name or getattr(self, "verbose_name", - self.name.title())) + self.name.title()) self.url = getattr(self, "url", url) if not self.verbose_name: raise NotImplementedError('A LinkAction object must have a ' @@ -295,7 +295,7 @@ class FilterAction(BaseAction): def __init__(self, verbose_name=None, param_name=None): super(FilterAction, self).__init__() - self.verbose_name = unicode(verbose_name or self.name) + self.verbose_name = verbose_name or self.name self.param_name = param_name or 'q' def get_param_name(self): diff --git a/horizon/tables/base.py b/horizon/tables/base.py index d433b409b..683e35adf 100644 --- a/horizon/tables/base.py +++ b/horizon/tables/base.py @@ -31,7 +31,7 @@ from django.utils import http from django.utils.datastructures import SortedDict from django.utils.html import escape from django.utils.http import urlencode -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe from django.utils import termcolors @@ -175,7 +175,7 @@ class Column(html.HTMLElement): verbose_name = self.transform.title() else: verbose_name = verbose_name - self.verbose_name = unicode(verbose_name) + self.verbose_name = verbose_name self.link = link self.hidden = hidden self.status = status @@ -193,7 +193,7 @@ class Column(html.HTMLElement): self.classes.append("hide") def __unicode__(self): - return self.verbose_name + return unicode(self.verbose_name) def __repr__(self): return '<%s: %s>' % (self.__class__.__name__, self.name) @@ -546,7 +546,7 @@ class DataTableOptions(object): self.name = getattr(options, 'name', self.__class__.__name__) verbose_name = getattr(options, 'verbose_name', None) \ or self.name.title() - self.verbose_name = unicode(verbose_name) + self.verbose_name = verbose_name self.columns = getattr(options, 'columns', None) self.status_columns = getattr(options, 'status_columns', []) self.table_actions = getattr(options, 'table_actions', []) @@ -685,7 +685,7 @@ class DataTable(object): action.table = self def __unicode__(self): - return self._meta.verbose_name + return unicode(self._meta.verbose_name) def __repr__(self): return '<%s: %s>' % (self.__class__.__name__, self.name) diff --git a/horizon/usage/tables.py b/horizon/usage/tables.py index 802b8c2a7..c7fdfdc9c 100644 --- a/horizon/usage/tables.py +++ b/horizon/usage/tables.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.template.defaultfilters import timesince, floatformat from horizon import tables From d6356888826e2c634a0a4b761b0111c5a24d7131 Mon Sep 17 00:00:00 2001 From: Andy Chong Date: Fri, 23 Mar 2012 13:40:14 +0800 Subject: [PATCH 2/2] Additional translations for Traditional Chinese * fixed all the fuzzy strings * updated all locale .po for edited string * compiled .mo for zh_TW locale Change-Id: Ibd478e245c793b4e2920b9b97e555650a96041b8 --- .../access_and_security/floating_ips/forms.py | 4 +- .../nova/images_and_snapshots/images/forms.py | 4 +- .../instances_and_volumes/volumes/forms.py | 4 +- horizon/locale/es/LC_MESSAGES/django.po | 13 +- horizon/locale/fr/LC_MESSAGES/django.po | 13 +- horizon/locale/ja/LC_MESSAGES/django.po | 20 +-- horizon/locale/pl/LC_MESSAGES/django.po | 20 +-- horizon/locale/pt/LC_MESSAGES/django.po | 13 +- horizon/locale/zh_CN/LC_MESSAGES/django.po | 13 +- horizon/locale/zh_TW/LC_MESSAGES/django.mo | Bin 29442 -> 32654 bytes horizon/locale/zh_TW/LC_MESSAGES/django.po | 132 +++++++----------- .../locale/zh_TW/LC_MESSAGES/django.mo | Bin 0 -> 1224 bytes .../locale/zh_TW/LC_MESSAGES/django.po | 4 +- 13 files changed, 84 insertions(+), 156 deletions(-) create mode 100644 openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo diff --git a/horizon/dashboards/nova/access_and_security/floating_ips/forms.py b/horizon/dashboards/nova/access_and_security/floating_ips/forms.py index e2f35f5f1..8169c02ea 100644 --- a/horizon/dashboards/nova/access_and_security/floating_ips/forms.py +++ b/horizon/dashboards/nova/access_and_security/floating_ips/forms.py @@ -88,8 +88,8 @@ class FloatingIpAllocate(forms.SelfHandlingForm): % (fip.ip, data['tenant_name'])) messages.success(request, - _('Successfully allocated Floating IP "%(ip)s" \ - to project "%(project)s"') + _('Successfully allocated Floating IP "%(ip)s" ' + 'to project "%(project)s"') % {"ip": fip.ip, "project": data['tenant_name']}) except: exceptions.handle(request, _('Unable to allocate Floating IP.')) diff --git a/horizon/dashboards/nova/images_and_snapshots/images/forms.py b/horizon/dashboards/nova/images_and_snapshots/images/forms.py index 2650b9918..7ab12e1b3 100644 --- a/horizon/dashboards/nova/images_and_snapshots/images/forms.py +++ b/horizon/dashboards/nova/images_and_snapshots/images/forms.py @@ -149,8 +149,8 @@ class LaunchForm(forms.SelfHandlingForm): volume = cleaned_data.get('volume', None) if volume and count > 1: - msg = _('Cannot launch more than one instance if volume \ - is specified.') + msg = _('Cannot launch more than one instance if ' + 'volume is specified.') raise ValidationError(msg) return cleaned_data diff --git a/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py b/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py index 7e3084388..246a77d2f 100644 --- a/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py +++ b/horizon/dashboards/nova/instances_and_volumes/volumes/forms.py @@ -77,8 +77,8 @@ class AttachForm(forms.SelfHandlingForm): data['device']) vol_name = api.volume_get(request, data['volume_id']).displayName - message = (_('Attaching volume %(vol)s to instance \ - %(inst)s at %(dev)s') % + message = (_('Attaching volume %(vol)s to instance ' + '%(inst)s at %(dev)s') % {"vol": vol_name, "inst": data['instance'], "dev": data['device']}) LOG.info(message) diff --git a/horizon/locale/es/LC_MESSAGES/django.po b/horizon/locale/es/LC_MESSAGES/django.po index 34f36dde7..5bf117787 100644 --- a/horizon/locale/es/LC_MESSAGES/django.po +++ b/horizon/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -138,8 +138,7 @@ msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 #, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 @@ -704,9 +703,7 @@ msgid "No keypairs available." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." +msgid "Cannot launch more than one instance if volume is specified." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:180 @@ -1031,9 +1028,7 @@ msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 diff --git a/horizon/locale/fr/LC_MESSAGES/django.po b/horizon/locale/fr/LC_MESSAGES/django.po index bccacf89a..dfe119ccb 100644 --- a/horizon/locale/fr/LC_MESSAGES/django.po +++ b/horizon/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -138,8 +138,7 @@ msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 #, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 @@ -704,9 +703,7 @@ msgid "No keypairs available." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." +msgid "Cannot launch more than one instance if volume is specified." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:180 @@ -1031,9 +1028,7 @@ msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 diff --git a/horizon/locale/ja/LC_MESSAGES/django.po b/horizon/locale/ja/LC_MESSAGES/django.po index f0f6c352d..40106564e 100644 --- a/horizon/locale/ja/LC_MESSAGES/django.po +++ b/horizon/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Takeshi Nakajima \n" "Language-Team: LANGUAGE \n" @@ -143,11 +143,10 @@ msgid "Pool" msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 -#, python-format +#, fuzzy, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" -msgstr "" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" +msgstr "正常にVPNプロジェクト%(proj)sを開始しました。" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 #, fuzzy @@ -755,9 +754,7 @@ msgid "No keypairs available." msgstr "現在イメージがありません。" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." +msgid "Cannot launch more than one instance if volume is specified." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:180 @@ -1110,9 +1107,7 @@ msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 @@ -2875,9 +2870,6 @@ msgstr "" #~ msgid "A security group named %s already exists." #~ msgstr "%sというセキュリティグループは既に存在します。" -#~ msgid "Successfully started VPN for project %(proj)s." -#~ msgstr "正常にVPNプロジェクト%(proj)sを開始しました。" - #~ msgid "Unable to start VPN for the project %(proj)s: %(code)s - %(msg)s" #~ msgstr "" #~ "プロジェクト%(proj)s: %(code)s - %(msg)sのVPNを開始する事ができませんでし" diff --git a/horizon/locale/pl/LC_MESSAGES/django.po b/horizon/locale/pl/LC_MESSAGES/django.po index 4a400607d..7ca169c64 100644 --- a/horizon/locale/pl/LC_MESSAGES/django.po +++ b/horizon/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: openstack-dashboard\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: 2011-09-24 14:41+0100\n" "Last-Translator: Tomasz 'Zen' Napierala \n" "Language-Team: Polish OpenStack translations team \n" "Language-Team: LANGUAGE \n" @@ -137,8 +137,7 @@ msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 #, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 @@ -703,9 +702,7 @@ msgid "No keypairs available." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." +msgid "Cannot launch more than one instance if volume is specified." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:180 @@ -1030,9 +1027,7 @@ msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 diff --git a/horizon/locale/zh_CN/LC_MESSAGES/django.po b/horizon/locale/zh_CN/LC_MESSAGES/django.po index b87200f67..9080dc373 100644 --- a/horizon/locale/zh_CN/LC_MESSAGES/django.po +++ b/horizon/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:58-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -137,8 +137,7 @@ msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 #, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" msgstr "" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 @@ -703,9 +702,7 @@ msgid "No keypairs available." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." +msgid "Cannot launch more than one instance if volume is specified." msgstr "" #: dashboards/nova/images_and_snapshots/images/forms.py:180 @@ -1030,9 +1027,7 @@ msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 diff --git a/horizon/locale/zh_TW/LC_MESSAGES/django.mo b/horizon/locale/zh_TW/LC_MESSAGES/django.mo index 15a4cd82097d5728902158524f51a24a5e07b19d..3227f1c1f4e143ecb5512520b64b319f53360f51 100644 GIT binary patch delta 12013 zcmaLc2Yggzy2tS|p-V5Jmyw##I}$pfN|Ual!X%lHK#~cW2@pglAP^w*0Tl$PBAwuf zAXP!vYgrYsFSa!^NnBSfR|V1K{{C~`aM`fE>gS||>4_2f;5*eE{0c)cR%V9R^yoa$4 zuE5IpG}grf*aKh2-uNrdV1QlPT2>YAZ*5?D8qs#Fg2$0Q)&;DE-=c1C6DwoY_Lg-Q zHbB)UU?qGA%VP@mMGtD=hp-zS$GupBWpP~xCeHn>O%!y2y-HvKYNjt^Gkh2C!0%Bf z-ay^h>S*_`f>o(DL7mqQHSjo7AA_3U16UoiQ0Fg3zfN33K})q2wMRiz$5*jFet_(i z^&K|BUr_z(bh2;M8t`_o)Jn`kZPgsqv#=C(o&Bf*9P7mTSD|p0ghu!V*26DR z7r2I6!kefQDt5LnPzN>e#^}VhSRF^9R%jZk{|r>WG}M+YKwU40dRESKX8kq8OC)OG zH`owwn0nnVmeqlJ8{CAGQ8)S9@^EY2?qQW zbix+Y(madW^P{Mxduo2G2mY9dyl0&HT-bPKd1hv9Z z-R=AM8&YUaA`bOlKZqL0Lexx`pk}%eHR8>vrQKobhfoi1(B#je&VSw1FQHcGGt@-C zL-oIbypDdWTn~GR2jCzY(vddnC~5|UI10=6Cc}0KAI2V5eTTy-@>>N4{g$ z2$LU$+LFnrfy}_ldjHcYsACRJ!iA_kx`cXoK0=)sGJcQRq8q3cX~dIN3!7tI?19?4 z(Wrq;L-m`1+M=1J{V}Y_{jCiY>fuwU3j|GvH&9#f32MnpPy_lI^-Ppu{dD7Ktb;MA zmFS1HaX9L_(@E{@W zS5Yh0fJa={YlixSw@01V8P(nkwKDy%0gmp&`l~}S35`4*wPf>5$AzdF=c6vX8MPIA zQT>jgw&DfU%6*7hiNBkA6yISz+zn6@>5FO~i@IK7U)EnY$Rwd9dK5LFZOC(H?LjU5 zr>GOcsE6_=)DlMbvp-x-P)ptoHPhj!r5s!=Pw;E*6usyD#-W&BS{0Y_mmhm#`{7w-V-0Si z2|tW}jVzafPRK(&EbFm3Zbc`a$1(UNcE*lFEh_=1V+Xu|(fB>;DK9_F9!OK<`LtS_ zdJ>kUo`y|v&M@}BHHCE~n&1i43_n08{){nLcewqO55Pv$r{JBKg-+av4e>Z?3*SY( z6(y+itr7ML#-fwz7}Rw#MzH?vDXb(B834AV{sA_|-%Q7PBkdLGhPu%dQ=fxcfsLpc zT|f=&D^o9Xx81)v>bm`m38;Q~ehRw4e(Z!Fp>AAZls%x9=%hXvl~2UBn2Xw?gQyjI z8#S=+P@mRHqwV$<*n;{n)C6at`Y%WI_wS?7io!+Ii6y8Dmtn(OV{6pN$Djt7g&N2% z)CJC?mi$xWPpGA@GS<$wz^c^yq6U69>TSx#3VQ$dQ>aMd7*@eksQ3RhtcD+%d>AWJ z{|TLV6S;up9A^(S26dxxsDV9*)o?zR$2?PCgX*^p%W{9~AO$T^0an8Ijh~}B7GpX5 z1@%khcVo4C?5Ej@caU#|>em@H(4MIC2csr<531jNr~xIZo%>s}DQKiQr~xd;>bSwU z3u{n+4)sgvB5JFyqrRB6$J;9rgMF!YMqMWzV{jgJ#T}-88QW0*9sQbl%L(=`jS
  • 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 delta 9283 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 diff --git a/horizon/locale/zh_TW/LC_MESSAGES/django.po b/horizon/locale/zh_TW/LC_MESSAGES/django.po index c8dc92d6d..4a7ca436a 100644 --- a/horizon/locale/zh_TW/LC_MESSAGES/django.po +++ b/horizon/locale/zh_TW/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 14:26+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Andy Chong \n" "Language-Team: LANGUAGE \n" @@ -41,17 +41,17 @@ msgstr "您的登入時效已逾期。 請重新登入。" #: api/keystone.py:53 #, python-format msgid "%(type)s (%(backend)s backend)" -msgstr "" +msgstr "%(type)s (%(backend)s 後端)" #: api/nova.py:182 #, python-format msgid "ALLOW %(from)s:%(to)s from %(group)s" -msgstr "" +msgstr "允许 %(from)s:%(to)s 從群組%(group)s的連線" #: api/nova.py:187 #, python-format msgid "ALLOW %(from)s:%(to)s from %(cidr)s" -msgstr "" +msgstr "允许 %(from)s:%(to)s 從網段%(cidr)s的連線" #: api/swift.py:114 msgid "Unicode is not currently supported for object copy." @@ -101,15 +101,13 @@ msgstr "執行個體ID" #: dashboards/nova/access_and_security/floating_ips/forms.py:48 #: dashboards/nova/instances_and_volumes/volumes/forms.py:67 -#, fuzzy msgid "Select an instance" -msgstr "選擇掛載的執行個體" +msgstr "選擇一個執行個體" #: dashboards/nova/access_and_security/floating_ips/forms.py:50 #: dashboards/nova/instances_and_volumes/volumes/forms.py:69 -#, fuzzy msgid "No instances available" -msgstr "不存在" +msgstr "沒有可用的執行個體" #: dashboards/nova/access_and_security/floating_ips/forms.py:53 #: dashboards/nova/access_and_security/floating_ips/tables.py:93 @@ -134,13 +132,12 @@ msgstr "配給浮動IP出現錯誤: %s" #: dashboards/nova/access_and_security/floating_ips/forms.py:76 msgid "Pool" -msgstr "" +msgstr "储备池" #: dashboards/nova/access_and_security/floating_ips/forms.py:91 #, python-format msgid "" -"Successfully allocated Floating IP \"%(ip)s" -"\" to project \"%(project)s\"" +"Successfully allocated Floating IP \"%(ip)s\" to project \"%(project)s\"" msgstr "已成功將浮動IP\"%(ip)s\"分配到專案\"%(project)s\"" #: dashboards/nova/access_and_security/floating_ips/forms.py:95 @@ -372,7 +369,6 @@ msgid "Code" msgstr "代號" #: dashboards/nova/access_and_security/security_groups/forms.py:84 -#, fuzzy msgid "Source Group" msgstr "安全性群組" @@ -400,7 +396,7 @@ msgstr "\"到端口\"必須是大於或等於\"從端口\"的整數" #: dashboards/nova/access_and_security/security_groups/forms.py:126 msgid "Either CIDR or Source Group may be specified, but not both." -msgstr "" +msgstr "只能指定CIDR或安全性群組,不能同時全選。" #: dashboards/nova/access_and_security/security_groups/forms.py:147 #, python-format @@ -444,7 +440,7 @@ msgstr "規則" #: dashboards/nova/access_and_security/security_groups/tables.py:96 msgid "Source" -msgstr "" +msgstr "來源" #: dashboards/nova/access_and_security/security_groups/tables.py:106 msgid "Security Group Rules" @@ -455,7 +451,6 @@ msgid "Unable to retrieve security group." msgstr "無法取得安全性群組" #: dashboards/nova/access_and_security/security_groups/views.py:64 -#, fuzzy msgid "Unable to retrieve security groups." msgstr "無法取得安全性群組" @@ -518,7 +513,6 @@ msgid "Containers" msgstr "容器" #: dashboards/nova/containers/tables.py:35 -#, fuzzy msgid "Container" msgstr "容器" @@ -567,7 +561,6 @@ msgid "Size" msgstr "大小" #: dashboards/nova/containers/tables.py:120 -#, fuzzy msgid "Object" msgstr "物件" @@ -705,20 +698,16 @@ msgid "Delete volume on instance terminate" msgstr "執行個體終止執行時刪除容量" #: dashboards/nova/images_and_snapshots/images/forms.py:135 -#, fuzzy msgid "Select a keypair" -msgstr "選擇專案" +msgstr "選擇金鑰" #: dashboards/nova/images_and_snapshots/images/forms.py:137 -#, fuzzy msgid "No keypairs available." -msgstr "不存在" +msgstr "沒有可用的金鑰" #: dashboards/nova/images_and_snapshots/images/forms.py:152 -msgid "" -"Cannot launch more than one instance if volume is " -"specified." -msgstr "" +msgid "Cannot launch more than one instance if volume is specified." +msgstr "無法以特定容量 啟動一台以上執行個體" #: dashboards/nova/images_and_snapshots/images/forms.py:180 #, python-format @@ -783,10 +772,9 @@ msgstr "公開" #: dashboards/syspanel/overview/panel.py:28 #: dashboards/syspanel/templates/syspanel/overview/usage.html:6 msgid "Overview" -msgstr "大綱" +msgstr "總覽" #: dashboards/nova/images_and_snapshots/images/tabs.py:37 -#, fuzzy msgid "Unable to retrieve image details." msgstr "無法取得執行個體的詳細資料" @@ -1043,9 +1031,7 @@ msgstr "選擇掛載的執行個體" #: dashboards/nova/instances_and_volumes/volumes/forms.py:80 #, python-format -msgid "" -"Attaching volume %(vol)s to instance %(inst)s at " -"%(dev)s" +msgid "Attaching volume %(vol)s to instance %(inst)s at %(dev)s" msgstr "正在掛載容量%(vol)s到執行個體%(inst)s的%(dev)s" #: dashboards/nova/instances_and_volumes/volumes/forms.py:89 @@ -1108,9 +1094,8 @@ msgid "Detached" msgstr "已卸載" #: dashboards/nova/instances_and_volumes/volumes/tabs.py:40 -#, fuzzy msgid "Unable to retrieve volume details." -msgstr "無法取得空間快照" +msgstr "無法取得容量快照" #: dashboards/nova/instances_and_volumes/volumes/views.py:71 #: dashboards/nova/instances_and_volumes/volumes/views.py:81 @@ -1267,14 +1252,13 @@ msgstr "映像 & 快照" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:3 #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:3 msgid "Instance Overview" -msgstr "執行個體大綱" +msgstr "執行個體總覽" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:6 #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:6 #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:6 -#, fuzzy msgid "Info" -msgstr "資訊: " +msgstr "資訊" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:10 #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:10 @@ -1286,20 +1270,17 @@ msgid "ID" msgstr "ID" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:20 -#, fuzzy msgid "Checksum" -msgstr "校驗碼:" +msgstr "校驗碼" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:21 #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:30 -#, fuzzy msgid "Created" -msgstr "建立於:" +msgstr "建立於" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:22 -#, fuzzy msgid "Updated" -msgstr "更新" +msgstr "更新於" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:27 #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:23 @@ -1312,9 +1293,8 @@ msgid "Custom Properties" msgstr "專門屬性" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:50 -#, fuzzy msgid "Euca2ools state" -msgstr "Euca2ools狀態:" +msgstr "Euca2ools狀態" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:53 #: usage/tables.py:28 @@ -1322,9 +1302,8 @@ msgid "Project ID" msgstr "專案ID" #: dashboards/nova/templates/nova/images_and_snapshots/images/_detail_overview.html:56 -#, fuzzy msgid "Image Type" -msgstr "映像類型:" +msgstr "映像類型" #: dashboards/nova/templates/nova/images_and_snapshots/images/_launch.html:9 msgid "Launch Instances" @@ -1419,7 +1398,7 @@ msgstr "IP位址" #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:57 msgid "No rules defined." -msgstr "" +msgstr "沒有規則被制定" #: dashboards/nova/templates/nova/instances_and_volumes/instances/_detail_overview.html:66 msgid "Meta" @@ -1454,9 +1433,8 @@ msgid "Update Instance" msgstr "更新執行個體" #: dashboards/nova/templates/nova/instances_and_volumes/instances/detail.html:3 -#, fuzzy msgid "Instance Detail" -msgstr "執行個體ID" +msgstr "執行個體詳述" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_attach.html:9 #: dashboards/nova/templates/nova/instances_and_volumes/volumes/attach.html:6 @@ -1483,21 +1461,18 @@ msgid "Create Volume Snapshot" msgstr "建立容量快照" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:3 -#, fuzzy msgid "Volume Overview" -msgstr "大綱" +msgstr "容量總覽" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:40 -#, fuzzy msgid "Attached To" -msgstr "掛載到:" +msgstr "掛載到" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:43 msgid "on" msgstr "在" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/_detail_overview.html:46 -#, fuzzy msgid "Not attached" msgstr "沒有掛載" @@ -1510,14 +1485,12 @@ msgid "Create a Volume Snapshot" msgstr "建立容量快照" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/detail.html:3 -#, fuzzy msgid "Volume Details" -msgstr "容量ID" +msgstr "容量詳述" #: dashboards/nova/templates/nova/instances_and_volumes/volumes/detail.html:6 -#, fuzzy msgid "Volume Detail" -msgstr "容量ID" +msgstr "容量詳述" #: dashboards/nova/templates/nova/objects/_copy.html:7 #: dashboards/nova/templates/nova/objects/_copy.html:22 @@ -1533,9 +1506,8 @@ msgid "" msgstr "您可以複製一份已存在的物件,儲存到這個或其它的容器。" #: dashboards/nova/templates/nova/objects/_upload.html:8 -#, fuzzy msgid "Upload Object To Container" -msgstr "上傳物件" +msgstr "上傳物件到容器" #: dashboards/nova/templates/nova/objects/_upload.html:18 msgid "" @@ -1595,13 +1567,12 @@ msgid "Download EC2 Credentials" msgstr "下載EC2憑證資料" #: dashboards/settings/templates/settings/ec2/download_form.html:18 -#, fuzzy msgid "" "Clicking \"Download EC2 Credentials\" will download a zip file which " "includes an rc file with your access/secret keys, as well as your x509 " "private key and certificate." msgstr "" -"點擊\"下載x509認證憑據資料\"會下載一個壓縮檔,裡面含有您的x509私鑰和憑證" +"點擊\"下載EC2認證憑據資料\"會下載一個壓縮檔,裡面含有您的x509私鑰和憑證" #: dashboards/settings/templates/settings/project/_openrc.html:8 #: dashboards/settings/templates/settings/project/settings.html:6 @@ -1647,7 +1618,7 @@ msgstr "使用者設定" #: dashboards/syspanel/dashboard.py:23 msgid "Admin" -msgstr "" +msgstr "管理者" #: dashboards/syspanel/dashboard.py:25 msgid "System Panel" @@ -1723,9 +1694,8 @@ msgid "Host" msgstr "主機" #: dashboards/syspanel/instances/views.py:62 -#, fuzzy msgid "Unable to retrieve instance tenant information." -msgstr "無法取得執行個體大小資訊" +msgstr "無法取得執行個體的專案資訊" #: dashboards/syspanel/projects/forms.py:38 msgid "Role" @@ -1913,7 +1883,7 @@ msgstr "所有執行個體" #: dashboards/syspanel/templates/syspanel/overview/usage.html:3 msgid "Usage Overview" -msgstr "使用量大綱" +msgstr "使用量總覽" #: dashboards/syspanel/templates/syspanel/overview/usage.html:12 msgid "Monitoring" @@ -1967,7 +1937,7 @@ msgstr "您可以在這編輯專案" #: dashboards/syspanel/templates/syspanel/projects/usage.html:3 msgid "Project Usage Overview" -msgstr "專案使用量大綱" +msgstr "專案使用量總覽" #: dashboards/syspanel/templates/syspanel/projects/usage.html:7 msgid "Project Usage" @@ -2010,7 +1980,7 @@ msgstr "選擇專案" #: dashboards/syspanel/users/forms.py:58 msgid "Passwords do not match." -msgstr "" +msgstr "密碼不符" #: dashboards/syspanel/users/forms.py:64 #: dashboards/syspanel/users/forms.py:107 @@ -2025,9 +1995,8 @@ msgstr "密碼" #: dashboards/syspanel/users/forms.py:71 #: dashboards/syspanel/users/forms.py:112 -#, fuzzy msgid "Confirm Password" -msgstr "密碼" +msgstr "密碼確認" #: dashboards/syspanel/users/forms.py:74 #: dashboards/syspanel/users/forms.py:114 @@ -2139,7 +2108,7 @@ msgstr "無法更新使用者。" #: tables/actions.py:294 msgid "Filter" -msgstr "" +msgstr "搜尋" #: tables/actions.py:456 #, python-format @@ -2214,8 +2183,8 @@ msgstr "登入" #, python-format msgid "Displaying %(counter)s item" msgid_plural "Displaying %(counter)s items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "正顯示%(counter)s個項目" +msgstr[1] "正顯示%(counter)s個項目" #: templates/horizon/common/_sidebar.html:4 msgid "OpenStack Dashboard" @@ -2227,7 +2196,7 @@ msgstr "請選擇一個月份以查詢使用量" #: templates/horizon/common/_usage_summary.html:9 msgid "Submit" -msgstr "" +msgstr "提交" #: templates/horizon/common/_usage_summary.html:14 msgid "Active Instances" @@ -2249,8 +2218,8 @@ msgstr "本月的GB-時數" #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(size)d 位元組" +msgstr[1] "%(size)d 位元組" #: templatetags/sizeformat.py:49 #, python-format @@ -2364,9 +2333,8 @@ msgid "Region" msgstr "區域" #: views/auth_forms.py:97 -#, fuzzy msgid "Unable to authenticate for that project." -msgstr "無法認證租戶" +msgstr "無法認證到專案權限" #: views/auth_forms.py:114 msgid "Invalid user name or password." @@ -2374,17 +2342,15 @@ msgstr "不合法的使用者名稱或密碼" #: views/auth_forms.py:121 msgid "An error occurred authenticating. Please try again later." -msgstr "" +msgstr "發生認證錯誤。 請稍候再試" #: views/auth_forms.py:140 -#, fuzzy msgid "You are not authorized for any projects." -msgstr "您沒有該租戶的權限。" +msgstr "您沒有任何專案的權限。" #: views/auth_forms.py:164 -#, fuzzy msgid "You are not authorized for any available projects." -msgstr "您沒有任何租戶的權限。" +msgstr "您沒有任何現有專案的權限。" #~ msgid "IP protocol" #~ msgstr "IP協定" @@ -2428,11 +2394,9 @@ msgstr "您沒有任何租戶的權限。" #~ msgid "Project ID:" #~ msgstr "專案ID:" -#, fuzzy #~ msgid "Volume Name:" #~ msgstr "映像名稱:" -#, fuzzy #~ msgid "Created at:" #~ msgstr "建立時間:" diff --git a/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo b/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7e02b32113bcd094d0a13083e407c3d2f90b6623 GIT binary patch literal 1224 zcmY+B%Wqpn6vl^A9x<;1VuM%=8(2iwII#qgNl{Efx4th8|7iB+*A}n)TB!`{0m5I@O}6%V8eoM5`)E&j(?t+@67qmoj+bX zxkeB#Bi}+^N4}2y8>wRQDMCI2Q{Vu&4W0z|z&F63z*FFF;EUkzpt>snp9lZyk(?mp zIjjdjwf`zO2)+rP29w|zw9DWq*1tYY$g|)HG*cV^Rlif*Oir7K)5%;clN$UqmraDyx+Arc&~2xpODkYTrI<6vq^T1u%cIyxQ-3_n)Gx5KB z;9hGS?*@x21eM)8o1OiJ+rH(lw}|_&?%k`Cpw)IC-0oE$;mgOwyWH}wEqWW<{`#u& y)hpfUS3}``y%$`05*+TMEj&QidD3w2EPC~Cy!O^{jr+@w!RCE`_n_O{BL4u)?2}CZ literal 0 HcmV?d00001 diff --git a/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po b/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po index 1a234a1ea..9c139ffea 100644 --- a/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po +++ b/openstack_dashboard/locale/zh_TW/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-22 16:59-0700\n" +"POT-Creation-Date: 2012-03-23 13:37+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,7 +89,7 @@ msgstr "處理過程中發生無法預期的錯誤。請再嘗試。" #: templates/_header.html:3 msgid "Logged in as" -msgstr "" +msgstr "目前登入者" #: templates/_header.html:4 msgid "Settings"