Explorar o código

[core] English corrections of user text

Ann McCown %!s(int64=13) %!d(string=hai) anos
pai
achega
e99bc2e
Modificáronse 39 ficheiros con 122 adicións e 121 borrados
  1. 8 8
      apps/beeswax/src/beeswax/conf.py
  2. 2 2
      apps/beeswax/src/beeswax/data_export.py
  3. 9 8
      apps/beeswax/src/beeswax/forms.py
  4. 5 5
      apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py
  5. 1 1
      apps/beeswax/src/beeswax/models.py
  6. 5 5
      apps/beeswax/src/beeswax/templates/choose_delimiter.mako
  7. 4 4
      apps/beeswax/src/beeswax/templates/choose_file.mako
  8. 7 7
      apps/beeswax/src/beeswax/templates/create_table_manually.mako
  9. 3 3
      apps/beeswax/src/beeswax/templates/define_columns.mako
  10. 2 2
      apps/beeswax/src/beeswax/templates/execute.mako
  11. 1 1
      apps/beeswax/src/beeswax/templates/parameterization.mako
  12. 1 1
      apps/beeswax/src/beeswax/templates/show_tables.mako
  13. 3 3
      apps/beeswax/src/beeswax/views.py
  14. 1 1
      apps/filebrowser/src/filebrowser/templates/chown.mako
  15. 2 2
      apps/filebrowser/src/filebrowser/templates/listdir_components.mako
  16. 1 1
      apps/filebrowser/src/filebrowser/templates/upload.mako
  17. 5 5
      apps/filebrowser/src/filebrowser/views.py
  18. 1 1
      apps/filebrowser/src/filebrowser/views_test.py
  19. 3 3
      apps/jobbrowser/src/jobbrowser/templates/attempt.mako
  20. 1 1
      apps/jobbrowser/src/jobbrowser/templates/jobs.mako
  21. 2 2
      apps/jobsub/src/jobsub/forms.py
  22. 6 6
      apps/jobsub/src/jobsub/models.py
  23. 1 1
      apps/jobsub/src/jobsub/submit.py
  24. 1 1
      apps/jobsub/src/jobsub/templates/edit_design.mako
  25. 2 2
      apps/jobsub/src/jobsub/views.py
  26. 2 2
      apps/shell/src/shell/templates/no_such_user.mako
  27. 1 1
      apps/shell/src/shell/templates/not_running_spawning.mako
  28. 2 2
      apps/shell/src/shell/tests.py
  29. 3 3
      apps/useradmin/src/useradmin/management/commands/import_ldap_group.py
  30. 2 2
      apps/useradmin/src/useradmin/management/commands/import_ldap_user.py
  31. 1 1
      apps/useradmin/src/useradmin/management/commands/useradmin_sync_with_unix.py
  32. 1 1
      apps/useradmin/src/useradmin/models.py
  33. 1 1
      apps/useradmin/src/useradmin/templates/edit_group.mako
  34. 1 1
      apps/useradmin/src/useradmin/templates/edit_user.mako
  35. 1 1
      apps/useradmin/src/useradmin/templates/list_users.mako
  36. 6 6
      apps/useradmin/src/useradmin/views.py
  37. 1 1
      desktop/core/src/desktop/appmanager.py
  38. 22 22
      desktop/core/src/desktop/conf.py
  39. 1 1
      desktop/core/src/desktop/templates/check_config.mako

+ 8 - 8
apps/beeswax/src/beeswax/conf.py

@@ -21,19 +21,19 @@ from django.utils.translation import ugettext_lazy as _
 
 BEESWAX_SERVER_HOST = Config(
   key="beeswax_server_host",
-  help=_("Host where beeswax server thrift daemon is running"),
+  help=_("Host where Beeswax server Thrift daemon is running."),
   private=True,
   default="localhost")
 
 BEESWAX_SERVER_PORT = Config(
   key="beeswax_server_port",
-  help=_("Configure the port the beeswax thrift server runs on"),
+  help=_("Configure the port the Beeswax Thrift server runs on."),
   default=8002,
   type=int)
 
 BEESWAX_META_SERVER_HOST = Config(
   key="beeswax_meta_server_host",
-  help=_("Host where beeswax internal metastore thrift daemon is running"),
+  help=_("Host where Beeswax internal metastore Thrift daemon is running."),
   private=True,
   default="localhost")
 
@@ -65,31 +65,31 @@ BEESWAX_HIVE_HOME_DIR = Config(
 
 BEESWAX_HIVE_CONF_DIR = Config(
   key='hive_conf_dir',
-  help=_('Hive configuration directory, where hive-site.xml is located'),
+  help=_('Hive configuration directory, where hive-site.xml is located.'),
   default=os.environ.get("HIVE_CONF_DIR", '/etc/hive/conf'))
 
 LOCAL_EXAMPLES_DATA_DIR = Config(
   key='local_examples_data_dir',
   default=os.path.join(os.path.dirname(__file__), "..", "..", "data"),
-  help=_('The local filesystem path containing the beeswax examples'))
+  help=_('The local filesystem path containing the Beeswax examples.'))
 
 BEESWAX_SERVER_CONN_TIMEOUT = Config(
   key='beeswax_server_conn_timeout',
   default=120,
   type=int,
-  help=_('Timeout in seconds for thrift calls to beeswax service'))
+  help=_('Timeout in seconds for Thrift calls to Beeswax service.'))
 
 METASTORE_CONN_TIMEOUT= Config(
   key='metastore_conn_timeout',
   default=10,
   type=int,
-  help=_('Timeouts in seconds for thrift calls to the hive metastore. This timeout should take into account that the metastore could talk to an external DB'))
+  help=_('Timeouts in seconds for Thrift calls to the Hive metastore. This timeout should take into account that the metastore could talk to an external database.'))
 
 BEESWAX_RUNNING_QUERY_LIFETIME = Config(
   key='beeswax_running_query_lifetime',
   default=604800000L, # 7*24*60*60*1000 (1 week)
   type=long,
-  help=_('Time in seconds for beeswax to persist queries in its cache.'))
+  help=_('Time in seconds for Beeswax to persist queries in its cache.'))
 
 BROWSE_PARTITIONED_TABLE_LIMIT = Config(
   key='browse_partitioned_table_limit',

+ 2 - 2
apps/beeswax/src/beeswax/data_export.py

@@ -85,10 +85,10 @@ def data_generator(query_model, formatter):
     # Someone is reading the results concurrently. Abort.
     # But unfortunately, this current generator will produce incomplete data.
     if next_row != results.start_row:
-      msg = _('Error: Potentially incomplete results as an error occur during data retrieval.')
+      msg = _('Error: Potentially incomplete results as an error occurred during data retrieval.')
       yield formatter.format_row([msg])
       err = (_('Detected another client retrieving results for %(server_id)s. '
-             'Expect next row being %(row)s and got %(start_row)s. Aborting') %
+             'Expected next row to be %(row)s and got %(start_row)s. Aborting') %
              {'server_id': query_model.server_id, 'row': next_row, 'start_row': results.start_row})
       LOG.error(err)
       raise RuntimeError(err)

