Quellcode durchsuchen

[core] Fix English mistakes and text consistency

Stephanie Bodoff vor 13 Jahren
Ursprung
Commit
68b120b
37 geänderte Dateien mit 212 neuen und 214 gelöschten Zeilen
  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(
 BEESWAX_SERVER_HEAPSIZE = Config(
   key="beeswax_server_heapsize",
   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 " + \
     "Note that the setting of HADOOP_HEAPSIZE in $HADOOP_CONF_DIR/hadoop-env.sh " + \
     "may override this setting."),
     "may override this setting."),
   default="1000")
   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">
                       <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>
                       </span>
                   </div>
                   </div>
               </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-inline error-inline hide">${_('This field is required. Spaces are not allowed.')}</span>
                       <span class="help-block">
                       <span class="help-block">
-                          ${_('Java Class used to read data')}
+                          ${_('Java class used to read data')}
                       </span>
                       </span>
                   </div>
                   </div>
               </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-inline error-inline hide">${_('This field is required. Spaces are not allowed.')}</span>
                       <span class="help-block">
                       <span class="help-block">
-                          ${_('Java Class used to write data')}
+                          ${_('Java class used to write data')}
                       </span>
                       </span>
                   </div>
                   </div>
               </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>
     <div class="modal-body">
     <div class="modal-body">
 		${edit.render_field(form["path"], notitle=True, klass="xlarge")}
 		${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>
     <div class="modal-footer">
     <div class="modal-footer">
         <div id="saveAsNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
         <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>
         </div>
 		${edit.render_field(form["contents"], hidden=True)}
 		${edit.render_field(form["contents"], hidden=True)}
 		${edit.render_field(form["encoding"], 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 id="deleteModal" class="modal hide fade">
         <div class="modal-header">
         <div class="modal-header">
             <a href="#" class="close" data-dismiss="modal">&times;</a>
             <a href="#" class="close" data-dismiss="modal">&times;</a>
-            <h3>${_('Please Confirm')}</h3>
+            <h3>${_('Confirm Delete')}</h3>
         </div>
         </div>
         <div class="modal-body">
         <div class="modal-body">
             <p>${_('Are you sure you want to delete these files?')}</p>
             <p>${_('Are you sure you want to delete these files?')}</p>
@@ -157,7 +157,7 @@ from django.utils.translation import ugettext as _
         </div>
         </div>
         <div class="modal-footer">
         <div class="modal-footer">
             <div id="renameNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
             <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>
             </div>
 
 
             <input id="renameSrcPath" type="hidden" name="src_path" type="text">
             <input id="renameSrcPath" type="hidden" name="src_path" type="text">
@@ -193,7 +193,7 @@ from django.utils.translation import ugettext as _
             </div>
             </div>
             <div class="modal-footer" style="padding-top: 10px;">
             <div class="modal-footer" style="padding-top: 10px;">
                 <div id="chownRequired" class="hide" style="position: absolute; left: 10;">
                 <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>
                 </div>
                 <a class="btn" onclick="$('#changeOwnerModal').modal('hide');">${_('Cancel')}</a>
                 <a class="btn" onclick="$('#changeOwnerModal').modal('hide');">${_('Cancel')}</a>
                 <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
                 <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -282,7 +282,7 @@ from django.utils.translation import ugettext as _
             </div>
             </div>
             <div class="modal-footer">
             <div class="modal-footer">
                 <div id="moveNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
                 <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>
                 </div>
                 <a class="btn" onclick="$('#moveModal').modal('hide');">${_('Cancel')}</a>
                 <a class="btn" onclick="$('#moveModal').modal('hide');">${_('Cancel')}</a>
                 <input class="btn btn-primary" type="submit" value="${_('Submit')}"/>
                 <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 class="modal-body form-inline">
             <div id="fileUploader" class="uploader">
             <div id="fileUploader" class="uploader">
             <noscript>
             <noscript>
-                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
+                <p>${_('Enable JavaScript to use the file uploader.')}</p>
             </noscript>
             </noscript>
             </div>
             </div>
         </div>
         </div>
@@ -316,7 +316,7 @@ from django.utils.translation import ugettext as _
         <div class="modal-body form-inline">
         <div class="modal-body form-inline">
             <div id="archiveUploader" class="uploader">
             <div id="archiveUploader" class="uploader">
             <noscript>
             <noscript>
-                <p>${_('Please enable JavaScript to use the file uploader.')}</p>
+                <p>${_('Enable JavaScript to use the file uploader.')}</p>
             </noscript>
             </noscript>
             </div>
             </div>
         </div>
         </div>
@@ -336,7 +336,7 @@ from django.utils.translation import ugettext as _
         </div>
         </div>
         <div class="modal-footer">
         <div class="modal-footer">
              <div id="directoryNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
              <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>
             </div>
             <a id="cancelCreateDirectoryBtn" class="btn" href="#">${_('Cancel')}</a>
             <a id="cancelCreateDirectoryBtn" class="btn" href="#">${_('Cancel')}</a>
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -357,7 +357,7 @@ from django.utils.translation import ugettext as _
         </div>
         </div>
         <div class="modal-footer">
         <div class="modal-footer">
              <div id="fileNameRequiredAlert" class="alert-message error hide" style="position: absolute; left: 10;">
              <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>
             </div>
             <a id="cancelCreateFileBtn" class="btn" href="#">${_('Cancel')}</a>
             <a id="cancelCreateFileBtn" class="btn" href="#">${_('Cancel')}</a>
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
             <input class="btn btn-primary" type="submit" value="${_('Submit')}" />
@@ -427,24 +427,24 @@ from django.utils.translation import ugettext as _
 
 
             $("#chownForm").submit(function(){
             $("#chownForm").submit(function(){
                 if ($("#chownForm select[name='user']").val() == null){
                 if ($("#chownForm select[name='user']").val() == null){
-                    $("#chownRequired").find(".label").text("${_('Sorry, user is required.')}");
+                    $("#chownRequired").find(".label").text("${_('User is required.')}");
                     $("#chownRequired").show();
                     $("#chownRequired").show();
                     return false;
                     return false;
                 }
                 }
                 else if ($("#chownForm select[name='group']").val() == null){
                 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();
                     $("#chownRequired").show();
                     return false;
                     return false;
                 }
                 }
                 else {
                 else {
                     if ($("#chownForm select[name='group']").val() == "__other__" && $("input[name='group_other']").val() == ""){
                     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");
                         $("#chownForm input[name='group_other']").addClass("fieldError");
                         $("#chownRequired").show();
                         $("#chownRequired").show();
                         return false;
                         return false;
                     }
                     }
                     if ($("#chownForm select[name='user']").val() == "__other__" && $("input[name='user_other']").val() == ""){
                     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");
                         $("#chownForm input[name='user_other']").addClass("fieldError");
                         $("#chownRequired").show();
                         $("#chownRequired").show();
                         return false;
                         return false;

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

@@ -914,7 +914,7 @@ def rename(request):
     def smart_rename(src_path, dest_path):
     def smart_rename(src_path, dest_path):
         """If dest_path doesn't have a directory specified, use same dir."""
         """If dest_path doesn't have a directory specified, use same dir."""
         if "#" in dest_path:
         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:
         if "/" not in dest_path:
             src_dir = os.path.dirname(src_path)
             src_dir = os.path.dirname(src_path)
             dest_path = os.path.join(src_dir, dest_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.
         # Make sure only one directory is specified at a time.
         # No absolute directory specification allowed.
         # No absolute directory specification allowed.
         if posixpath.sep in name or "#" in name:
         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))
         request.fs.mkdir(os.path.join(path, name))
 
 
     return generic_op(MkDirForm, request, smart_mkdir, ["path", "name"], "path")
     return generic_op(MkDirForm, request, smart_mkdir, ["path", "name"], "path")
@@ -938,7 +938,7 @@ def touch(request):
         # Make sure only the filename is specified.
         # Make sure only the filename is specified.
         # No absolute path specification allowed.
         # No absolute path specification allowed.
         if posixpath.sep in name:
         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))
         request.fs.create(os.path.join(path, name))
 
 
     return generic_op(TouchForm, request, smart_touch, ["path", "name"], "path")
     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:
       try:
         thriftjob = jt.get_retired_job(jt.thriftjobid_from_string(jobid))
         thriftjob = jt.get_retired_job(jt.thriftjobid_from_string(jobid))
       except JobNotFoundException, e:
       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)
     return Job(jt, thriftjob)
 
 
@@ -418,7 +418,7 @@ class TaskAttempt(object):
         for t in all_trackers.trackers:
         for t in all_trackers.trackers:
           LOGGER.debug("Available tracker: %s" % (t.trackerName,))
           LOGGER.debug("Available tracker: %s" % (t.trackerName,))
       raise ttypes.TaskTrackerNotFoundException(
       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):
   def get_task_log(self):
     """
     """
@@ -442,14 +442,14 @@ class TaskAttempt(object):
     try:
     try:
       data = urllib2.urlopen(url)
       data = urllib2.urlopen(url)
     except urllib2.URLError:
     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)
     et = lxml.html.parse(data)
     log_sections = et.findall('body/pre')
     log_sections = et.findall('body/pre')
     if len(log_sections) != 3:
     if len(log_sections) != 3:
       LOGGER.warn('Error parsing task attempt log for %s at "%s". Found %d (not 3) log sections' %
       LOGGER.warn('Error parsing task attempt log for %s at "%s". Found %d (not 3) log sections' %
                   (self.attemptId, url, len(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 (err, err, err)
     return [ section.text for section in log_sections ]
     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 \
     if not conf.SHARE_JOBS.get() and not request.user.is_superuser \
       and job.user != request.user.username:
       and job.user != request.user.username:
       raise PopupException(_("You don't have the permissions to access"
       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 view_func(request, *args, **kwargs)
   return wraps(view_func)(decorate)
   return wraps(view_func)(decorate)
 
 
@@ -135,7 +135,7 @@ def kill_job(request, jobid):
   We get here from /jobs/jobid/kill
   We get here from /jobs/jobid/kill
   """
   """
   if request.method != "POST":
   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)
   job = Job.from_id(jt=request.jt, jobid=jobid)
   if job.user != request.user.username and not request.user.is_superuser:
   if job.user != request.user.username and not request.user.is_superuser:
     access_warn(request, _('Insufficient permission'))
     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(
 LOCAL_DATA_DIR = Config(
   key="local_data_dir",
   key="local_data_dir",
   default=os.path.join(os.path.dirname(__file__), "..", "..", "data"),
   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)
   private=True)
 
 
 SAMPLE_DATA_DIR = Config(
 SAMPLE_DATA_DIR = Config(
   key="sample_data_dir",
   key="sample_data_dir",
   default=paths.get_thirdparty_root("sample_data"),
   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)
   private=True)
 
 
 
 
@@ -46,12 +46,12 @@ SAMPLE_DATA_DIR = Config(
 # They also have priority if liboozie defines them.
 # They also have priority if liboozie defines them.
 OOZIE_URL = Config(
 OOZIE_URL = Config(
   key='oozie_url',
   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)
   type=str)
 
 
 SECURITY_ENABLED = Config(
 SECURITY_ENABLED = Config(
   key="security_enabled",
   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"),
          "Whether Oozie requires client to do perform Kerberos authentication"),
   type=coerce_bool)
   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
     self._job_id = None       # The oozie workflow instance id
 
 
   def __unicode__(self):
   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)
         dict(name=self._design_obj.name, id=self._design_obj.id, username=self._username)
     if self.job_id:
     if self.job_id:
       res += " -- " + self.job_id
       res += " -- " + self.job_id
@@ -69,7 +69,7 @@ class Submission(object):
     Returns the oozie job id if all goes well.
     Returns the oozie job id if all goes well.
     """
     """
     if self.job_id is not None:
     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
     fs_defaultfs = self._fs.fs_defaultfs
     jobtracker = hadoop.cluster.get_cluster_addr_for_job_submission()
     jobtracker = hadoop.cluster.get_cluster_addr_for_job_submission()
@@ -162,13 +162,13 @@ class Submission(object):
     try:
     try:
       statbuf = self._fs.stats(path)
       statbuf = self._fs.stats(path)
       if not statbuf.isDir:
       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)
         LOG.error(msg)
         raise Exception(msg)
         raise Exception(msg)
       return path
       return path
     except IOError, ex:
     except IOError, ex:
       if ex.errno != errno.ENOENT:
       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)
         LOG.exception(msg)
         raise IOError(ex.errno, msg)
         raise IOError(ex.errno, msg)
       self._create_deployment_dir(path)
       self._create_deployment_dir(path)
@@ -208,7 +208,7 @@ class Submission(object):
     """Return the workflow deployment directory"""
     """Return the workflow deployment directory"""
     if self._fs is None:
     if self._fs is None:
       raise PopupException(_("Failed to obtain HDFS reference. "
       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.
     # We could have collision with usernames. But there's no good separator.
     # Hope people don't create crazy usernames.
     # 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:
   try:
     workflow = get_oozie().get_job(jobid)
     workflow = get_oozie().get_job(jobid)
     _check_permission(request, workflow.user,
     _check_permission(request, workflow.user,
-                      _("Access denied: view job %(id)s") % {'id': jobid},
+                      _("Access denied: view job %(id)s.") % {'id': jobid},
                       allow_root=True)
                       allow_root=True)
     # Accessing log and definition will trigger Oozie API calls
     # Accessing log and definition will trigger Oozie API calls
     log = workflow.log
     log = workflow.log
@@ -203,7 +203,7 @@ def delete_design(request, design_id):
     try:
     try:
       design_obj = _get_design(design_id)
       design_obj = _get_design(design_id)
       _check_permission(request, design_obj.owner.username,
       _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)
                         allow_root=True)
       design_obj.root_action.delete()
       design_obj.root_action.delete()
       design_obj.delete()
       design_obj.delete()
@@ -219,7 +219,7 @@ def delete_design(request, design_id):
 def edit_design(request, design_id):
 def edit_design(request, design_id):
   design_obj = _get_design(design_id)
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
   _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':
   if request.method == 'POST':
     form = jobsub.forms.design_form_by_instance(design_obj, request.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)
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
   _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 = design_obj.find_parameters()
   params_with_labels = dict((p, p.upper()) for p in params)
   params_with_labels = dict((p, p.upper()) for p in params)
   return render('dont_care_for_ajax', request, { 'params': params_with_labels })
   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.
   The POST data should contain parameter values.
   """
   """
   if request.method != 'POST':
   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)
   design_obj = _get_design(design_id)
   _check_permission(request, design_obj.owner.username,
   _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
   # Expect the parameter mapping in the POST data
   design_obj.bind_parameters(request.POST)
   design_obj.bind_parameters(request.POST)
@@ -278,7 +278,7 @@ def submit_design(request, design_id):
     detail = ex.message
     detail = ex.message
     if 'urlopen error' in ex.message:
     if 'urlopen error' in ex.message:
       detail = '%s: %s' % (_('The Oozie server is not running'), detail)
       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
   # Save the submission record
   job_record = models.JobHistory(owner=request.user,
   job_record = models.JobHistory(owner=request.user,
                                  job_id=jobid,
                                  job_id=jobid,
@@ -292,7 +292,7 @@ def submit_design(request, design_id):
 def setup(request):
 def setup(request):
   """Installs jobsub examples."""
   """Installs jobsub examples."""
   if request.method != "POST":
   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:
   try:
     # Warning: below will modify fs.user
     # Warning: below will modify fs.user
     jobsub_setup.Command().handle_noargs()
     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(
 LOCAL_SAMPLE_DIR = Config(
   key="local_data_dir",
   key="local_data_dir",
   default=os.path.join(os.path.dirname(__file__), "..", "..", "examples"),
   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)
   private=True)
 
 
 LOCAL_SAMPLE_DATA_DIR = Config(
 LOCAL_SAMPLE_DATA_DIR = Config(
   key="sample_data_dir",
   key="sample_data_dir",
   default=paths.get_thirdparty_root("sample_data"),
   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)
   private=True)
 
 
 REMOTE_SAMPLE_DIR = Config(
 REMOTE_SAMPLE_DIR = Config(
   key="remote_data_dir",
   key="remote_data_dir",
   default="/user/hue/oozie/workspaces",
   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(
 SHARE_JOBS = Config(
   key='share_jobs',
   key='share_jobs',
@@ -51,4 +51,4 @@ OOZIE_JOBS_COUNT = Config(
   key='oozie_jobs_count',
   key='oozie_jobs_count',
   default=100,
   default=100,
   type=int,
   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
 PATH_MAX = 512
 name_validator = RegexValidator(regex='[a-zA-Z_][\-_a-zA-Z0-9]{1,39}',
 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],
   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'))
       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'),
   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'))
   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'),
   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.'))
                                     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 '
                                     help_text=_t('The path on the HDFS where all the workflows and '
                                                 'dependencies must be uploaded.'))
                                                 'dependencies must be uploaded.'))
   is_shared = models.BooleanField(default=False, db_index=True, verbose_name=_t('Is shared'),
   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'),
   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()
   objects = JobManager()
   unique_together = ('owner', 'name')
   unique_together = ('owner', 'name')
@@ -227,8 +227,8 @@ class Workflow(Job):
   end  = models.ForeignKey('End', related_name='end_workflow',  blank=True, null=True)
   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'),
   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. '
                              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'),
   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 '
                                     help_text=_t('Job configuration properties used by all the actions of the workflow '
                                                  '(e.g. mapred.job.queue.name=production)'))
                                                  '(e.g. mapred.job.queue.name=production)'))
@@ -286,7 +286,7 @@ class Workflow(Job):
         perms = 0711
         perms = 0711
       fs.copy_remote_dir(source_deployment_dir, copy.deployment_dir, owner=copy.owner, dir_mode=perms)
       fs.copy_remote_dir(source_deployment_dir, copy.deployment_dir, owner=copy.owner, dir_mode=perms)
     except WebHdfsException, e:
     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)
       LOG.error(msg)
       raise PopupException(msg)
       raise PopupException(msg)
 
 
@@ -437,9 +437,9 @@ class Node(models.Model):
   PARAM_FIELDS = ()
   PARAM_FIELDS = ()
 
 
   name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name'),
   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'),
   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'),
   node_type = models.CharField(max_length=64, blank=False, verbose_name=_t('Type'),
                                help_text=_t('The type of action (e.g. MapReduce, Pig...)'))
                                help_text=_t('The type of action (e.g. MapReduce, Pig...)'))
   workflow = models.ForeignKey(Workflow)
   workflow = models.ForeignKey(Workflow)
@@ -596,14 +596,14 @@ class Mapreduce(Action):
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
   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)'))
   jar_path = models.CharField(max_length=PATH_MAX, verbose_name=_t('Jar name'),
   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'),
   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'),
   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. '
                              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):
   def get_properties(self):
     return json.loads(self.job_properties)
     return json.loads(self.job_properties)
@@ -627,11 +627,11 @@ class Streaming(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
   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.'))
       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'),
   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'),
   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'),
   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):
   def get_properties(self):
     return json.loads(self.job_properties)
     return json.loads(self.job_properties)
@@ -653,25 +653,25 @@ class Java(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
   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.'))
       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'),
   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'),
   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'),
   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 '
                           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.'))
                                        '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'),
   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 '
                                             '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'),
   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'),
   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'),
   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. '
                              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):
   def get_properties(self):
     return json.loads(self.job_properties)
     return json.loads(self.job_properties)
@@ -691,7 +691,7 @@ class Pig(Action):
   node_type = 'pig'
   node_type = 'pig'
 
 
   script_path = models.CharField(max_length=256, blank=False, verbose_name=_t('Script name'),
   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'),
   params = models.TextField(default="[]", verbose_name=_t('Parameters'),
                             help_text=_t('The Pig parameters of the script. e.g. "-param", "INPUT=${inputDir}"'))
                             help_text=_t('The Pig parameters of the script. e.g. "-param", "INPUT=${inputDir}"'))
   files = models.TextField(default="[]", verbose_name=_t('Files'),
   files = models.TextField(default="[]", verbose_name=_t('Files'),
@@ -699,14 +699,14 @@ class Pig(Action):
   archives = models.TextField(default="[]", verbose_name=_t('Archives'),
   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.'))
       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'),
   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'),
   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'),
   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. '
                              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):
   def get_properties(self):
     return json.loads(self.job_properties)
     return json.loads(self.job_properties)
@@ -729,23 +729,23 @@ class Hive(Action):
   node_type = 'hive'
   node_type = 'hive'
 
 
   script_path = models.CharField(max_length=256, blank=False, verbose_name=_t('Script name'),
   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'),
   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'),
   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.'))
       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'),
   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.'))
       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"}]',
   job_properties = models.TextField(default='[{"name":"oozie.hive.defaults","value":"hive-default.xml"}]',
                                     verbose_name=_t('Hadoop job properties'),
                                     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'),
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
                               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'),
   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. '
                              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):
   def get_properties(self):
     return json.loads(self.job_properties)
     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.'))
       help_text=_t('List of names or paths of the archives to be added to the distributed cache.'))
   job_properties = models.TextField(default='[]',
   job_properties = models.TextField(default='[]',
                                     verbose_name=_t('Hadoop job properties'),
                                     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'),
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
                               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'),
   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. '
                              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):
   def get_properties(self):
     return json.loads(self.job_properties)
     return json.loads(self.job_properties)
@@ -817,8 +817,8 @@ class Ssh(Action):
   params = models.TextField(default="[]", verbose_name=_t('Arguments'),
   params = models.TextField(default="[]", verbose_name=_t('Arguments'),
                             help_text=_t('The arguments of the %(type)s command')  % {'type': node_type.title()})
                             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'),
   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 '
                                            '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()})
                                            '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'),
   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.'))
       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'),
   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'),
   prepares = models.TextField(default="[]", verbose_name=_t('Prepares'),
                               help_text=_t('List of absolute paths to delete then to create before starting the application. '
                               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'),
   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. '
                              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'),
   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. '
                                            '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 '
                                            '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()})
                                            'via the String action:output(String node, String key) function') % {'program': node_type.title()})
@@ -874,7 +874,7 @@ class DistCp(Action):
   node_type = 'distcp'
   node_type = 'distcp'
 
 
   params = models.TextField(default="[]", verbose_name=_t('Arguments'),
   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()})
                                         % {'type': node_type.title()})
   job_properties = models.TextField(default='[]', verbose_name=_t('Hadoop job properties'),
   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'))
@@ -883,8 +883,8 @@ class DistCp(Action):
                                            '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'),
   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. '
                              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):
   def get_properties(self):
@@ -1037,37 +1037,35 @@ class Coordinator(Job):
   http://incubator.apache.org/oozie/docs/3.2.0-incubating/docs/CoordinatorFunctionalSpec.html
   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'),
   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.'))
                                                            'data is periodically created.'))
   frequency_unit = models.CharField(max_length=20, choices=FREQUENCY_UNITS, default='days', verbose_name=_t('Frequency unit'),
   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'),
   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'),
   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'),
   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'),
   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'),
   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.'))
                                                   'WAITING or READY status before giving up on its execution.'))
   concurrency = models.PositiveSmallIntegerField(null=True, blank=True, choices=FREQUENCY_NUMBERS, verbose_name=_t('Concurrency'),
   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'),
   execution = models.CharField(max_length=10, null=True, blank=True, verbose_name=_t('Execution'),
                                choices=(('FIFO', _t('FIFO (oldest first) default')),
                                choices=(('FIFO', _t('FIFO (oldest first) default')),
                                         ('LIFO', _t('LIFO (newest first)')),
                                         ('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 '
                                  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\', '
                                               '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 '
                                               '\'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.'))
                                               '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'),
   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'
   HUE_ID = 'hue-id-c'
 
 
   def get_type(self):
   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'),
   name = models.CharField(max_length=40, validators=[name_validator], verbose_name=_t('Name'),
                           help_text=_t('The name of the dataset.)'))
                           help_text=_t('The name of the dataset.)'))
   description = models.CharField(max_length=1024, blank=True, default='', verbose_name=_t('Description'),
   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'),
   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.'))
                                             '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'),
   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.'))
                                                            'data is periodically created.'))
   frequency_unit = models.CharField(max_length=20, choices=FREQUENCY_UNITS, default='days', verbose_name=_t('Frequency unit'),
   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'),
   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 '
                          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 '
                                       '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'),
   timezone = models.CharField(max_length=24, choices=TIMEZONES, default='America/Los_Angeles', verbose_name=_t('Timezone'),
                               help_text=_t('The timezone of the dataset.'))
                               help_text=_t('The timezone of the dataset.'))
   done_flag = models.CharField(max_length=64, blank=True, default='', verbose_name=_t('Done flag'),
   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.'))
                                             'flag is set to empty, then Coordinator looks for the existence of the directory itself.'))
   coordinator = models.ForeignKey(Coordinator, verbose_name=_t('Coordinator'),
   coordinator = models.ForeignKey(Coordinator, verbose_name=_t('Coordinator'),
                                   help_text=_t('The coordinator associated with this data.'))
                                   help_text=_t('The coordinator associated with this data.'))
