From dc1338797589f83708c4b582332acbe107ed0beb Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Tue, 5 May 2020 14:01:41 +0200 Subject: [PATCH] Translations --- ePublishing/Album.xba | 18 +++--- ePublishing/Archive.xba | 19 +++--- ePublishing/Footnotes.xba | 18 ++++-- ePublishing/FootnotesConfig.xdl | 19 +++--- ePublishing/Hyphenations.xba | 12 ++-- ePublishing/TOCLinks.xba | 9 ++- ePublishing/Translations.xba | 105 +++++++++++++++++++++++++++++++ ePublishing/journals.xba | 52 +++++++-------- ePublishing/replaceParaStyle.xdl | 4 +- ePublishing/script.xlb | 1 + translations.ods | Bin 0 -> 16755 bytes 11 files changed, 187 insertions(+), 70 deletions(-) create mode 100644 ePublishing/Translations.xba create mode 100644 translations.ods diff --git a/ePublishing/Album.xba b/ePublishing/Album.xba index e648d8d..364a6e5 100644 --- a/ePublishing/Album.xba +++ b/ePublishing/Album.xba @@ -23,7 +23,7 @@ Sub makePageAlbum curPageStyleName = getCurPageStyleName() findBestAnchor() If checkPageSettings(curPageStyleName) Then - MsgBox "Проверьте размеры колонтитулов и перезапустите макрос" + MsgBox getTranslation("albumRotationCheckPageSettings") Exit Sub EndIf rotatePageClockwise(curPageStyleName) @@ -44,7 +44,7 @@ Sub findBestAnchor() If curPageStyleName = getCurPageStyleName() Then Exit Sub EndIf - MsgBox "Произошла ошибка. Обратитесь к разработчику." + MsgBox getTranslation("unrecoverableError") End Sub Sub undoPageAlbum @@ -61,14 +61,14 @@ sub applyPortraitPageStyle(pageStyleName As String) pageStyles = ThisComponent.StyleFamilies.getByName("PageStyles") pageStyle = pageStyles.getByName(pageStyleName) If NOT pageStyle.IsLandScape Then - MsgBox "Страница уже имеет портретную ориентацию. Ничего не делаем. Выходим." + MsgBox getTranslation("albumRotationPageIsAlreadyAlbum") Exit sub EndIf If pageStyles.hasByName("portrait_" & pageStyleName) Then replacePageStyleByPortrait(pageStyleName) removeAlbumFrames(pageStyleName) Else - MsgBox "Стиль страницы с портретной ориентацией portrait_" & pageStyleName & " не был найден. " + MsgBox getTranslation("albumRotationBackupStyleNotFound1") & " portrait_" & pageStyleName & " " & getTranslation("albumRotationBackupStyleNotFound2") EndIf End Sub @@ -161,7 +161,7 @@ Sub rotatePageClockwise(pageStyleName As String) pageStyles = ThisComponent.StyleFamilies.getByName("PageStyles") pageStyle = pageStyles.getByName(pageStyleName) If pageStyle.IsLandScape Then - MsgBox "Страница уже имеет альбомную ориентацию. Ничего не делаем. Выходим." + MsgBox getTranslation("albumRotationPageIsAlreadyAlbum") Exit sub EndIf If NOT pageStyle.IsUserDefined() Then @@ -261,24 +261,24 @@ Function checkPageSettings(pageStyleName As String) As Boolean If pageStyle.HeaderIsDynamicHeight Then checkPageSettings = true pageStyle.HeaderIsDynamicHeight = false - MsgBox "Высота верхнего колонтитула была задана динамической. Отключаем." + MsgBox getTranslation("albumRotationDynamicHeaderHeight") EndIf If pageStyle.HeaderDynamicSpacing Then checkPageSettings = true pageStyle.HeaderDynamicSpacing = false - MsgBox "Отступ верхнего колонтитула от тела страницы был задан динамическим. Отключаем." + MsgBox getTranslation("albumRotationDynamicHeaderOffset") EndIf EndIf If pageStyle.FooterIsOn Then If pageStyle.FooterIsDynamicHeight Then checkPageSettings = true pageStyle.FooterIsDynamicHeight = false - MsgBox "Высота нижнего колонтитула была задана динамической. Отключаем." + MsgBox getTranslation("albumRotationDynamicFooterHeight") EndIf If pageStyle.FooterDynamicSpacing Then checkPageSettings = true pageStyle.FooterDynamicSpacing = false - MsgBox "Отступ нижнего колонтитула от тела страницы был задан динамическим. Отключаем." + MsgBox getTranslation("albumRotationDynamicFooterOffset") EndIf EndIf 'Workaround to force Writer reread new page settings diff --git a/ePublishing/Archive.xba b/ePublishing/Archive.xba index ce87b1a..641e2c7 100644 --- a/ePublishing/Archive.xba +++ b/ePublishing/Archive.xba @@ -37,17 +37,17 @@ Sub createBidirectLink Dim oAnchor2Name As String If IsNull(ThisComponent) Then - MsgBox "Ничего не выбрано" + MsgBox getTranslation("bidirectLinkSuggestion") Exit Sub End If oSelections = ThisComponent.getCurrentSelection() If IsNull(oSelections) Then - MsgBox "Ничего не выбрано" + MsgBox getTranslation("bidirectLinkSuggestion") Exit Sub End If objectsCount = oSelections.getCount() - 1 If objectsCount < 2 OR objectsCount > 2 Then - MsgBox "Нужно выделить два объекта" + MsgBox getTranslation("bidirectLinkSuggestion") Exit Sub End If @@ -124,7 +124,7 @@ End Function sub convertIndesignPageBreaks Dim description As String - description = "Запустить восстановление разрывов страниц?" + description = getTranslation("convertIndesignPageBreaksConfirmation") If NOT confirm(description) Then Exit Sub EndIf @@ -187,7 +187,7 @@ sub convertIndesignPageBreaks End If oFound = ThisComponent.findNext(oFound.End, oSearch) Loop - MsgBox "Восстановление разрывов страниц завершено." + MsgBox getTranslation("convertIndesignPageBreaksFinish") end Sub Sub adjustLastLine(oTextCursor) @@ -302,7 +302,7 @@ End Sub Sub convertBookmarksToFootnotes() Dim description As String - description = "Запустить восстановление сносок из текста?" + description = getTranslation("convertIndesignFoonotesConfirmation") If NOT confirm(description) Then Exit Sub EndIf @@ -341,7 +341,7 @@ Sub convertBookmarksToFootnotes() Next i resetNotesStyle - MsgBox "Восстановление сносок завершено." + MsgBox getTranslation("convertIndesignFootnotesFinish") End Sub Sub convertLinkToFootnote(forwardLink,backwardLink) @@ -451,6 +451,7 @@ Sub replaceParaStyle oDialog = CreateUnoDialog( DialogLibraries.ePublishing.replaceParaStyle ) listBox = oDialog.getControl("ListBox1") listBox.addItems(sortedDPSN , 0) + oDialog.Title = getTranslation("replaceParaStyleDialogTitle") oDialog.Execute() newStyleName = oDialog.model.Tag If newStyleName="0" or newStyleName="" Then @@ -461,14 +462,14 @@ Sub replaceParaStyle newStyleName = paraStyleNames(foundIndex) If newStyleName = oldStyleName Then - MsgBox "Стили не различаются" + MsgBox getTranslation("replaceParaStyleStylesEqualsNotification") Exit sub EndIf If oldStyleName <> "" Then oldStyle = paraStyles.getByName(oldStyleName) If NOT oldStyle.isUserDefined Then - MsgBox "Невозвожно заменять встроенные стили" + MsgBox getTranslation("replaceParaStyleCurrentStyleIsStandard") Exit sub EndIf oldStyle.ParentStyle = newStyleName diff --git a/ePublishing/Footnotes.xba b/ePublishing/Footnotes.xba index 4ff9d91..d5be11c 100644 --- a/ePublishing/Footnotes.xba +++ b/ePublishing/Footnotes.xba @@ -7,7 +7,15 @@ Sub openFootNotesDialog Dim dialog As Object DialogLibraries.LoadLibrary("ePublishing") dialog = CreateUnoDialog(DialogLibraries.ePublishing.FootnotesConfig) - dialog.setVisible(true) + dialog.getControl("buttonOK").Label = getTranslation("buttonOk") + dialog.getControl("buttonCancel").Label = getTranslation("buttonCancel") + dialog.getControl("configText1").setText(getTranslation("configText1")) + dialog.getControl("configText2").setText(getTranslation("configText2")) + dialog.getControl("configText3").setText(getTranslation("configText3")) + dialog.getControl("configText4").setText(getTranslation("configText4")) + dialog.getControl("configText5").setText(getTranslation("configText5")) + dialog.Title = getTranslation("footnotesConfigDialogTitle") + dialog.setVisible(true) Select Case dialog.Execute() Case 1 setFootnotesNumberingFrom(dialog) @@ -25,10 +33,10 @@ Sub setFootnotesNumberingFrom(dialog) targetLevel = dialog.getControl("level").Value If targetLevel > -1 AND targetLevel < 11 Then - statusIndicator.Start("Нумерую сноски",100) + statusIndicator.Start(getTranslation("statusNumberingInProcess"),100) setFootnotesNumberingLevel(targetLevel) Else - MsgBox "Значение уровня заголовков вне допустимого диапазона. Введите число от 0 до 10." + MsgBox getTranslation("numberingInputOutOfRange") EndIf statusIndicator.end() @@ -50,7 +58,7 @@ Sub setFootnotesNumberingLevel(level) Dim statusIndicator as Object statusIndicator = ThisComponent.getCurrentController.statusIndicator - statusIndicator.Start("Нумерация сносок запущена, подождите",30) + statusIndicator.Start(getTranslation("statusNumberingInProcess"),30) curNum = 1 @@ -126,7 +134,7 @@ Sub setFootnotesNumberingLevel(level) EndIf Wend statusIndicator.end() - MsgBox "Нумерация сносок успешно завершена." + MsgBox getTranslation("statusNumberingFinished") End Sub Private Sub doNotTrack diff --git a/ePublishing/FootnotesConfig.xdl b/ePublishing/FootnotesConfig.xdl index 4c932d1..9dac140 100644 --- a/ePublishing/FootnotesConfig.xdl +++ b/ePublishing/FootnotesConfig.xdl @@ -1,17 +1,20 @@ + + + - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/ePublishing/Hyphenations.xba b/ePublishing/Hyphenations.xba index df17683..ff3f3a4 100644 --- a/ePublishing/Hyphenations.xba +++ b/ePublishing/Hyphenations.xba @@ -7,18 +7,18 @@ Private Sub convertHyphInDoc() Dim description As String Dim allNotes As Object dim aNote As Object - description = "Запустить конвертацию автоматических переносов в ручные?" + description = getTranslation("hyphenationConfirmation") If NOT confirm(description) Then Exit Sub EndIf Dim statusIndicator as Object statusIndicator = ThisComponent.getCurrentController.StatusIndicator - statusIndicator.Start("Произвожу конвертацию, подождите",10) + statusIndicator.Start(getTranslation("hyphenationsInProgress"),10) turnOffTracking AcceptAllTrackedChanges convertHyphInText(ThisComponent.Text) ' Globalscope.BasicLibraries.LoadLibrary( "MRILib" ) - statusIndicator.Start("Произвожу конвертацию, подождите",70) + statusIndicator.Start(getTranslation("hyphenationsInProgress"),70) allNotes = ThisComponent.FootNotes For x = 0 to allNotes.Count -1 aNote = allNotes.getByIndex(x) @@ -26,7 +26,7 @@ Private Sub convertHyphInDoc() Next 'disableAutoHyph() statusIndicator.end() - MsgBox "Конвертация переносов успешно завершена." + MsgBox getTranslation("hyphenationsSuccess") End Sub @@ -153,7 +153,7 @@ Private Sub verifyHyphenation(lineEnds() As Object) For i = (Lbound(lineEnds)) To (Ubound(lineEnds)) vCurs.goToRange(lineEnds(i),false) If NOT (vCurs.isAtEndOfLine() OR vCurs.isAtStartOfLine()) Then - MsgBox "Конвертация прервана. Обратитесь к разработчику." + MsgBox getTranslation("hyphenationsFailed") Stop EndIf Next i @@ -200,7 +200,7 @@ Private Sub replaceHyphen(tCurs As Object,lineNumber As Integer) EndIf EndIf If vCurs.isAtEndOfLine() = false AND vCurs.isAtStartOfLine() = false Then - MsgBox "Конвертация переносов не выполнена. Алгоритм нуждается в доработке. Обратитесь к разработчику." + MsgBox getTranslation("hyphenationsFailed") Stop EndIf End Sub diff --git a/ePublishing/TOCLinks.xba b/ePublishing/TOCLinks.xba index d04d723..c4cd0f0 100644 --- a/ePublishing/TOCLinks.xba +++ b/ePublishing/TOCLinks.xba @@ -24,20 +24,20 @@ Sub makeLinksWithLevel(level) If Ubound(heading) <> -1 AND Ubound(outline) <> -1 Then If (Ubound(outline) + 1) MOD (Ubound(heading) + 1 ) = 0 Then For i = 0 To (Ubound(outline)) - oAnchor2Name = "Оглавление " + level + "." + (i Mod (Ubound(heading) + 1)) + oAnchor2Name = "Outline " + level + "." + (i Mod (Ubound(heading) + 1)) If i <= Ubound(heading) Then createAnchor(heading(i Mod (Ubound(heading) + 1)),oAnchor2Name) EndIf createLink(outline(i),"",oAnchor2Name) Next i Else - MsgBox ("Число Оглавлений "+ level +" уровня ("+(Ubound(outline)+1) +") не кратно числу Заголовоков " + level + " уровня (" + (Ubound(heading)+1) + ")" + MsgBox (getTranslation("TOCErrorContentsNotMatchHeadings1") & " " & level & " (" & (Ubound(outline)+1) & getTranslation("TOCErrorContentsNotMatchHeadings2") & " " & level & " " & getTranslation("TOCErrorContentsNotMatchHeadings3") & (Ubound(heading)+1) & ")" EndIf ElseIf Ubound(outline) = -1 Then - 'MsgBox ("Не могу сделать ссылки в оглавлении. Оглавлений "+ level + " уровня не найдено.") + MsgBox (getTranslation("TOCErrorNoContents1") & " " & level & " " & getTranslation("TOCErrorNoContents2")) ElseIf Ubound(heading) = -1 Then - MsgBox ("Не могу сделать ссылки в оглавлении. Заголовоков "+ level + " уровня не найдено.") + MsgBox (getTranslation("TOCErrorNoHeadings1") & " " & level & " " & getTranslation("TOCErrorNoHeadings2")) EndIf End Sub @@ -127,7 +127,6 @@ Function getOutlineWithLevel(curNum) Wend Next i Else - Mri enum1Element EndIf Wend getOutlineWithLevel = par() diff --git a/ePublishing/Translations.xba b/ePublishing/Translations.xba new file mode 100644 index 0000000..828bfe4 --- /dev/null +++ b/ePublishing/Translations.xba @@ -0,0 +1,105 @@ + + +Function getTranslation(identifier As String) As String + Globalscope.BasicLibraries.LoadLibrary( "Tools" ) + Dim lang As String + lang = GetStarOfficeLocale().Language + Select Case lang + Case "ru" + getTranslation = getRussian(identifier) + Exit Function + Case Else + getTranslation = getEnglish(identifier) + Exit Function + End Select +End Function + +Function getRussian(identifier As String) As String + Select Case identifier + Case "buttonOk" + getRussian = "Применить" + Exit Function + Case "buttonCancel" + getRussian = "Отмена" + Exit Function + Case "configText1" + getRussian = "Введите в поле число от 0 до 10" + Exit Function + Case "configText2" + getRussian = "0 - возврат к автоматической нумерации" + Exit Function + Case "configText3" + getRussian = "Начать нумерацию сноско заново" + Exit Function + Case "configText4" + getRussian = "после заголовков" + Exit Function + Case "configText5" + getRussian = "уровня" + Exit Function + Case "footnotesConfigDialogTitle" + getRussian = "Применение нумерации сносок" + Exit Function + Case "statusNumberingInProcess" + getRussian = "Производится нумерация сносок" + Exit Function + Case "numberingInputOutOfRange" + getRussian = "Введенное число вне допустимого диапазона. Введите число от 0 до 10." + Exit Function + Case "statusNumberingFinished" + getRussian = "Нумерация сносок успешно завершена." + Exit Function + Case "replaceParaStyleDialogTitle" + getRussian = "Заменить стиль параграфа (с удалением) на выбранный стиль" + Exit Function + Case Else + getRussian = "Перевод не найден" + End Select + +End Function + +Function getEnglish(identifier As String) As String + Select Case identifier + Case "buttonOk" + getEnglish = "Apply" + Exit Function + Case "buttonCancel" + getEnglish = "Cancel" + Exit Function + Case "configText1" + getEnglish = "Insert 0 to 10 number in the field below" + Exit Function + Case "configText2" + getEnglish = "0 – return to automatic numbering " + Exit Function + Case "configText3" + getEnglish = "Restart footnote numbering" + Exit Function + Case "configText4" + getEnglish = "after heading with" + Exit Function + Case "configText5" + getEnglish = "level" + Exit Function + Case "footnotesConfigDialogTitle" + getEnglish = "Apply footnotes numbering" + Exit Function + Case "statusNumberingInProcess" + getEnglish = "Numbering in process" + Exit Function + Case "numberingInputOutOfRange" + getEnglish = "Input is out of range. Insert number from 0 to 10." + Exit Function + Case "statusNumberingFinished" + getEnglish = "Footnotes numbering finished successfully." + Exit Function + Case "replaceParaStyleDialogTitle" + getEnglish = "Replace paragraph style (with removal) by choosen one" + Exit Function + Case Else + getEnglish = "No translation" + End Select +End Function + + + \ No newline at end of file diff --git a/ePublishing/journals.xba b/ePublishing/journals.xba index 5fb61a7..a04e0ed 100644 --- a/ePublishing/journals.xba +++ b/ePublishing/journals.xba @@ -1,6 +1,6 @@ -Private sub journalsMark7 +Private sub journalsMark10 End sub Dim templateName As String @@ -25,7 +25,7 @@ Private Sub makeUpIssue Dim tmp As String Dim nSections As Long - description = "Вы уверены, что хотите запустить сборку выпуска ?" + description = getTranslation("complileJournalIssueConfirmation") If NOT confirm(description) Then Exit Sub EndIf @@ -42,7 +42,7 @@ Private Sub makeUpIssue 'Exit if no sections in document or document not saved If oFilename = "" Then - MsgBox "Сначала сохраните выпуск в папке с файлами статьей" + MsgBox getTranslation("compileJournalIssueNoCurFilename") Exit Sub End If @@ -63,7 +63,7 @@ Private Sub makeUpIssue firstPage = page oViewCursor.jumpToPage(page) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) - statusIndicator.Start("Сборка выпуска начата, подождите",30) + statusIndicator.Start(getTranslation("compileJournalIssueStatusInProgerss"),30) For i = 1 To 25 'Find section file FilePath = findArticleFile(path,i) @@ -138,7 +138,7 @@ Private Sub makeUpIssue 'ThisComponent.FootnoteSettings.FootnoteCounting=1 'setHeadingsOutlineLevels statusIndicator.end() - MsgBox "Сборка выпуска завершена." + MsgBox getTranslation("compileJournalIssueFinished") End Sub Private Sub setPageNumbers() @@ -197,7 +197,7 @@ Private Function lastPageNum(i As Integer) Exit Do End If If curPageNum = 0 Then - MsgBox "Произошла ошибка при нахождении последней страницы статьи" + MsgBox getTranslation("lastPageNumNotFound") Exit Do End If @@ -222,7 +222,7 @@ Private Function getUDK() getFirstTextInStyle("УДК") foundUDK = oViewCursor.Text.createTextCursorByRange(oViewCursor).getString() If foundUDK = "" Then - getUDK = "Задать УДК" + getUDK = getTranslation("compileJournalIssueSetUDKDummyText") Else getUDK = foundUDK backspace @@ -262,7 +262,7 @@ Private Function getCopyright() oViewCursor.goToRange(oSavePosition, false) Exit Function Else - getCopyright = "© " + "Фамилия И.О." + getCopyright = getTranslation("compileJournalIssueCopyrightDummyText") EndIf End If oViewCursor.goToRange(oSavePosition, false) @@ -279,7 +279,7 @@ Private Function getAuthor() If authors <> "" Then getAuthor = authors Else - getAuthor = "Фамилия И.О." + getAuthor = getTranslation("compileJournalIssueAuthorDummyText") End If oViewCursor.goToRange(oSavePosition, false) End Function @@ -295,7 +295,7 @@ Private Function getArticleHeader() If articleHeader <> "" Then getArticleHeader = articleHeader Else - getArticleHeader = "Название статьи" + getArticleHeader = getTranslation("compileJournalIssueArticleTitleDummyText") End If oViewCursor.goToRange(oSavePosition, false) End Function @@ -306,7 +306,7 @@ Private Function getSectionX(section As String) Dim startPage As String Dim endPage As String If section = "" Then - section = "Задайте название радела!" + section = getTranslation("compileJournalIssueSectionDummyText") End If oViewCursor = ThisComponent.CurrentController.getViewCursor() startPage = oViewcursor.getPage() @@ -448,7 +448,7 @@ Private Sub setDefaultFirstPageMetadata(curStyle As Object,i As Integer) insertUserField(oViewCursor,"article" + i + "LastPage","00" ) 'Footer without table oViewCursor.goToRange(curStyle.FooterText.End, false) - insertUserField(oViewCursor,"author" + i + "Copyright","© Фамилия И.О. " + i ) + insertUserField(oViewCursor,"author" + i + "Copyright",getTranslation("compileJournalIssueCopyrightDummyText") & i ) End Sub @@ -479,7 +479,7 @@ Private Sub setPHAFirstPageMetadata(curStyle As Object,i As Integer) insertUserField(oViewCursor,"article" + i + "LastPage","00" ) oViewCursor.goToRange(curStyle.FooterText.End, false) - insertUserField(oViewCursor,"author" + i + "Copyright","© Фамилия И.О. " + i ) + insertUserField(oViewCursor,"author" & i & "Copyright",getTranslation("compileJournalIssueCopyrightDummyText") & i ) End Sub @@ -499,10 +499,10 @@ Private Sub setEIFNFirstPageMetadata(curStyle,i) oViewCursor.gotoEndOfLine(false) oViewCursor.goright(1,false) oViewCursor.gotoEndOfLine(false) - insertUserField(oViewCursor,"article" + i + "LastPage","00" ) + insertUserField(oViewCursor,"article" & i & "LastPage","00" ) oViewCursor.goright(1,false) 'Добавить УДК - insertUserField(oViewCursor,"article" + i + "UDK","УДК "+ i + "." + i) + insertUserField(oViewCursor,"article" & i & "UDK","УДК "+ i + "." + i) 'rightHeaderCell rightHeaderCell = oHeaderTable.getCellByPosition(1,0).getStart() @@ -511,22 +511,22 @@ Private Sub setEIFNFirstPageMetadata(curStyle,i) oViewCursor.gotoEndOfLine(false) oViewCursor.goright(1,false) oViewCursor.gotoEndOfLine(false) - insertUserField(oViewCursor,"article" + i + "LastPage","00" ) + insertUserField(oViewCursor,"article" & i & "LastPage","00" ) ' go to page number 2nd place oViewCursor.goright(1,false) oViewCursor.gotoEndOfLine(false) - insertUserField(oViewCursor,"article" + i + "Num","" + i ) + insertUserField(oViewCursor,"article" & i * "Num","" & i ) oFooterTableLeft = curStyle.FooterTextLeft.CreateEnumeration().nextElement rightHeaderCell = oFooterTableLeft.getCellByPosition(1,0).getStart() oViewCursor.goToRange(rightHeaderCell, false) - insertUserField(oViewCursor,"author" + i + "Copyright","© Фамилия И.О. " + i ) + insertUserField(oViewCursor,"author" & i & "Copyright",getTranslation("compileJournalIssueCopyrightDummyText") & i ) 'TODO!!!!SECOND PAGE oFooterTableRight = curStyle.FooterTextRight.CreateEnumeration().nextElement leftHeaderCell = oFooterTableRight.getCellByPosition(0,0).getStart() oViewCursor.goToRange(leftHeaderCell, false) - insertUserField(oViewCursor,"author" + i + "Copyright","© Фамилия И.О. " + i ) + insertUserField(oViewCursor,"author" & i & "Copyright",getTranslation("compileJournalIssueCopyrightDummyText") & i ) End Sub @@ -545,7 +545,7 @@ Private Sub setAritclePageHeaders(i) oViewCursor = ThisComponent.CurrentController.getViewCursor() oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) pageStyles = ThisComponent.StyleFamilies.getByName("PageStyles") - page = findFirstPageNumberWithStyle("Статья " + i + " стр.1") + page = findFirstPageNumberWithStyle("Статья " & i & " стр.1") oViewCursor.jumpToPage(page) articleStartPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) @@ -573,11 +573,11 @@ Private Sub setAritclePageHeaders(i) rightHeaderCell = rightHeaderTable.getCellByPosition(0,0).getStart() oViewCursor.goToRange(rightHeaderCell, false) If templateName = "" Then - insertUserField(oViewCursor,"rightHeader" + i ,"Фамилия И.О. Название статьи" + i ) + insertUserField(oViewCursor,"rightHeader" & i ,"Фамилия И.О. Название статьи" & i ) ElseIf templateName = PHA Then - insertUserField(oViewCursor,"rightHeader" + i ,"Фамилия И.О. Название статьи" + i ) + insertUserField(oViewCursor,"rightHeader" & i ,"Фамилия И.О. Название статьи" & i ) ElseIf templateName = EIFN Then - insertUserField(oViewCursor,"rightHeader" + i ,"Название статьи " + i ) + insertUserField(oViewCursor,"rightHeader" & i ,"Название статьи " + i ) rightHeaderCell = rightHeaderTable.getCellByPosition(2,0).getStart() oViewCursor.goToRange(rightHeaderCell, false) insertLinkedImage(CStr(i),"headerImageRight") @@ -588,15 +588,15 @@ Private Sub setAritclePageHeaders(i) If templateName = "" Then leftHeaderCell = leftHeaderTable.getCellByPosition(1,0).getStart() oViewCursor.goToRange(leftHeaderCell, false) - insertUserField(oViewCursor,"leftHeader" + i ,"Название раздела" + i ) + insertUserField(oViewCursor,"leftHeader" & i ,"Название раздела" & i ) ElseIf templateName = PHA Then leftHeaderCell = leftHeaderTable.getCellByPosition(1,0).getStart() oViewCursor.goToRange(leftHeaderCell, false) - insertUserField(oViewCursor,"leftHeader" + i ,"Название раздела" + i ) + insertUserField(oViewCursor,"leftHeader" & i ,"Название раздела" & i ) ElseIf templateName = EIFN Then leftHeaderCell = leftHeaderTable.getCellByPosition(2,0).getStart() oViewCursor.goToRange(leftHeaderCell, false) - insertUserField(oViewCursor,"leftHeader" + i ,"И.О. Фамилия" + i ) + insertUserField(oViewCursor,"leftHeader" & i ,"И.О. Фамилия" & i ) leftHeaderCell = leftHeaderTable.getCellByPosition(0,0).getStart() oViewCursor.goToRange(leftHeaderCell, false) insertLinkedImage(CStr(i),"headerImageLeft") diff --git a/ePublishing/replaceParaStyle.xdl b/ePublishing/replaceParaStyle.xdl index 8eedc50..d90e19a 100644 --- a/ePublishing/replaceParaStyle.xdl +++ b/ePublishing/replaceParaStyle.xdl @@ -1,8 +1,8 @@ - + - + diff --git a/ePublishing/script.xlb b/ePublishing/script.xlb index 4efdd33..ea7d1b6 100644 --- a/ePublishing/script.xlb +++ b/ePublishing/script.xlb @@ -10,4 +10,5 @@ + \ No newline at end of file diff --git a/translations.ods b/translations.ods new file mode 100644 index 0000000000000000000000000000000000000000..6f4955111ea219f7e1fde062881aee1fcbbe51e7 GIT binary patch literal 16755 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 literal 0 HcmV?d00001