локализация в Python

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

локализация в Python

Непрочитанное сообщение Olej » 28 авг 2013, 23:41

Имеется в виду, естественно, локализация русскоязычных строк в Python.
И, в частности, в Python под Windows.
Потому как возникли сомнения ... viewtopic.php?f=31&t=3029&start=10#p8988:
Виктория писал(а): Windows XP SP3, Python 2.7.5,
...
Ещё и не получилось с печатью кириллицы, только вот так

Код: Выделить всё

С+РёС_Р>Р_ Р_С<РїР_Р>Р_РчР_РёР№ 2
С+РёС_Р>Р_ С+РёРєР>Р_Р_ Р_ Р_С<РїР_Р>Р_РчР_РёРё 10000000
============ РїР_С_Р>РчР_Р_Р_Р°С'РчР>С_Р_Р_Рч Р_С<РїР_Р>Р_РчР_РёРч ============
Р_С_РчР_С_ 6.19 С_РчРєС_Р_Р_
================ РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїР_С'Р_РєРё ================
Р_С_РчР_С_ 6.38 С_РчРєС_Р_Р_
=============== РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїС_Р_С+РчС_С_С< ===============
error: create child process
Там же далее:
Виктория писал(а):файл не редактировала. Запускала в far. Перенаправила вывод в файл, copypaste из редактора far (режим DOS). В режиме WIN "абрадакабра" другая.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 00:13

Пример приложения Python я возьму тот же, но в чуть более поздней модификации (чтобы не создавать там исключение).
Файл прилагается. Запускаться программа будет вот такой командой, именно с такими опциями (ключами), чтобы именно не вызывать исключение:

Код: Выделить всё

c:\Python-test\mthrs>mthrsw.py -mstm
...
1. Total Commander -> Инструменты -> Открыть командную консоль :
TC.JPG
2. FAR (ну, это и без моего комментария видно по значку в верхнем левом углу) :
FAR.JPG
3. консоль: Пуск -> Выполнить (здесь только выполнение не до конца, потому что после завершения приложения консоль не удерживается):
CONS.JPG
4. консоль: Пуск -> Программы -> Стандартные -> Командная строка :
CONS1.JPG
5. Python-оболочка IDLE (которую почему-то сильно любят в Windows) :
IDLE.JPG
P.S. Как видно (чтобы лучше было видно - щёлкните на картинке, она увеличится ;-) ) - поводов для беспокойства ни в одном случае особенно не видно.
Вложения
mthrsw.py
(2.81 КБ) 395 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 00:25

Olej писал(а):
Виктория писал(а): Ещё и не получилось с печатью кириллицы, только вот так

Код: Выделить всё

С+РёС_Р>Р_ Р_С<РїР_Р>Р_РчР_РёР№ 2
С+РёС_Р>Р_ С+РёРєР>Р_Р_ Р_ Р_С<РїР_Р>Р_РчР_РёРё 10000000
============ РїР_С_Р>РчР_Р_Р_Р°С'РчР>С_Р_Р_Рч Р_С<РїР_Р>Р_РчР_РёРч ============
Р_С_РчР_С_ 6.19 С_РчРєС_Р_Р_
================ РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїР_С'Р_РєРё ================
Р_С_РчР_С_ 6.38 С_РчРєС_Р_Р_
=============== РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїС_Р_С+РчС_С_С< ===============
error: create child process
Виктория писал(а):файл не редактировала. Запускала в far. Перенаправила вывод в файл, copypaste из редактора far (режим DOS). В режиме WIN "абрадакабра" другая.
Воссоздать вашу картину у меня не получилось даже используя ваш способ:

1. команда :

Код: Выделить всё

c:\Python-test\mthrs>mthrsw.py -mstm > mthrsw.far
2. редактор по F4 :
F4.JPG
Хотя по виду "абракадабры" я практически уверен, что дело в редакторе FAR (F4), в его настройках.
Вопрос только в том, что строки вывода в нескольких разнообразных кодировках не выглядят так как у вас показно, вот 1-я чтрока:
С+РёС_Р>Р_ Р_С<РїР_Р>Р_РчР_РёР№ 2
Что должно означать
число процессоров (ядер) = 2
Определённо это побайтовое представление UTF-8 русского текста где каждая русская литера представляется 2-мя байтами ("число" => "С+РёС_Р>Р_"). Но что это за кодировка я угадать не могу ;-)

P.S. Я специально нигде не копирую текст с экрана, а показываю скрин-шоты, чтобы не было сомнений, что именно так получалось, и изменения не внесены копированием.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 01:03

В отношении не консольных, а GUI программ.
Для быстрого теста делаем такое приложение (Python3), используя пакет tkinter, графика производится средствами Tcl/Tk:

Код: Выделить всё

from tkinter import *
 
tk = Tk()
tk.title( "привет, Вася!" )
tk.geometry( '300x40' )

def button_clicked():
    print( "привет, Вася!!" )
 
button=Button( tk, text="жми сюда", command=button_clicked )
button.pack( fill=BOTH )
 
tk.mainloop()


Вот как это будет выглядеть:
TK1.JPG
TK1.JPG (8.26 КБ) 8051 просмотр
По-моему совершенно прилично ;-).
(и это переносимо меж операционными системами без всяких изменений)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 01:14

Виктория писал(а): Windows XP SP3, Python 2.7.5,
Разве что грешить на версию Python :?:

Код: Выделить всё

c:\Python-test\GUI\Tkinter\Py3>python --version
Python 3.3.2
Как это проверить?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 11:49