@@ -1230,9 +1228,9 @@ class Dataset(models.Model):
 
 
 
 
 class DataInput(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.'))
                                  help_text=_t('The pattern of the input data we want to process.'))
   coordinator = models.ForeignKey(Coordinator)
   coordinator = models.ForeignKey(Coordinator)
 
 
@@ -1242,7 +1240,7 @@ class DataInput(models.Model):
 class DataOutput(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'),
   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.'))
                           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.'))
                                  help_text=_t('The pattern of the output data we want to generate.'))
   coordinator = models.ForeignKey(Coordinator)
   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>${ _('Missing Dependencies') }</th>
 
 
               <th>${ _('Created Time') }</th>
               <th>${ _('Created Time') }</th>
-              <th>${ _('Last modified Time') }</th>
+              <th>${ _('Last Modified Time') }</th>
 
 
               <th>${ _('Id') }</th>
               <th>${ _('Id') }</th>
               <th>${ _('External 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 }"
           alt="${ _('Are you sure you want to kill workflow %s?') %  oozie_workflow.id }"
           href="javascript:void(0)"
           href="javascript:void(0)"
           data-url="${ url('oozie:manage_oozie_jobs', job_id=oozie_workflow.id, action='kill') }"
           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?') }">
           data-confirmation-message="${ _('Are you sure you\'d like to kill this job?') }">
             ${_('Kill')}
             ${_('Kill')}
         </a>
         </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>
         <td>${ action.retries }</td>
       </tr>
       </tr>
       <tr>
       <tr>
-        <td>${ _('TrackerUri') }</td>
+        <td>${ _('TrackerURI') }</td>
         <td>${ action.trackerUri }</td>
         <td>${ action.trackerUri }</td>
       </tr>
       </tr>
       <tr>
       <tr>

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

@@ -122,7 +122,7 @@ ${ layout.menubar(section='coordinators') }
             <br/>
             <br/>
             <p>
             <p>
               % if coordinator.workflow:
               % 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 ') }
                 ${ _('The data is represented by some datasets that can be created on the ') }
                 <a href="#" id="datasets-btn" class="btn">${ _('Datasets') }</a> ${ _('page') }.
                 <a href="#" id="datasets-btn" class="btn">${ _('Datasets') }</a> ${ _('page') }.
               % endif
               % endif
@@ -252,7 +252,7 @@ ${ layout.menubar(section='coordinators') }
                       <th>${ _('Description') }</th>
                       <th>${ _('Description') }</th>
                       <th>${ _('Frequency') }</th>
                       <th>${ _('Frequency') }</th>
                       <th>${ _('Start') }</th>
                       <th>${ _('Start') }</th>
-                      <th>${ _('Uri') }</th>
+                      <th>${ _('URI') }</th>
                       <th>${ _('Timezone') }</th>
                       <th>${ _('Timezone') }</th>
                       <th>${ _('Done flag') }</th>
                       <th>${ _('Done flag') }</th>
                       % if coordinator.is_editable(user):
                       % if coordinator.is_editable(user):
@@ -357,7 +357,7 @@ ${ layout.menubar(section='coordinators') }
         <button class="close" data-dismiss="modal">&times;</button>
         <button class="close" data-dismiss="modal">&times;</button>
         <h3>${ _('Create a dataset') }</h3>
         <h3>${ _('Create a dataset') }</h3>
         <hr/>
         <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>
 
 
       <div class="modal-body" id="add-dataset-body">
       <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">
             <a data-bind="attrs: { href: '/filebrowser/view' + deployment_dir() }" class="btn">
               ${ _('Upload') }
               ${ _('Upload') }
             </a>
             </a>
-            ${ _('files to deployment directory') }
+            ${ _('files to deployment directory.') }
         </label>
         </label>
       % endif
       % endif
     </div>
     </div>
@@ -73,55 +73,55 @@ ${ layout.menubar(section='workflows') }
               <div class="tab-pane active" id="add">
               <div class="tab-pane active" id="add">
                 <p>
                 <p>
                 <a data-node-type="mapreduce"
                 <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') }
                   <i class="icon-plus"></i> ${ _('MapReduce') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="streaming"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Streaming') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="java"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Java') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="pig"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Pig') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="hive"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Hive') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="sqoop"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Sqoop') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="shell"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Shell') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="ssh"
                 <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') }
                   <i class="icon-plus"></i> ${ _('Ssh') }
                 </a>
                 </a>
                 <p/>
                 <p/>
                 <p>
                 <p>
                 <a data-node-type="distcp"
                 <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') }
                   <i class="icon-plus"></i> ${ _('DistCp') }
                 </a>
                 </a>
                 <p/>
                 <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">
   <form id="installSamplesForm" action="${url('oozie:setup_app')}" method="POST">
     <div class="modal-header">
     <div class="modal-header">
       <a href="#" class="close" data-dismiss="modal">&times;</a>
       <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>
     <div class="modal-body">
     <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>
     <div class="modal-footer">
     <div class="modal-footer">
       <a href="#" class="btn" data-dismiss="modal">${ _('No') }</a>
       <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):
 def manage_oozie_jobs(request, job_id, action):
   if request.method != 'POST':
   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)
   job = check_job_access_permission(request, job_id)
   check_job_edition_permission(job, request.user)
   check_job_edition_permission(job, request.user)
