Browse Source

[core] Fix English mistakes and text consistency

Stephanie Bodoff 13 years ago
parent
commit
68b120b
37 changed files with 212 additions and 214 deletions
  1. 1 1
      apps/beeswax/src/beeswax/conf.py
  2. 3 3
      apps/beeswax/src/beeswax/templates/create_table_manually.mako
  3. 2 2
      apps/filebrowser/src/filebrowser/templates/edit.mako
  4. 12 12
      apps/filebrowser/src/filebrowser/templates/listdir_components.mako
  5. 3 3
      apps/filebrowser/src/filebrowser/views.py
  6. 4 4
      apps/jobbrowser/src/jobbrowser/models.py
  7. 2 2
      apps/jobbrowser/src/jobbrowser/views.py
  8. 5 5
      apps/jobsub/src/jobsub/conf.py
  9. 5 5
      apps/jobsub/src/jobsub/submit.py
  10. 8 8
      apps/jobsub/src/jobsub/views.py
  11. 4 4
      apps/oozie/src/oozie/conf.py
  12. 73 75
      apps/oozie/src/oozie/models.py
  13. 1 1
      apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako
  14. 1 1
      apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow.mako
  15. 1 1
      apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow_action.mako
  16. 3 3
      apps/oozie/src/oozie/templates/editor/edit_coordinator.mako
  17. 10 10
      apps/oozie/src/oozie/templates/editor/edit_workflow.mako
  18. 2 2
      apps/oozie/src/oozie/templates/editor/list_workflows.mako
  19. 8 8
      apps/oozie/src/oozie/views/dashboard.py
  20. 6 6
      apps/oozie/src/oozie/views/editor.py
  21. 1 1
      apps/shell/src/shell/shellmanager.py
  22. 1 1
      apps/shell/src/shell/templates/index.mako
  23. 2 2
      apps/shell/src/shell/templates/no_such_user.mako
  24. 6 6
      apps/useradmin/src/useradmin/views.py
  25. 2 2
      desktop/core/src/desktop/appmanager.py
  26. 18 18
      desktop/core/src/desktop/conf.py
  27. 1 1
      desktop/core/src/desktop/decorators.py
  28. 1 1
      desktop/core/src/desktop/management/commands/config_upgrade.py
  29. 2 2
      desktop/core/src/desktop/management/commands/create_desktop_app.py
  30. 4 4
      desktop/core/src/desktop/middleware.py
  31. 2 2
      desktop/core/src/desktop/templates/check_config.mako
  32. 2 2
      desktop/core/src/desktop/templates/login.mako
  33. 2 2
      desktop/core/src/desktop/views.py
  34. 4 4
      desktop/libs/hadoop/src/hadoop/fs/hadoopfs.py
  35. 4 4
      desktop/libs/liboozie/src/liboozie/conf.py
  36. 5 5
      desktop/libs/liboozie/src/liboozie/submittion.py
  37. 1 1
      desktop/libs/liboozie/src/liboozie/types.py

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

@@ -90,7 +90,7 @@ BEESWAX_SERVER_BIN = Config(
 
 BEESWAX_SERVER_HEAPSIZE = Config(
   key="beeswax_server_heapsize",
-  help=_("Maximum Java heapsize (in megabytes) used by Beeswax Server.  " + \
+  help=_("Maximum Java heap size (in megabytes) used by Beeswax Server.  " + \
     "Note that the setting of HADOOP_HEAPSIZE in $HADOOP_CONF_DIR/hadoop-env.sh " + \
     "may override this setting."),
   default="1000")

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

@@ -163,7 +163,7 @@ ${layout.menubar(section='tables')}
                       )
                       )}
                       <span class="help-block">
-                          ${_('Enter the Java Classname of your SerDe.')} <em>${_('e.g.')}</em>, org.apache.hadoop.hive.contrib.serde2.RegexSerDe
+                          ${_('The Java class name of your SerDe.')} <em>${_('e.g.')}</em>, org.apache.hadoop.hive.contrib.serde2.RegexSerDe
                       </span>
                   </div>
               </div>
@@ -212,7 +212,7 @@ ${layout.menubar(section='tables')}
                       )}
                       <span  class="help-inline error-inline hide">${_('This field is required. Spaces are not allowed.')}</span>
                       <span class="help-block">
-                          ${_('Java Class used to read data')}
+                          ${_('Java class used to read data')}
                       </span>
                   </div>
               </div>
@@ -225,7 +225,7 @@ ${layout.menubar(section='tables')}
                       )}
                       <span  class="help-inline error-inline hide">${_('This field is required. Spaces are not allowed.')}</span>
                       <span class="help-block">
-                          ${_('Java Class used to write data')}
+                          ${_('Java class used to write data')}
                       </span>
                   </div>
               </div>

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