+ 9 - 8
apps/beeswax/src/beeswax/forms.py

@@ -43,7 +43,7 @@ class SaveForm(forms.Form):
   name = forms.CharField(required=False,
                         max_length=64,
                         initial=models.SavedQuery.DEFAULT_NEW_DESIGN_NAME,
-                        help_text=_t('Change the name to save as a new design'))
+                        help_text=_t('Change the name to save as a new design.'))
   desc = forms.CharField(required=False, max_length=1024, label=_t("Description"))
   save = forms.BooleanField(widget=SubmitButton, required=False)
   saveas = forms.BooleanField(widget=SubmitButton, required=False)
@@ -130,8 +130,9 @@ class FileResourceForm(forms.Form):
       ("ARCHIVE", "archive"),
       ("FILE", "file"),
     ], help_text=_t("Resources to upload with your Hive job." +
-       "  Use 'jar' for UDFs.  Use file and archive for "
-       "side files and MAP/TRANSFORM using.  Paths are on HDFS.")
+       "  Use 'jar' for UDFs.  Use 'file' and 'archive' for "
+       "files to be copied and made locally available duirng MAP/TRANSFORM. " +
+       "Paths are on HDFS.")
   )
   # TODO(philip): Could upload files here, too.  Or merely link
   # to upload utility?
@@ -235,7 +236,7 @@ def _clean_tablename(name):
 
 def _clean_terminator(val):
   if val is not None and len(val.decode('string_escape')) != 1:
-      raise forms.ValidationError(_t('Terminator must be exactly one character'))
+      raise forms.ValidationError(_t('Terminator must be exactly one character.'))
   return val
 
 
@@ -249,7 +250,7 @@ class CreateByImportFileForm(forms.Form):
   path = filebrowser.forms.PathField(label=_t("Input File"))
   do_import = forms.BooleanField(required=False, initial=True,
                           label=_t("Import data from file"),
-                          help_text=_t("Automatically load this file into the table after creation"))
+                          help_text=_t("Automatically load this file into the table after creation."))
 
   def clean_name(self):
     return _clean_tablename(self.cleaned_data['name'])
@@ -265,7 +266,7 @@ class CreateByImportDelimForm(forms.Form):
     # ChoiceOrOtherField doesn't work with required=True
     delimiter = self.cleaned_data.get('delimiter')
     if not delimiter:
-      raise forms.ValidationError(_t('Delimiter value is required'))
+      raise forms.ValidationError(_t('Delimiter value is required.'))
     _clean_terminator(delimiter)
     return self.cleaned_data
 
@@ -275,10 +276,10 @@ class CreateByImportDelimForm(forms.Form):
         chr(int(delimiter))
         return int(delimiter)
       except ValueError:
-        raise forms.ValidationError(_t('Delimiter value must be smaller than 256'))
+        raise forms.ValidationError(_t('Delimiter value must be smaller than 256.'))
     val = delimiter.decode('string_escape')
     if len(val) != 1:
-      raise forms.ValidationError(_t('Delimiter must be exactly one character'))
+      raise forms.ValidationError(_t('Delimiter must be exactly one character.'))
     return ord(val)
 
 

+ 5 - 5
apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py

@@ -77,7 +77,7 @@ class Command(NoArgsCommand):
   def handle_noargs(self, **options):
     """Main entry point to install examples. May raise InstallException"""
     if self._check_installed():
-      msg = _('Beeswax examples already installed')
+      msg = _('Beeswax examples already installed.')
       LOG.error(msg)
       raise InstallException(msg)
 
@@ -186,7 +186,7 @@ class SampleTable(object):
     try:
       # Already exists?
       tables = db_utils.meta_client().get_table("default", self.name)
-      msg = _('Table "%(table)s" already exists') % {'table': self.name}
+      msg = _('Table "%(table)s" already exists.') % {'table': self.name}
       LOG.error(msg)
       raise InstallException(msg)
     except hive_metastore.ttypes.NoSuchObjectException:
@@ -194,7 +194,7 @@ class SampleTable(object):
       try:
         results = db_utils.execute_and_wait(django_user, query_msg)
         if not results:
-          msg = _('Error creating table %(table)s: Operation timeout') % {'table': self.name}
+          msg = _('Error creating table %(table)s: Operation timeout.') % {'table': self.name}
           LOG.error(msg)
           raise InstallException(msg)
       except BeeswaxException, ex:
@@ -218,7 +218,7 @@ class SampleTable(object):
     try:
       results = db_utils.execute_and_wait(django_user, query_msg)
       if not results:
-        msg = _('Error loading table %(table)s: Operation timeout') % {'table': self.name}
+        msg = _('Error loading table %(table)s: Operation timeout.') % {'table': self.name}
         LOG.error(msg)
         raise InstallException(msg)
     except BeeswaxException, ex:
@@ -243,7 +243,7 @@ class SampleDesign(object):
     try:
       # Don't overwrite
       model = models.SavedQuery.objects.get(owner=django_user, name=self.name)
-      msg = _('Sample design %(name)s already exists') % {'name': self.name}
+      msg = _('Sample design %(name)s already exists.') % {'name': self.name}
       LOG.error(msg)
       raise InstallException(msg)
     except models.SavedQuery.DoesNotExist:

+ 1 - 1
apps/beeswax/src/beeswax/models.py

@@ -169,7 +169,7 @@ class SavedQuery(models.Model):
       raise PopupException(msg)
 
     if type is not None and design.type != type:
-      msg = _('Type mismatch for design id %(id)s (owner %(owner)s) - Expects %(expected_type)s got %(real_type)s') % \
+      msg = _('Type mismatch for design id %(id)s (owner %(owner)s) - Expected %(expected_type)s got %(real_type)s') % \
             {'id': id, 'owner': owner, 'expected_type': design.type, 'real_type': type}
       LOG.error(msg)
       raise PopupException(msg)

+ 5 - 5
apps/beeswax/src/beeswax/templates/choose_delimiter.mako