@@ -73,7 +73,7 @@ def manage_oozie_jobs(request, job_id, action):
     if 'notification' in request.POST:
     if 'notification' in request.POST:
       request.info(_(request.POST.get('notification')))
       request.info(_(request.POST.get('notification')))
   except RestException, ex:
   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")
   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)
       detail = ex._headers.get('oozie-error-message', ex)
       if 'urlopen error' in str(detail):
       if 'urlopen error' in str(detail):
         detail = '%s: %s' % (_('The Oozie server is not running'), 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)
   return wraps(view_func)(decorate)
 
 
 
 
@@ -172,7 +172,7 @@ def list_oozie_workflow_action(request, action):
     action = get_oozie().get_action(action)
     action = get_oozie().get_action(action)
     workflow = check_job_access_permission(request, action.id.split('@')[0])
     workflow = check_job_access_permission(request, action.id.split('@')[0])
   except RestException, ex:
   except RestException, ex:
-    raise PopupException(_("Error accessing Oozie action %s") % (action,),
+    raise PopupException(_("Error accessing Oozie action %s.") % (action,),
                          detail=ex.message)
                          detail=ex.message)
 
 
   return render('dashboard/list_oozie_workflow_action.mako', request, {
   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)
       _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}))
       return redirect(reverse('oozie:list_oozie_workflow', kwargs={'job_id': job_id}))
     else:
     else:
       request.error(_('Invalid submission form: %s %s' % (rerun_form.errors, params_form.errors)))
       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:
     try:
       oozie_job = get_job(job_id)
       oozie_job = get_job(job_id)
     except RestException, ex:
     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'])
                            detail=ex._headers['oozie-error-message'])
 
 
   if request.user.is_superuser \
   if request.user.is_superuser \