@@ -70,11 +70,11 @@ ${commonheader(_('%(filename)s - File Viewer') % dict(filename=truncate(filename
     </div>
     <div class="modal-body">
 		${edit.render_field(form["path"], notitle=True, klass="xlarge")}
-		<span class="help-block">${_("Please enter the location where you'd like to save the file.")}</span>
+		<span class="help-block">${_("Enter the location where you'd like to save the file.")}</span>
     </div>
     <div class="modal-footer">
         <div id="saveAsNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
-            <p><strong>${_('Sorry, name is required.')}</strong>
+            <p><strong>${_('Name is required.')}</strong>
         </div>
 		${edit.render_field(form["contents"], hidden=True)}
 		${edit.render_field(form["encoding"], hidden=True)}

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

@@ -132,7 +132,7 @@ from django.utils.translation import ugettext as _
     <div id="deleteModal" class="modal hide fade">
         <div class="modal-header">
             <a href="#" class="close" data-dismiss="modal">&times;</a>
-            <h3>${_('Please Confirm')}</h3>
+            <h3>${_('Confirm Delete')}</h3>
         </div>
         <div class="modal-body">
             <p>${_('Are you sure you want to delete these files?')}</p>
@@ -157,7 +157,7 @@ from django.utils.translation import ugettext as _
         </div>
         <div class="modal-footer">
             <div id="renameNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
-                <span class="label label-important">${_('Sorry, name is required.')}</span>
+                <span class="label label-important">${_('Name is required.')}</span>
             </div>
 
             <input id="renameSrcPath" type="hidden" name="src_path" type="text">
@@ -193,7 +193,7 @@ from django.utils.translation import ugettext as _
             </div>
             <div class="modal-footer" style="padding-top: 10px;">
                 <div id="chownRequired" class="hide" style="position: absolute; left: 10;">
-                    <span class="label label-important">${_('Sorry, name is required.')}</span>
+                    <span class="label label-important">${_('Name is required.')}</span>
                 </div>
                 <a class="btn" onclick="$('#changeOwnerModal').modal('hide');">${_('Cancel')}</a>
                 <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -282,7 +282,7 @@ from django.utils.translation import ugettext as _
             </div>
             <div class="modal-footer">
                 <div id="moveNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
-                    <span class="label label-important">${_('Sorry, name is required.')}</span>
+                    <span class="label label-important">${_('Name is required.')}</span>
                 </div>
                 <a class="btn" onclick="$('#moveModal').modal('hide');">${_('Cancel')}</a>
                 <input class="btn btn-primary" type="submit" value="${_('Submit')}"/>
@@ -299,7 +299,7 @@ from django.utils.translation import ugettext as _
         <div class="modal-body form-inline">
             <div id="fileUploader" class="uploader">
             <noscript>
-                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
+                <p>${_('Enable JavaScript to use the file uploader.')}</p>
             </noscript>
             </div>
         </div>
@@ -316,7 +316,7 @@ from django.utils.translation import ugettext as _
         <div class="modal-body form-inline">
             <div id="archiveUploader" class="uploader">
             <noscript>
-                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
+                <p>${_('Enable JavaScript to use the file uploader.')}</p>
             </noscript>
             </div>
         </div>
@@ -336,7 +336,7 @@ from django.utils.translation import ugettext as _
         </div>
         <div class="modal-footer">
              <div id="directoryNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
-                <p><strong>${_('Sorry, directory name is required.')}</strong>
+                <p><strong>${_('Directory name is required.')}</strong>
             </div>
             <a id="cancelCreateDirectoryBtn" class="btn" href="#">${_('Cancel')}</a>
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -357,7 +357,7 @@ from django.utils.translation import ugettext as _
         </div>
         <div class="modal-footer">
              <div id="fileNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
-                <p><strong>${_('Sorry, file name is required.')}</strong>
+                <p><strong>${_('File name is required.')}</strong>
             </div>
             <a id="cancelCreateFileBtn" class="btn" href="#">${_('Cancel')}</a>
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -427,24 +427,24 @@ from django.utils.translation import ugettext as _
 
             $("#chownForm").submit(function(){
                 if ($("#chownForm select[name='user']").val() == null){
-                    $("#chownRequired").find(".label").text("${_('Sorry, user is required.')}");
+                    $("#chownRequired").find(".label").text("${_('User is required.')}");
                     $("#chownRequired").show();
                     return false;
                 }
                 else if ($("#chownForm select[name='group']").val() == null){
-                    $("#chownRequired").find(".label").text("${_('Sorry, group is required.')}");
+                    $("#chownRequired").find(".label").text("${_('Group is required.')}");
                     $("#chownRequired").show();
                     return false;
                 }
                 else {
                     if ($("#chownForm select[name='group']").val() == "__other__" && $("input[name='group_other']").val() == ""){
-                        $("#chownRequired").find(".label").text("${_('Sorry, you need to specify another group.')}");
+                        $("#chownRequired").find(".label").text("${_('Specify another group.')}");
                         $("#chownForm input[name='group_other']").addClass("fieldError");
                         $("#chownRequired").show();
                         return false;
                     }
                     if ($("#chownForm select[name='user']").val() == "__other__" && $("input[name='user_other']").val() == ""){
-                        $("#chownRequired").find(".label").text("${_('Sorry, you need to specify another user.')}");
+                        $("#chownRequired").find(".label").text("${_('Specify another user.')}");
                         $("#chownForm input[name='user_other']").addClass("fieldError");
                         $("#chownRequired").show();
                         return false;

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

@@ -914,7 +914,7 @@ def rename(request):
     def smart_rename(src_path, dest_path):
         """If dest_path doesn't have a directory specified, use same dir."""
         if "#" in dest_path:
-          raise PopupException(_("Sorry, could not rename folder \"%s\" to \"%s\": Hashes are not allowed in filenames." % (src_path, dest_path)))
+          raise PopupException(_("Could not rename folder \"%s\" to \"%s\": Hashes are not allowed in filenames." % (src_path, dest_path)))
         if "/" not in dest_path:
             src_dir = os.path.dirname(src_path)
             dest_path = os.path.join(src_dir, dest_path)
@@ -928,7 +928,7 @@ def mkdir(request):
         # Make sure only one directory is specified at a time.
         # No absolute directory specification allowed.
         if posixpath.sep in name or "#" in name:
-            raise PopupException(_("Sorry, could not name folder \"%s\": Slashes or hashes are not allowed in filenames." % name))
+            raise PopupException(_("Could not name folder \"%s\": Slashes or hashes are not allowed in filenames." % name))
         request.fs.mkdir(os.path.join(path, name))
 
     return generic_op(MkDirForm, request, smart_mkdir, ["path", "name"], "path")
@@ -938,7 +938,7 @@ def touch(request):
         # Make sure only the filename is specified.
         # No absolute path specification allowed.
         if posixpath.sep in name:
-            raise PopupException(_("Sorry, could not name file \"%s\": Slashes are not allowed in filenames." % name))
+            raise PopupException(_("Could not name file \"%s\": Slashes are not allowed in filenames." % name))
         request.fs.create(os.path.join(path, name))
 
     return generic_op(TouchForm, request, smart_touch, ["path", "name"], "path")

+ 4 - 4
apps/jobbrowser/src/jobbrowser/models.py

@@ -84,7 +84,7 @@ class Job(JobLinkage):
       try:
         thriftjob = jt.get_retired_job(jt.thriftjobid_from_string(jobid))
       except JobNotFoundException, e:
-        raise PopupException(_("Could not find job with id %(jobid)s") % {'jobid': jobid}, detail=e)
+        raise PopupException(_("Could not find job with id %(jobid)s.") % {'jobid': jobid}, detail=e)
 
     return Job(jt, thriftjob)
 
@@ -418,7 +418,7 @@ class TaskAttempt(object):
         for t in all_trackers.trackers:
           LOGGER.debug("Available tracker: %s" % (t.trackerName,))
       raise ttypes.TaskTrackerNotFoundException(
-                          _("Cannot lookup TaskTracker %(id)s") % {'id': self.taskTrackerId})
+                          _("Cannot look up TaskTracker %(id)s.") % {'id': self.taskTrackerId})
 
   def get_task_log(self):
     """
@@ -442,14 +442,14 @@ class TaskAttempt(object):
     try:
       data = urllib2.urlopen(url)
     except urllib2.URLError:
-      raise urllib2.URLError(_("Cannot retrieve logs from TaskTracker %(id)s") % {'id': self.taskTrackerId})
+      raise urllib2.URLError(_("Cannot retrieve logs from TaskTracker %(id)s.") % {'id': self.taskTrackerId})
 
     et = lxml.html.parse(data)
     log_sections = et.findall('body/pre')
     if len(log_sections) != 3:
       LOGGER.warn('Error parsing task attempt log for %s at "%s". Found %d (not 3) log sections' %
                   (self.attemptId, url, len(log_sections)))
-      err = _("Hue encountered an error while retrieving logs from '%s'") % (url,)
+      err = _("Hue encountered an error while retrieving logs from '%s'.") % (url,)
       return (err, err, err)
     return [ section.text for section in log_sections ]
 

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

@@ -58,7 +58,7 @@ def check_job_permission(view_func):
     if not conf.SHARE_JOBS.get() and not request.user.is_superuser \
       and job.user != request.user.username:
       raise PopupException(_("You don't have the permissions to access"
-                             " job %(id)s") % dict(id=jobid))
+                             " job %(id)s.") % dict(id=jobid))
     return view_func(request, *args, **kwargs)
   return wraps(view_func)(decorate)
 
@@ -135,7 +135,7 @@ def kill_job(request, jobid):
   We get here from /jobs/jobid/kill
   """
   if request.method != "POST":
-    raise Exception(_("kill_job may only be invoked with a POST (got a %(method)s)") % dict(method=request.method))
+    raise Exception(_("kill_job may only be invoked with a POST (got a %(method)s).") % dict(method=request.method))
   job = Job.from_id(jt=request.jt, jobid=jobid)
   if job.user != request.user.username and not request.user.is_superuser:
     access_warn(request, _('Insufficient permission'))

+ 5 - 5
apps/jobsub/src/jobsub/conf.py

@@ -30,13 +30,13 @@ REMOTE_DATA_DIR = Config(
 LOCAL_DATA_DIR = Config(
   key="local_data_dir",
   default=os.path.join(os.path.dirname(__file__), "..", "..", "data"),
-  help=_("Location on local FS where examples and template are stored"),
+  help=_("Location on local filesystem where examples and template are stored."),
   private=True)
 
 SAMPLE_DATA_DIR = Config(
   key="sample_data_dir",
   default=paths.get_thirdparty_root("sample_data"),
-  help=_("Location on local FS where sample data is stored"),
+  help=_("Location on local filesystem where sample data is stored."),
   private=True)
 
 
@@ -46,12 +46,12 @@ SAMPLE_DATA_DIR = Config(
 # They also have priority if liboozie defines them.
 OOZIE_URL = Config(
   key='oozie_url',
-  help=_('Deprecated, please use liboozie.conf.OOZIE_URL instead. '
-         'URL to Oozie server. This is required for job submission.'),
+  help=_('Deprecated, use liboozie.conf.OOZIE_URL instead. '
+         'URL of Oozie server. This is required for job submission.'),
   type=str)
 
 SECURITY_ENABLED = Config(
   key="security_enabled",
-  help=_("Deprecated, please use liboozie.conf.SECURITY_ENABLED instead. "
+  help=_("Deprecated, use liboozie.conf.SECURITY_ENABLED instead. "
          "Whether Oozie requires client to do perform Kerberos authentication"),
   type=coerce_bool)

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

@@ -45,7 +45,7 @@ class Submission(object):
     self._job_id = None       # The oozie workflow instance id
 
   def __unicode__(self):
-    res = _("Submission for job design '%(name)s' (id %(id)s, owner %(username)s)") % \
+    res = _("Submission for job design '%(name)s' (id %(id)s, owner %(username)s).") % \
         dict(name=self._design_obj.name, id=self._design_obj.id, username=self._username)
     if self.job_id:
       res += " -- " + self.job_id
@@ -69,7 +69,7 @@ class Submission(object):
     Returns the oozie job id if all goes well.
     """
     if self.job_id is not None:
-      raise Exception(_("Job design already submitted (Oozie job id %(id)s)") % dict(id=(self.job_id,)))
+      raise Exception(_("Job design already submitted (Oozie job id %(id)s).") % dict(id=(self.job_id,)))
 
     fs_defaultfs = self._fs.fs_defaultfs
     jobtracker = hadoop.cluster.get_cluster_addr_for_job_submission()
@@ -162,13 +162,13 @@ class Submission(object):
     try:
       statbuf = self._fs.stats(path)
       if not statbuf.isDir:
-        msg = "Workflow deployment path is not a directory: %s" % (path,)
+        msg = "Workflow deployment path is not a directory: %s." % (path,)
         LOG.error(msg)
         raise Exception(msg)
       return path
     except IOError, ex:
       if ex.errno != errno.ENOENT:
-        msg = "Error accessing workflow directory '%s': %s" % (path, ex)
+        msg = "Error accessing workflow directory '%s': %s." % (path, ex)
         LOG.exception(msg)
         raise IOError(ex.errno, msg)
       self._create_deployment_dir(path)
@@ -208,7 +208,7 @@ class Submission(object):
     """Return the workflow deployment directory"""
     if self._fs is None:
       raise PopupException(_("Failed to obtain HDFS reference. "
-                           "Please check your configuration."))
+                           "Check your configuration."))
 
     # We could have collision with usernames. But there's no good separator.
     # Hope people don't create crazy usernames.

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

@@ -56,7 +56,7 @@ def oozie_job(request, jobid):
   try:
     workflow = get_oozie().get_job(jobid)
     _check_permission(request, workflow.user,
-                      _("Access denied: view job %(id)s") % {'id': jobid},
+                      _("Access denied: view job %(id)s.") % {'id': jobid},
                       allow_root=True)
     # Accessing log and definition will trigger Oozie API calls
     log = workflow.log
@@ -203,7 +203,7 @@ def delete_design(request, design_id):
     try:
       design_obj = _get_design(design_id)
       _check_permission(request, design_obj.owner.username,
-                        _("Access denied: delete design %(id)s") % {'id': design_id},
+                        _("Access denied: delete design %(id)s.") % {'id': design_id},
                         allow_root=True)
       design_obj.root_action.delete()
       design_obj.delete()
@@ -219,7 +219,7 @@ def delete_design(request, design_id):
 def edit_design(request, design_id):
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
-                    _("Access denied: edit design %(id)s") % {'id': design_id})
+                    _("Access denied: edit design %(id)s.") % {'id': design_id})
 
   if request.method == 'POST':
     form = jobsub.forms.design_form_by_instance(design_obj, request.POST)
@@ -250,7 +250,7 @@ def get_design_params(request, design_id):
   """
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
-                    _("Access denied: design parameters %(id)s") % {'id': design_id})
+                    _("Access denied: design parameters %(id)s.") % {'id': design_id})
   params = design_obj.find_parameters()
   params_with_labels = dict((p, p.upper()) for p in params)
   return render('dont_care_for_ajax', request, { 'params': params_with_labels })
@@ -262,11 +262,11 @@ def submit_design(request, design_id):
   The POST data should contain parameter values.
   """
   if request.method != 'POST':
-    raise PopupException(_('Please use a POST request to submit a design.'))
+    raise PopupException(_('Use a POST request to submit a design.'))
 
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
-                    _("Access denied: submit design %(id)s") % {'id': design_id})
+                    _("Access denied: submit design %(id)s.") % {'id': design_id})
 
   # Expect the parameter mapping in the POST data
   design_obj.bind_parameters(request.POST)
@@ -278,7 +278,7 @@ def submit_design(request, design_id):
     detail = ex.message
     if 'urlopen error' in ex.message:
       detail = '%s: %s' % (_('The Oozie server is not running'), detail)
-    raise PopupException(_("Error submitting design %(id)s") % {'id': design_id}, detail=detail)
+    raise PopupException(_("Error submitting design %(id)s.") % {'id': design_id}, detail=detail)
   # Save the submission record
   job_record = models.JobHistory(owner=request.user,
                                  job_id=jobid,
@@ -292,7 +292,7 @@ def submit_design(request, design_id):
 def setup(request):
   """Installs jobsub examples."""
   if request.method != "POST":
-    raise PopupException(_('Please use a POST request to install the examples.'))
+    raise PopupException(_('Use a POST request to install the examples.'))
   try:
     # Warning: below will modify fs.user
     jobsub_setup.Command().handle_noargs()

+ 4 - 4
apps/oozie/src/oozie/conf.py

@@ -26,19 +26,19 @@ from desktop.lib import paths
 LOCAL_SAMPLE_DIR = Config(
   key="local_data_dir",
   default=os.path.join(os.path.dirname(__file__), "..", "..", "examples"),
-  help=_("Location on local FS where the examples are stored"),
+  help=_("Location on local filesystem where the examples are stored."),
   private=True)
 
 LOCAL_SAMPLE_DATA_DIR = Config(
   key="sample_data_dir",
   default=paths.get_thirdparty_root("sample_data"),
-  help=_("Location on local FS where the data for the examples is stored"),
+  help=_("Location on local filesystem where the data for the examples is stored."),
   private=True)
 
 REMOTE_SAMPLE_DIR = Config(
   key="remote_data_dir",
   default="/user/hue/oozie/workspaces",
-  help=_("Location on HDFS where the oozie workflows are stored."))
+  help=_("Location on HDFS where the Oozie workflows are stored."))
 
 SHARE_JOBS = Config(
   key='share_jobs',
@@ -51,4 +51,4 @@ OOZIE_JOBS_COUNT = Config(
   key='oozie_jobs_count',
   default=100,
   type=int,
-  help=_('Maximum of Oozie workflows or coodinators to retrieve in one API call.'))
+  help=_('Maximum number of Oozie workflows or coodinators to retrieve in one API call.'))

+ 73 - 75
apps/oozie/src/oozie/models.py

@@ -50,7 +50,7 @@ LOG = logging.getLogger(__name__)
 
 PATH_MAX = 512
 name_validator = RegexValidator(regex='[a-zA-Z_][\-_a-zA-Z0-9]{1,39}',
-                                message=_('Please enter a valid value: combination of 2 and 40 letters and digits starting by a letter'))
+                                message=_('Enter a valid value: combination of 2 and 40 letters and digits starting by a letter'))
 
 
 """
@@ -98,7 +98,7 @@ class Job(models.Model):
   name = models.CharField(max_length=40, blank=False, validators=[name_validator],
       help_text=_t('Name of the job, which must be unique per user.'), verbose_name=_t('Name'))
   description = models.CharField(max_length=1024, blank=True, verbose_name=_t('Description'),
-                                 help_text=_t('What is the purpose of the job.'))
+                                 help_text=_t('The purpose of the job.'))
   last_modified = models.DateTimeField(auto_now=True, db_index=True, verbose_name=_t('Last modified'))
   schema_version = models.CharField(max_length=128, verbose_name=_t('Schema version'),
                                     help_text=_t('The version of the XML schema used to talk to Oozie.'))
@@ -106,9 +106,9 @@ class Job(models.Model):
                                     help_text=_t('The path on the HDFS where all the workflows and '
                                                 'dependencies must be uploaded.'))
   is_shared = models.BooleanField(default=False, db_index=True, verbose_name=_t('Is shared'),
-                                  help_text=_t('Check if you want to have some other users to have access to this job.'))
+                                  help_text=_t('Enable other users to have access to this job.'))
   parameters = models.TextField(default='[{"name":"oozie.use.system.libpath","value":"true"}]', verbose_name=_t('Oozie parameters'),
-                                help_text=_t('Set some parameters used at the submission time (e.g. market=US, oozie.use.system.libpath=true).'))
+                                help_text=_t('Parameters used at the submission time (e.g. market=US, oozie.use.system.libpath=true).'))
 
   objects = JobManager()
   unique_together = ('owner', 'name')
@@ -227,8 +227,8 @@ class Workflow(Job):
   end  = models.ForeignKey('End', related_name='end_workflow',  blank=True, null=True)
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
                                     help_text=_t('Job configuration properties used by all the actions of the workflow '
                                                  '(e.g. mapred.job.queue.name=production)'))
@@ -286,7 +286,7 @@ class Workflow(Job):
         perms = 0711
       fs.copy_remote_dir(source_deployment_dir, copy.deployment_dir, owner=copy.owner, dir_mode=perms)
     except WebHdfsException, e:
-      msg = _('The copy of the deployment directory failed: %s') % e
+      msg = _('The copy of the deployment directory failed: %s.') % e
       LOG.error(msg)
       raise PopupException(msg)
 
@@ -437,9 +437,9 @@ class Node(models.Model):
   PARAM_FIELDS = ()
 
   name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name'),
-                          help_text=_t('Name of the action, it must be unique by workflow.'))
+                          help_text=_t('Name of the action, which must be unique by workflow.'))
   description = models.CharField(max_length=1024, blank=True, default='', verbose_name=_t('Description'),
-                                 help_text=_t('What is the purpose of this action.'))
+                                 help_text=_t('The purpose of the action.'))
   node_type = models.CharField(max_length=64, blank=False, verbose_name=_t('Type'),
                                help_text=_t('The type of action (e.g. MapReduce, Pig...)'))
   workflow = models.ForeignKey(Workflow)