@@ -24,13 +24,13 @@ ${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 
 <div class="container-fluid">
-    <h1>${_('Create a new table from file')}</h1>
+    <h1>${_('Create a new table from a file')}</h1>
     <div class="row-fluid">
         <div class="span3">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                     <li class="nav-header">${_('Actions')}</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from a file')}</a></li>
                     <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
             </div>
@@ -47,7 +47,7 @@ ${layout.menubar(section='tables')}
                     ${comps.field(delim_form['file_type'])}
                 </div>
                 <fieldset>
-                    <div class="alert alert-info"><h3>${_('Choose A Delimiter')}</h3>
+                    <div class="alert alert-info"><h3>${_('Choose a Delimiter')}</h3>
                         % if initial:
                             ${_('Beeswax has determined that this file is delimited by')} <strong>${delim_readable}</strong>.
                         % endif
@@ -109,7 +109,7 @@ ${layout.menubar(section='tables')}
     $(document).ready(function(){
         $(".scrollable").width($(".form-actions").width());
 
-        $("#id_delimiter_1").css("margin-left","4px").attr("placeholder","${_('Please write here your delimiter')}").hide();
+        $("#id_delimiter_1").css("margin-left","4px").attr("placeholder","${_('Please type your delimiter here')}").hide();
         $("#id_delimiter_0").change(function(){
             if ($(this).val() == "__other__"){
                 $("#id_delimiter_1").show();
@@ -136,4 +136,4 @@ ${layout.menubar(section='tables')}
     });
 </script>
 
-${commonfooter()}
+${commonfooter()}

+ 4 - 4
apps/beeswax/src/beeswax/templates/choose_file.mako

@@ -24,13 +24,13 @@ ${layout.menubar(section='tables')}
 
 
 <div class="container-fluid">
-    <h1>${_('Create a new table from file')}</h1>
+    <h1>${_('Create a new table from a file')}</h1>
     <div class="row-fluid">
         <div class="span3">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                     <li class="nav-header">${_('Actions')}</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from a file')}</a></li>
                     <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
             </div>
@@ -67,7 +67,7 @@ ${layout.menubar(section='tables')}
                             )}
                             <span  class="help-inline">${unicode(file_form["comment"].errors) | n}</span>
                         <span class="help-block">
-                        ${_("Use a table comment to describe your table.  For example, you might mention the data's provenance, and any caveats users of this table should expect.")}
+                        ${_("Use a table comment to describe your table.  For example, you might note the data's provenance and any caveats users need to know.")}
                         </span>
                         </div>
                     </div>
@@ -91,7 +91,7 @@ ${layout.menubar(section='tables')}
                         <div class="controls">
                             ${comps.field(file_form["do_import"], render_default=True)}
                             <span class="help-block">
-                        ${_('Check this box if you want to import the data in this file after creating the table definition. Leave it unchecked if you just want to define an empty table.')}
+                        ${_('Check this box if you want to import the data in this file after creating the table definition. Leave it unchecked if you want to define an empty table.')}
                         <div id="fileWillBeMoved" class="alert">
                             <strong>${_('Warning!')}</strong> ${_('The selected file is going to be moved during the import.')}
                         </div>

+ 7 - 7
apps/beeswax/src/beeswax/templates/create_table_manually.mako

@@ -29,7 +29,7 @@ ${layout.menubar(section='tables')}
     <div class="well sidebar-nav">
         <ul class="nav nav-list">
             <li class="nav-header">${_('Actions')}</li>
-            <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+            <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from a file')}</a></li>
             <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
         </ul>
     </div>
@@ -69,7 +69,7 @@ ${layout.menubar(section='tables')}
 	                )
 	                )}
 	                <p class="help-block">
-	                    ${_("Use a table comment to describe your table. For example, you might mention the data's provenance, and any caveats users of this table should expect.")}
+	                    ${_("Use a table comment to describe your table.  For example, you might note the data's provenance and any caveats users need to know.")}
 	                </p>
 	            </div>
 	        </div>
@@ -280,10 +280,10 @@ ${layout.menubar(section='tables')}
 	    <br/><br/>
 	    <fieldset>
 	        <div class="alert alert-info"><h3>${_('Configure Partitions')}</h3>
-	            ${_('If your data is naturally partitioned (by, say, date), partitions are a way to tell Hive that data for a specific partition value are stored together.')}
+	            ${_('If your data is naturally partitioned (by date, for example), partitions are a way to tell Hive that data for a specific partition value are stored together.')}
 	            ${_('Hive establishes a mapping between directories on disk')}
 	            (<em>${_('e.g.')},</em> <code>/user/hive/warehouse/logs/dt=20100101/</code>)
-	            ${_('and the data for that day.  Partitions are virtual columns; they are not represented in the data themselves, but are determined by the data location. Hive implements query optimizations such that queries that are specific to a single partition need not read the data in other partitions.')}
+	            ${_('and the data for that day.  Partitions are virtual columns; they are not represented in the data itself, but are determined by the data location. Hive implements query optimizations such that queries that are specific to a single partition need not read the data in other partitions.')}
 	        </div>
 	        % for form in partitions_form.forms:
 	            ${render_column(form, True)}
@@ -500,7 +500,7 @@ ${layout.menubar(section='tables')}
             $(".step[href='"+_url.substring(_url.indexOf("#"),_url.length)+"']").click();
         }
 
-        $("#id_table-field_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your field terminator')}").hide();
+        $("#id_table-field_terminator_1").css("margin-left","4px").attr("placeholder","${_('Type your field terminator here')}").hide();
         $("#id_table-field_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
                 $("#id_table-field_terminator_1").show();
@@ -509,7 +509,7 @@ ${layout.menubar(section='tables')}
                 $("#id_table-field_terminator_1").hide().nextAll(".error-inline").addClass("hide");
             }
         });
-        $("#id_table-collection_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your collection terminator')}").hide();
+        $("#id_table-collection_terminator_1").css("margin-left","4px").attr("placeholder","${_('Type your collection terminator here')}").hide();
         $("#id_table-collection_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
                 $("#id_table-collection_terminator_1").show();
@@ -518,7 +518,7 @@ ${layout.menubar(section='tables')}
                 $("#id_table-collection_terminator_1").hide().nextAll(".error-inline").addClass("hide");
             }
         });