@@ -278,7 +278,7 @@ def check_job_access_permission(request, job_id):
       or has_dashboard_jobs_access(request.user):
       or has_dashboard_jobs_access(request.user):
     return oozie_job
     return oozie_job
   else:
   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}
         {'username': request.user.username, 'id': oozie_job.id}
     access_warn(request, message)
     access_warn(request, message)
     raise PopupException(message)
     raise PopupException(message)
@@ -288,7 +288,7 @@ def check_job_edition_permission(oozie_job, user):
   if has_job_edition_permission(oozie_job, user):
   if has_job_edition_permission(oozie_job, user):
     return oozie_job
     return oozie_job
   else:
   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}
         {'username': user.username, 'id': oozie_job.id}
     raise PopupException(message)
     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.'))
     raise PopupException(_('A POST request is required.'))
 
 
   Workflow.objects.destroy(workflow, request.fs)
   Workflow.objects.destroy(workflow, request.fs)
-  request.info(_('Workflow deleted!'))
+  request.info(_('Workflow deleted.'))
 
 
   return redirect(reverse('oozie:list_workflows'))
   return redirect(reverse('oozie:list_workflows'))
 
 
@@ -205,7 +205,7 @@ def _submit_workflow(request, workflow, mapping):
 @check_job_access_permission()
 @check_job_access_permission()
 def schedule_workflow(request, workflow):
 def schedule_workflow(request, workflow):
   if Coordinator.objects.filter(workflow=workflow).exists():
   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)
     return list_coordinators(request, workflow_id=workflow.id)
   else:
   else:
     return create_coordinator(request, workflow=workflow.id)
     return create_coordinator(request, workflow=workflow.id)
