Язык текста по умолчанию

Автор dziglo, 10 мая 2023, 01:19

0 Пользователи и 1 гость просматривают эту тему.

dziglo

Доброй ночи.
Вопрос.
В текстовом редакторе LibreOffice вставляю нерусский текст, для которого есть проверка орфографии.

Как мне сделать, чтобы этот язык всегда показывался при нажатии внизу (см. скриншот)? То есть чтобы его каждый раз не нужно было выбирать в полном списке языков.
Если нажимать пункт «Установить язык по умолчанию», то выбирается русский.


mikekaganski

С уважением,
Михаил Каганский

gabix

Обходной вариант: простейший макрос и кнопка на панели инструментов.

Sub BelarusianToSelectedText()

dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Language"
args1(0).Value = 1059

dispatcher.executeDispatch(document, ".uno:Language", "", 0, args1())


end sub

Как-то так. Текст нужно предварительно выделить. Ну и поменяйте код языка на нужный.

gabix

Цитата: dziglo от 10 мая 2023, 01:19Если нажимать пункт «Установить язык по умолчанию», то выбирается русский.


Создайте шаблон с нужным языком для стиля «Обычный» и используйте его, если надо — сделайте шаблоном по умолчанию. Тогда указанная команда даст нужный результат.

dziglo

Цитата: gabix от 11 мая 2023, 13:54Текст нужно предварительно выделить

А как сделать в вашем макросе так, чтобы если текст не выделен, то тогда для всего текста в файле будет указан данный язык?

bigor

Из Питоньяка
Листинг 230. Задаем простому документу Writer использование французских
региональных настроек.
Sub SetDocumentLocale
Dim aLocale As New com.sun.star.lang.Locale
aLocale.Language = "fr" 'Устанавливаем для локали использование
'французского языка
aLocale.Country = "FR" 'Устанавливаем для локали использование Франции
'в качестве страны
Dim oCursor 'Курсор используется для прохода по документу.
Dim oText 'Объект Текстовый документ
oText = ThisComponent.Text 'Документы Writer имеют Объект Text
oCursor = oText.createTextCursor() 'Создаем текстовый курсор
REM Перемещаем курсор в начало документа без выделения текста.
oCursor.GoToStart(False)
REM Перемещаемся в конец абзаца, выделяя весь абзац.
REM gotoNextParagraph() возвращает False, если он терпит неудачу.
Do While oCursor.gotoNextParagraph(True)
oCursor.CharLocale = aLocale 'Это может вызвать ошибку для некоторых
'типов абзаца
oCursor.goRight(0, False) 'Снимаем выделение всего текста
Loop
End Sub
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

dziglo

Цитата: bigor от  7 июня 2023, 14:03Листинг 230. Задаем простому документу Writer использование французских
региональных настроек.

При запуске этого макроса у меня в LibreOffice ничего не происходит :-|

bigor

Цитата: dziglo от  7 июня 2023, 14:49ничего не происходит

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

dziglo

Получилось. Спасибо.
А как сделать, чтобы в случае выделенного текста, французским становился не весь текст, а именно выделенный?

sokol92

Как в бородатом анекдоте.

Sub SetSelectionLocale
  Dim aLocale As New com.sun.star.lang.Locale
  aLocale.Language = "fr" : aLocale.Country = "FR"
  On Error GoTo ErrLabel
  ThisComponent.CurrentSelection(0).CharLocale = aLocale
Errlabel:
End Sub
Владимир.

dziglo

Цитата: sokol92 от  7 июня 2023, 17:22Sub SetSelectionLocale

Получилось. :-)
А как поменять язык? :-)
Вот наверху в коде у gabix есть такое:

args1(0).Name = "Language"
args1(0).Value = 1059

Я знаю, какой код мне нужен. А вот какая «локаль» это (буквенное обозначение как у вас в коде) — не знаю.

sokol92

#11
Цитата: dziglo от  7 июня 2023, 18:28Вот наверху в коде у gabix есть такое:
Скорее всего, 1059 - это LCID (в терминологии Microsoft). Перекодировочные таблицы я нашел здесь. В LO - здесь.
Владимир.

dziglo


sokol92

Вот ссылка на полное описание. Скачайте версию от 2021-06-25.
Владимир.

dziglo

Цитата: sokol92 от  7 июня 2023, 17:22Как в бородатом анекдоте.

Вы не могли бы подправить макрос? Чтобы, если часть текста выделено, то язык задается именно этой части, а если текст не выделен, то задается всему тексту в документе?