diff --git a/reviewboard/admin/forms.py b/reviewboard/admin/forms.py
index 93c4f77e828788c70c03cdb69bf520045947d157..c64fc0721ac2f11beb76142e5adf568a2650512d 100644
--- a/reviewboard/admin/forms.py
+++ b/reviewboard/admin/forms.py
@@ -38,7 +38,8 @@ from django.core.exceptions import ValidationError
 from django.core.mail import send_mail
 from django.utils import six
 from django.utils.six.moves.urllib.parse import urlparse
-from django.utils.translation import ugettext as _
+from django.utils.translation import (ugettext,
+                                      ugettext_lazy as _)
 from djblets.cache.backend_compat import normalize_cache_backend
 from djblets.cache.forwarding_backend import DEFAULT_FORWARD_CACHE_ALIAS
 from djblets.forms.fields import TimeZoneField
@@ -168,12 +169,12 @@ class GeneralSettingsForm(SiteSettingsForm):
 
         if settings.DEBUG:
             self.fields['cache_type'].choices += (
-                ('locmem', _('Local memory cache')),
+                ('locmem', ugettext('Local memory cache')),
             )
 
         if cache_type == 'custom':
             self.fields['cache_type'].choices += (
-                ('custom', _('Custom')),
+                ('custom', ugettext('Custom')),
             )
             cache_locations = []
         elif cache_type != 'locmem':
@@ -256,7 +257,7 @@ class GeneralSettingsForm(SiteSettingsForm):
 
         if self.fields['cache_host'].required and not cache_host:
             raise ValidationError(
-                _('A valid cache host must be provided.'))
+                ugettext('A valid cache host must be provided.'))
 
         return cache_host
 
@@ -266,7 +267,7 @@ class GeneralSettingsForm(SiteSettingsForm):
 
         if self.fields['cache_path'].required and not cache_path:
             raise ValidationError(
-                _('A valid cache path must be provided.'))
+                ugettext('A valid cache path must be provided.'))
 
         return cache_path
 
@@ -615,9 +616,10 @@ class EMailSettingsForm(SiteSettingsForm):
             else:
                 to_user = siteconfig.get('site_admin_email')
 
-            send_mail(_('E-mail settings test'),
-                      _('This is a test of the e-mail settings for the Review '
-                        'Board server at %s.') % site_url,
+            send_mail(ugettext('E-mail settings test'),
+                      ugettext('This is a test of the e-mail settings '
+                               'for the Review Board server at %s.')
+                      % site_url,
                       siteconfig.get('mail_default_from'),
                       [to_user],
                       fail_silently=True)
@@ -796,14 +798,14 @@ class LoggingSettingsForm(SiteSettingsForm):
         logging_dir = self.cleaned_data['logging_directory']
 
         if not os.path.exists(logging_dir):
-            raise ValidationError(_("This path does not exist."))
+            raise ValidationError(ugettext("This path does not exist."))
 
         if not os.path.isdir(logging_dir):
-            raise ValidationError(_("This is not a directory."))
+            raise ValidationError(ugettext("This is not a directory."))
 
         if not os.access(logging_dir, os.W_OK):
             raise ValidationError(
-                _("This path is not writable by the web server."))
+                ugettext("This path is not writable by the web server."))
 
         return logging_dir
 
@@ -851,12 +853,12 @@ class SSHSettingsForm(forms.Form):
                 SSHClient().generate_user_key()
             except IOError as e:
                 self.errors['generate_key'] = forms.util.ErrorList([
-                    _('Unable to write SSH key file: %s') % e
+                    ugettext('Unable to write SSH key file: %s') % e
                 ])
                 raise
             except Exception as e:
                 self.errors['generate_key'] = forms.util.ErrorList([
-                    _('Error generating SSH key: %s') % e
+                    ugettext('Error generating SSH key: %s') % e
                 ])
                 raise
         elif self.cleaned_data['keyfile']:
@@ -864,12 +866,12 @@ class SSHSettingsForm(forms.Form):
                 SSHClient().import_user_key(files['keyfile'])
             except IOError as e:
                 self.errors['keyfile'] = forms.util.ErrorList([
-                    _('Unable to write SSH key file: %s') % e
+                    ugettext('Unable to write SSH key file: %s') % e
                 ])
                 raise
             except Exception as e:
                 self.errors['keyfile'] = forms.util.ErrorList([
-                    _('Error uploading SSH key: %s') % e
+                    ugettext('Error uploading SSH key: %s') % e
                 ])
                 raise
 
@@ -884,7 +886,7 @@ class SSHSettingsForm(forms.Form):
                 SSHClient().delete_user_key()
             except Exception as e:
                 self.errors['delete_key'] = forms.util.ErrorList([
-                    _('Unable to delete SSH key file: %s') % e
+                    ugettext('Unable to delete SSH key file: %s') % e
                 ])
                 raise
 