@@ -317,7 +317,7 @@ def delete_coordinator(request, coordinator):
 
 
   coordinator.delete()
   coordinator.delete()
   Submission(request.user, coordinator, request.fs, {}).remove_deployment_dir()
   Submission(request.user, coordinator, request.fs, {}).remove_deployment_dir()
-  request.info(_('Coordinator deleted!'))
+  request.info(_('Coordinator deleted.'))
 
 
   return redirect(reverse('oozie:list_coordinators'))
   return redirect(reverse('oozie:list_coordinators'))
 
 
@@ -356,7 +356,7 @@ def edit_coordinator(request, coordinator):
       new_data_input_formset.save()
       new_data_input_formset.save()
       new_data_output_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}))
       return redirect(reverse('oozie:edit_coordinator', kwargs={'coordinator': coordinator.id}))
   else:
   else:
     coordinator_form = CoordinatorForm(instance=coordinator, user=request.user)
     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])
       mapping = dict([(param['name'], param['value']) for param in params_form.cleaned_data])
       job_id = _submit_coordinator(request, coordinator, mapping)
       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}))
       return redirect(reverse('oozie:list_oozie_coordinator', kwargs={'job_id': job_id}))
     else:
     else:
       request.error(_('Invalid submission form: %s' % params_form.errors))
       request.error(_('Invalid submission form: %s' % params_form.errors))