@@ -596,14 +596,14 @@ class Mapreduce(Action):
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
                                     help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   jar_path = models.CharField(max_length=PATH_MAX, verbose_name=_t('Jar name'),
-                              help_text=_t('Name or path to the %(program)s jar file on HDFS. e.g. examples.jar') % {'program': 'MapReduce'})
+                              help_text=_t('Name or path to the %(program)s jar file on HDFS. E.g. examples.jar.') % {'program': 'MapReduce'})
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
-                              help_text=_t('List of absolute paths to delete then to create before starting the application. '
-                                           'This should be used exclusively for directory cleanup'))
+                              help_text=_t('List of absolute paths to delete and then to create before starting the application. '
+                                           'This should be used exclusively for directory cleanup.'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -627,11 +627,11 @@ class Streaming(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   mapper = models.CharField(max_length=PATH_MAX, blank=False, verbose_name=_t('Mapper'),
-                            help_text=_t('The mapper element is used to specify the executable/script to be used as mapper.'))
+                            help_text=_t('The executable/script to be used as mapper.'))
   reducer = models.CharField(max_length=PATH_MAX, blank=False, verbose_name=_t('Reducer'),
-                             help_text=_t('The reducer element is used to specify the executable/script to be used as reducer.'))
+                             help_text=_t('The executable/script to be used as reducer.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -653,25 +653,25 @@ class Java(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   jar_path = models.CharField(max_length=PATH_MAX, blank=False, verbose_name=_t('Jar name'),
-                              help_text=_t('Name or path to the %(program)s jar file on HDFS. e.g. examples.jar') % {'program': 'Java'})
+                              help_text=_t('Name or path to the %(program)s jar file on HDFS. E.g. examples.jar.') % {'program': 'Java'})
   main_class = models.CharField(max_length=256, blank=False, verbose_name=_t('Main class'),
-                                help_text=_t('Full name of the Java class. e.g. org.apache.hadoop.examples.Grep'))
+                                help_text=_t('Full name of the Java class. E.g. org.apache.hadoop.examples.Grep'))
   args = models.CharField(max_length=4096, blank=True, verbose_name=_t('Arguments'),
                           help_text=_t('Arguments of the main method. The value of each arg element is considered a single argument '
                                        'and they are passed to the main method in the same order.'))
   java_opts = models.CharField(max_length=256, blank=True, verbose_name=_t('Java options'),
-                               help_text=_t('Command line parameters which are to be used to start the JVM that will execute '
+                               help_text=_t('Command-line parameters used to start the JVM that will execute '
                                             'the Java application. Using this element is equivalent to use the mapred.child.java.opts '
-                                            'configuration property'))
+                                            'configuration property.'))
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
-                              help_text=_t('List of absolute paths to delete then to create before starting the application. '
-                                           'This should be used exclusively for directory cleanup'))
+                              help_text=_t('List of absolute paths to delete and then to create before starting the application. '
+                                           'This should be used exclusively for directory cleanup.'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -691,7 +691,7 @@ class Pig(Action):
   node_type = 'pig'
 
   script_path = models.CharField(max_length=256, blank=False, verbose_name=_t('Script name'),
-                                 help_text=_t('Script name or path to the Pig script. e.g. my_script.pig'))
+                                 help_text=_t('Script name or path to the Pig script. E.g. my_script.pig.'))
   params = models.TextField(default="[]", verbose_name=_t('Parameters'),
                             help_text=_t('The Pig parameters of the script. e.g. "-param", "INPUT=${inputDir}"'))
   files = models.TextField(default="[]", verbose_name=_t('Files'),
@@ -699,14 +699,14 @@ class Pig(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
-                              help_text=_t('List of absolute paths to delete then to create before starting the application. '
-                                           'This should be used exclusively for directory cleanup'))
+                              help_text=_t('List of absolute paths to delete and then to create before starting the application. '
+                                           'This should be used exclusively for directory cleanup.'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -729,23 +729,23 @@ class Hive(Action):
   node_type = 'hive'
 
   script_path = models.CharField(max_length=256, blank=False, verbose_name=_t('Script name'),
-                                 help_text=_t('Script name or path to the %(type)s script. e.g. my_script.sql') % {'type': node_type.title()})
+                                 help_text=_t('Script name or path to the %(type)s script. E.g. my_script.sql.') % {'type': node_type.title()})
   params = models.TextField(default="[]", verbose_name=_t('Parameters'),
-                            help_text=_t('The %(type)s parameters of the script. e.g. "-param", "INPUT=${inputDir}"')  % {'type': node_type.title()})
+                            help_text=_t('The %(type)s parameters of the script. E.g. "-param", "INPUT=${inputDir}"')  % {'type': node_type.title()})
   files = models.TextField(default="[]", verbose_name=_t('Files'),
       help_text=_t('List of names or paths of files to be added to the distributed cache and the task running directory.'))
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[{"name":"oozie.hive.defaults","value":"hive-default.xml"}]',
                                     verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