Olej писал(а):
Виктория писал(а): Windows XP SP3, Python 2.7.5,
Разве что грешить на версию Python :?:

Код: Выделить всё

c:\Python-test\GUI\Tkinter\Py3>python --version
Python 3.3.2
Как это проверить?
1. Беру инсталляцию Python 2.7.5 ... как упоминалось уже раньше - Releases
The current production versions are 2.7.5 and 3.3.2.

Python 3.3.2 (May 15, 2013)
Python 3.2.5 (May 15, 2013)
Python 3.1.5 (April 10, 2012)
Python 3.0.1 (February 13, 2009)
Python 2.7.5 (May 15, 2013)
Python 2.6.8 (April 10, 2012)
...


2. Устанавливаю в Windows под VirtualBox.
В Windows 7 инсталляция .msi вообще категорически отказывается устанавливаться (разбираться не стал).
Windows XP - встал.

3. Текст приложения для Python 2 пришлось несколько подправить (исправления последнего месяца вносились только в версию 3)...

4. Выполнение в среде IDLE:
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
число процессоров (ядер) = 2
исполнение в Python версия 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
число ветвей выполнения 2
число циклов в ветви 10000000
============ последовательное выполнение ============
время 1.98 секунд
================ параллельные потоки ================
время 2.77 секунд
=============== параллельные процессы ===============
error: create child process
>>>
Да, это сильно похоже ;-) на то, что вы показывали раньше:
Виктория писал(а): Windows XP SP3, Python 2.7.5,
...
Ещё и не получилось с печатью кириллицы, только вот так

Код: Выделить всё

С+РёС_Р>Р_ Р_С<РїР_Р>Р_РчР_РёР№ 2
С+РёС_Р>Р_ С+РёРєР>Р_Р_ Р_ Р_С<РїР_Р>Р_РчР_РёРё 10000000
============ РїР_С_Р>РчР_Р_Р_Р°С'РчР>С_Р_Р_Рч Р_С<РїР_Р>Р_РчР_РёРч ============
Р_С_РчР_С_ 6.19 С_РчРєС_Р_Р_
================ РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїР_С'Р_РєРё ================
Р_С_РчР_С_ 6.38 С_РчРєС_Р_Р_
=============== РїР°С_Р°Р>Р>РчР>С_Р_С<Рч РїС_Р_С+РчС_С_С< ===============
error: create child process
Вложения
mthrs2w.py
(2.8 КБ) 376 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 12:19

Olej писал(а): 3. Текст приложения для Python 2 пришлось несколько подправить (исправления последнего месяца вносились только в версию 3)...
Подумалось ;-) ... : а чего это я уродуюсь с объёмным, да ещё и многопараллельным приложением, если меня в данном контексте разговора интересует только вывод русскоязычных сообщений? :-o

Написал новое тестовое приложение :lol: .
Вот такое (loc2w-utf8.py):

Код: Выделить всё

#!/usr/bin/python
# -*- coding: utf-8 -*-

print "вывод русскоязычной строки, набранной в UTF-8"
Вот как оно выполняется (запуск в IDLE):

Код: Выделить всё

Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
вывод русскоязычной строки, набранной в UTF-8
>>> 
Теперь перепишу тестовое приложение (loc2w-1251.py):

Код: Выделить всё

#!/usr/bin/python
# -*- coding: cp1251 -*-

print "вывод русскоязычной строки, набранной в UTF-8"
И как изменилось :lol: его выполнение:

Код: Выделить всё

>>> ================================ RESTART ================================
>>> 
вывод русскоязычной строки, набранной в UTF-8
>>> 
Вложения
loc2w-utf8.py
(132 байт) 388 скачиваний
loc2w-1251.py
(99 байт) 388 скачиваний

Аватара пользователя
Виктория
Писатель
Сообщения: 113
Зарегистрирован: 28 дек 2012, 14:05
Откуда: Самара
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Виктория » 29 авг 2013, 12:27

У меня проблема в Windows XP - кодировка UTF-8 не установлена (посмотрела настройки Панели управления "Языки и региональные стандарты")

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 12:28

Отвлекаясь чуть в сторону...
Виктория писал(а):файл не редактировала. Запускала в far. Перенаправила вывод в файл, copypaste из редактора far (режим DOS). В режиме WIN "абрадакабра" другая.
Виктория, у вас есть гораздо более простой способ и выполнения Python-приложений, и копирования их результатов сюда для обсуждения:

Пуск -> Программы -> Python 2.7 -> IDLE (Python GUI)
(так у меня подписаны эти позиции меню)

В IDLE замечательно открываются .py файлы, редактируются...
Там же у него (IDLE) есть меню запуска Run (+ самые разные опции отладки), из окна запуска всё замечательно копируется...

Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: локализация в Python

Непрочитанное сообщение Olej » 29 авг 2013, 13:48

Виктория писал(а):У меня проблема в Windows XP - кодировка UTF-8 не установлена (посмотрела настройки Панели управления "Языки и региональные стандарты")
У меня (в виртуальной машине) они стоят ("птички"):
...
65000 (UTF-7)
65001 (UTF-8)
...
Но это, в данном случае, думаю, не влияет.
Можете себе их установить ;-) .

Там ведь над табличкой выбираемых кодировок написано:
Выберите язык, соответствующий языку используемых программ, которые не поддерживают Юникод

Python по своему стандарту изначально устроен на поддержку Unicode.
Весь вопрос в том, как этот Unicode отображается в Windows, в их "горбато" понимаемый "Юникод" :twisted:

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей