Локализация приложений.

Автор Тема: Локализация приложений.  (Прочитано 16494 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн BearDyuginАвтор темы

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Локализация приложений.
« : 28-04-2021, 12:00:27 »
В своих приложениях использую вот такую конструкцию
Код - Auto/Visual Lisp [Выбрать]
  1. (setq rusLoc (= (getvar "SysCodePage") "ANSI_1251"))
  2. ...
  3. (setq msg (if rusLoc "\n Пишем по Русски" "\n Write in English"))

Но выяснилось, что не все иностранцы любят английский, и хотели бы чтоб приложение общалось с ними на их родно языке.
Не нашёл где посмотреть ANSI коды других языков, или можно узнать язык системы другим путём?

И второй момент, то что русские символы в коде приложений превращаются в кракозябры, при том что диалог будет вестись на английском не особо проблема. Но оказалось что на каком-нибудь Японском, кракозябры на столько кракозябры что портят код и он становится не рабочим. Отсюда возникает идея не использовать кириллицу в коде совсем, а все сообщения подгружать из внешнего файла локализации.
Так чтоб не изобретать велосипед с нуля, может есть у кого подобный опыт или мысли на этот счёт?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #1 : 28-04-2021, 14:24:31 »
BearDyugin,
"SysCodePage" - это кодовая страница, а не язык. Например, эту (1251) кодовую страницу использует и русский и украинский и белорусский и другие языки).
P.S.: Так как ты уже освоил C#, то лучше с языками работать при его помощи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Локализация приложений.
« Ответ #2 : 03-05-2021, 08:29:57 »
Не нашёл где посмотреть ANSI коды других языков, или можно узнать язык системы другим путём?
Нашел на одном форуме такую штуку:
Код - Auto/Visual Lisp [Выбрать]
  1.   (vl-registry-read
  2.     (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key))
  3.     "Language"
  4.   )

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #3 : 03-05-2021, 11:43:16 »
1958,
Это язык AutoCAD, а не язык пользователя или системы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Локализация приложений.
« Ответ #4 : 03-05-2021, 12:14:09 »
Да, это так. Но, мне кажется, что если человек использует версию Автокада с определенным языком, то ему будет легче использовать лиспы, написанные с использованием именно этого языка.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Локализация приложений.
« Ответ #5 : 03-05-2021, 13:44:36 »
Да, это так. Но, мне кажется, что если человек использует версию Автокада с определенным языком, то ему будет легче использовать лиспы, написанные с использованием именно этого языка.
Не факт. Вполне может оказаться, что человек привык к английскому ACAD, а новое приложение предпочтет использовать на русском. Или китайском.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #6 : 03-05-2021, 18:39:14 »
Язык на уровне пользователя из Панели управления Windows настройки языка находится здесь:
Код - INI [Выбрать]
  1. HKEY_CURRENT_USER\Control Panel\International
Можно использовать переменную LocaleName (для русского языка: "ru-RU") или Locale (для русского языка "00000419", для английского "00000409")
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyuginАвтор темы

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Локализация приложений.
« Ответ #7 : 07-01-2022, 22:53:03 »
Написал в итоге на Lisp
Код - Auto/Visual Lisp [Выбрать]
  1. (defun BD:get_localization (/ LocaleName LocalFileName LocalFile LanguagePack file)
  2.     (setq LocaleName    (vl-registry-read
  3.                           "HKEY_CURRENT_USER\\Control Panel\\International"
  4.                           "LocaleName"
  5.                         )
  6.           LocalFileName (strcat "LanguagePack_" LocaleName ".csv")
  7.     )
  8.     (if
  9.       (or (setq LocalFile (findfile LocalFileName))
  10.           (setq LocalFile (findfile (strcat
  11.                                       (getenv "programdata")
  12.                                       "\\Autodesk\\ApplicationPlugins\\"
  13.                                       "Beardyugin Slope.bundle"
  14.                                       "\\Contents\\Resources\\"
  15.                                       LocalFileName
  16.                                     )
  17.                           )
  18.           )
  19.       )
  20.        (progn
  21.          (setq file (open LocalFile "r"))
  22.          (while (setq line (read-line file))
  23.            (setq LanguagePack
  24.                   (cons (csv_delim line)
  25.                         LanguagePack
  26.                   )
  27.            )
  28.          )
  29.          (close file)
  30.        )
  31.        (princ
  32.          (strcat "\nLanguage file \"" LocalFileName "\" not found")
  33.        )
  34.     )
  35.     (mapcar
  36.       (function (lambda (x)    
  37.                   (setq key (car x)
  38.                         val (cadr x)
  39.                   )
  40.                   (set (read key)
  41.                        (if (and
  42.                              (setq temp (assoc key LanguagePack))
  43.                              (setq temp (caddr temp))
  44.                            )
  45.                          temp
  46.                          val
  47.                        )
  48.                   )
  49.                 )
  50.       )
  51.       (list
  52.         (list "word_1" "Make")
  53.         (list "word_2" "Version")
  54.         (list "word_3" "Yes")
  55.         (list "word_4" "No")
  56.         (list
  57.           "warning_1"
  58.           "The names of the layers are not allowed use \nof the following symbols:"
  59.         )
  60.         (list "warning_2"
  61.               "Not admissible value \nThere should be a number"
  62.         )
  63.         (list "warning_3" "Zero step is not valid")
  64.         (list "warning_4" "Zero length not allowed")
  65.         (list "warning_5"
  66.               "The brow and sole must be either both closed or both open"
  67.         )
  68.         (list "warning_6" "The first and last can not be same")
  69.         (list "request_1" "Specify curb slope: <Exit>")
  70.         (list "request_2" "Specify toe of slope: <Exit>")
  71.         (list "request_3" "Edit dash?")
  72.         (list "request_4" "Enter the start of the range <Exit>:")
  73.         (list "request_5" "Enter the end of border editing <Exit>:")
  74.         (list "request_6" "Select a dash for editing <Exit>:")
  75.         (list "reg_word_1" "write")
  76.         (list "reg_phrase_1" "Days left")
  77.         (list "d_trial" "Trial  version ")
  78.         (list "d_reg" "  Buy  ")
  79.         (list "d_cancel" "Cancel")
  80.         (list "d_Ser_num" " Serial number: ")
  81.         (list "d_reg_cod" "Registration code:")
  82.         (list "d_have_dif" "If you have any difficulties, ")
  83.         (list "bd_sel_1" "Miss")
  84.         (list "bd_sel_2" "Bad object that must be")
  85.         (list "bd_sel_3" "Selected object not dash slope")
  86.         (list "dial_t" "Drawing the slope")
  87.         (list "shag_t" "Hatch patern - Step:")
  88.         (list "kor_net_t" "Do not touch to sole:")
  89.         (list "kor_len_t" "Short stroke length:")
  90.         (list "ed_t" "Drawing units ")
  91.         (list "pr_t" "% length")
  92.         (list "join_t" "Group objects")
  93.         (list "group_t" "Group")
  94.         (list "bloc_t" "Block")
  95.         (list "Wipeout_t" "Hiding the background")
  96.         (list "type_t" "Type")
  97.         (list "izi_t" "Normal")
  98.         (list "pro_t" "Designed")
  99.         (list "dob_t" "The mining")
  100.         (list "ukrep_t" "Blanket")
  101.         (list "sten_t" "Retaining")
  102.         (list "gorn_t" "Thin")
  103.         (list "lay_t" "Layer")
  104.       )
  105.     )
  106.     (setq
  107.       ed_list    (list ed_t pr_t)
  108.       group_list (list word_4 group_t bloc_t)
  109.       type_list  (list izi_t pro_t dob_t ukrep_t sten_t)
  110.     )
  111.   )
  112.  