-                                           'This should be used exclusively for directory cleanup'))
+                                           'This should be used exclusively for directory cleanup.'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -779,14 +779,14 @@ class Sqoop(Action):
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[]',
                                     verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
                                            'This should be used exclusively for directory cleanup'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
   def get_properties(self):
     return json.loads(self.job_properties)
@@ -817,8 +817,8 @@ class Ssh(Action):
   params = models.TextField(default="[]", verbose_name=_t('Arguments'),
                             help_text=_t('The arguments of the %(type)s command')  % {'type': node_type.title()})
   capture_output = models.BooleanField(default=False, verbose_name=_t('Capture output'),
-                              help_text=_t('Capture output of the STDOUT of the %(program)s command execution. The %(program)s '
-                                           'command output must be in Java Properties file format and it must not exceed 2KB. '
+                              help_text=_t('Capture output of the stdout of the %(program)s command execution. The %(program)s '
+                                           'command output must be in Java properties file format and it must not exceed 2KB. '
                                            'From within the workflow definition, the output of an %(program)s action node is accessible '
                                            'via the String action:output(String node, String key) function') % {'program': node_type.title()})
 
@@ -839,16 +839,16 @@ class Shell(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
-                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
+                                    help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production)'))
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
                                            'This should be used exclusively for directory cleanup'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properties element override properties specified in the '
+                                          'files specified in the Job XML element.'))
   capture_output = models.BooleanField(default=False, verbose_name=_t('Capture output'),
-                              help_text=_t('Capture output of the STDOUT of the %(program)s command execution. The %(program)s '
+                              help_text=_t('Capture output of the stdout of the %(program)s command execution. The %(program)s '
                                            'command output must be in Java Properties file format and it must not exceed 2KB. '
                                            'From within the workflow definition, the output of an %(program)s action node is accessible '
                                            'via the String action:output(String node, String key) function') % {'program': node_type.title()})
@@ -874,7 +874,7 @@ class DistCp(Action):
   node_type = 'distcp'
 
   params = models.TextField(default="[]", verbose_name=_t('Arguments'),
-                            help_text=_t('The arguments of the %(type)s command. Put options first then source paths then destination path.')
+                            help_text=_t('The arguments of the %(type)s command. Put options first, then source paths, then destination path.')
                                         % {'type': node_type.title()})
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
                                     help_text=_t('For the job configuration (e.g. mapred.job.queue.name=production'))
@@ -883,8 +883,8 @@ class DistCp(Action):
                                            'This should be used exclusively for directory cleanup'))
   job_xml = models.CharField(max_length=PATH_MAX, default='', blank=True, verbose_name=_t('Job XML'),
                              help_text=_t('Refer to a Hadoop JobConf job.xml file bundled in the workflow deployment directory. '
-                                          'Properties specified in the configuration element override properties specified in the '
-                                          'files specified by any job-xml elements.'))
+                                          'Properties specified in the Job Properteis element override properties specified in the '
+                                          'files specified in the Job XML element.'))
 
 
   def get_properties(self):