@@ -1226,9 +1228,9 @@ class SearchSettingsForm(SiteSettingsForm):
 
         if not search_backend:
             raise ValidationError(
-                _('The search engine "%s" could not be found. If this is '
-                  'provided by an extension, you will have to make sure that '
-                  'extension is enabled..')
+                ugettext('The search engine "%s" could not be found. '
+                         'If this is provided by an extension, you will have '
+                         'to make sure that extension is enabled.')
                 % search_backend_id
             )
 
diff --git a/reviewboard/reviews/models/default_reviewer.py b/reviewboard/reviews/models/default_reviewer.py
index 1df6562a30816370364b66fd2790c28e18c74b66..b99f7569e4dcc9b068e5aa4f6411636632568e8d 100644
--- a/reviewboard/reviews/models/default_reviewer.py
+++ b/reviewboard/reviews/models/default_reviewer.py
@@ -69,3 +69,5 @@ class DefaultReviewer(models.Model):
 
     class Meta:
         app_label = 'reviews'
+        verbose_name = _('default reviewer')
+        verbose_name_plural = _('default reviewers')
diff --git a/reviewboard/reviews/models/diff_comment.py b/reviewboard/reviews/models/diff_comment.py
index 6906991c6a084e721a479a90a06902cb20c74087..0c6d2fe8370fce96229dbb44c07cca27b2ecaa61 100644
--- a/reviewboard/reviews/models/diff_comment.py
+++ b/reviewboard/reviews/models/diff_comment.py
@@ -41,3 +41,8 @@ class Comment(BaseComment):
             self.get_review_request().get_absolute_url(),
             revision_path, self.filediff.id, self.filediff.id,
             self.first_line)
+
+    class Meta:
+        app_label = 'reviews'
+        verbose_name = _('comment')
+        verbose_name_plural = _('comments')
diff --git a/reviewboard/reviews/models/file_attachment_comment.py b/reviewboard/reviews/models/file_attachment_comment.py
index 92ccf4506253368d3cccd319d947ff7839d92d09..184a6e56262d3de7cdd60f7a45d30eccd8b2d2ea 100644
--- a/reviewboard/reviews/models/file_attachment_comment.py
+++ b/reviewboard/reviews/models/file_attachment_comment.py
@@ -95,3 +95,8 @@ class FileAttachmentComment(BaseComment):
                               review_ui, e, exc_info=1)
         else:
             return self.file_attachment.display_name
+
+    class Meta:
+        app_label = 'reviews'
+        verbose_name = _('file attachment comment')
+        verbose_name_plural = _('file attachment comments')
diff --git a/reviewboard/reviews/models/general_comment.py b/reviewboard/reviews/models/general_comment.py
index 5244dc632a7639c298c9e288e0cd21b8a7ef495d..cbd9d70b14666d520f3d87ba8f6387c1fe76e533 100644
--- a/reviewboard/reviews/models/general_comment.py
+++ b/reviewboard/reviews/models/general_comment.py
@@ -2,6 +2,8 @@ from __future__ import unicode_literals
 
 from reviewboard.reviews.models.base_comment import BaseComment
 