-        $("#id_table-map_key_terminator_1").css("margin-left","4px").attr("placeholder","${_('Write here your map key terminator')}").hide();
+        $("#id_table-map_key_terminator_1").css("margin-left","4px").attr("placeholder","${_('Type your map key terminator here')}").hide();
         $("#id_table-map_key_terminator_0").change(function(){
             if ($(this).val() == "__other__"){
                 $("#id_table-map_key_terminator_1").show();

+ 3 - 3
apps/beeswax/src/beeswax/templates/define_columns.mako

@@ -24,13 +24,13 @@ ${commonheader(_('Beeswax: Create table from file'), "beeswax", "100px")}
 ${layout.menubar(section='tables')}
 
 <div class="container-fluid">
-    <h1>${_('Create a new table from file')}</h1>
+    <h1>${_('Create a new table from a file')}</h1>
     <div class="row-fluid">
         <div class="span3">
             <div class="well sidebar-nav">
                 <ul class="nav nav-list">
                     <li class="nav-header">${_('Actions')}</li>
-                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+                    <li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from a file')}</a></li>
                     <li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
                 </ul>
             </div>
@@ -123,4 +123,4 @@ ${layout.menubar(section='tables')}
         });
     });
 </script>
-${commonfooter()}
+${commonfooter()}

+ 2 - 2
apps/beeswax/src/beeswax/templates/execute.mako

@@ -174,7 +174,7 @@ ${layout.menubar(section='query')}
                                 <a class="btn btn-small" data-form-prefix="functions">${_('Add')}</a>
                             </div>
                         </li>
-                        <li class="nav-header">${_('Parametrization')}</li>
+                        <li class="nav-header">${_('Parameterization')}</li>
                         <li>
                             <label class="checkbox" rel="tooltip" data-original-title="${_("If checked (the default), you can include parameters like $parameter_name in your query, and users will be prompted for a value when the query is run.")}">
                                 <input type="checkbox" id="id_${form.query["is_parameterized"].html_name | n}" name="${form.query["is_parameterized"].html_name | n}" ${extract_field_data(form.query["is_parameterized"]) and "CHECKED" or ""}/>
@@ -185,7 +185,7 @@ ${layout.menubar(section='query')}
                         <li>
                             <label class="checkbox" rel="tooltip" data-original-title="${_("If checked, you will receive an email notification when the query completes.")}">
                                 <input type="checkbox" id="id_${form.query["email_notify"].html_name | n}" name="${form.query["email_notify"].html_name | n}" ${extract_field_data(form.query["email_notify"]) and "CHECKED" or ""}/>
-                                ${_("Email me on complete")}
+                                ${_("Email upon completion")}
                             </label>
                         </li>
                     </ul>

+ 1 - 1
apps/beeswax/src/beeswax/templates/parameterization.mako

@@ -20,7 +20,7 @@ from django.utils.translation import ugettext as _
 <%namespace name="comps" file="beeswax_components.mako" />
 <%namespace name="layout" file="layout.mako" />
 
-${commonheader(_('Parametrize Hive Query'), "beeswax", "100px")}
+${commonheader(_('Parameterize Hive Query'), "beeswax", "100px")}
 
 ${layout.menubar()}
 

+ 1 - 1
apps/beeswax/src/beeswax/templates/show_tables.mako

@@ -31,7 +31,7 @@ ${layout.menubar(section='tables')}
 					% if not examples_installed:
 		        	<li><a href="#installSamples" data-toggle="modal">${_('Install samples')}</a></li>
 		      		% endif
-		      		<li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from file')}</a></li>
+		      		<li><a href="${ url('beeswax.create_table.import_wizard')}">${_('Create a new table from a file')}</a></li>
 					<li><a href="${ url('beeswax.create_table.create_table')}">${_('Create a new table manually')}</a></li>
 				</ul>
 			</div>

+ 3 - 3
apps/beeswax/src/beeswax/views.py

@@ -827,12 +827,12 @@ def _get_server_id_and_state(query_history):
   ok, server_id = query_history.get_server_id()
   if not server_id:
     if ok:
-      raise PopupException(_t("Query is still being submitted to the Beeswax Server"))
-    raise PopupException(_t("Failed to retrieve query state from the Beeswax Server"))
+      raise PopupException(_t("Query is still being submitted to the Beeswax Server."))
+    raise PopupException(_t("Failed to retrieve query state from the Beeswax Server."))
 
   state = db_utils.get_query_state(query_history)
   if state is None:
-    raise PopupException(_t("Failed to contact Beeswax Server to check query status"))
+    raise PopupException(_t("Failed to contact Beeswax Server to check query status."))
   return (server_id, state)
 
 

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/chown.mako

@@ -64,7 +64,7 @@ from django.utils.translation import ugettext as _
         <h3>${_('Change Owner / Group:')} ${path}</h3>
     </div>
     <div class="modal-body change-owner-modal-body clearfix" >
-        <div class="alert alert-message block-message info">${_('Note: Only the Hadoop superuser, on this FS "%(superuser)s", may change the owner of a file.') % dict(superuser=extra_params['superuser'])}"</div>
+        <div class="alert alert-message block-message info">${_('Note: Only the Hadoop superuser, "%(superuser)s" on this file system, may change the owner of a file.') % dict(superuser=extra_params['superuser'])}"</div>
         <div style="padding-left: 15px; padding-bottom: 10px;">
             ${edit.render_field(form["path"], hidden=True)}
 

+ 2 - 2
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -56,7 +56,7 @@ from django.utils.translation import ugettext as _
         <ul class="pull-right">
             <li class="prev"><a title="${_('Beginning of List')}" ${toppage(page)}>&larr; ${_('Beginning of List')}</a></li>
             <li><a title="${_('Previous Page')}" ${prevpage(page)}>${_('Previous Page')}</a></li>
-            <li><a title="${_('Next page')}" ${nextpage(page)}>${_('Next Page')}</a></li>
+            <li><a title="${_('Next Page')}" ${nextpage(page)}>${_('Next Page')}</a></li>
             <li class="next"><a title="${_('End of List')}" ${bottompage(page)}>${_('End of List')} &rarr;</a></li>
         </ul>
         <p>${_('Show')} <select id="pagesize" class="input-mini"><option>15</option><option selected>30</option><option>45</option><option>60</option><option>100</option><option>200</option></select> ${_('items per page')}. ${_('Showing %(start_index)s to %(end_index)s of %(total_count)s items, page %(page)s of %(num_pages)s.') % dict(start_index=page.start_index(), end_index=page.end_index(), total_count=page.total_count(), page=page.number, num_pages=page.num_pages())}</p>
@@ -231,7 +231,7 @@ from django.utils.translation import ugettext as _
         <form action="/filebrowser/upload?next=${current_dir_path}" method="POST" enctype="multipart/form-data" class="form-stacked">
             <div id="fileUploader">
             <noscript>
