-
♡ recommended by @fuze
-
все, нашел, почему гажим не работает: он не работает на учетных записях пользователей, которые написаны не английскими буквами/2 · Reply
-
@dicson, нет уж, я лучше попробую гажим добить, вот только дождусь когда все скачается
-
@dicson, если переименовать учетку, то каталог пользователя не переименуется. Качаю питон и библы, буду в сорсах копаться, надо все-таки этот баг пофиксить, ибо не тру это...
-
@BalakinUser, может баг в инсталлере. или в его скрипте. ну вскрытие покажет
-
@dicson, ну я для теста попробовал создать пользователя test, на нем гажим нормально работает
-
@dicson, в том то и дело, вот решил побороть свою лень и совершить подвиг :)
-
@BalakinUser, я хз. а ты попробй фиксировать нажать. он там патч рисует(ну на лине так).
-
@dicson, в общем, проблема была в connection_zeroconf.py, там строку self.username = unicode(getpass.getuser()) заменил на self.username = unicode(getpass.getuser(), locale.getpreferredencoding()) и все стало гуд, а вот с шелвом не понятно, там дальше по цепочке передается нормальное юникодовое имя файла, но открыть его оно почему-то не может...
-
@dicson, да, точно правильные, папка создается нормально, а вот файлы в ней открыться и создаться не могут
-
@dicson, не знаю, если запустить гажим на пользователе с именем test, то все работает нормально
-
-
@dicson, хех, точно,
fname = 'C:/Users/Балакин Юрий/test'
import shelve
shelve.open(fname)
при сохранении py-файла в cp1251 нормально создает, а при сохранении в utf-8 не может создать файл. Пойду копать дальше. -
@BalakinUser, self.plugin.short_name надо конвертить из строки self.FILE_PATH = os.path.join(gajim.PLUGINS_CONFIG_DIR, self.plugin.short_name)
-
@dicson, нет, надо в self.FILE_PATH записать имя не в юникоде, а в cp1251 (ну это в моем случае)
-
@BalakinUser, gajim.PLUGINS_CONFIG_DIR там и так норм похоже,а вот self.plugin.short_name наверное кривое
-
@dicson, нет, имя файла там точно нормальное, я проверял выводом в лог. Просто кодировка не та.
-
@dicson, кодировка имени файла для передачи в функцию shelve.open
-
@dicson, в self.plugin.short_name не используется русских букв. Русские буквы используются в пути к папке где конфиги лежат
-
@BalakinUser, раз папка создалась для конфигов,то путь нормальный же....
-
@dicson, я хз, имена файлов в юникоде почему-то не устраивают только shelve.open, в остальных функциях все в порядке с этим
-
@BalakinUser, или не саму shelve.open, а какую-то функцию, которую shelve.open вызывает
-
@dicson, а как тогда можно переделать юникодовую строку в cp1251-строку?
self.FILE_PATH = os.path.join(gajim.PLUGINS_CONFIG_DIR, self.plugin.short_name).decode('cp1251')
не получается, все равно в self.FILE_PATH остается юникодовая строка -
@dicson, тогда уж скорее было бы gajim.PLUGINS_CONFIG_DIR.decode('cp1251')
-
@BalakinUser, PLUGINS_CONFIG_DIR похоже в utf-8. а вот имя в юникоде
-
@BalakinUser, self.plugin.short_name.encode('cp1251') может так...ппц короче с этими юникодами
-
@dicson, ну так патчик-то мой... И прав все-таки был я, потому что енкодится декоденное имя файла :)
-
@dicson, пришлось и жуйкоплагин немного подредактировать. Вот исправленная версия: dl.dropbox.com
-
@BalakinUser, хм. вся разница в том что убрал locale.bindtextdomain('JuickPlugin', locale_path). надо почитать,что в винде с геттекстом
-
@BalakinUser, хз, я правил его уже,не вижу больше ничего вроде. и пути я переделывал
-
@dicson, только описание. Да ничего, у меня с чтением английского текста проблем нет
-
@BalakinUser, locale_path = os.path.join(os.path.dirname(__file__), 'locales')
if os.name == 'nt':
lang = os.getenv('LANG')
if lang is None:
default_lang = locale.getdefaultlocale()[0]
if default_lang:
lang = default_lang
if lang:
os.environ['LANG'] = lang
gettext.bindtextdomain('JuickPlugin', locale_path)
else:
locale.bindtextdomain('JuickPlugin', locale_path)
наверное так )) -
@dicson, так не вылетает и никаких ошибок нет, но и русского текста больше не стало, как было только описание русское, так и осталось.
-
@dicson, Попробуй пожалуйста последний раз. если не будет,то я хз и хер с ним
locale_path = os.path.join(os.path.dirname(__file__), 'locales')
locale_path = locale_path.decode(locale.getpreferredencoding())
if os.name != 'nt':
locale.bindtextdomain('JuickPlugin', locale_path)
else:
gettext.bindtextdomain('JuickPlugin', locale_path)
try:
gett = gettext.Catalog('JuickPlugin', locale_path)
_ = gett.gettext
except:
pass