diff --git a/ckanext/qa/plugin.py b/ckanext/qa/plugin.py
index 2109488363349916a76c1d3cd474330895bdbb7b..898adcf2e0faaf3e0ca7cb03ca08430086d7fe10 100644
--- a/ckanext/qa/plugin.py
+++ b/ckanext/qa/plugin.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 import logging
 import types
 
diff --git a/ckanext/qa/tasks.py b/ckanext/qa/tasks.py
index 20d62261f3a86690bf7be5d60ea3bd728ce4be65..58126eddc71f6214e90870712c839efbe53fbb99 100644
--- a/ckanext/qa/tasks.py
+++ b/ckanext/qa/tasks.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 '''
 Provide some Quality Assurance by scoring datasets against Sir Tim
 Berners-Lee\'s five stars of openness
@@ -28,12 +29,12 @@ OPENNESS_SCORE_DESCRIPTION = {
     4: 'Ontologically represented',
     5: 'Fully Linked Open Data as appropriate',
 '''
-    0: 'Ni dosegljivo ali pa licenca ni odprta',
-    1: 'Dosegljivo ter odprta licenca',
-    2: 'Strojno-berljiv format',
-    3: 'Odprt ter standardiziran format',
-    4: 'Ontološko predstavljiv',
-    5: 'Popolnoma povezani odprti podatki',
+    0: u'Ni dosegljivo ali pa licenca ni odprta',
+    1: u'Dosegljivo ter odprta licenca',
+    2: u'Strojno-berljiv format',
+    3: u'Odprt ter standardiziran format',
+    4: u'Ontološko predstavljiv',
+    5: u'Popolnoma povezani odprti podatki',
 }
 
 def load_config(ckan_ini_filepath):
@@ -205,7 +206,7 @@ def resource_score(resource, log):
                     if score == None:
                         log.warning('Could not score resource: "%s" with url: "%s"',
                                     resource.id, resource.url)
-                        score_reasons.append('Could not understand the file format, therefore score is 1.')
+                        score_reasons.append(u'Formata datoteke ni bilo mogoče prepoznati, zato je ocena 1.')
                         score = 1
                         if format_ == None:
                             # use any previously stored format value for this resource
@@ -214,7 +215,7 @@ def resource_score(resource, log):
         format_ = format_ or None
     except Exception, e:
         log.error('Unexpected error while calculating openness score %s: %s\nException: %s', e.__class__.__name__,  unicode(e), traceback.format_exc())
-        score_reason = "Unknown error: %s" % str(e)
+        score_reason = u"Neznana napaka: %s" % str(e)
         raise
 
     # Even if we can get the link, we should still treat the resource
@@ -228,7 +229,7 @@ def resource_score(resource, log):
     else:
         package = resource.package
     if score > 0 and not package.isopen():
-        score_reason = 'License not open'
+        score_reason = u'Licenca ni odprta'
         score = 0
 
     log.info('Score: %s Reason: %s', score, score_reason)
@@ -253,24 +254,24 @@ def broken_link_error_message(archival):
             return date.strftime('%d/%m/%Y')
         else:
             return ''
-    messages = ['File could not be downloaded.',
-                'Reason: %s.' % archival.status,
-                'Error details: %s.' % archival.reason,
-                'Attempted on %s.' % format_date(archival.updated)]
+    messages = [u'Datoteke ni bilo mogoče prenesti.',
+                u'Vzrok: %s.' % archival.status,
+                u'Opis napake: %s.' % archival.reason,
+                u'Preverjeno na %s.' % format_date(archival.updated)]
     last_success = format_date(archival.last_success)
     if archival.failure_count == 1:
         if last_success:
-            messages.append('This URL worked the previous time: %s.' % last_success)
+            messages.append(u'Ta naslov je bil nazadnje dostopen %s.' % last_success)
         else:
-            messages.append('This was the first attempt.')
+            messages.append(u'To je bil prvi poizkus.')
     else:
-        messages.append('Tried %s times since %s.' % \
+        messages.append(u'%s poskusov od %s.' % \
                         (archival.failure_count,
                          format_date(archival.first_failure)))
         if last_success:
-            messages.append('This URL last worked on: %s.' % last_success)
+            messages.append(u'Ta naslov je bil nazadnje dostopen %s.' % last_success)
         else:
-            messages.append('This URL has not worked in the history of this tool.')
+            messages.append(u'Ta naslov ni bil nikoli uspešno dostopen s portala.')
     return ' '.join(messages)
 
 
@@ -305,12 +306,12 @@ def score_by_sniffing_data(archival, resource, score_reasons, log):
       * If it cannot score it, then score is None
     '''
     if not archival or not archival.cache_filepath:
-        score_reasons.append('This file had not been downloaded at the time of scoring it.')
+        score_reasons.append(u'Ta datoteka ob ocenjevanju ni bila prenešena.')
         return (None, None)
     # Analyse the cached file
     filepath = archival.cache_filepath
     if not os.path.exists(filepath):
-        score_reasons.append('Cache filepath does not exist: "%s".' % filepath)
+        score_reasons.append(u'Lokalna kopija ne obstaja: "%s".' % filepath)
         return (None, None)
     else:
         if filepath:
@@ -318,24 +319,24 @@ def score_by_sniffing_data(archival, resource, score_reasons, log):
             score = lib.resource_format_scores().get(sniffed_format['format']) \
                 if sniffed_format else None
             if sniffed_format:
-                score_reasons.append('Content of file appeared to be format "%s" which receives openness score: %s.' % (sniffed_format['format'], score))
+                score_reasons.append(u'Zbirka vsebuje datoteke formata %s, kar zadošča za oceno %s.' % (sniffed_format['format'], score))
                 return score, sniffed_format['format']
             else:
-                score_reasons.append('The format of the file was not recognized from its contents.')
+                score_reasons.append(u'Formata datoteke ni bilo mogoče prepoznati iz njene vsebine.')
                 return (None, None)
         else:
             # No cache_url
             if archival.status_id == Status.by_text('Chose not to download'):
-                score_reasons.append('File was not downloaded deliberately. Reason: %s. Using other methods to determine file openness.' % \
+                score_reasons.append(u'Datoteka namenoma ni bila prenešena. Vzrok: %s. Uporabljene so druge metode določanja odprtosti.' % \
                                      archival.reason)
                 return (None, None)
             elif archival.is_broken is None and archival.status_id:
                 # i.e. 'Download failure' or 'System error during archival'
-                score_reasons.append('A system error occurred during downloading this file. Reason: %s. Using other methods to determine file openness.' % \
+                score_reasons.append(u'Pri prenosu datoteke je prišlo do sistemske napake. Vzrok: %s. Uporabljene so druge metode določanja odprtosti.' % \
                                      archival.reason)
                 return (None, None)
             else:
-                score_reasons.append('This file had not been downloaded at the time of scoring it.')
+                score_reasons.append(u'Ta datoteka ob ocenjevanju ni bila prenešena.')
                 return (None, None)
 
 
@@ -352,20 +353,20 @@ def score_by_url_extension(resource, score_reasons, log):
     '''
     extension_variants_ = extension_variants(resource.url.strip())
     if not extension_variants_:
-        score_reasons.append('Could not determine a file extension in the URL.')
+        score_reasons.append(u'Končnice datoteke ni bilo mogoče razbrati iz naslova URL')
         return (None, None)
     for extension in extension_variants_:
         format_ = format_get(extension)
         if format_:
             score = lib.resource_format_scores().get(format_)
             if score:
-                score_reasons.append('URL extension "%s" relates to format "%s" and receives score: %s.' % (extension, format_, score))
+                score_reasons.append(u'Končnica datoteke %s ustreza formatu %s in dobi oceno: %s.' % (extension, format_, score))
                 return score, format_
             else:
                 score = 1
-                score_reasons.append('URL extension "%s" relates to format "%s" but a score for that format is not configured, so giving it default score %s.' % (extension, format_, score))
+                score_reasons.append(u'Končnica datoteke %s ustreza formatu %s, vendar ocena za ta format ni določena, zato dobi privzeto oceno %s.' % (extension, format_, score))
                 return score, format_
-        score_reasons.append('URL extension "%s" is an unknown format.' % extension)
+        score_reasons.append(u'Končnica datoteke %s ne pripada znanemu formatu.' % extension)
     return (None, None)
 
 def extension_variants(url):
@@ -401,15 +402,15 @@ def score_by_format_field(resource, score_reasons, log):
     '''
     format_field = resource.format or ''
     if not format_field:
-        score_reasons.append('Format field is blank.')
+        score_reasons.append(u'Polje formata je prazno.')
         return (None, None)
     format_tuple = ckan_helpers.resource_formats().get(format_field.lower()) or \
         ckan_helpers.resource_formats().get(lib.munge_format_to_be_canonical(format_field))
     if not format_tuple:
-        score_reasons.append('Format field "%s" does not correspond to a known format.' % format_field)
+        score_reasons.append(u'Polje formata %s ne pripada znanemu formatu.' % format_field)
         return (None, None)
     score = lib.resource_format_scores().get(format_tuple[1])
-    score_reasons.append('Format field "%s" receives score: %s.' %
+    score_reasons.append(u'Polje formata %s dobi oceno %s.' %
                          (format_field, score))
     return (score, format_tuple[1])