-                <p>${_('Please enable JavaScript to use file uploader.')}</p>
+                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
             </noscript>
             </div>
         </form>

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/upload.mako

@@ -28,7 +28,7 @@ from django.utils.translation import ugettext as _
         <h1>${_('Upload Files')}</h1>
         <div id="file-uploader">
             <noscript>
-                <p>${_('Please enable JavaScript to use file uploader.')}</p>
+                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
                 <!-- or put a simple form for upload here -->
             </noscript>
         </div>

+ 5 - 5
apps/filebrowser/src/filebrowser/views.py

@@ -640,7 +640,7 @@ def _read_avro(fs, path, offset, length):
             contents = "".join(contents_list)
         except:
             logging.warn("Could not read avro file at %s" % path, exc_info=True)
-            raise PopupException(_("Failed to read Avro file"))
+            raise PopupException(_("Failed to read Avro file."))
     finally:
         fhandle.close()
     return contents
@@ -649,14 +649,14 @@ def _read_avro(fs, path, offset, length):
 def _read_gzip(fs, path, offset, length):
     contents = ''
     if offset and offset != 0:
-        raise PopupException(_("We don't support offset and gzip Compression"))
+        raise PopupException(_("Offsets are not supported with Gzip compression."))
     try:
         fhandle = fs.open(path)
         try:
             contents = GzipFile('', 'r', 0, StringIO(fhandle.read())).read(length)
         except:
             logging.warn("Could not decompress file at %s" % path, exc_info=True)
-            raise PopupException(_("Failed to decompress file"))
+            raise PopupException(_("Failed to decompress file."))
     finally:
         fhandle.close()
     return contents
@@ -671,7 +671,7 @@ def _read_simple(fs, path, offset, length):
             contents = fhandle.read(length)
         except:
             logging.warn("Could not read file at %s" % path, exc_info=True)
-            raise PopupException(_("Failed to read file"))
+            raise PopupException(_("Failed to read file."))
     finally:
         fhandle.close()
     return contents
@@ -894,7 +894,7 @@ def _upload(request):
                     request.fs.chmod(tmp_file, 0644)
                     request.fs.chown(tmp_file, username, username)
                 except IOError, ex:
-                    msg = _('Failed to chown uploaded file ("%(file)s") as superuser %(superuser)s') %\
+                    msg = _('Failed to chown uploaded file ("%(file)s") as superuser %(superuser)s.') %\
                           {'file': tmp_file, 'superuser': request.fs.superuser}
                     logger.exception(msg)
                     raise PopupException(msg, detail=str(ex))

+ 1 - 1
apps/filebrowser/src/filebrowser/views_test.py

@@ -301,7 +301,7 @@ def test_view_gz():
 
     # offset should do nothing
     response = c.get('/filebrowser/view/test-gz-filebrowser/test-view.gz?compression=gzip&offset=1')
-    assert_true("We don't support" in response.context['message'])
+    assert_true("Offsets are not supported" in response.context['message'], response.context['message'])
 
     f = cluster.fs.open('/test-gz-filebrowser/test-view2.gz', "w")
     f.write("hello")

+ 3 - 3
apps/jobbrowser/src/jobbrowser/templates/attempt.mako

@@ -68,11 +68,11 @@ ${commonheader(_('Task Attempt: %(attemptId)s - Job Browser') % dict(attemptId=a
                         </thead>
                         <tbody>
                         <tr>
-                            <td>${_('Attempt id')}</td>
+                            <td>${_('Attempt ID')}</td>
                             <td>${attempt.attemptId}</td>
                         </tr>
                         <tr>
-                            <td>${_('Task id')}</td>
+                            <td>${_('Task ID')}</td>
                             <td><a href="${url('jobbrowser.views.single_task', jobid=joblnk.jobId, taskid=taskid)}" title="${_('View this task')}">${task.taskId}</a></td>
                         </tr>
                         <tr>
@@ -189,4 +189,4 @@ ${commonheader(_('Task Attempt: %(attemptId)s - Job Browser') % dict(attemptId=a
         });
     });
 </script>
-${commonfooter()}
+${commonfooter()}

+ 1 - 1
apps/jobbrowser/src/jobbrowser/templates/jobs.mako

@@ -55,7 +55,7 @@ ${commonheader(_('Job Browser'), "jobbrowser")}
 <table class="datatables table table-striped table-condensed">
     <thead>
         <tr>
-            <th>${_('Id')}</th>
+            <th>${_('ID')}</th>
             <th>${_('Name')}</th>
             <th>${_('Status')}</th>
             <th>${_('User')}</th>

+ 2 - 2
apps/jobsub/src/jobsub/forms.py

@@ -40,8 +40,8 @@ class WorkflowDesignForm(forms.ModelForm):
         max_length=39,
         regex=_OOZIE_WORKFLOW_NAME_REGEX,
         help_text="Name of the design.",
-        error_messages={'invalid': _("Allows alphabets, digits, '_', and '-'. "
-                        "The first character must be an alphabet or '_'.")})
+        error_messages={'invalid': _("Allows letters, digits, '_', and '-'. "
+                        "The first character must be a letter or '_'.")})
 
 
 class JavaActionForm(forms.ModelForm):

+ 6 - 6
apps/jobsub/src/jobsub/models.py

@@ -125,7 +125,7 @@ class OozieDesign(models.Model):
   # Generic stuff
   owner = models.ForeignKey(User)
   name = models.CharField(max_length=64, blank=False,
-      help_text=_('Name of the design, which must be unique per user'))
+      help_text=_('Name of the design, which must be unique per user.'))
   description = models.CharField(max_length=1024, blank=True)
   last_modified = models.DateTimeField(auto_now=True)
 
@@ -181,14 +181,14 @@ class OozieMapreduceAction(OozieAction):
 
   # For the distributed cache. JSON arrays.
   files = models.CharField(max_length=PATH_MAX, default="[]",
-      help_text=_('List of paths to files to be added to the distributed cache'))
+      help_text=_('List of paths to files to be added to the distributed cache.'))
   archives = models.CharField(max_length=PATH_MAX, default="[]",
-      help_text=_('List of paths to archives to be added to the distributed cache'))
+      help_text=_('List of paths to archives to be added to the distributed cache.'))
   # For the job configuration. JSON dict. Required (e.g. mapred.mapper.class).
   job_properties = models.CharField(max_length=32768, default="[]")
   # Location of the jar in hdfs
   jar_path = models.CharField(max_length=PATH_MAX,
-      help_text=_('Path to jar files on HDFS'))
+      help_text=_('Path to jar files on HDFS.'))
 
 
 class OozieStreamingAction(OozieAction):
