Index: /main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py	(revision 7873)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/utils/utils.py	(revision 7874)
@@ -38,4 +38,36 @@
     return True
 
+#: A list of phone prefixes (order num, country, prefix).
+#: Items with same order num will be sorted alphabetically.
+#: The lower the order num, the higher the precedence.
+INT_PHONE_PREFIXES = [
+    (99, _('Germany'), '49'),
+    ( 1, _('Nigeria'), '234'),
+    (99, _('U.S.'), '1'),
+    ]
+
+def sorted_phone_prefixes(data = INT_PHONE_PREFIXES, request=None):
+    """Sorted tuples of phone prefixes.
+
+    Ordered as shown above and formatted for use in select boxes.
+
+    If request is given, we'll try to translate all country names in
+    order to sort alphabetically correctly.
+
+    XXX: This is a function (and not a constant) as different
+    languages might give different orders. This is not tested yet.
+
+    XXX: If we really want to use alphabetic ordering here, we might
+    think about caching results of translations.
+    """
+    if request is not None:
+        data = [
+            (x, translate(y, context=request), z)
+            for x, y, z in data]
+    return tuple([
+        ('%s (+%s)' % (x[1],x[2]), '+%s' % x[2])
+        for x in sorted(data)
+        ])
+
 class KofaUtils(grok.GlobalUtility):
     """A collection of parameters and methods subject to customization.
@@ -57,9 +89,8 @@
         }
 
-    INT_PHONE_PREFIXES = {
-            _('Germany'): (2, '49'),
-            _('Nigeria'): (1, '234'),
-            _('U.S.'): (3, '1'),
-            }
+    #: A function to return
+    @classmethod
+    def sorted_phone_prefixes(cls, data=INT_PHONE_PREFIXES, request=None):
+        return sorted_phone_prefixes(data, request)
 
     EXAM_SUBJECTS_DICT = {
Index: /main/waeup.kofa/trunk/src/waeup/kofa/widgets/phonewidget.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/widgets/phonewidget.py	(revision 7873)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/widgets/phonewidget.py	(revision 7874)
@@ -21,26 +21,12 @@
 import grok
 import re
-from zope.component import getUtility
+from zope.component import queryUtility
 from zope.formlib.interfaces import MissingInputError, InputErrors
 from zope.interface import Interface
 from zope.formlib.textwidgets import (
     TextWidget, renderElement, ConversionError)
+from waeup.kofa.interfaces import IKofaUtils
 from waeup.kofa.interfaces import MessageFactory as _
-
-class IInternationalPhonePrefixes(Interface):
-    """A dict of international phone number prefixes.
-    """
-
-class PhonePrefixes(grok.GlobalUtility):
-    grok.implements(IInternationalPhonePrefixes)
-
-    def title_value_list(self):
-        try:
-            from waeup.kofa.interfaces import IKofaUtils
-            prefixes = getUtility(IKofaUtils).INT_PHONE_PREFIXES
-            data = sorted(prefixes.items(), key=lambda value: value[1][0])
-        except:
-            data = [('Country of Nowhere',(1, '234'))]
-        return [('%s (+%s)' % (x,y[1]), '+%s' % y[1]) for x,y in data]
+from waeup.kofa.utils.utils import KofaUtils
 
 RE_INT_PREFIX = re.compile('^\+\d+')
@@ -53,8 +39,9 @@
 
     def _renderPrefixWidget(self, value):
-        prefixes = getUtility(
-            IInternationalPhonePrefixes).title_value_list()
+        prefix_func = getattr(
+            queryUtility(IKofaUtils), 'sorted_phone_prefixes',
+            KofaUtils.sorted_phone_prefixes)
         options = []
-        for ptitle, pval in prefixes:
+        for ptitle, pval in prefix_func(request=self.request):
             selected = ''
             if value == pval:
Index: /main/waeup.kofa/trunk/src/waeup/kofa/widgets/tests/test_phonewidget.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/widgets/tests/test_phonewidget.py	(revision 7873)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/widgets/tests/test_phonewidget.py	(revision 7874)
@@ -30,5 +30,5 @@
 from zope.publisher.browser import TestRequest
 from zope.schema.interfaces import ITextLine
-from waeup.kofa.widgets.phonewidget import PhoneWidget, PhonePrefixes
+from waeup.kofa.widgets.phonewidget import PhoneWidget
 
 # Dummy content
@@ -74,16 +74,4 @@
         (ITextLine, TextWidget),
         ]
-
-    def setUp(self):
-        super(PhoneWidgetTests, self).setUp()
-        # register the phone prefixes utility
-        self.gsm = getGlobalSiteManager()
-        self.reg_prefixes = PhonePrefixes()
-        self.gsm.registerUtility(self.reg_prefixes)
-        return
-
-    def tearDown(self):
-        self.gsm.unregisterUtility(self.reg_prefixes)
-        return
 
     def test_display_editform(self):