И в целом схема работала, с возможностью пользователям самим добавлять свою локализации.

Даже проверяли на Японской системе, работает!


Но тут один пользователь на Российской Windows 10 home, Civil3D 2017 пожаловался на кракозябры.


Понятно что дел в кодировки, но в каком месте и как её победить? При этом сам файл csv отображается без кракозябр.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #8 : 07-01-2022, 23:07:44 »
Понятно что дел в кодировки, но в каком месте и как её победить? При этом сам файл csv отображается без кракозябр.
А я бы заподозрил, что проблема в шрифте. Попробуй передать этому пользователю какой-нибудь простейший lisp-файл и к нему dcl-файл для проверки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #9 : 07-01-2022, 23:32:18 »
Вообще достаточно в командной строке набрать:
Код - Auto/Visual Lisp [Выбрать]
  1. (lisped "Проверка редактирования текста")
Если будут "крякозябры", то это проблема с системой у пользователя.

Должно быть так:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyuginАвтор темы

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Локализация приложений.
« Ответ #10 : 07-01-2022, 23:42:34 »
При этом сам файл csv отображается без кракозябр.
Сейчас говорит что и там кракозябры. Значит дело действительно в системе.

Другое Lisp приложения, у него отображается странно. То что написано непосредственно в DCL почти отображается. но не совсем корректно, возникает перенос строк, что в DCL я вижу в первые, часть фраз обрывается на пробеле. То что передаю из приложения, либо вопросами отображается, это имена поверхностей полученные из чертежа(в чертеже они на кириллице написаны), либо кракозябрами что изначально в коде написано кириллицей.


Вообще достаточно в командной строке набрать:
Код - Auto/Visual Lisp [Выбрать]
  1. (lisped "Проверка редактирования текста")
Если будут "крякозябры", то это проблема с системой у пользователя.

Должно быть так:

Спасибо! завтра отправлю ему, сегодня он уже спать ушёл...
Если проблема с системой, то что ему можно посоветовать?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #11 : 07-01-2022, 23:47:25 »
Если проблема с системой, то что ему можно посоветовать?
Затрудняюсь сказать точно, но похоже, что у него или подменен один из системных шрифтов или вместо системной страницы 1251 установлена 1252 или 1253 (Западноевропейская).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Локализация приложений.
« Ответ #12 : 07-01-2022, 23:53:51 »
Цитата: BearDyugin от 07-01-2022, 21:53:03

    При этом сам файл csv отображается без кракозябр.

Сейчас говорит что и там кракозябры. Значит дело действительно в системе.
А в чем он у него отображается? Обычно файлы с расширением csv открываются в Excel. Там не должно быть крякозябров если файл не испорчен.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн BearDyuginАвтор темы

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Локализация приложений.
« Ответ #13 : 09-01-2022, 07:13:46 »
Цитата: BearDyugin от 07-01-2022, 21:53:03

    При этом сам файл csv отображается без кракозябр.

Сейчас говорит что и там кракозябры. Значит дело действительно в системе.
А в чем он у него отображается? Обычно файлы с расширением csv открываются в Excel. Там не должно быть крякозябров если файл не испорчен.

Да, проблема была со шрифтами на ПК. Как он сразу этого не заметил, не понятно, у него такая чехарда с кириллицей наблюдалась в половине других программ.

Значит в целом моя схема Локализации рабочая.


Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Локализация приложений.
« Ответ #14 : 09-01-2022, 09:16:37 »
А при импорте точно была выбрана кодировка Windows1251?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!