@@ -222,9 +222,9 @@ class OozieJavaAction(OozieAction):
 
   # For the distributed cache. JSON arrays.
   files = models.CharField(max_length=PATH_MAX, default="[]",
-      help_text=_('List of paths to files to be added to the distributed cache'))
+      help_text=_('List of paths to files to be added to the distributed cache.'))
   archives = models.CharField(max_length=PATH_MAX, default="[]",
-      help_text=_('List of paths to archives to be added to the distributed cache'))
+      help_text=_('List of paths to archives to be added to the distributed cache.'))
   # Location of the jar in hdfs
   jar_path = models.CharField(max_length=PATH_MAX, blank=False)
   main_class = models.CharField(max_length=256, blank=False)

+ 1 - 1
apps/jobsub/src/jobsub/submit.py

@@ -78,7 +78,7 @@ class Submission(object):
       wf_dir = self._get_and_create_deployment_dir()
     except Exception, ex:
       LOG.exception("Failed to access deployment directory")
-      raise PopupException(message=_("Failed to access deployment directory"),
+      raise PopupException(message=_("Failed to access deployment directory."),
                            detail=str(ex))
 
     wf_xml = self._generate_workflow_xml(fs_defaultfs)

+ 1 - 1
apps/jobsub/src/jobsub/templates/edit_design.mako

@@ -63,7 +63,7 @@ ${layout.menubar(section='designs')}
         <hr/>
         <div class="control-group">
           <p class="alert alert-info">
-              ${_('You can parametrize the values, using')} <code>$myVar</code> ${_('or')}
+              ${_('You can parameterize the values, using')} <code>$myVar</code> ${_('or')}
               <code>${"${"}myVar}</code> .
               ${_('When the design is submitted, you will be prompted for the actual value of ')}<code>myVar</code> .
           </p>

+ 2 - 2
apps/jobsub/src/jobsub/views.py

@@ -61,7 +61,7 @@ def oozie_job(request, jobid):
     log = workflow.log
     definition = workflow.definition
   except RestException, ex:
-    raise PopupException(_("Error accessing Oozie job %(id)s") % {'id': jobid},
+    raise PopupException(_("Error accessing Oozie job %(id)s.") % {'id': jobid},
                          detail=ex.message)
 
   # Cross reference the submission history (if any)
@@ -190,7 +190,7 @@ def delete_design(request, design_id):
       submit.Submission(design_obj, request.fs).remove_deployment_dir()
     except models.OozieDesign.DoesNotExist:
       LOG.error("Trying to delete non-existent design (id %s)" % (design_id,))
-      raise PopupException(_("Workflow not found"))
+      raise PopupException(_("Workflow not found."))
 
   return redirect(urlresolvers.reverse(list_designs))
 

+ 2 - 2
apps/shell/src/shell/templates/no_such_user.mako

@@ -21,9 +21,9 @@ from django.utils.translation import ugettext as _
 ${commonheader(_('Hue Shell'), "shell")}
 <div class="container-fluid">
 <div>
-    ${_('The Shell app requires a Unix user account for every user of Hue on the remote webserver.')}
+    ${_('The Shell application requires a Unix user account for every user of Hue on the remote webserver.')}
     <br/>
-    ${_('Please ask your admin to create a user account for you on the remote webserver as described in the Shell documentation.')}
+    ${_('Please ask your administrator to create a user account for you on the remote webserver as described in the Shell documentation.')}
 
 </div>
 </div>

+ 1 - 1
apps/shell/src/shell/templates/not_running_spawning.mako

@@ -21,7 +21,7 @@ from django.utils.translation import ugettext as _
 ${commonheader(_('Hue Shell'), "shell")}
 <div class="container-fluid">
 <div>
-	<h3>${_('The webserver currently running Hue does not support the Shell app. Please contact your administrator.')}</h3>
+	<h3>${_('The webserver currently running Hue does not support the Shell application. Please contact your administrator.')}</h3>
 </div>
 </div>
 ${commonfooter()}

+ 2 - 2
apps/shell/src/shell/tests.py

@@ -84,7 +84,7 @@ def test_spawning_check():
                "/shell/kill_shell", "/shell/retrieve_output", "/shell/add_to_output"]
   for url in get_urls:
     response = client.get(url, follow=True)
-    assert "The webserver currently running Hue does not support the Shell app." in response.content
+    assert "The webserver currently running Hue does not support the Shell" in response.content
 
   for url in post_urls:
     response = client.post(url, follow=True)
@@ -97,7 +97,7 @@ def test_unix_user_account_check():
 
   d = { 'eventlet.input' : None }
   response = client.get('/shell/', follow=True, **d)
-  assert "The Shell app requires a Unix user account for every user of Hue" in response.content
+  assert "The Shell application requires a Unix user account for every user of Hue" in response.content
 
 def test_rest():
   reset_all_users()

+ 3 - 3
apps/useradmin/src/useradmin/management/commands/import_ldap_group.py

@@ -33,10 +33,10 @@ class Command(BaseCommand):
 
   option_list = BaseCommand.option_list + (
       make_option("--dn", help=_("Whether or not the user should be imported by "
-                               "distinguished name"),
+                               "distinguished name."),
                           action="store_true",
                           default=False),
-      make_option("--import-members", help=_("Import users from the group"),
+      make_option("--import-members", help=_("Import users from the group."),
                                       action="store_true",
                                       default=False),
    )
@@ -45,7 +45,7 @@ class Command(BaseCommand):
 
   def handle(self, group=None, **options):
     if group is None:
-      raise CommandError(_("A group name must be provided"))
+      raise CommandError(_("A group name must be provided."))
 
     import_members = options['import_members']
     import_by_dn = options['dn']

+ 2 - 2
apps/useradmin/src/useradmin/management/commands/import_ldap_user.py

@@ -31,7 +31,7 @@ class Command(BaseCommand):
 
   option_list = BaseCommand.option_list + (
       make_option("--dn", help=_("Whether or not the user should be imported by "
-                               "distinguished name"),
+                               "distinguished name."),
                           action="store_true",
                           default=False),
   )
@@ -40,7 +40,7 @@ class Command(BaseCommand):
 
   def handle(self, user=None, **options):
     if user is None:
-      raise CommandError(_("A username must be provided"))
+      raise CommandError(_("A username must be provided."))
 
     import_by_dn = options['dn']
     import_ldap_user(user, import_by_dn)

+ 1 - 1
apps/useradmin/src/useradmin/management/commands/useradmin_sync_with_unix.py