@@ -1037,37 +1037,35 @@ class Coordinator(Job):
   http://incubator.apache.org/oozie/docs/3.2.0-incubating/docs/CoordinatorFunctionalSpec.html
   """
   frequency_number = models.SmallIntegerField(default=1, choices=FREQUENCY_NUMBERS, verbose_name=_t('Frequency number'),
-                                              help_text=_t('It represents the number of units of the rate at which '
+                                              help_text=_t('The number of units of the rate at which '
                                                            'data is periodically created.'))
   frequency_unit = models.CharField(max_length=20, choices=FREQUENCY_UNITS, default='days', verbose_name=_t('Frequency unit'),
-                                    help_text=_t('It represents the unit of the rate at which data is periodically created.'))
+                                    help_text=_t('The unit of the rate at which data is periodically created.'))
   timezone = models.CharField(max_length=24, choices=TIMEZONES, default='America/Los_Angeles', verbose_name=_t('Timezone'),
-                              help_text=_t('The timezone of the Coordinator.'))
+                              help_text=_t('The timezone of the coordinator.'))
   start = models.DateTimeField(default=datetime.today(), verbose_name=_t('Start'),
-                               help_text=_t('When we need to start the first workflow.'))
+                               help_text=_t('When to start the first workflow.'))
   end = models.DateTimeField(default=datetime.today() + timedelta(days=3), verbose_name=_t('End'),
-                             help_text=_t('When we need to start the last workflow.'))
+                             help_text=_t('When to start the last workflow.'))
   workflow = models.ForeignKey(Workflow, null=True, verbose_name=_t('Workflow'),
-                               help_text=_t('The corresponding workflow we want to schedule repeatedly.'))
+                               help_text=_t('The workflow to schedule repeatedly.'))
   timeout = models.SmallIntegerField(null=True, blank=True, verbose_name=_t('Timeout'),
-                                     help_text=_t('Timeout for its coordinator actions, in minutes. This is how long '
-                                                  'the coordinator action will be in '
+                                     help_text=_t('How long in minutes the coordinator action will be in '
                                                   'WAITING or READY status before giving up on its execution.'))
   concurrency = models.PositiveSmallIntegerField(null=True, blank=True, choices=FREQUENCY_NUMBERS, verbose_name=_t('Concurrency'),
-                                 help_text=_t('Concurrency for its coordinator actions, this is, how many coordinator actions are '
-                                              'allowed to run concurrently ( RUNNING status) before the coordinator engine '
-                                              'starts throttling them.'))
+                                 help_text=_t('How many coordinator actions are allowed to run concurrently (RUNNING status) '
+                                              'before the coordinator engine starts throttling them.'))
   execution = models.CharField(max_length=10, null=True, blank=True, verbose_name=_t('Execution'),
                                choices=(('FIFO', _t('FIFO (oldest first) default')),
                                         ('LIFO', _t('LIFO (newest first)')),
-                                        ('LAST_ONLY', _t('LAST_ONLY (discards all older materializations)'))),
+                                        ('LAST ONLY', _t('LAST_ONLY (discards all older materializations)'))),
                                  help_text=_t('Execution strategy of its coordinator actions when there is backlog of coordinator '
                                               'actions in the coordinator engine. The different execution strategies are \'oldest first\', '
                                               '\'newest first\' and \'last one only\'. A backlog normally happens because of delayed '
                                               'input data, concurrency control or because manual re-runs of coordinator jobs.'))
   throttle = models.PositiveSmallIntegerField(null=True, blank=True, choices=FREQUENCY_NUMBERS, verbose_name=_t('Throttle'),
-                                 help_text=_t('The materialization or creation throttle value for its coordinator actions, this is, '
-                                              'how many maximum coordinator actions are allowed to be in WAITING state concurrently.'))
+                                 help_text=_t('The materialization or creation throttle value for its coordinator actions. '
+                                              'How many maximum coordinator actions are allowed to be in WAITING state concurrently.'))
   HUE_ID = 'hue-id-c'
 
   def get_type(self):
@@ -1188,24 +1186,24 @@ class Dataset(models.Model):
   name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name'),
                           help_text=_t('The name of the dataset.)'))
   description = models.CharField(max_length=1024, blank=True, default='', verbose_name=_t('Description'),
-                                 help_text=_t('More details about the dataset.'))
+                                 help_text=_t('A description of the dataset.'))
   start = models.DateTimeField(default=datetime.today(), verbose_name=_t('Start'),
-                               help_text=_t(' The UTC datetime of the initial instance of the dataset. The initial-instance also provides '
+                               help_text=_t(' The UTC datetime of the initial instance of the dataset. The initial instance also provides '
                                             'the baseline datetime to compute instances of the dataset using multiples of the frequency.'))
   frequency_number = models.SmallIntegerField(default=1, choices=FREQUENCY_NUMBERS, verbose_name=_t('Frequency number'),
-                                              help_text=_t('It represents the number of units of the rate at which '
+                                              help_text=_t('The number of units of the rate at which '
                                                            'data is periodically created.'))
   frequency_unit = models.CharField(max_length=20, choices=FREQUENCY_UNITS, default='days', verbose_name=_t('Frequency unit'),
-                                    help_text=_t('It represents the unit of the rate at which data is periodically created.'))
+                                    help_text=_t('The unit of the rate at which data is periodically created.'))
   uri = models.CharField(max_length=1024, default='/data/${YEAR}${MONTH}${DAY}', verbose_name=_t('URI'),
                          help_text=_t('The URI template that identifies the dataset and can be resolved into concrete URIs to identify a particular '
                                       'dataset instance. The URI consist of constants (e.g. ${YEAR}/${MONTH}) and '
-                                      'configuration properties (e.g. Ex: ${YEAR}/${MONTH})'))
+                                      'configuration properties (e.g. /home/${USER}/projects/${PROJECT})'))
   timezone = models.CharField(max_length=24, choices=TIMEZONES, default='America/Los_Angeles', verbose_name=_t('Timezone'),
                               help_text=_t('The timezone of the dataset.'))
   done_flag = models.CharField(max_length=64, blank=True, default='', verbose_name=_t('Done flag'),
-                               help_text=_t(' The done file for the data set. If done-flag is not specified, then Oozie '
-                                            'configures Hadoop to create a _SUCCESS file in the output directory. If the done '
+                               help_text=_t('The done file for the data set. If Done flag is not specified, then Oozie '
+                                            'configures Hadoop to create a _SUCCESS file in the output directory. If Done '
                                             'flag is set to empty, then Coordinator looks for the existence of the directory itself.'))
   coordinator = models.ForeignKey(Coordinator, verbose_name=_t('Coordinator'),
                                   help_text=_t('The coordinator associated with this data.'))
@@ -1230,9 +1228,9 @@ class Dataset(models.Model):
 
 
 class DataInput(models.Model):
-  name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name of an input variable in the workflow'),
-                          help_text=_t('The name of the variable of the workflow to automatically filled up.'))
-  dataset = models.OneToOneField(Dataset, verbose_name=_t('Pick the dataset representing format of the data input'),
+  name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name of an input variable in the workflow.'),
+                          help_text=_t('The name of the variable of the workflow to automatically fill up.'))
+  dataset = models.OneToOneField(Dataset, verbose_name=_t('The dataset representing format of the data input.'),
                                  help_text=_t('The pattern of the input data we want to process.'))
   coordinator = models.ForeignKey(Coordinator)
 
@@ -1242,7 +1240,7 @@ class DataInput(models.Model):
 class DataOutput(models.Model):
   name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name of an output variable in the workflow'),
                           help_text=_t('The name of the variable of the workflow to automatically filled up.'))
-  dataset = models.OneToOneField(Dataset, verbose_name=_t('Pick the dataset representing the format of the data output'),
+  dataset = models.OneToOneField(Dataset, verbose_name=_t('The dataset representing the format of the data output.'),
                                  help_text=_t('The pattern of the output data we want to generate.'))
   coordinator = models.ForeignKey(Coordinator)
 

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako

@@ -166,7 +166,7 @@ ${ layout.menubar(section='dashboard') }
               <th>${ _('Missing Dependencies') }</th>
 
               <th>${ _('Created Time') }</th>
-              <th>${ _('Last modified Time') }</th>
+              <th>${ _('Last Modified Time') }</th>
 
               <th>${ _('Id') }</th>
               <th>${ _('External Id') }</th>

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow.mako

@@ -120,7 +120,7 @@ ${ layout.menubar(section='dashboard') }
           alt="${ _('Are you sure you want to kill workflow %s?') %  oozie_workflow.id }"
           href="javascript:void(0)"
           data-url="${ url('oozie:manage_oozie_jobs', job_id=oozie_workflow.id, action='kill') }"
-          data-message="${ _('The workflow was killed!') }"
+          data-message="${ _('The workflow was killed.') }"
           data-confirmation-message="${ _('Are you sure you\'d like to kill this job?') }">
             ${_('Kill')}
         </a>

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow_action.mako

@@ -116,7 +116,7 @@ ${ layout.menubar(section='running') }
         <td>${ action.retries }</td>
       </tr>
       <tr>
-        <td>${ _('TrackerUri') }</td>
+        <td>${ _('TrackerURI') }</td>
         <td>${ action.trackerUri }</td>
       </tr>
       <tr>

+ 3 - 3
apps/oozie/src/oozie/templates/editor/edit_coordinator.mako

@@ -122,7 +122,7 @@ ${ layout.menubar(section='coordinators') }
             <br/>
             <p>
               % if coordinator.workflow:
-                ${ _('The inputs and outputs of the workflow need to be mapped to some data.') }
+                ${ _('The inputs and outputs of the workflow must be mapped to some data.') }
                 ${ _('The data is represented by some datasets that can be created on the ') }
                 <a href="#" id="datasets-btn" class="btn">${ _('Datasets') }</a> ${ _('page') }.
               % endif
@@ -252,7 +252,7 @@ ${ layout.menubar(section='coordinators') }
                       <th>${ _('Description') }</th>
                       <th>${ _('Frequency') }</th>
                       <th>${ _('Start') }</th>
-                      <th>${ _('Uri') }</th>
+                      <th>${ _('URI') }</th>
                       <th>${ _('Timezone') }</th>
                       <th>${ _('Done flag') }</th>
                       % if coordinator.is_editable(user):
@@ -357,7 +357,7 @@ ${ layout.menubar(section='coordinators') }
         <button class="close" data-dismiss="modal">&times;</button>
         <h3>${ _('Create a dataset') }</h3>
         <hr/>
-        <div class="alert alert-warning"><b>${ _('Warning') }</b>: ${ _('Save your modifications before creating a new dataset!') }</div>
+        <div class="alert alert-warning"><b>${ _('Warning') }</b>: ${ _('Save your modifications before creating a new dataset.') }</div>
       </div>
 
       <div class="modal-body" id="add-dataset-body">

+ 10 - 10
apps/oozie/src/oozie/templates/editor/edit_workflow.mako

@@ -40,7 +40,7 @@ ${ layout.menubar(section='workflows') }
             <a data-bind="attrs: { href: '/filebrowser/view' + deployment_dir() }" class="btn">
               ${ _('Upload') }
             </a>
-            ${ _('files to deployment directory') }
+            ${ _('files to deployment directory.') }
         </label>
       % endif
     </div>
@@ -73,55 +73,55 @@ ${ layout.menubar(section='workflows') }
               <div class="tab-pane active" id="add">
                 <p>
                 <a data-node-type="mapreduce"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('MapReduce') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="streaming"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Streaming') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="java"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Java') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="pig"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Pig') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="hive"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Hive') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="sqoop"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Sqoop') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="shell"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Shell') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="ssh"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('Ssh') }
                 </a>
                 <p/>
                 <p>
                 <a data-node-type="distcp"
-                  title="${ _('Click to add to the end') }" class="btn new-node-link">
+                  title="${ _('Click to add to the end of the workflow') }" class="btn new-node-link">
                   <i class="icon-plus"></i> ${ _('DistCp') }
                 </a>
                 <p/>

+ 2 - 2
apps/oozie/src/oozie/templates/editor/list_workflows.mako

@@ -123,10 +123,10 @@ ${ layout.menubar(section='workflows') }
   <form id="installSamplesForm" action="${url('oozie:setup_app')}" method="POST">
     <div class="modal-header">
       <a href="#" class="close" data-dismiss="modal">&times;</a>
-      <h3>${ _('Setup the workspaces and examples?') }</h3>
+      <h3>${ _('Set up the workspaces and examples?') }</h3>
     </div>
     <div class="modal-body">
-      ${ _('Hue is going to re-create the workspaces and re-install the examples...') }
+      ${ _('Hue is going to re-create the workspaces and re-install the examples.') }
     </div>
     <div class="modal-footer">
       <a href="#" class="btn" data-dismiss="modal">${ _('No') }</a>

+ 8 - 8
apps/oozie/src/oozie/views/dashboard.py

@@ -60,7 +60,7 @@ Permissions checking happens by calling:
 
 def manage_oozie_jobs(request, job_id, action):
   if request.method != 'POST':
-    raise PopupException(_('Please use a POST request to manage an Oozie job.'))
+    raise PopupException(_('Use a POST request to manage an Oozie job.'))
 
   job = check_job_access_permission(request, job_id)
   check_job_edition_permission(job, request.user)
@@ -73,7 +73,7 @@ def manage_oozie_jobs(request, job_id, action):
     if 'notification' in request.POST:
       request.info(_(request.POST.get('notification')))
   except RestException, ex:
-    response['data'] = _("Error performing %s on Oozie job %s: %s") % (action, job_id, ex.message)
+    response['data'] = _("Error performing %s on Oozie job %s: %s.") % (action, job_id, ex.message)
 
   return HttpResponse(json.dumps(response), mimetype="application/json")
 
@@ -86,7 +86,7 @@ def show_oozie_error(view_func):
       detail = ex._headers.get('oozie-error-message', ex)
       if 'urlopen error' in str(detail):
         detail = '%s: %s' % (_('The Oozie server is not running'), detail)
-      raise PopupException(_('Sorry, an error with Oozie happened.'), detail=detail)
+      raise PopupException(_('An error with Oozie occurred.'), detail=detail)
   return wraps(view_func)(decorate)
 
 
@@ -172,7 +172,7 @@ def list_oozie_workflow_action(request, action):
     action = get_oozie().get_action(action)
     workflow = check_job_access_permission(request, action.id.split('@')[0])
   except RestException, ex:
-    raise PopupException(_("Error accessing Oozie action %s") % (action,),
+    raise PopupException(_("Error accessing Oozie action %s.") % (action,),
                          detail=ex.message)
 
   return render('dashboard/list_oozie_workflow_action.mako', request, {
@@ -203,7 +203,7 @@ def rerun_oozie_job(request, job_id, app_path):
 
       _rerun_workflow(request, job_id, args, mapping)
 
-      request.info(_('Workflow re-running!'))
+      request.info(_('Workflow re-running.'))
       return redirect(reverse('oozie:list_oozie_workflow', kwargs={'job_id': job_id}))
     else:
       request.error(_('Invalid submission form: %s %s' % (rerun_form.errors, params_form.errors)))
@@ -270,7 +270,7 @@ def check_job_access_permission(request, job_id):
     try:
       oozie_job = get_job(job_id)
     except RestException, ex:
-      raise PopupException(_("Error accessing Oozie job %s") % (job_id,),
+      raise PopupException(_("Error accessing Oozie job %s.") % (job_id,),
                            detail=ex._headers['oozie-error-message'])
 
   if request.user.is_superuser \
@@ -278,7 +278,7 @@ def check_job_access_permission(request, job_id):
       or has_dashboard_jobs_access(request.user):
     return oozie_job
   else:
-    message = _("Permission denied. %(username)s don't have the permissions to access job %(id)s") % \
+    message = _("Permission denied. %(username)s don't have the permissions to access job %(id)s.") % \
         {'username': request.user.username, 'id': oozie_job.id}
     access_warn(request, message)
     raise PopupException(message)
@@ -288,7 +288,7 @@ def check_job_edition_permission(oozie_job, user):
   if has_job_edition_permission(oozie_job, user):
     return oozie_job
   else:
-    message = _("Permission denied. %(username)s don't have the permissions to modify job %(id)s") % \
+    message = _("Permission denied. %(username)s don't have the permissions to modify job %(id)s.") % \
         {'username': user.username, 'id': oozie_job.id}
     raise PopupException(message)
 

+ 6 - 6
apps/oozie/src/oozie/views/editor.py

@@ -141,7 +141,7 @@ def delete_workflow(request, workflow):
     raise PopupException(_('A POST request is required.'))
 
   Workflow.objects.destroy(workflow, request.fs)
-  request.info(_('Workflow deleted!'))
+  request.info(_('Workflow deleted.'))
 
   return redirect(reverse('oozie:list_workflows'))
 
@@ -205,7 +205,7 @@ def _submit_workflow(request, workflow, mapping):
 @check_job_access_permission()
 def schedule_workflow(request, workflow):
   if Coordinator.objects.filter(workflow=workflow).exists():
-    request.info(_('You already have some coordinators for this workflow. Please submit one or create a new one.'))
+    request.info(_('You already have some coordinators for this workflow. Submit one or create a new one.'))
     return list_coordinators(request, workflow_id=workflow.id)
   else:
     return create_coordinator(request, workflow=workflow.id)
@@ -317,7 +317,7 @@ def delete_coordinator(request, coordinator):
 
   coordinator.delete()
   Submission(request.user, coordinator, request.fs, {}).remove_deployment_dir()
-  request.info(_('Coordinator deleted!'))
+  request.info(_('Coordinator deleted.'))
 
   return redirect(reverse('oozie:list_coordinators'))
 
@@ -356,7 +356,7 @@ def edit_coordinator(request, coordinator):
       new_data_input_formset.save()
       new_data_output_formset.save()
 
-      request.info(_('Coordinator saved!'))
+      request.info(_('Coordinator saved.'))
       return redirect(reverse('oozie:edit_coordinator', kwargs={'coordinator': coordinator.id}))
   else:
     coordinator_form = CoordinatorForm(instance=coordinator, user=request.user)
@@ -489,7 +489,7 @@ def submit_coordinator(request, coordinator):
       mapping = dict([(param['name'], param['value']) for param in params_form.cleaned_data])
       job_id = _submit_coordinator(request, coordinator, mapping)
 
-      request.info(_('Coordinator submitted'))
+      request.info(_('Coordinator submitted.'))
       return redirect(reverse('oozie:list_oozie_coordinator', kwargs={'job_id': job_id}))
     else:
       request.error(_('Invalid submission form: %s' % params_form.errors))
@@ -575,7 +575,7 @@ def setup_app(request):
     raise PopupException(_('A POST request is required.'))
   try:
     oozie_setup.Command().handle_noargs()
-    request.info(_('Workspaces and examples installed!'))
+    request.info(_('Workspaces and examples installed.'))
   except WebHdfsException, e:
     raise PopupException(_('The app setup could complete.'), detail=e)
   return redirect(reverse('oozie:list_workflows'))

+ 1 - 1
apps/shell/src/shell/shellmanager.py

@@ -144,7 +144,7 @@ class Shell(object):
     retcode = merge_process.wait()
     if retcode != 0:
       LOG.error("Failed to merge credentials :'%s'..." % (merge_process.stderr.readline(),))
-      raise MergeToolException(_("bin/hadoop return non-zero %(retcode)d while trying to merge credentials") % dict(retcode=(retcode,)))
+      raise MergeToolException(_("bin/hadoop return non-zero %(retcode)d while trying to merge credentials.") % dict(retcode=(retcode,)))
     return merged_token_file
 
   def _get_delegation_tokens(self, username, delegation_token_dir):

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

@@ -83,7 +83,7 @@ ${commonheader(_('Hue Shell'), "shell", user, "100px")}
     <div>
         <h3>
             % if shells:
-                ${_('Please select one of the available shells from the toolbar above.')}
+                ${_('Select one of the available shells from the toolbar above.')}
             % else:
                 ${_('You do not have permission to access any shell or there is no configured shell.')}
             % endif

+ 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", user)}
 <div class="container-fluid">
 <div>
-    <h3>${_('The Shell application requires a Unix user account for every user of Hue on the remote webserver.')}</h3>
+    <h3>${_('The Shell application requires a Unix user account for every user of Hue on the remote web server.')}</h3>
     <br/>
-    ${_('Please ask your administrator to create a user account for you on the remote webserver as described in the Shell documentation.')}
+    ${_('Ask your administrator to create a user account for you on the remote web server as described in the Shell documentation.')}
 
 </div>
 </div>

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

@@ -71,7 +71,7 @@ def delete_user(request, username):
       finally:
         __users_lock.release()
 
-      request.info(_('The user was deleted !'))
+      request.info(_('The user was deleted.'))
       return redirect(reverse(list_users))
     except User.DoesNotExist:
       raise PopupException(_("User not found."))
@@ -97,7 +97,7 @@ def delete_group(request, name):
       finally:
         __groups_lock.release()
 
-      request.info(_('The group was deleted !'))
+      request.info(_('The group was deleted.'))
       return redirect(reverse(list_groups))
     except Group.DoesNotExist:
       raise PopupException(_("Group not found."))
@@ -226,7 +226,7 @@ def edit_user(request, username=None):
         try:
           ensure_home_directory(request.fs, instance.username)
         except (IOError, WebHdfsException), e:
-          request.error(_('Cannot make home directory for user %s' % instance.username))
+          request.error(_('Cannot make home directory for user %s.' % instance.username))
       return redirect(reverse(list_users))
   else:
     default_user_group = get_default_user_group()
@@ -350,11 +350,11 @@ def add_ldap_user(request):
         try:
           ensure_home_directory(request.fs, user.username)
         except (IOError, WebHdfsException), e:
-          request.error(_("Cannot make home directory for user %s" % user.username))
+          request.error(_("Cannot make home directory for user %s." % user.username))
 
       if user is None:
         errors = form._errors.setdefault('username', ErrorList())
-        errors.append(_('Could not get LDAP details for user %(username)s') % dict(username=(username,)))
+        errors.append(_('Could not get LDAP details for user %(username)s.') % dict(username=(username,)))
       else:
         return redirect(reverse(list_users))
   else:
@@ -450,7 +450,7 @@ def sync_ldap_users_groups(request):
           try:
             ensure_home_directory(request.fs, user.username)
           except (IOError, WebHdfsException), e:
-            raise PopupException(_("The import may not be complete, sync again"), detail=e)
+            raise PopupException(_("The import may not be complete, sync again."), detail=e)
       return redirect(reverse(list_users))
 
   form = SyncLdapUsersGroupsForm()

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

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

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

@@ -35,12 +35,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(
@@ -104,21 +104,21 @@ SMTP = ConfigSection(
 
     PORT = Config(
       key="port",
-      help=_("The SMTP server port"),
+      help=_("The SMTP server port."),
       type=int,
       default=25
     ),
 
     USER = Config(
       key="user",
-      help=_("The username for the SMTP host"),
+      help=_("The username for the SMTP host."),
       type=str,
       default=""
     ),
 
     PASSWORD = Config(
       key="password",
-      help=_("The password for the SMTP user"),
+      help=_("The password for the SMTP user."),
       type=str,
       default=""
     ),
@@ -158,25 +158,25 @@ DATABASE = ConfigSection(
     ),
     USER=Config(
       key='user',
-      help=_('Database username'),
+      help=_('Database username.'),
       type=str,
       default='',
     ),
     PASSWORD=Config(
       key='password',
-      help=_('Database password'),
+      help=_('Database password.'),
       type=str,
       default='',
     ),
     HOST=Config(
       key='host',
-      help=_('Database host'),
+      help=_('Database host.'),
       type=str,
       default='',
     ),
     PORT=Config(
       key='port',
-      help=_('Database port'),
+      help=_('Database port.'),
       type=int,
       default=0,
     ),
@@ -205,14 +205,14 @@ KERBEROS = ConfigSection(
       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!
     )
@@ -222,7 +222,7 @@ KERBEROS = ConfigSection(
 # See python's documentation for time.tzset for valid values.
 TIME_ZONE = Config(
   key="time_zone",
-  help=_("Time zone name"),
+  help=_("Time zone name."),
   type=str,
   default=os.environ.get("TZ", "America/Los_Angeles")
 )
@@ -236,12 +236,12 @@ DEFAULT_SITE_ENCODING = Config(
 
 SERVER_USER = Config(
   key="server_user",
-  help=_("Username to run servers as"),
+  help=_("Username to run servers as."),
   type=str,
   default="hue")
 SERVER_GROUP = Config(
   key="server_group",
-  help=_("Group to run servers as"),
+  help=_("Group to run servers as."),
   type=str,
   default="hue")
 
@@ -286,7 +286,7 @@ AUTH = ConfigSection(
 
 LDAP = ConfigSection(
   key="ldap",
-  help=_("Configuration options for LDAP connectivity"),
+  help=_("Configuration options for LDAP connectivity."),
   members=dict(
     BASE_DN=Config("base_dn",
                    default=None,
@@ -327,7 +327,7 @@ LDAP = ConfigSection(
 
     GROUPS = ConfigSection(
       key="groups",
-      help=_("Configuration for LDAP group schema and search"),
+      help=_("Configuration for LDAP group schema and search."),
       members=dict(
         GROUP_FILTER=Config("group_filter",
                            default="objectclass=*",
@@ -353,7 +353,7 @@ LOCAL_FILESYSTEMS = UnspecifiedConfigSection(
     members=dict(
       PATH=Config("path",
                   required=True,
-                  help=_("The path on the local FS.")))))
+                  help=_("The path on the local filesystem.")))))
 
 def default_feedback_url():
   """A version-specific URL."""
@@ -415,7 +415,7 @@ DJANGO_SERVER_EMAIL = Config(
 
 DJANGO_EMAIL_BACKEND = Config(
   key="django_email_backend",
-  help=_("The Email backend to use."),
+  help=_("The email backend to use."),
   type=str,
   default="django.core.mail.backends.smtp.EmailBackend"
 )

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

@@ -37,7 +37,7 @@ def hue_permission_required(action, app):
     @wraps(view_func)
     def decorated(request, *args, **kwargs):
       if not request.user.has_hue_permission(action, app):
-        raise PopupException(_("Permission denied (%(action)s/%(app)s)") % {'action': action, 'app': app})
+        raise PopupException(_("Permission denied (%(action)s/%(app)s).") % {'action': action, 'app': app})
       return view_func(request, *args, **kwargs)
     return decorated
   return decorator

+ 1 - 1
desktop/core/src/desktop/management/commands/config_upgrade.py

@@ -57,7 +57,7 @@ class Command(BaseCommand):
       map_parts = map_parts.rstrip('/')
       map_parts = map_parts.split('/')
       if len(map_parts) != 2:
-        raise CommandError(_("Invalid mapping %(mapping)s in %(file)s") % {'mapping': mapping.strip(), 'file': mapping_file})
+        raise CommandError(_("Invalid mapping %(mapping)s in %(file)s.") % {'mapping': mapping.strip(), 'file': mapping_file})
       mappings.append(map_parts)
 
     config_dir = os.getenv("HUE_CONF_DIR", get_desktop_root("conf"))

+ 2 - 2
desktop/core/src/desktop/management/commands/create_desktop_app.py

@@ -42,14 +42,14 @@ class Command(BaseCommand):
       app_dir = os.getcwd()
 
     app_template = os.path.abspath(os.path.join(os.path.dirname(__file__),'..','..','app_template'))
-    assert os.path.isdir(app_template), _("App template dir missing: %(template)s") % {'template': app_template}
+    assert os.path.isdir(app_template), _("App template dir missing: %(template)s.") % {'template': app_template}
     app_dir = os.path.join(app_dir, app_name)
 
     if not os.path.exists(app_template):
       raise CommandError(_("The template path, %(path)r, does not exist.") % {'path': app_template})
 
     if not re.search(r'^\w+$', app_name):
-      raise CommandError(_("%(name)r is not a valid application name. Please use only numbers, letters and underscores.") % {'name': app_name})
+      raise CommandError(_("%(name)r is not a valid application name. Use only numbers, letters and underscores.") % {'name': app_name})
     try:
       os.makedirs(app_dir)
     except OSError, e:

+ 4 - 4
desktop/core/src/desktop/middleware.py

@@ -131,7 +131,7 @@ class ClusterMiddleware(object):
     try:
       request.fs = cluster.get_hdfs(request.fs_ref)
     except KeyError:
-      raise KeyError(_('Cannot find HDFS called "%(fs_ref)s"') % {'fs_ref': request.fs_ref})
+      raise KeyError(_('Cannot find HDFS called "%(fs_ref)s".') % {'fs_ref': request.fs_ref})
 
     if request.user.is_authenticated():
       if request.fs is not None:
@@ -235,16 +235,16 @@ class AppSpecificMiddleware(object):
       try:
           dot = middleware_path.rindex('.')
       except ValueError:
-          raise exceptions.ImproperlyConfigured, _('%(module)s isn\'t a middleware module') % {'module': middleware_path}
+          raise exceptions.ImproperlyConfigured, _('%(module)s isn\'t a middleware module.') % {'module': middleware_path}
       mw_module, mw_classname = middleware_path[:dot], middleware_path[dot+1:]
       try:
           mod = __import__(mw_module, {}, {}, [''])
       except ImportError, e:
-          raise exceptions.ImproperlyConfigured, _('Error importing middleware %(module)s: "%(error)s"') % {'module': mw_module, 'error': e}
+          raise exceptions.ImproperlyConfigured, _('Error importing middleware %(module)s: "%(error)s".') % {'module': mw_module, 'error': e}
       try:
           mw_class = getattr(mod, mw_classname)
       except AttributeError:
-          raise exceptions.ImproperlyConfigured, _('Middleware module "%(module)s" does not define a "%(class)s" class') % {'module': mw_module, 'class':mw_classname}
+          raise exceptions.ImproperlyConfigured, _('Middleware module "%(module)s" does not define a "%(class)s" class.') % {'module': mw_module, 'class':mw_classname}
 
       try:
         mw_instance = mw_class()

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

@@ -27,7 +27,7 @@ ${layout.menubar(section='check_config')}
         ${_('Configuration files located in')} <code>${conf_dir}</code>
         <br/><br/>
         % if error_list:
-          <h2>${_('Potential misconfiguration detected. Please fix and restart HUE.')}</h2>
+          <h2>${_('Potential misconfiguration detected. Fix and restart Hue.')}</h2>
           <br/>
             <table class="table table-striped">
           % for confvar, error in error_list:
@@ -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>

+ 2 - 2
desktop/core/src/desktop/templates/login.mako

@@ -88,8 +88,8 @@ from django.utils.translation import ugettext as _
 		<div class="row">
 			<div class="span6 offset3">
 				<div class="alert alert-block">
-					<p>${_('Since this is your first time logging in, please pick any username and password. Be sure to remember these, as')}
-					 <strong>${_('they will become your superuser credentials for Hue')}</strong>.</p>
+					<p>${_('Since this is your first time logging in, pick any username and password. Be sure to remember these, as')}
+					 <strong>${_('they will become your Hue superuser credentials.')}</strong>.</p>
 				</div>
 			</div>
 		</div>

+ 2 - 2
desktop/core/src/desktop/views.py

@@ -88,10 +88,10 @@ def download_log_view(request):
         response['Content-Length'] = length
         return response
       except Exception, e:
-        logging.exception("Couldn't construct zip file to write logs to!")
+        logging.exception("Couldn't construct zip file to write logs to.")
         return log_view(request)
 
-  return render_to_response("logs.mako", dict(log=[_("No logs found!")]))
+  return render_to_response("logs.mako", dict(log=[_("No logs found.")]))
 
 
 @access_log_level(logging.DEBUG)

+ 4 - 4
desktop/libs/hadoop/src/hadoop/fs/hadoopfs.py

@@ -268,7 +268,7 @@ class Hdfs(object):
         LOG.info(_('%(remote_dst)s already exists. Skipping.') % {'remote_dst': remote_dst})
         return
       else:
-        LOG.info(_('%(remote_dst)s does not exist. Trying to copy') % {'remote_dst': remote_dst})
+        LOG.info(_('%(remote_dst)s does not exist. Trying to copy.') % {'remote_dst': remote_dst})
 
       src = file(local_src)
       try:
@@ -278,14 +278,14 @@ class Hdfs(object):
           while chunk:
             self.append(remote_dst, chunk)
             chunk = src.read(chunk_size)
-          LOG.info(_('Copied %s -> %s') % (local_src, remote_dst))
+          LOG.info(_('Copied %s -> %s.') % (local_src, remote_dst))
         except:
-          LOG.error(_('Copying %s -> %s failed') % (local_src, remote_dst))
+          LOG.error(_('Copying %s -> %s failed.') % (local_src, remote_dst))
           raise
       finally:
         src.close()
     else:
-      LOG.info(_('Skipping %s (not a file)') % local_src)
+      LOG.info(_('Skipping %s (not a file).') % local_src)
 
   def exists(self):
     raise NotImplementedError(_("%(function)s has not been implemented.") % {'function': 'exists'})

+ 4 - 4
desktop/libs/liboozie/src/liboozie/conf.py

@@ -22,20 +22,20 @@ from desktop.lib.conf import Config, coerce_bool, validate_path
 
 OOZIE_URL = Config(
   key='oozie_url',
-  help=_t('URL to Oozie server. This is required for job submission.'),
+  help=_t('URL of Oozie server. This is required for job submission.'),
   default='http://localhost:11000/oozie',
   type=str)
 
 SECURITY_ENABLED = Config(
   key="security_enabled",
-  help=_t("Whether Oozie requires client to perform Kerberos authentication"),
+  help=_t("Whether Oozie requires client to perform Kerberos authentication."),
   default=False,
   type=coerce_bool)
 
 REMOTE_DEPLOYMENT_DIR = Config(
   key="remote_deployement_dir",
   default="/user/hue/oozie/deployments",
-  help=_t("Location on HDFS where the workflows/coordinator are deployed when submitted by a non owner."))
+  help=_t("Location on HDFS where the workflows/coordinators are deployed when submitted by a non-owner."))
 
 
 
@@ -67,7 +67,7 @@ def config_validator():
   for cluster in get_all_hdfs().values():
     res.extend(validate_path(REMOTE_DEPLOYMENT_DIR, is_dir=True, fs=cluster,
                              message=_('The deployment directory of Oozie workflows does not exist. '
-                                       'Please run "Setup App" on the Oozie workflow page.')))
+                                       'Run "Setup App" on the Oozie workflow page.')))
     res.extend(validate_path(ConfigMock('/user/oozie/share/lib'), is_dir=True, fs=cluster,
                              message=_('Oozie Share Lib not installed in default location.')))
 

+ 5 - 5
desktop/libs/liboozie/src/liboozie/submittion.py

@@ -53,9 +53,9 @@ class Submission(object):
 
   def __str__(self):
     if self.oozie_id:
-      res = "Submission for job '%s'" % (self.oozie_id,)
+      res = "Submission for job '%s'." % (self.oozie_id,)
     else:
-      res = "Submission for job '%s' (id %s, owner %s)" % (self.job.name, self.job.id, self.user)
+      res = "Submission for job '%s' (id %s, owner %s)." % (self.job.name, self.job.id, self.user)
     if self.oozie_id:
       res += " -- " + self.oozie_id
     return res
@@ -114,7 +114,7 @@ class Submission(object):
     try:
       deployment_dir = self._create_deployment_dir()
     except Exception, ex:
-      msg = _("Failed to access deployment directory")
+      msg = _("Failed to access deployment directory.")
       LOG.exception(msg)
       raise PopupException(message=msg, detail=str(ex))
 
@@ -159,12 +159,12 @@ class Submission(object):
     try:
       statbuf = self.fs.stats(path)
       if not statbuf.isDir:
-        msg = _("Path is not a directory: %s") % (path,)
+        msg = _("Path is not a directory: %s.") % (path,)
         LOG.error(msg)
         raise Exception(msg)
     except IOError, ex:
       if ex.errno != errno.ENOENT:
-        msg = _("Error accessing directory '%s': %s") % (path, ex)
+        msg = _("Error accessing directory '%s': %s.") % (path, ex)
         LOG.exception(msg)
         raise IOError(ex.errno, msg)
 

+ 1 - 1
desktop/libs/liboozie/src/liboozie/types.py

@@ -282,7 +282,7 @@ class Job(object):
   def check_request_permission(self, request):
     """Raise PopupException if request user doesn't have permission to modify workflow"""
     if not request.user.is_superuser and request.user.username != self.user:
-      access_warn(request, _('Insufficient permission'))
+      access_warn(request, _('Insufficient permission.'))
       raise PopupException(_("Permission denied. User %(username)s cannot modify user %(user)s's job.") %
                            dict(username=request.user.username, user=self.user))