@@ -575,7 +575,7 @@ def setup_app(request):
     raise PopupException(_('A POST request is required.'))
     raise PopupException(_('A POST request is required.'))
   try:
   try:
     oozie_setup.Command().handle_noargs()
     oozie_setup.Command().handle_noargs()
-    request.info(_('Workspaces and examples installed!'))
+    request.info(_('Workspaces and examples installed.'))
   except WebHdfsException, e:
   except WebHdfsException, e:
     raise PopupException(_('The app setup could complete.'), detail=e)
     raise PopupException(_('The app setup could complete.'), detail=e)
   return redirect(reverse('oozie:list_workflows'))
   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()
     retcode = merge_process.wait()
     if retcode != 0:
     if retcode != 0:
       LOG.error("Failed to merge credentials :'%s'..." % (merge_process.stderr.readline(),))
       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
     return merged_token_file
 
 
   def _get_delegation_tokens(self, username, delegation_token_dir):
   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>
     <div>
         <h3>
         <h3>
             % if shells:
             % if shells:
-                ${_('Please select one of the available shells from the toolbar above.')}
+                ${_('Select one of the available shells from the toolbar above.')}
             % else:
             % else:
                 ${_('You do not have permission to access any shell or there is no configured shell.')}
                 ${_('You do not have permission to access any shell or there is no configured shell.')}
             % endif
             % 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)}
 ${commonheader(_('Hue Shell'), "shell", user)}
 <div class="container-fluid">
 <div class="container-fluid">
 <div>
 <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/>
     <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>
 </div>
 </div>

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

@@ -71,7 +71,7 @@ def delete_user(request, username):
       finally:
       finally:
         __users_lock.release()
         __users_lock.release()
 
 
-      request.info(_('The user was deleted !'))
+      request.info(_('The user was deleted.'))
       return redirect(reverse(list_users))
       return redirect(reverse(list_users))
     except User.DoesNotExist:
     except User.DoesNotExist:
       raise PopupException(_("User not found."))
       raise PopupException(_("User not found."))
@@ -97,7 +97,7 @@ def delete_group(request, name):
       finally:
       finally:
         __groups_lock.release()
         __groups_lock.release()
 
 
-      request.info(_('The group was deleted !'))
+      request.info(_('The group was deleted.'))
       return redirect(reverse(list_groups))
       return redirect(reverse(list_groups))
     except Group.DoesNotExist:
     except Group.DoesNotExist:
       raise PopupException(_("Group not found."))
       raise PopupException(_("Group not found."))
@@ -226,7 +226,7 @@ def edit_user(request, username=None):
         try:
         try:
           ensure_home_directory(request.fs, instance.username)
           ensure_home_directory(request.fs, instance.username)
         except (IOError, WebHdfsException), e:
         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))
       return redirect(reverse(list_users))
   else:
   else:
     default_user_group = get_default_user_group()
     default_user_group = get_default_user_group()
@@ -350,11 +350,11 @@ def add_ldap_user(request):
         try:
         try:
           ensure_home_directory(request.fs, user.username)
           ensure_home_directory(request.fs, user.username)
         except (IOError, WebHdfsException), e:
         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:
       if user is None:
         errors = form._errors.setdefault('username', ErrorList())
         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:
       else:
         return redirect(reverse(list_users))
         return redirect(reverse(list_users))
   else:
   else:
@@ -450,7 +450,7 @@ def sync_ldap_users_groups(request):
           try:
           try:
             ensure_home_directory(request.fs, user.username)
             ensure_home_directory(request.fs, user.username)
           except (IOError, WebHdfsException), e:
           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))
       return redirect(reverse(list_users))
 
 
   form = SyncLdapUsersGroupsForm()
   form = SyncLdapUsersGroupsForm()

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

@@ -199,7 +199,7 @@ def load_libs():
   global DESKTOP_LIBS
   global DESKTOP_LIBS
 
 
   if DESKTOP_LIBS is not None:
   if DESKTOP_LIBS is not None:
-    raise Exception("load_apps already has been called!")
+    raise Exception("load_apps already has been called.")
   DESKTOP_LIBS = [ ]
   DESKTOP_LIBS = [ ]
 
 
   for lib in pkg_resources.iter_entry_points("desktop.sdk.lib"):
   for lib in pkg_resources.iter_entry_points("desktop.sdk.lib"):
@@ -225,7 +225,7 @@ def load_apps():
   global DESKTOP_APPS
   global DESKTOP_APPS
 
 
   if DESKTOP_APPS is not None:
   if DESKTOP_APPS is not None:
-    raise Exception(_("load_apps has already been called!"))
+    raise Exception(_("load_apps has already been called."))
   DESKTOP_APPS = []
   DESKTOP_APPS = []
 
 
   for sdk_app in pkg_resources.iter_entry_points("desktop.sdk.application"):
   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(
 HTTP_HOST = Config(
   key="http_host",
   key="http_host",
-  help=_("HTTP Host to bind to."),
+  help=_("HTTP host to bind to."),
   type=str,
   type=str,
   default="0.0.0.0")
   default="0.0.0.0")
 HTTP_PORT = Config(
 HTTP_PORT = Config(
   key="http_port",
   key="http_port",
-  help=_("HTTP Port to bind to."),
+  help=_("HTTP port to bind to."),
   type=int,
   type=int,
   default=8888)
   default=8888)
 SSL_CERTIFICATE = Config(
 SSL_CERTIFICATE = Config(
@@ -104,21 +104,21 @@ SMTP = ConfigSection(
 
 
     PORT = Config(
     PORT = Config(
       key="port",
       key="port",
-      help=_("The SMTP server port"),
+      help=_("The SMTP server port."),
       type=int,
       type=int,
       default=25
       default=25
     ),
     ),
 
 
     USER = Config(
     USER = Config(
       key="user",
       key="user",
-      help=_("The username for the SMTP host"),
+      help=_("The username for the SMTP host."),
       type=str,
       type=str,
       default=""
       default=""
     ),
     ),
 
 
     PASSWORD = Config(
     PASSWORD = Config(
       key="password",
       key="password",
-      help=_("The password for the SMTP user"),
+      help=_("The password for the SMTP user."),
       type=str,
       type=str,
       default=""
       default=""
     ),
     ),
@@ -158,25 +158,25 @@ DATABASE = ConfigSection(
     ),
     ),
     USER=Config(
     USER=Config(
       key='user',
       key='user',
-      help=_('Database username'),
+      help=_('Database username.'),
       type=str,
       type=str,
       default='',
       default='',
     ),
     ),
     PASSWORD=Config(
     PASSWORD=Config(
       key='password',
       key='password',
-      help=_('Database password'),
+      help=_('Database password.'),
       type=str,
       type=str,
       default='',
       default='',
     ),
     ),
     HOST=Config(
     HOST=Config(
       key='host',
       key='host',
-      help=_('Database host'),
+      help=_('Database host.'),
       type=str,
       type=str,
       default='',
       default='',
     ),
     ),
     PORT=Config(
     PORT=Config(
       key='port',
       key='port',
-      help=_('Database port'),
+      help=_('Database port.'),
       type=int,
       type=int,
       default=0,
       default=0,
     ),
     ),
@@ -205,14 +205,14 @@ KERBEROS = ConfigSection(
       default=60*60), #1h
       default=60*60), #1h
     CCACHE_PATH=Config(
     CCACHE_PATH=Config(
       key='ccache_path',
       key='ccache_path',
-      help=_("Path to keep Kerberos credentials cached"),
+      help=_("Path to keep Kerberos credentials cached."),
       private=True,
       private=True,
       type=str,
       type=str,
       default="/tmp/hue_krb5_ccache",
       default="/tmp/hue_krb5_ccache",
     ),
     ),
     KINIT_PATH=Config(
     KINIT_PATH=Config(
       key='kinit_path',
       key='kinit_path',
-      help=_("Path to Kerberos 'kinit' command"),
+      help=_("Path to Kerberos 'kinit' command."),
       type=str,
       type=str,
       default="kinit", # use PATH!
       default="kinit", # use PATH!
     )
     )
@@ -222,7 +222,7 @@ KERBEROS = ConfigSection(
 # See python's documentation for time.tzset for valid values.
 # See python's documentation for time.tzset for valid values.
 TIME_ZONE = Config(
 TIME_ZONE = Config(
   key="time_zone",
   key="time_zone",
-  help=_("Time zone name"),
+  help=_("Time zone name."),
   type=str,
   type=str,
   default=os.environ.get("TZ", "America/Los_Angeles")
   default=os.environ.get("TZ", "America/Los_Angeles")
 )
 )
@@ -236,12 +236,12 @@ DEFAULT_SITE_ENCODING = Config(
 
 
 SERVER_USER = Config(
 SERVER_USER = Config(
   key="server_user",
   key="server_user",
-  help=_("Username to run servers as"),
+  help=_("Username to run servers as."),
   type=str,
   type=str,
   default="hue")
   default="hue")
 SERVER_GROUP = Config(
 SERVER_GROUP = Config(
   key="server_group",
   key="server_group",
-  help=_("Group to run servers as"),
+  help=_("Group to run servers as."),
   type=str,
   type=str,
   default="hue")
   default="hue")
 
 
@@ -286,7 +286,7 @@ AUTH = ConfigSection(
 
 
 LDAP = ConfigSection(
 LDAP = ConfigSection(
   key="ldap",
   key="ldap",
-  help=_("Configuration options for LDAP connectivity"),
+  help=_("Configuration options for LDAP connectivity."),
   members=dict(
   members=dict(
     BASE_DN=Config("base_dn",
     BASE_DN=Config("base_dn",
                    default=None,
                    default=None,
@@ -327,7 +327,7 @@ LDAP = ConfigSection(
 
 
     GROUPS = ConfigSection(
     GROUPS = ConfigSection(
       key="groups",
       key="groups",
-      help=_("Configuration for LDAP group schema and search"),
+      help=_("Configuration for LDAP group schema and search."),
       members=dict(
       members=dict(
         GROUP_FILTER=Config("group_filter",
         GROUP_FILTER=Config("group_filter",
                            default="objectclass=*",
                            default="objectclass=*",
@@ -353,7 +353,7 @@ LOCAL_FILESYSTEMS = UnspecifiedConfigSection(
     members=dict(
     members=dict(
       PATH=Config("path",
       PATH=Config("path",
                   required=True,
                   required=True,
-                  help=_("The path on the local FS.")))))
+                  help=_("The path on the local filesystem.")))))
 
 
 def default_feedback_url():
 def default_feedback_url():
   """A version-specific URL."""
   """A version-specific URL."""
@@ -415,7 +415,7 @@ DJANGO_SERVER_EMAIL = Config(
 
 
 DJANGO_EMAIL_BACKEND = Config(
 DJANGO_EMAIL_BACKEND = Config(
   key="django_email_backend",
   key="django_email_backend",
-  help=_("The Email backend to use."),
+  help=_("The email backend to use."),
   type=str,
   type=str,
   default="django.core.mail.backends.smtp.EmailBackend"
   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)
     @wraps(view_func)
     def decorated(request, *args, **kwargs):
     def decorated(request, *args, **kwargs):
       if not request.user.has_hue_permission(action, app):
       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 view_func(request, *args, **kwargs)
     return decorated
     return decorated
   return decorator
   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.rstrip('/')
       map_parts = map_parts.split('/')
       map_parts = map_parts.split('/')
       if len(map_parts) != 2:
       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)
       mappings.append(map_parts)
 
 
     config_dir = os.getenv("HUE_CONF_DIR", get_desktop_root("conf"))
     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_dir = os.getcwd()
 
 
     app_template = os.path.abspath(os.path.join(os.path.dirname(__file__),'..','..','app_template'))
     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)
     app_dir = os.path.join(app_dir, app_name)
 
 
     if not os.path.exists(app_template):
     if not os.path.exists(app_template):
       raise CommandError(_("The template path, %(path)r, does not exist.") % {'path': app_template})
       raise CommandError(_("The template path, %(path)r, does not exist.") % {'path': app_template})
 
 
     if not re.search(r'^\w+$', app_name):
     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:
     try:
       os.makedirs(app_dir)
       os.makedirs(app_dir)
     except OSError, e:
     except OSError, e:

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

@@ -131,7 +131,7 @@ class ClusterMiddleware(object):
     try:
     try:
       request.fs = cluster.get_hdfs(request.fs_ref)
       request.fs = cluster.get_hdfs(request.fs_ref)
     except KeyError:
     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.user.is_authenticated():
       if request.fs is not None:
       if request.fs is not None:
@@ -235,16 +235,16 @@ class AppSpecificMiddleware(object):
       try:
       try:
           dot = middleware_path.rindex('.')
           dot = middleware_path.rindex('.')
       except ValueError:
       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:]
       mw_module, mw_classname = middleware_path[:dot], middleware_path[dot+1:]
       try:
       try:
           mod = __import__(mw_module, {}, {}, [''])
           mod = __import__(mw_module, {}, {}, [''])
       except ImportError, e:
       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:
       try:
           mw_class = getattr(mod, mw_classname)
           mw_class = getattr(mod, mw_classname)
       except AttributeError:
       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:
       try:
         mw_instance = mw_class()
         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>
         ${_('Configuration files located in')} <code>${conf_dir}</code>
         <br/><br/>
         <br/><br/>
         % if error_list:
         % if error_list:
-          <h2>${_('Potential misconfiguration detected. Please fix and restart HUE.')}</h2>
+          <h2>${_('Potential misconfiguration detected. Fix and restart Hue.')}</h2>
           <br/>
           <br/>
             <table class="table table-striped">
             <table class="table table-striped">
           % for confvar, error in error_list:
           % for confvar, error in error_list:
@@ -52,7 +52,7 @@ ${layout.menubar(section='check_config')}
           % endfor
           % endfor
         </table>
         </table>
         % else:
         % else:
-          <h2>${_('All OK. Configuration check passed!')}</h2>
+          <h2>${_('All OK. Configuration check passed.')}</h2>
         % endif
         % endif
 
 
     </div>
     </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="row">
 			<div class="span6 offset3">
 			<div class="span6 offset3">
 				<div class="alert alert-block">
 				<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>
 			</div>
 		</div>
 		</div>

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

@@ -88,10 +88,10 @@ def download_log_view(request):
         response['Content-Length'] = length
         response['Content-Length'] = length
         return response
         return response
       except Exception, e:
       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 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)
 @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})
         LOG.info(_('%(remote_dst)s already exists. Skipping.') % {'remote_dst': remote_dst})
         return
         return
       else:
       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)
       src = file(local_src)
       try:
       try:
@@ -278,14 +278,14 @@ class Hdfs(object):
           while chunk:
           while chunk:
             self.append(remote_dst, chunk)
             self.append(remote_dst, chunk)
             chunk = src.read(chunk_size)
             chunk = src.read(chunk_size)
-          LOG.info(_('Copied %s -> %s') % (local_src, remote_dst))
+          LOG.info(_('Copied %s -> %s.') % (local_src, remote_dst))
         except:
         except:
-          LOG.error(_('Copying %s -> %s failed') % (local_src, remote_dst))
+          LOG.error(_('Copying %s -> %s failed.') % (local_src, remote_dst))
           raise
           raise
       finally:
       finally:
         src.close()
         src.close()
     else:
     else:
-      LOG.info(_('Skipping %s (not a file)') % local_src)
+      LOG.info(_('Skipping %s (not a file).') % local_src)
 
 
   def exists(self):
   def exists(self):
     raise NotImplementedError(_("%(function)s has not been implemented.") % {'function': 'exists'})
     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(
 OOZIE_URL = Config(
   key='oozie_url',
   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',
   default='http://localhost:11000/oozie',
   type=str)
   type=str)
 
 
 SECURITY_ENABLED = Config(
 SECURITY_ENABLED = Config(
   key="security_enabled",
   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,
   default=False,
   type=coerce_bool)
   type=coerce_bool)
 
 
 REMOTE_DEPLOYMENT_DIR = Config(
 REMOTE_DEPLOYMENT_DIR = Config(
   key="remote_deployement_dir",
   key="remote_deployement_dir",
   default="/user/hue/oozie/deployments",
   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():
   for cluster in get_all_hdfs().values():
     res.extend(validate_path(REMOTE_DEPLOYMENT_DIR, is_dir=True, fs=cluster,
     res.extend(validate_path(REMOTE_DEPLOYMENT_DIR, is_dir=True, fs=cluster,
                              message=_('The deployment directory of Oozie workflows does not exist. '
                              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,
     res.extend(validate_path(ConfigMock('/user/oozie/share/lib'), is_dir=True, fs=cluster,
                              message=_('Oozie Share Lib not installed in default location.')))
                              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):
   def __str__(self):
     if self.oozie_id:
     if self.oozie_id:
-      res = "Submission for job '%s'" % (self.oozie_id,)
+      res = "Submission for job '%s'." % (self.oozie_id,)
     else:
     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:
     if self.oozie_id:
       res += " -- " + self.oozie_id
       res += " -- " + self.oozie_id
     return res
     return res
@@ -114,7 +114,7 @@ class Submission(object):
     try:
     try:
       deployment_dir = self._create_deployment_dir()
       deployment_dir = self._create_deployment_dir()
     except Exception, ex:
     except Exception, ex:
-      msg = _("Failed to access deployment directory")
+      msg = _("Failed to access deployment directory.")
       LOG.exception(msg)
       LOG.exception(msg)
       raise PopupException(message=msg, detail=str(ex))
       raise PopupException(message=msg, detail=str(ex))
 
 
@@ -159,12 +159,12 @@ class Submission(object):
     try:
     try:
       statbuf = self.fs.stats(path)
       statbuf = self.fs.stats(path)
       if not statbuf.isDir:
       if not statbuf.isDir:
-        msg = _("Path is not a directory: %s") % (path,)
+        msg = _("Path is not a directory: %s.") % (path,)
         LOG.error(msg)
         LOG.error(msg)
         raise Exception(msg)
         raise Exception(msg)
     except IOError, ex:
     except IOError, ex:
       if ex.errno != errno.ENOENT:
       if ex.errno != errno.ENOENT:
-        msg = _("Error accessing directory '%s': %s") % (path, ex)
+        msg = _("Error accessing directory '%s': %s.") % (path, ex)
         LOG.exception(msg)
         LOG.exception(msg)
         raise IOError(ex.errno, 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):
   def check_request_permission(self, request):
     """Raise PopupException if request user doesn't have permission to modify workflow"""
     """Raise PopupException if request user doesn't have permission to modify workflow"""
     if not request.user.is_superuser and request.user.username != self.user:
     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.") %
       raise PopupException(_("Permission denied. User %(username)s cannot modify user %(user)s's job.") %
                            dict(username=request.user.username, user=self.user))
                            dict(username=request.user.username, user=self.user))