@@ -32,7 +32,7 @@ class Command(BaseCommand):
       make_option("--max-uid", help=_("Maximum UID to import (Exclusive)."), default=65334),
       make_option("--min-gid", help=_("Minimum GID to import (Inclusive)."), default=500),
       make_option("--max-gid", help=_("Maximum GID to import (Exclusive)."), default=65334),
-      make_option("--check-shell", help=_("Whether or not to check that the user's shell is not /bin/false"), default=True)
+      make_option("--check-shell", help=_("Whether or not to check that the user's shell is not /bin/false."), default=True)
   )
 
   def handle(self, *args, **options):

+ 1 - 1
apps/useradmin/src/useradmin/models.py

@@ -227,7 +227,7 @@ def update_app_permissions(**kwargs):
 
   for app_obj in appmanager.DESKTOP_APPS:
     app = app_obj.name
-    actions = set([("access", "launch this application")])
+    actions = set([("access", "Launch this application")])
     actions.update(getattr(app_obj.settings, "PERMISSION_ACTIONS", []))
 
     if app not in current:

+ 1 - 1
apps/useradmin/src/useradmin/templates/edit_group.mako

@@ -47,7 +47,7 @@ ${layout.menubar(section='groups', _=_)}
 		<h1>${_('Hue Groups - Edit group: %(name)s') % dict(name=name)}</h1>
 	% else:
 		% if ldap:
-			<h1>${_('Hue Groups - Add/sync LDAP group')}</h1>
+			<h1>${_('Hue Groups - Add/Sync LDAP group')}</h1>
 		% else:
 			<h1>${_('Hue Groups - Create group')}</h1>
 		% endif

+ 1 - 1
apps/useradmin/src/useradmin/templates/edit_user.mako

@@ -44,7 +44,7 @@ ${layout.menubar(section='users', _=_)}
 		<h1>${_('Hue Users - Edit user: %(username)s') % dict(username=username)}</h1>
 	% else:
 		% if ldap:
-			<h1>${_('Hue Users - Add/sync LDAP user')}</h1>
+			<h1>${_('Hue Users - Add/Sync LDAP user')}</h1>
 		% else:
 			<h1>${_('Hue Users - Create user')}</h1>
 		% endif

+ 1 - 1
apps/useradmin/src/useradmin/templates/list_users.mako

@@ -30,7 +30,7 @@ ${layout.menubar(section='users', _=_)}
         <div class="btn-group pull-right">
             %if user.is_superuser == True:
             <a href="${ url('useradmin.views.edit_user') }" class="btn">${_('Add user')}</a>
-            <a href="${ url('useradmin.views.add_ldap_user') }" class="btn">${_('Add/sync LDAP user')}</a>
+            <a href="${ url('useradmin.views.add_ldap_user') }" class="btn">${_('Add/Sync LDAP user')}</a>
             <a href="#syncLdap" class="btn" data-toggle="modal">${_('Sync LDAP users/groups')}</a>
             %endif
         </div>

+ 6 - 6
apps/useradmin/src/useradmin/views.py

@@ -292,7 +292,7 @@ class AddLdapUserForm(forms.Form):
       error_messages={'invalid': _("Whitespaces and ':' not allowed")})
   dn = forms.BooleanField(label=_("Distinguished name"),
                           help_text=_("Whether or not the user should be imported by "
-                                    "distinguished name"),
+                                    "distinguished name."),
                           initial=False,
                           required=False)
 
@@ -344,15 +344,15 @@ class AddLdapGroupForm(forms.Form):
       max_length=64,
       regex='^%s$' % (get_groupname_re_rule(),),
       help_text=_("Required. 30 characters or fewer. May only contain letters, "
-                "numbers, hypens or underscores."),
+                "numbers, hyphens or underscores."),
       error_messages={'invalid': _("Whitespaces and ':' not allowed") })
   dn = forms.BooleanField(label=_("Distinguished name"),
                           help_text=_("Whether or not the group should be imported by "
-                                    "distinguished name"),
+                                    "distinguished name."),
                           initial=False,
                           required=False)
   import_members = forms.BooleanField(label=_('Import new members'),
-                                      help_text=_('Import unimported or new users from the group'),
+                                      help_text=_('Import unimported or new users from the group.'),
                                       initial=False,
                                       required=False)
 
@@ -426,7 +426,7 @@ def _check_remove_last_super(user_obj):
   all_active_su = User.objects.filter(is_superuser__exact = True,
                                       is_active__exact = True)
   num_active_su = all_active_su.count()
-  assert num_active_su >= 1, _("No active superuser configured")
+  assert num_active_su >= 1, _("No active superuser configured.")
   if num_active_su == 1:
     raise PopupException(_("You cannot remove the last active "
                          "superuser from the configuration."))
@@ -604,7 +604,7 @@ class GroupEditForm(forms.ModelForm):
     data = self.cleaned_data["name"]
     if not self.GROUPNAME.match(data):
       raise forms.ValidationError(_("Group name may only contain letters, " +
-                                  "numbers, hypens or underscores."))
+                                  "numbers, hyphens or underscores."))
     return data
 
   def __init__(self, *args, **kwargs):

+ 1 - 1
desktop/core/src/desktop/appmanager.py

@@ -221,7 +221,7 @@ def load_apps():
   global DESKTOP_APPS
 
   if DESKTOP_APPS is not None:
-    raise Exception(_("load_apps already has been called!"))
+    raise Exception(_("load_apps has already been called!"))
   DESKTOP_APPS = []
 
   for sdk_app in pkg_resources.iter_entry_points("desktop.sdk.application"):

+ 22 - 22
desktop/core/src/desktop/conf.py