+from django.utils.translation import ugettext_lazy as _
+
 
 class GeneralComment(BaseComment):
     """A comment on a review request that is not tied to any code or file.
@@ -16,3 +18,8 @@ class GeneralComment(BaseComment):
 
     def get_absolute_url(self):
         return self.get_review_url()
+
+    class Meta:
+        app_label = 'reviews'
+        verbose_name = _('general comment')
+        verbose_name_plural = _('general comments')
diff --git a/reviewboard/reviews/models/group.py b/reviewboard/reviews/models/group.py
index 7f0a32b0f747eb2592ae0cbda0d741c5b185d83d..d9889e0132f107cb3e0c6d5bcd2f0036df581093 100644
--- a/reviewboard/reviews/models/group.py
+++ b/reviewboard/reviews/models/group.py
@@ -144,5 +144,6 @@ class Group(models.Model):
     class Meta:
         app_label = 'reviews'
         unique_together = (('name', 'local_site'),)
-        verbose_name = _("review group")
+        verbose_name = _('review group')
+        verbose_name_plural = _('review groups')
         ordering = ['name']
diff --git a/reviewboard/reviews/models/review.py b/reviewboard/reviews/models/review.py
index 97b9286b5923116a51db8cdea17afd14e48d9e98..d4d9d17d8d01ad281072d694a51cc71f382282b9 100644
--- a/reviewboard/reviews/models/review.py
+++ b/reviewboard/reviews/models/review.py
@@ -331,3 +331,5 @@ class Review(models.Model):
         app_label = 'reviews'
         ordering = ['timestamp']
         get_latest_by = 'timestamp'
+        verbose_name = _('review')
+        verbose_name_plural = _('reviews')
diff --git a/reviewboard/reviews/models/review_request.py b/reviewboard/reviews/models/review_request.py
index a1ed3adc86639db35f81ebe7c4c7805a8f8ab5a3..0155fdb79da6805229f6d15064254a9b160543a1 100644
--- a/reviewboard/reviews/models/review_request.py
+++ b/reviewboard/reviews/models/review_request.py
@@ -1091,3 +1091,5 @@ class ReviewRequest(BaseReviewRequestDetails):
             ("can_submit_as_another_user", "Can submit as another user"),
             ("can_edit_reviewrequest", "Can edit review request"),
         )
+        verbose_name = _('review request')
+        verbose_name_plural = _('review requests')
diff --git a/reviewboard/reviews/models/review_request_draft.py b/reviewboard/reviews/models/review_request_draft.py
index 22da084a015b6c1cc670e145785fac21af3357bf..9fb8c09db850f48fd1c5b98c37480c6e760e1697 100644
--- a/reviewboard/reviews/models/review_request_draft.py
+++ b/reviewboard/reviews/models/review_request_draft.py
@@ -473,3 +473,5 @@ class ReviewRequestDraft(BaseReviewRequestDetails):
     class Meta:
         app_label = 'reviews'
         ordering = ['-last_updated']
+        verbose_name = _('review request draft')
+        verbose_name_plural = _('review request drafts')
diff --git a/reviewboard/reviews/models/screenshot.py b/reviewboard/reviews/models/screenshot.py
index dab2ccc92eca68157e9c9de5601dc2802869f3a8..948fadd896fed488c9b2586b7d64c4d11702ba5a 100644
--- a/reviewboard/reviews/models/screenshot.py
+++ b/reviewboard/reviews/models/screenshot.py
@@ -102,3 +102,5 @@ class Screenshot(models.Model):
 
     class Meta:
         app_label = 'reviews'
+        verbose_name = _('screenshot')
+        verbose_name_plural = _('screenshots')
diff --git a/reviewboard/reviews/models/screenshot_comment.py b/reviewboard/reviews/models/screenshot_comment.py
index 29efbd49ed074c0fc8f859d87c35c60a9ea049ef..8270adc57dc3aba27a5168aa66c3f2957006288b 100644
--- a/reviewboard/reviews/models/screenshot_comment.py
+++ b/reviewboard/reviews/models/screenshot_comment.py
@@ -36,3 +36,8 @@ class ScreenshotComment(BaseComment):
         """
         return '<img src="%s" width="%s" height="%s" alt="%s" />' % \
             (self.get_image_url(), self.w, self.h, escape(self.text))
+
+    class Meta:
+        app_label = 'reviews'
+        verbose_name = _('screenshot comment')
+        verbose_name_plural = _('screenshot comments')
diff --git a/reviewboard/reviews/models/status_update.py b/reviewboard/reviews/models/status_update.py
index 558fb7390d0e5e3304d7515db9e73d7e9985eeb8..94cfece2e44e277c61a4eb97714eac2cfe75bf9a 100644
--- a/reviewboard/reviews/models/status_update.py
+++ b/reviewboard/reviews/models/status_update.py
@@ -214,3 +214,5 @@ class StatusUpdate(models.Model):
         app_label = 'reviews'
         ordering = ['timestamp']
         get_latest_by = 'timestamp'
+        verbose_name = _('status update')
+        verbose_name_plural = _('status updates')
diff --git a/reviewboard/scmtools/admin.py b/reviewboard/scmtools/admin.py
index 62f6cacbe2abb0c2f50a6b79c9022701055c77f1..0b7d23a1891cfb0dd276ecacc390dfe09eb6b39c 100644
--- a/reviewboard/scmtools/admin.py
+++ b/reviewboard/scmtools/admin.py
@@ -89,6 +89,7 @@ class RepositoryAdmin(admin.ModelAdmin):
                 return '%s@%s' % (account.username, account.service.name)
 
         return ''
+    hosting.short_description = _('Hosting Service Account')
 
     def inline_actions(self, repository):
         s = ['<div class="admin-inline-actions">']
diff --git a/reviewboard/scmtools/models.py b/reviewboard/scmtools/models.py
index 79941067ccc5366489462d665d4061111a3a8268..ad9682858e23895fbe08c668e6fd05d492c6eedf 100644
--- a/reviewboard/scmtools/models.py
+++ b/reviewboard/scmtools/models.py
@@ -85,8 +85,8 @@ class Tool(models.Model):
 class Repository(models.Model):
     ENCRYPTED_PASSWORD_PREFIX = '\t'
 
-    name = models.CharField(max_length=64)
-    path = models.CharField(max_length=255)
+    name = models.CharField(_('Name'), max_length=64)
+    path = models.CharField(_('Path'), max_length=255)
     mirror_path = models.CharField(max_length=255, blank=True)
     raw_file_url = models.CharField(
         _('Raw file URL mask'),
