/usr/bin/utf8migrationtool is in utf8-migration-tool 0.5.8.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #!/usr/bin/python
import sys, locale, os, gtk, gobject
try:
locale.setlocale(locale.LC_ALL, '')
except:
pass
sys.path.append("/usr/share/utf8-migration-tool/pylib")
import configure
from wizard.wizard import Wizard
from gdmConfigParser import gdmConfigParser
w = Wizard()
w.load_steps()
section = "Desktop"
option = "Language"
dmrclocale = ""
def findEncoding(locale):
f = open("/usr/share/i18n/SUPPORTED")
for line in f.readlines():
if line.split(" ")[0] == locale:
return line.split(" ")[1].strip()
print "Locale '%s' does not exist in /usr/share/i18n/SUPPORTED."%locale
return None
def getconfig():
config = gdmConfigParser()
try:
config.readfp(open(os.path.expanduser('~/.dmrc')))
except :
print "Error while reading ~/.dmrc:", sys.exc_info()[1]
print "Continuing anyway."
return config
dmrc = getconfig()
currentEncoding = ""
if not dmrc.has_section(section):
dmrc.add_section(section)
if not dmrc.has_option(section, option):
loc = "%s.%s"
dmrc.set(section, option, locale.getlocale(locale.LC_MESSAGES)[0])
currentEncoding = locale.getlocale(locale.LC_MESSAGES)[1]
dmrclocale = dmrc.get(section, option)
if currentEncoding == "" or currentEncoding == None:
currentEncoding = findEncoding(dmrclocale)
if currentEncoding != None:
currentEncoding = currentEncoding.upper()
if currentEncoding == "" or currentEncoding == None:
dialog = gtk.MessageDialog(
parent = None,
flags = gtk.DIALOG_DESTROY_WITH_PARENT,
type = gtk.MESSAGE_INFO,
buttons = gtk.BUTTONS_OK,
message_format = "Your current encoding was not found, or you are using the C locale. Please pick a supported language from /usr/share/i18n/SUPPORTED and log in again.")
dialog.set_title('No UTF8 equivalent locale')
dialog.connect('response', lambda dialog, response: sys.exit(1))
dialog.show()
gtk.main()
w['Login'].currentLocale = dmrclocale
w['Login'].currentEncoding = currentEncoding
w['FileNameConversion'].currentEncoding = currentEncoding
# If the current encoding is not UTF-8, append .UTF-8 to the current
# locale (and remove the locale's codeset or modifier first).
# Also, if the current encoding is UTF-8, but if according to
# /usr/share/i18n/SUPPORTED, the current locale is not UTF-8, append the
# .UTF-8 suffix. The latter can happen when the current locale is guessed
# with getlocale().
if currentEncoding != "UTF-8" or findEncoding(dmrclocale) != "UTF-8":
import sre
match = sre.match("^([^.@]*)(\.[^@]*)?(@.*)?$", w['Login'].currentLocale)
w['Login'].newLocale = match.group(1) + ".UTF-8"
if match.group(3) and match.group(3) != "@euro":
w['Login'].newLocale += match.group(3)
else:
w['Login'].newLocale = w['Login'].currentLocale
w['Login'].newEncoding = "UTF-8"
def change_setup(self, user_data):
w = user_data
try:
dmrc.set(section, option, w['Login'].getNewLocale())
f = open(os.path.expanduser('~/.dmrc'), "w")
dmrc.write(f)
f.close()
except:
print "Error while writing the new ~/.dmrc:", sys.exc_info()[1]
for (oldfile, newfile) in w["FileNameConversion"].get_files():
# FIXME: rename all the files?
# or only the selected ones?
if os.path.exists(newfile):
print "'%s' already exists. Do not rename '%s' to '%s'."%(newfile, oldfile, newfile)
else:
try:
os.rename(oldfile, newfile)
except:
print "Cannot rename '%s' to '%s': %s"%(oldfile,
newfile,
sys.exc_info()[1])
w.connect("finished", change_setup, w)
w.run(True, main=True)
|