@@ -33,12 +33,12 @@ USE_CHERRYPY_SERVER = Config(
 
 HTTP_HOST = Config(
   key="http_host",
-  help=_("HTTP Host to bind to"),
+  help=_("HTTP Host to bind to."),
   type=str,
   default="0.0.0.0")
 HTTP_PORT = Config(
   key="http_port",
-  help=_("HTTP Port to bind to"),
+  help=_("HTTP Port to bind to."),
   type=int,
   default=8888)
 SSL_CERTIFICATE = Config(
@@ -91,11 +91,11 @@ def default_from_email():
 
 SMTP = ConfigSection(
   key='smtp',
-  help=_('Configuration options for connecting to an external SMTP server'),
+  help=_('Configuration options for connecting to an external SMTP server.'),
   members=dict(
     HOST = Config(
       key="host",
-      help=_("The SMTP server for email notification delivery"),
+      help=_("The SMTP server for email notification delivery."),
       type=str,
       default="localhost"
     ),
@@ -123,14 +123,14 @@ SMTP = ConfigSection(
 
     USE_TLS = Config(
       key="tls",
-      help=_("Whether to use a TLS (secure) connection when talking to the SMTP server"),
+      help=_("Whether to use a TLS (secure) connection when talking to the SMTP server."),
       type=coerce_bool,
       default=False
     ),
 
     DEFAULT_FROM= Config(
       key="default_from_email",
-      help=_("Default email address to use for various automated notification from Hue"),
+      help=_("Default email address to use for various automated notifications from Hue."),
       type=str,
       dynamic_default=default_from_email
     ),
@@ -144,13 +144,13 @@ DATABASE = ConfigSection(
   members=dict(
     ENGINE=Config(
       key='engine',
-      help=_('Database engine, eg postgresql, mysql, sqlite3, or oracle'),
+      help=_('Database engine, such as postgresql, mysql, sqlite3, or Oracle.'),
       type=str,
       default='sqlite3',
     ),
     NAME=Config(
       key='name',
-      help=_('Database name, or path to DB if using sqlite3'),
+      help=_('Database name, or path to DB if using sqlite3.'),
       type=str,
       default=get_desktop_root('desktop.db'),
     ),
@@ -183,7 +183,7 @@ DATABASE = ConfigSection(
 
 KERBEROS = ConfigSection(
   key="kerberos",
-  help=_("""Configuration options for specifying Hue's kerberos integration for
+  help=_("""Configuration options for specifying Hue's Kerberos integration for
           secured Hadoop clusters."""),
   members=dict(
     HUE_KEYTAB=Config(
@@ -193,24 +193,24 @@ KERBEROS = ConfigSection(
       default=None),
     HUE_PRINCIPAL=Config(
       key='hue_principal',
-      help=_("Kerberos principal name for hue. Typically 'hue/hostname.foo.com'"),
+      help=_("Kerberos principal name for Hue. Typically 'hue/hostname.foo.com'."),
       type=str,
       default="hue/%s" % socket.getfqdn()),
     KEYTAB_REINIT_FREQUENCY=Config(
       key='reinit_frequency',
-      help=_("Frequency in seconds with which Hue will renew its keytab"),
+      help=_("Frequency in seconds with which Hue will renew its keytab."),
       type=int,
       default=60*60), #1h
     CCACHE_PATH=Config(
       key='ccache_path',
-      help=_("Path to keep kerberos credentials cached"),
+      help=_("Path to keep Kerberos credentials cached"),
       private=True,
       type=str,
       default="/tmp/hue_krb5_ccache",
     ),
     KINIT_PATH=Config(
       key='kinit_path',
-      help=_("Path to kerberos 'kinit' command"),
+      help=_("Path to Kerberos 'kinit' command"),
       type=str,
       default="kinit", # use PATH!
     )
@@ -227,7 +227,7 @@ TIME_ZONE = Config(
 
 DEFAULT_SITE_ENCODING = Config(
   key='default_site_encoding',
-  help=_('Default system-wide unicode encoding'),
+  help=_('Default system-wide unicode encoding.'),
   type=str,
   default='utf-8'
 )
@@ -246,14 +246,14 @@ SERVER_GROUP = Config(
 
 AUTH = ConfigSection(
   key="auth",
-  help=_("Configuration options for user authentication into the web application"),
+  help=_("Configuration options for user authentication into the web application."),
   members=dict(
     BACKEND=Config("backend",
                    default="desktop.auth.backend.AllowFirstUserDjangoBackend",
                    help=_("Authentication backend.  Common settings are "
                         "django.contrib.auth.backends.ModelBackend (fully Django backend), " + 
                         "desktop.auth.backend.AllowAllBackend (allows everyone), " +
-                        "desktop.auth.backend.AllowFirstUserDjangoBackend (relies on Django and user manager, after the first login), ")),
+                        "desktop.auth.backend.AllowFirstUserDjangoBackend (relies on Django and user manager, after the first login). ")),
     USER_AUGMENTOR=Config("user_augmentor",
                    default="desktop.auth.backend.DefaultUserAugmentor",
                    help=_("Class which defines extra accessor methods for User objects.")),
@@ -287,7 +287,7 @@ LDAP = ConfigSection(
 
     USERS = ConfigSection(
       key="users",
-      help=_("Configuration for LDAP user schema and search"),
+      help=_("Configuration for LDAP user schema and search."),
       members=dict(
         USER_FILTER=Config("user_filter",
                            default="objectclass=*",
@@ -323,12 +323,12 @@ LDAP = ConfigSection(
 
 LOCAL_FILESYSTEMS = UnspecifiedConfigSection(
   key="local_filesystems",
-  help=_("Paths on the local file system that users should be able to browse"),
+  help=_("Paths on the local file system that users should be able to browse."),
   each=ConfigSection(
     members=dict(
       PATH=Config("path",
                   required=True,
-                  help=_("The path on the local FS")))))
+                  help=_("The path on the local FS.")))))
 
 def default_feedback_url():
   """A version-specific URL."""
@@ -343,7 +343,7 @@ FEEDBACK_URL = Config(
 
 SEND_DBUG_MESSAGES = Config(
   key="send_dbug_messages",
-  help=_("Whether to send dbug messages from JavaScript to the server logs."),
+  help=_("Whether to send debug messages from JavaScript to the server logs."),
   type=coerce_bool,
   default=False
 )
@@ -356,7 +356,7 @@ DATABASE_LOGGING = Config(
 
 DJANGO_DEBUG_MODE = Config(
   key="django_debug_mode",
-  help=_("Enable or disable django debug mode."),
+  help=_("Enable or disable Django debug mode."),
   type=coerce_bool,
   default=True
 )
@@ -402,7 +402,7 @@ def config_validator():
     kt_stat = os.stat(KERBEROS.HUE_KEYTAB.get())
     if stat.S_IMODE(kt_stat.st_mode) & 0077:
       res.append((KERBEROS.HUE_KEYTAB,
-                  unicode(_("Keytab should have 0600 permissions (has %o)") %
+                  unicode(_("Keytab should have 0600 permissions (has %o).") %
                   stat.S_IMODE(kt_stat.st_mode))))
 
     res.extend(validate_path(KERBEROS.KINIT_PATH, is_dir=False))

+ 1 - 1
desktop/core/src/desktop/templates/check_config.mako

@@ -52,7 +52,7 @@ ${layout.menubar(section='check_config')}
           % endfor
         </table>
         % else:
-          <h2>${_('All ok. Configuration check passed!')}</h2>
+          <h2>${_('All OK. Configuration check passed!')}</h2>
         % endif
 
     </div>