From 1c4bdce4b1d72600dbd75c7fd6cae2a4ba65bba2 Mon Sep 17 00:00:00 2001 From: VIPIN PAUL <37212471+vipinpaul@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:08:52 +0530 Subject: [PATCH 01/17] Removing tW & renaming twl (#356) * Removing tW & renaming twl * minor fix and renaming the title --- .../EditorPage/Reference/TranslationHelps.js | 70 +++++++++---------- .../src/components/Resources/ListResources.js | 10 +-- .../components/Resources/ResourcesSideBar.js | 12 ++-- .../Resources/useGetOnlineOfflineResource.js | 2 +- renderer/src/translations/en.js | 4 +- renderer/src/translations/id.js | 4 +- 6 files changed, 51 insertions(+), 51 deletions(-) diff --git a/renderer/src/components/EditorPage/Reference/TranslationHelps.js b/renderer/src/components/EditorPage/Reference/TranslationHelps.js index 08c15df1e..975e23cd9 100644 --- a/renderer/src/components/EditorPage/Reference/TranslationHelps.js +++ b/renderer/src/components/EditorPage/Reference/TranslationHelps.js @@ -43,23 +43,23 @@ const TranslationHelps = ({ fontSize={fontSize} /> ); - case 'twl': - return ( - - ); + // case 'twl': + // return ( + // + // ); case 'twlm': return ( - ); + ); case 'tq': return ( ); - case 'tw': - return ( - - ); + // case 'tw': + // return ( + // + // ); case 'ta': return ( Date: Wed, 4 Sep 2024 10:58:17 +0530 Subject: [PATCH 02/17] Ft/project management (#358) * Setup of Project management * ft:components for proejct management. * basic UI for book selection * refactor component of toggle select books * changed custom to deselct * chapter range selection * added chapter modify option for all books * read metadata and change hover style and selection for book * highlight selected scope * UI change for scope selection. functionality to add book to scope. remove button added for scop * remove from scope * chapter selection and deselection for books and load back the stored value on book change * Chapter range selection * Added book and chapter filters * Re-designed the flow and auto-updating the existing books & chapters in the scope from the backend * Book and Chapter level scope selection for audio projects * Cleaning up the code base * Disabling auto display of 1st chapter of the selected book in the scope --------- Co-authored-by: sijumoncy <72241997+sijumoncy@users.noreply.github.com> --- .../EditorPage/AudioEditor/AudioEditor.js | 3 +- .../Navigation/reference/SelectBook.js | 24 +- .../reference/SelectReference.module.css | 4 + .../Navigation/reference/SelectVerse.js | 7 +- .../Common/Button/BookButton.jsx | 25 ++ .../Common/Button/Button.jsx | 25 ++ .../ProjectManagement/ProjectManagement.js | 181 +++++++++++ .../scope-management/BookItem.jsx | 34 ++ .../scope-management/BulkSelectionGroup.jsx | 28 ++ .../scope-management/ScopeHead.jsx | 9 + .../scope-management/ScopeManagement.jsx | 292 ++++++++++++++++++ .../scope-management/TitleBar.jsx | 9 + .../utils/readProjectScope.js | 62 ++++ .../utils/updateBurritoScope.js | 24 ++ .../src/components/Projects/ProjectList.js | 16 +- .../src/components/Projects/ProjectRow.js | 20 +- .../src/components/context/ProjectContext.js | 3 + .../biblenavigation/BibleNavigation.js | 42 ++- 18 files changed, 783 insertions(+), 25 deletions(-) create mode 100644 renderer/src/components/ProjectManagement/Common/Button/BookButton.jsx create mode 100644 renderer/src/components/ProjectManagement/Common/Button/Button.jsx create mode 100644 renderer/src/components/ProjectManagement/ProjectManagement.js create mode 100644 renderer/src/components/ProjectManagement/scope-management/BookItem.jsx create mode 100644 renderer/src/components/ProjectManagement/scope-management/BulkSelectionGroup.jsx create mode 100644 renderer/src/components/ProjectManagement/scope-management/ScopeHead.jsx create mode 100644 renderer/src/components/ProjectManagement/scope-management/ScopeManagement.jsx create mode 100644 renderer/src/components/ProjectManagement/scope-management/TitleBar.jsx create mode 100644 renderer/src/components/ProjectManagement/utils/readProjectScope.js create mode 100644 renderer/src/components/ProjectManagement/utils/updateBurritoScope.js diff --git a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js index 793151c69..23d059a5c 100644 --- a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js +++ b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js @@ -66,7 +66,8 @@ const AudioEditor = ({ editor }) => { const _books = []; Object.entries(_data.type.flavorType.currentScope).forEach( async ([key]) => { - if (key === bookId.toUpperCase()) { + // Checking whether the selected book and chapter is in the scope or not + if (key === bookId.toUpperCase() && _data.type.flavorType.currentScope[key].includes(chapter)) { _books.push(bookId.toUpperCase()); const fs = window.require('fs'); const path = require('path'); diff --git a/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js b/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js index e0cde5603..40261083e 100644 --- a/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js +++ b/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { Disclosure, Transition } from '@headlessui/react'; @@ -14,6 +15,8 @@ export default function SelectBook({ setSelectedBooks, scope, existingScope = [], + disableScope = {}, + call = '', }) { const [openNT, setOpenNT] = useState(true); const [openOT, setOpenOT] = useState(true); @@ -99,11 +102,13 @@ export default function SelectBook({ role="presentation" key={book.name} aria-label={`ot-${book.name}`} - onClick={(e) => ( - multiSelectBook + onClick={(e) => (call === 'audio-project' ? (Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) + ? (multiSelectBook ? selectMultipleBooks(e, book.key, book.name) - : bookSelect(e, book.key, book.name))} - className={`${styles.bookSelect} ${selectedBooks.includes((book.key).toUpperCase()) ? styles.active : ''}`} + : bookSelect(e, book.key, book.name)) : '') : (multiSelectBook + ? selectMultipleBooks(e, book.key, book.name) + : bookSelect(e, book.key, book.name)))} + className={`${call === 'audio-project' && !Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) ? styles.disabled : (selectedBooks.includes((book.key).toUpperCase()) ? (styles.bookSelect, styles.active) : styles.bookSelect)}`} > {book.name} @@ -138,10 +143,13 @@ export default function SelectBook({ key={book.name} role="presentation" aria-label={`nt-${book.name}`} - onClick={(e) => (multiSelectBook - ? selectMultipleBooks(e, book.key, book.name) - : bookSelect(e, book.key, book.name))} - className={`${styles.bookSelect} ${selectedBooks.includes((book.key).toUpperCase()) ? styles.active : ''}`} + onClick={(e) => (call === 'audio-project' ? (Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) + ? (multiSelectBook + ? selectMultipleBooks(e, book.key, book.name) + : bookSelect(e, book.key, book.name)) : '') : (multiSelectBook + ? selectMultipleBooks(e, book.key, book.name) + : bookSelect(e, book.key, book.name)))} + className={`${call === 'audio-project' && !Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) ? styles.disabled : (selectedBooks.includes((book.key).toUpperCase()) ? (styles.bookSelect, styles.active) : styles.bookSelect)}`} > {book.name} diff --git a/renderer/src/components/EditorPage/Navigation/reference/SelectReference.module.css b/renderer/src/components/EditorPage/Navigation/reference/SelectReference.module.css index 58c675f42..e1c09f06f 100644 --- a/renderer/src/components/EditorPage/Navigation/reference/SelectReference.module.css +++ b/renderer/src/components/EditorPage/Navigation/reference/SelectReference.module.css @@ -8,3 +8,7 @@ .active { @apply py-1 px-2 bg-primary text-white cursor-pointer rounded sm:w-10/12 lg:w-5/12; } + +.disabled { + @apply py-1 px-2 text-slate-400 rounded; +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/Navigation/reference/SelectVerse.js b/renderer/src/components/EditorPage/Navigation/reference/SelectVerse.js index 40fa0165a..ba564b1ce 100644 --- a/renderer/src/components/EditorPage/Navigation/reference/SelectVerse.js +++ b/renderer/src/components/EditorPage/Navigation/reference/SelectVerse.js @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ import { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { Disclosure, Transition } from '@headlessui/react'; @@ -23,6 +24,8 @@ export default function SelectVerse({ setVerseSelectActive, setChapterNumber, setVerseNumber, + scopedChapters, + call = '', }) { const [controlVerseSelect, setControlVerseSelect] = useState([]); const [openChapter, setOpenChapter] = useState(true); @@ -115,8 +118,8 @@ export default function SelectVerse({ key={chapter.key} role="presentation" id={`chapter-${chapter.name}`} - onClick={(e) => { onChapterSelect(e, chapter.key); }} - className={styles.select} + onClick={(e) => { call === 'audio-project' ? (scopedChapters.includes(chapter.name) ? onChapterSelect(e, chapter.key) : '') : onChapterSelect(e, chapter.key); }} + className={call === 'audio-project' ? (scopedChapters.includes(chapter.name) ? styles.select : styles.disabled) : styles.select} > {chapter.name} diff --git a/renderer/src/components/ProjectManagement/Common/Button/BookButton.jsx b/renderer/src/components/ProjectManagement/Common/Button/BookButton.jsx new file mode 100644 index 000000000..d06d90d33 --- /dev/null +++ b/renderer/src/components/ProjectManagement/Common/Button/BookButton.jsx @@ -0,0 +1,25 @@ +import React from 'react'; + +function BookButton({ + onClick, + children, + disabled = false, + className = '', + ...props +}) { + const buttonClasses = `py-1 px-2 hover:bg-primary hover:text-white hover:font-bold cursor-pointer rounded text-left ${className} `; + + return ( + + ); +} + +export default BookButton; diff --git a/renderer/src/components/ProjectManagement/Common/Button/Button.jsx b/renderer/src/components/ProjectManagement/Common/Button/Button.jsx new file mode 100644 index 000000000..9a32cbaf8 --- /dev/null +++ b/renderer/src/components/ProjectManagement/Common/Button/Button.jsx @@ -0,0 +1,25 @@ +import React from 'react'; + +function Button({ + children, + type = 'button', + onClick, + disabled = false, + ...props +}) { + return ( + + ); +} + +export default Button; diff --git a/renderer/src/components/ProjectManagement/ProjectManagement.js b/renderer/src/components/ProjectManagement/ProjectManagement.js new file mode 100644 index 000000000..54d8cc5a1 --- /dev/null +++ b/renderer/src/components/ProjectManagement/ProjectManagement.js @@ -0,0 +1,181 @@ +/* eslint-disable no-useless-escape */ +import React, { + useRef, Fragment, + useEffect, + useCallback, + useState, +} from 'react'; +import PropTypes from 'prop-types'; +import { Dialog, Transition } from '@headlessui/react'; +import { useTranslation } from 'react-i18next'; +import { SnackBar } from '@/components/SnackBar'; +// import { LoadingSpinner } from '@/components/LoadingSpinner'; +import CloseIcon from '@/illustrations/close-button-black.svg'; +import * as logger from '../../logger'; +import ScopeManagement from './scope-management/ScopeManagement'; +import { readProjectScope } from './utils/readProjectScope'; +import { LoadingSpinner } from '../LoadingSpinner'; +import { updateBurritoScope } from './utils/updateBurritoScope'; + +export default function ProjectMangement(props) { + const { + open, + closePopUp, + project, + } = props; + const { t } = useTranslation(); + const cancelButtonRef = useRef(null); + const [snackBar, setOpenSnackBar] = useState(false); + const [snackText, setSnackText] = useState(''); + const [notify, setNotify] = useState(); + const [currentScope, setCurrentScope] = useState({}); + const [metadata, setMetadata] = useState(''); + const [loading, setLoading] = useState(false); + const [backendScope, setBackendScope] = useState({}); + + const close = () => { + logger.debug('ProjectMangement.js', 'Closing the Dialog Box'); + setOpenSnackBar(true); + closePopUp(false); + setMetadata({}); + }; + + // load Metadata of the project + const getProjectMetadata = useCallback(async () => { + try { + setLoading(true); + const projectFullName = `${project?.name}_${project?.id?.[0]}`; + const projectMeta = await readProjectScope(projectFullName); + setMetadata(projectMeta.metadata); + setBackendScope(projectMeta.scope); + } catch (err) { + logger.error('ProjectMangement.js', `Read Meta : ${err}`); + } finally { + setLoading(false); + } + }, [project]); + function compareNumbers(a, b) { + return a - b; + } + const handleProject = () => { + logger.debug('ProjectMangement.js', 'Inside updateBurrito'); + let mergedScope = currentScope; + // Merge both existing and new scope, if any scope difference exists + if (Object.keys(backendScope).length > 0) { + Object.entries(backendScope).forEach((book) => { + // Checking whether the book in scope is available in currentscope + if (currentScope[book[0]]) { + // merging the chapters of existing and selected books + const scopeSet = backendScope[book[0]]; + const currentSet = currentScope[book[0]]; + const arr = [...scopeSet, ...currentSet]; + const mergedArr = [...new Set(arr)]; + mergedScope = { ...mergedScope, [book[0]]: mergedArr.sort(compareNumbers) }; + } else { + mergedScope = { ...mergedScope, [book[0]]: Object.values(backendScope[book[0]]) }; + } + }); + } + metadata.type.flavorType.currentScope = mergedScope; + const projectFullName = `${project?.name}_${project?.id?.[0]}`; + updateBurritoScope(projectFullName, metadata).then(() => { + setNotify('success'); + setSnackText('Scope updated successfully!'); + close(); + }); + }; + + useEffect(() => { + getProjectMetadata(); + }, [getProjectMetadata]); + + return ( + <> + + {}} + > + +
+
+
+ +
+
+ Project Management + : + {project?.name} +
+ +
+ +
+ +
+ {loading ? : } +
+ +
+ + +
+ +
+ +
+
+
+
+
+ + + ); +} +ProjectMangement.propTypes = { + open: PropTypes.bool, + closePopUp: PropTypes.func, + project: PropTypes.object, +}; diff --git a/renderer/src/components/ProjectManagement/scope-management/BookItem.jsx b/renderer/src/components/ProjectManagement/scope-management/BookItem.jsx new file mode 100644 index 000000000..ccf8f2221 --- /dev/null +++ b/renderer/src/components/ProjectManagement/scope-management/BookItem.jsx @@ -0,0 +1,34 @@ +/* eslint-disable no-nested-ternary */ +import React from 'react'; +import BookButton from '../Common/Button/BookButton'; +import XMark from '@/icons/Xelah/XMark.svg'; + +function BookItem({ + book, handleSelectBook, handleRemoveScope, isInScope, disable, +}) { + return ( +
+ handleSelectBook(e, book)} + > +
+ {book.name} +
+ + handleRemoveScope(e, book)} + /> +
+
+ ); +} + +export default BookItem; diff --git a/renderer/src/components/ProjectManagement/scope-management/BulkSelectionGroup.jsx b/renderer/src/components/ProjectManagement/scope-management/BulkSelectionGroup.jsx new file mode 100644 index 000000000..c3a740911 --- /dev/null +++ b/renderer/src/components/ProjectManagement/scope-management/BulkSelectionGroup.jsx @@ -0,0 +1,28 @@ +import React from 'react'; + +function BulkSelectionGroup({ + selectedOption = '', + handleSelect, + toggleOptions = [], +}) { + return ( +
+ {toggleOptions.map((option) => ( +
+ + +
+ ))} +
+ ); +} + +export default BulkSelectionGroup; diff --git a/renderer/src/components/ProjectManagement/scope-management/ScopeHead.jsx b/renderer/src/components/ProjectManagement/scope-management/ScopeHead.jsx new file mode 100644 index 000000000..fb3fe2edd --- /dev/null +++ b/renderer/src/components/ProjectManagement/scope-management/ScopeHead.jsx @@ -0,0 +1,9 @@ +import React from 'react'; + +function ScopeHead({ children }) { + return ( +

{children}

+ ); +} + +export default ScopeHead; diff --git a/renderer/src/components/ProjectManagement/scope-management/ScopeManagement.jsx b/renderer/src/components/ProjectManagement/scope-management/ScopeManagement.jsx new file mode 100644 index 000000000..87961a39a --- /dev/null +++ b/renderer/src/components/ProjectManagement/scope-management/ScopeManagement.jsx @@ -0,0 +1,292 @@ +import React, { useEffect, useState } from 'react'; +import { useBibleReference } from 'bible-reference-rcl'; +import ScopeHead from './ScopeHead'; +import TitleBar from './TitleBar'; +import BookButton from '../Common/Button/BookButton'; +import BulkSelectionGroup from './BulkSelectionGroup'; +import Button from '../Common/Button/Button'; +import BookItem from './BookItem'; +import * as logger from '../../../logger'; + +const initialBook = 'gen'; +const initialChapter = '1'; +const initialVerse = '1'; + +const ToggleBookOptions = [ + { key: 'all', name: 'All' }, + { key: 'old', name: 'Old' }, + { key: 'new', name: 'New' }, + { key: 'none', name: 'Deselect' }, +]; + +const ToggleChapterOptions = [ + { key: 'all', name: 'All' }, + { key: 'none', name: 'Deselect' }, +]; + +function ScopeManagement({ + metadata, currentScope, setCurrentScope, backendScope, +}) { + const [bookFilter, setBookFilter] = useState(''); + const [chapterFilter, setChapterFilter] = useState(''); + const [selectedChaptersSet, setSelectedChaptersSet] = useState(new Set([])); + + const { + state: { + // chapter, + // verse, + bookList, + chapterList, + // verseList, + bookName, + bookId, + }, actions: { + onChangeBook, + // onChangeChapter, + // onChangeVerse, + // applyBooksFilter, + }, + } = useBibleReference({ + initialBook, + initialChapter, + initialVerse, + }); + + const handleChangeBookToggle = (event) => { + setBookFilter(event.target.value); + const bookObj = {}; + if (event.target.value === 'all') { + bookList.forEach((book) => { + bookObj[book.key.toUpperCase()] = []; + }); + } else if (event.target.value === 'old') { + bookList?.slice(0, 39)?.forEach((book) => { + bookObj[book.key.toUpperCase()] = []; + }); + } else if (event.target.value === 'new') { + bookList?.slice(39)?.forEach((book) => { + bookObj[book.key.toUpperCase()] = []; + }); + } + const bookCode = Object.keys(bookObj)[0]; + onChangeBook(bookCode, bookCode); + setCurrentScope(bookObj); + }; + + const handleChangeChapterToggle = (event) => { + setChapterFilter(event.target.value); + let stringArray = []; + if (event.target.value === 'all') { + const numberArray = Array(chapterList.length).fill().map((_, idx) => 1 + idx); + stringArray = numberArray.map(String); + } + setCurrentScope((prev) => { + // check and change the selectedChapters + setSelectedChaptersSet(new Set(stringArray)); + return ({ ...prev, [bookId.toUpperCase()]: stringArray }); + }); + }; + + const handleSelectBook = (e, book) => { + if (bookFilter) { + setBookFilter(''); + } + const bookCode = book.key.toUpperCase(); + setCurrentScope((prev) => { + // check and change the selectedChapters + setSelectedChaptersSet(new Set(prev[bookCode]) || new Set([])); + return ({ ...prev, [bookCode]: prev[bookCode] || [] }); + }); + onChangeBook(book.key, book.key); + }; + + const handleChapterRangeSelection = (e) => { + e.preventDefault(); + let start = parseInt(e.target?.start?.value, 10) || null; + let end = parseInt(e.target?.end?.value, 10) || null; + // hanlde start greater and end smaller + if (start > end) { + const temp = start; + start = end; + end = temp; + } + const numberArray = Array(end - start + 1).fill().map((_, idx) => start + idx); + const stringArray = numberArray.map(String); + setCurrentScope((prev) => { + // check and change the selectedChapters + setSelectedChaptersSet(new Set(stringArray)); + return ({ ...prev, [bookId.toUpperCase()]: stringArray }); + }); + // e.target.start.value = ''; + // e.target.end.value = ''; + }; + + const handleRemoveScope = (e, book) => { + e.stopPropagation(); + if (bookFilter) { + setBookFilter(''); + } + const bukId = book.key.toUpperCase(); + const newScopeObj = { ...currentScope }; + delete newScopeObj[bukId]; + setCurrentScope(newScopeObj); + }; + + /** + * Fn to toggle chapter selection for the active book + */ + const handleChapterSelection = (e, chapter) => { + if (chapterFilter) { + setChapterFilter(''); + } + const bukId = bookId.toUpperCase(); + if (bukId in currentScope) { + setCurrentScope((prev) => { + const currentCh = new Set(prev[bukId] || new Set([])); + if (currentCh.has(chapter)) { + currentCh.delete(chapter); + } else { + currentCh.add(chapter); + } + setSelectedChaptersSet(currentCh); + return { + ...prev, + [bukId]: Array.from(currentCh), + }; + }); + } else { + logger.error('ScopeManagement.js', 'Active book is not in scope'); + } + }; + + // set current scope from meta + useEffect(() => { + if (metadata?.type?.flavorType?.currentScope) { + const scopeObj = metadata?.type?.flavorType?.currentScope; + // expect at least 1 scope - because creation and scope modification won't allow 0 scope + setSelectedChaptersSet(new Set(scopeObj[0]) || new Set([])); + const bookCode = Object.keys(scopeObj)[0].toUpperCase(); + onChangeBook(bookCode, bookCode); + setCurrentScope(scopeObj); + } else { + logger.error('ScopeManagement.js', 'Unable to read the scope from burrito'); + } + }, []); + + return ( +
+ Project Scope Management + +

Book Selection

+ +
+ +
+
+ {backendScope && bookList?.slice(0, 39)?.map((book) => { + const isScope = book?.key?.toUpperCase() in currentScope; + return ( + + ); + })} +
+ +
+ {backendScope && bookList?.slice(39)?.map((book) => { + const isScope = book?.key?.toUpperCase() in currentScope; + return ( + + ); + })} +
+
+ {bookName + && ( + +

+ Chapter Selection : + {bookName} +

+ +
+ )} + +
+
+ + +
+
+ + +
+ + +
+ +
+
+ {chapterList?.map(({ key, name }) => { + const isInScope = selectedChaptersSet.has(key); + const disable = backendScope[bookId.toUpperCase()]?.includes(key); + return ( + handleChapterSelection(e, name)} + key={key} + // eslint-disable-next-line no-nested-ternary + className={`border min-w-8 text-center ${disable ? 'bg-gray-400' : isInScope ? 'bg-primary text-white font-medium' : ''}`} + > + {name} + + ); + })} +
+
+ +
+ ); +} + +export default ScopeManagement; diff --git a/renderer/src/components/ProjectManagement/scope-management/TitleBar.jsx b/renderer/src/components/ProjectManagement/scope-management/TitleBar.jsx new file mode 100644 index 000000000..8811d9826 --- /dev/null +++ b/renderer/src/components/ProjectManagement/scope-management/TitleBar.jsx @@ -0,0 +1,9 @@ +import React from 'react'; + +function TitleBar({ children }) { + return ( +
{children}
+ ); +} + +export default TitleBar; diff --git a/renderer/src/components/ProjectManagement/utils/readProjectScope.js b/renderer/src/components/ProjectManagement/utils/readProjectScope.js new file mode 100644 index 000000000..ca1a6e799 --- /dev/null +++ b/renderer/src/components/ProjectManagement/utils/readProjectScope.js @@ -0,0 +1,62 @@ +import localForage from 'localforage'; +import * as logger from '../../../logger'; +import packageInfo from '../../../../../package.json'; + +function isDirEmpty(dirname, fs) { + return fs.promises.readdir(dirname).then((files) => files.length > 0); +} + +const getDirectories = (readdirSync, source) => readdirSync(source, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + +// This function returns the Object of books & chapters which has atleast 1 audio file in it. +export const getScope = (project) => { + const path = require('path'); + const scope = {}; + const { readdirSync } = window.require('fs'); + const fs = window.require('fs'); + const list = getDirectories(readdirSync, project); + list.forEach((book) => { + const chapters = getDirectories(readdirSync, path.join(project, book)); + const chapterFilter = []; + chapters.forEach((chapter) => { + // Finding non empty directories/chapters + isDirEmpty(path.join(project, book, chapter), fs).then((value) => { + if (value === true) { + chapterFilter.push(chapter); + } + }); + }); + scope[book] = chapterFilter; + }); + return scope; +}; +export const readProjectScope = async (projectName) => { + try { + logger.debug('readProjectScope.js', `In read metadata - ${projectName}`); + const currentUser = await localForage.getItem('userProfile'); + const newpath = localStorage.getItem('userPath'); + const fs = window.require('fs'); + const path = require('path'); + const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); + + const filePath = path.join(file, projectName, 'metadata.json'); + + if (fs.existsSync(filePath)) { + const metadataFile = await fs.readFileSync(filePath, 'utf-8'); + if (metadataFile) { + logger.debug('readProjectScope.js', `read metadata file successfully - ${projectName}`); + const project = path.join(file, projectName, 'audio', 'ingredients'); + const backendScope = getScope(project); + const json = await JSON.parse(metadataFile); + return { metadata: json, scope: backendScope }; + } + throw new Error(`failed to read settings file - ${projectName}`); + } + throw new Error(`failed to read metadata file - ${projectName}`); + } catch (err) { + logger.error('readProjectScope.js', `read metadata file successfully - ${projectName}`); + throw new Error(err?.message || err); + } +}; diff --git a/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js new file mode 100644 index 000000000..c7cb8985f --- /dev/null +++ b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js @@ -0,0 +1,24 @@ +import localForage from 'localforage'; +import * as logger from '../../../logger'; +import packageInfo from '../../../../../package.json'; + +export const updateBurritoScope = async (projectName, metadata) => { + try { + logger.debug('updateBurritoScope.js', `In update metadata - ${projectName}`); + const currentUser = await localForage.getItem('userProfile'); + const newpath = localStorage.getItem('userPath'); + const fs = window.require('fs'); + const path = require('path'); + const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); + // Finally updating the scope in the metadata + const filePath = path.join(file, projectName, 'metadata.json'); + if (fs.existsSync(filePath)) { + fs.writeFileSync(filePath, JSON.stringify(metadata)); + return true; + } + throw new Error(`failed to read metadata file - ${projectName}`); + } catch (err) { + logger.error('updateBurritoScope.js', `read metadata file successfully - ${projectName}`); + throw new Error(err?.message || err); + } +}; diff --git a/renderer/src/components/Projects/ProjectList.js b/renderer/src/components/Projects/ProjectList.js index ece2c0528..8485de3bf 100644 --- a/renderer/src/components/Projects/ProjectList.js +++ b/renderer/src/components/Projects/ProjectList.js @@ -15,6 +15,7 @@ import NewProject from './NewProject'; import * as logger from '../../logger'; import ProjectRow from './ProjectRow'; import { ProjectContext } from '../context/ProjectContext'; +import ProjectMangement from '../ProjectManagement/ProjectManagement'; export default function ProjectList() { const { t } = useTranslation(); @@ -25,9 +26,7 @@ export default function ProjectList() { const filterList = ['name', 'language', 'type', 'date', 'view']; const { states: { - // starredProjects, projects, - // unstarredProjects, callEditProject, }, action: { @@ -36,7 +35,7 @@ export default function ProjectList() { FetchProjects, }, } = useContext(AutographaContext); - const { states: { openExportPopUp }, actions: { setOpenExportPopUp } } = useContext(ProjectContext); + const { states: { openExportPopUp, openManageProject }, actions: { setOpenExportPopUp, setOpenManageProject } } = useContext(ProjectContext); const [currentProject, setCurrentProject] = useState(); const [filteredProjects, setFilteredProjects] = useState(projects); const handleExportPopUp = (project) => { @@ -57,6 +56,13 @@ export default function ProjectList() { setCallEditProject(false); await FetchProjects(); }; + const manageProject = (project) => { + setCurrentProject(project); + setOpenManageProject(true); + }; + const closeManageProject = () => { + setOpenManageProject(false); + }; return ( <> {!callEditProject ? ( @@ -89,7 +95,7 @@ export default function ProjectList() { orderBy={orderBy} onRequestSort={handleRequestSort} /> - + {(!projects) &&
} @@ -102,6 +108,8 @@ export default function ProjectList() { ) : closeEditProject()} />} + {openManageProject + && } ); } diff --git a/renderer/src/components/Projects/ProjectRow.js b/renderer/src/components/Projects/ProjectRow.js index 472a0e48a..1dbbe7277 100644 --- a/renderer/src/components/Projects/ProjectRow.js +++ b/renderer/src/components/Projects/ProjectRow.js @@ -17,7 +17,7 @@ import NewProjectIcon from '@/icons/new.svg'; import { ProjectContext } from '../context/ProjectContext'; const ProjectRow = ({ - projects, order, orderBy, showArchived, openExportPopUp, handleClickStarred, setCurrentProject, filteredProjects, + projects, order, orderBy, showArchived, openExportPopUp, handleClickStarred, setCurrentProject, filteredProjects, manageProject, }) => { const router = useRouter(); const { t } = useTranslation(); @@ -233,6 +233,24 @@ const ProjectRow = ({ )} + { + project.type === 'Audio' + && ( + + {({ active }) => ( + + )} + + ) + } diff --git a/renderer/src/components/context/ProjectContext.js b/renderer/src/components/context/ProjectContext.js index cded3cd9c..8793de620 100644 --- a/renderer/src/components/context/ProjectContext.js +++ b/renderer/src/components/context/ProjectContext.js @@ -54,6 +54,7 @@ const ProjectContextProvider = ({ children }) => { const [sideBarTab, setSideBarTab] = useState(''); const [openImportPopUp, setOpenImportPopUp] = useState(false); const [openExportPopUp, setOpenExportPopUp] = useState(false); + const [openManageProject, setOpenManageProject] = useState(false); const handleProjectFields = (prop) => (event) => { setNewProjectFields({ ...newProjectFields, [prop]: event.target.value }); @@ -541,6 +542,7 @@ const ProjectContextProvider = ({ children }) => { sideBarTab, openImportPopUp, openExportPopUp, + openManageProject, selectedProjectMeta, importedBookCodes, }, @@ -566,6 +568,7 @@ const ProjectContextProvider = ({ children }) => { setSideBarTab, setOpenImportPopUp, setOpenExportPopUp, + setOpenManageProject, setSelectedProjectMeta, setImportedBookCodes, }, diff --git a/renderer/src/modules/biblenavigation/BibleNavigation.js b/renderer/src/modules/biblenavigation/BibleNavigation.js index a5cceef91..0be06ca39 100644 --- a/renderer/src/modules/biblenavigation/BibleNavigation.js +++ b/renderer/src/modules/biblenavigation/BibleNavigation.js @@ -10,15 +10,8 @@ import { import * as localforage from 'localforage'; import SelectBook from '@/components/EditorPage/Navigation/reference/SelectBook'; import SelectVerse from '@/components/EditorPage/Navigation/reference/SelectVerse'; - -// import { -// LockOpenIcon, -// LockClosedIcon, -// BookmarkIcon, -// CogIcon, -// ChatIcon, -// } from '@heroicons/react/24/outline'; import { ReferenceContext } from '@/components/context/ReferenceContext'; +import { splitStringByLastOccurence } from '@/util/splitStringByLastMarker'; import { isElectron } from '../../core/handleElectron'; export default function BibleNavigation(props) { @@ -58,7 +51,7 @@ export default function BibleNavigation(props) { const [selectedVerses, setSelectedVerses] = useState([]); const [selectedBooks, setSelectedBooks] = useState([]); const [verselectActive, setVerseSelectActive] = useState(false); - + const [existingScopes, setExistingScopes] = useState({}); function closeBooks() { setOpenBook(false); } @@ -79,6 +72,25 @@ export default function BibleNavigation(props) { if (multiSelectVerse) { setSelectedVerses([]); } } + const getProjectScope = () => { + localforage.getItem('currentProject').then(async (projectName) => { + const _projectname = await splitStringByLastOccurence(projectName, '_'); + localforage.getItem('projectmeta').then((value) => { + Object?.entries(value).forEach( + ([, _value]) => { + Object?.entries(_value).forEach( + ([, resources]) => { + if (resources.identification.name.en === _projectname[0]) { + setExistingScopes(resources.type.flavorType.currentScope); + } + }, + ); + }, + ); + }); + }); + }; + useEffect(() => { if (isElectron()) { localforage.getItem('refBibleBurrito') @@ -104,6 +116,13 @@ export default function BibleNavigation(props) { localforage.setItem('navigationHistory', [bookId, chapter]); }, [bookId, chapter]); + useEffect(() => { + if (Object.keys(existingScopes) < 1) { + getProjectScope(); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + useEffect(() => { if (openBook === false && openVerse === false) { setCloseNavigation(true); @@ -179,6 +198,9 @@ export default function BibleNavigation(props) { // "scope" is added to disable the click on the book list. scope="Other" will only // allow to click/select the book. scope="Other" + existingScope={[]} + disableScope={existingScopes} + call="audio-project" > )} diff --git a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js index fe82639cd..4d2a2f9f2 100644 --- a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js +++ b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js @@ -260,7 +260,8 @@ export default function AdvancedSettingsDropdown({ call, project, projectType }) - + {projectType === 'Audio' + && NOTE: Choose the book and chapter from the SCOPE MANAGEMENT option on the project listing page.} {/*
*/}
{/* Date: Thu, 12 Sep 2024 16:45:40 +0200 Subject: [PATCH 05/17] PDF Generator update (#361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - added a Juxta mode that creates a translation burrito - added a 'factoryCreateContent.js' file to help factorize some code for 'createObsContent', 'createVersificationUSFM' and 'createAudioVersification' in 'saveProjetcsMeta.js' - fixing some typos, fixing lint * Refactorization of 'saveProjectsMeta.js' * Scripture Burrito as a resource : added the poissibility for the user to search and download a SB as a resource in a module * removed checkbox from the UI and query sb resource everytime * Added a juxtalinear editor along with a new mode. - auto load a book on the opening of a project - auto save after a modification - fixed a bit of typos and code * created a juxtaBurrito creator and a function to add juxta content. Also edited the icon for Juxta mode (it's visible now) you can create a new juxta project * ADDED juxta support for SB creation and fixed some typos * ADDED support for usfm import for a juxta project. Now we have to change the way a juxta json is built. * juxtalineat mode functionnal * UPDATE : now the interface handle corectly a json juxta file and update it if needed. and layout color update * function to update a json juxta file if needed * checksums ok for each modifications of the juxta * bugfix : juxta was still using a translation settings * quick fix * added new kewboard shortcuts : 'Tab' to navigate through line chuncks, 'double click' to modify a chunck, 'enter' to end the modification of a chunck. And added seemless navigation between Juxtalinear editor and the BibleEditorX. Navigating through verses and chapters with the menu bar will load the corresponding sentence and vice versa. * removing a useless 'console.log' * FIXED font size when aditing a chunck, ADDED a bit of css and added a skip for the liter for .ts files * added juxtalinear alignment editor * added prototype of Grammateus * added release for win64 * to the point it works in scribe * checkpoint for juxtaligner * base code for pdf print * UPDATE succesful. we also save ne more option to the settings file of the user : to know if the help pop has already been opened once * removed useless comments and log * removed useless comments and log * added markdown rendering for juxtalign editor and fix #6 * Do print modal zoom on pdf 2 sections for prints font size, paper size, font familly selection restyling of original modal * I put the sentences loading one layer outside the main editor, to avoid the editor to re-render everytime the juxtalinear editor module * do uninstall wrong pdf-react * added basecode for bouquet picker * base for Scripture content picker * 'it works' version of scriptureContentPicker in scribe, with a button to open the popup example * do sortableList do accordion in sortableList do select new option for sortable list * do UwCommit for presentation do css merge * do add hiroshi componenent * now hiroshi's module is nice and clean. Scribe also have 'listResourcesForPdf' as the json list for the module to list resources * added a search bar and bugfixes * hid the 'Korennummi' and 'Word' tabs * added functions to parse burrito resources * Many bugfixes https://github.com/bible-technology/scribe-scripture-editor/pull/303#issuecomment-2034384825 * add a check if the folder exists * added a little bit of secure code for OBS loading * changed the behavior of the Snackbar. If error === 'failure' the snackbar will show up for a longer time * changed the behavior of the Snackbar. If error === 'failure' the snackbar will show up for a longer time * do add picker for scriptures in pdf * bold text 'CREATE PROJECT' for better visibility and start to check 'canonSpecification' for a juxta project * added the feature that download resources not imported by the user for juxtalinear project * ajout ScriptureContentSarchBar en module simple à utiliser * added jxl-pdf as dependencies and an example with '4ColumnSpread' * do specification picker * succesfully imported jxl-pdf * Now the user is correctly notified when the imported books does not match the canon specification, and also, the canon specification automatically matches the file imported * minor bugfixes and code cleaning * changed place of the 'nprogress' by few px * do finish print data setter * added a better user-friendly messages to nugde the user to import at least one resource for a Juxtalinear project * FIXED : archive a Text Translation project OK. * star/unstar a juxtalinear project works now * merge 2 * FIX : bug that prevented some resources to show up. and FIX : bug that was throwing an error when a user where to search for a resource in the resource search field, and click on 'no match found' * deleted package-lock.json and updated yarn.lock * updated french translation * add wrappers * 1/2 do figma revamp * bugfix : you can now edit a juxta project properly * fixed bug where on book change, the sentences where wronly saved under another filename * make 'jsonFileContent.bookCode' to upper case for safety reasons * FIX : export/import now works properly for juxtalinear projects * interface, first draft kitchen faucet * added global.PdfGen directly into the code * first stage of clean up of code en refactor style * second commit structure and refactor code, merge pdfGen, usePdfGen signature for section creation * some adjustment of ui, Json validation for Print button * fixed some horrible indent * fix obs auto zipping on export * spinner and 'create project' button css fix. * 'create project' button reverted * pdfGen working interface with obs * technical demo pdfgen wip * fixed most of the lint errors. It leaves the 'control label errors' and one nested ternary operation here : 'renderer/src/components/EditorPage/Reference/OBS/ObsTn.js' line 147 * lint fixes until 'labels missing' * removed useless file * removed a comment * updated yarn lock and deps * no more error with big pdf * updated packages * bug fixes, by project print * deleted useless files * deleted useless files * remove me file * select options defaults * little changes * for PR change add error in user consol when print fail change logic for book select in bcvWrapper 4 - 2 column spread work 4 -2 column and other are now only selectable in advance mode close pdf modal with button change export file name other small changes * rollback package.json * update yarn lock * bug fixes * pdf-gen updata * removed 'korennumi' and 'word' tabs * changed jxl-pdf version * updated packages * indentation fixes * updated jxl and updated the code to work with juxta * add last changes for PDF print. * removed juxtalign mode and bugfix : #357 => https://github.com/bible-technology/scribe-scripture-editor/issues/357 * trying to increase ulimit * installing distutils setuptools directly from brew for mac machine * installing python-setuptools * dist : release error * trying a configuration to increase 'maxConcurrentTasks' * removed @mui/icons-react from deps and let it in devDeps * updated jxl-pdf * correction of code * increased maxfiles form kernel directly * updated actions/upload-artifact@v1 to v4 * trying kern.maxfiles=10485760 with sudo * the mac build take too much time for yarn install v1.22.19 [1/4] Resolving packages... success Already up-to-date. Done in 0.65s. so I'm trying to make it verbose to detect the problem. Also, I authorized the overwrite of the artifacts * removed some useless 'console.log' and changed the name of the artifacts to avoid error within github actions * updated jxl-pdf * working reset button * changes for : https://github.com/bible-technology/scribe-scripture-editor/pull/361#issuecomment-2342607370 * hide the print button on audio projects --------- Co-authored-by: danielc-n Co-authored-by: Aillet Gabriel Co-authored-by: gabrielaillet <55684583+gabrielaillet@users.noreply.github.com> --- .expo/README.md | 15 + .expo/settings.json | 8 + .github/workflows/node.js.yml | 37 +- .gitignore | 5 +- main/index.js | 7 +- main/preload.js | 3 + next.config.js | 1 + package.json | 65 +- public/icons/circle-info-solid.svg | 1 + public/icons/expand_more.svg | 5 + public/icons/sectionIcons/2Column.svg | 21 + public/icons/sectionIcons/4Column.svg | 31 + .../sectionIcons/NotesOnly [not used yet].svg | 31 + public/icons/sectionIcons/bcv.svg | 19 + public/icons/sectionIcons/biblePlusNotes.svg | 33 + public/icons/sectionIcons/bookNote.svg | 14 + public/icons/sectionIcons/jxlSimple.svg | 21 + public/icons/sectionIcons/jxlSpread.svg | 36 + public/icons/sectionIcons/markdown.svg | 18 + public/icons/sectionIcons/obs.svg | 13 + public/icons/sectionIcons/obsPlusNotes.svg | 20 + public/icons/sectionIcons/paraBible.svg | 25 + public/icons/sundesmos/alignHelp.png | Bin 0 -> 71633 bytes public/icons/sundesmos/check_circleTrue.svg | 6 + public/icons/sundesmos/check_circleWrong.svg | 6 + public/icons/trash.svg | 5 + public/icons/x-solid.svg | 1 + renderer/public/icons/trash.svg | 5 + .../JuxtAlignEditor/AlignedButton.js | 25 + .../EditorPage/JuxtAlignEditor/TIT.json | 16400 ++++++++++++++++ .../JuxtAlignEditor/TIT_align_juxta_psle.json | 216 + .../Titus_ChatGPT_English_JUXTA.json | 16400 ++++++++++++++++ .../JuxtAlignEditor/hooks/htmlmap.js | 65 + .../JuxtAlignEditor/hooks/saveToFile.js | 39 + .../JuxtAlignEditor/hooks/useReadJuxtaFile.js | 63 + .../EditorPage/JuxtAlignEditor/index.jsx | 568 + .../EditorPage/JuxtAlignEditor/jxtl.json | 1344 ++ .../modalSureEverythingAlign.js | 94 + .../EditorPage/JuxtAlignEditor/plse.json | 34 + .../JuxtAlignEditor/react-app-env.d.js | 1 + .../EditorPage/JuxtaTextEditor/Editor.jsx | 41 +- .../JuxtaTextEditor/EditorMenuBar.jsx | 44 +- .../EditorPage/JuxtaTextEditor/index.jsx | 3 + .../components/AppHeader/AppHeader.tsx | 20 +- .../EditorPage/JuxtalinearEditor/index.tsx | 5 +- .../Navigation/reference/SelectBook.js | 17 +- .../CreateProject/AdvancedSettingsDropdown.js | 2 + .../ResourceUtils/readResourceMetadata.js | 2 +- .../ScriptureContentPicker.tsx | 75 + .../ScriptureContentPickerConfig.tsx | 179 + .../ScriptureContentPickerInterfaces.ts | 55 + .../multiple-input/filled-delete-icon.tsx | 27 + .../multiple-input/multiple-input.module.css | 61 + .../multiple-input/multiple-input.tsx | 64 + .../components/multiple-input/state-item.tsx | 46 + ...scripture-content-confirm-modal.module.css | 32 + .../scripture-content-confirm-modal.tsx | 63 + .../scripture-content-edit-modal.module.css | 32 + .../scripture-content-edit-modal.tsx | 241 + .../delete-icon.tsx | 31 + .../scripture-content-list-item/edit-icon.tsx | 29 + .../scripture-content-list-item.module.css | 51 + .../scripture-content-list-item.tsx | 127 + .../scripture-content-list.module.css | 4 + .../scripture-content-list.tsx | 45 + .../scripture-content-type-menu.module.css | 16 + .../scripture-content-type-menu.tsx | 33 + .../ui/components/spinner/spinner.module.css | 23 + .../shared/ui/components/spinner/spinner.tsx | 46 + .../shared/ui/components/tag/tag.tsx | 26 + .../scripture-content-picker-context.tsx | 82 + .../shared/ui/hooks/scripture-reader-hook.tsx | 43 + .../ScriptureContentPicker/shared/ui/index.ts | 8 + .../shared/utils/index.ts | 2 + .../shared/utils/lib/ScriptureReader.ts | 56 + .../shared/utils/lib/utils.ts | 79 + .../Sync/Gitea/EditorSync/EditorSync.js | 16 +- .../src/components/context/ProjectContext.js | 14 +- renderer/src/layouts/editor/FramePdfPopup.jsx | 212 + .../src/layouts/editor/InnerFramePopup.js | 864 + renderer/src/layouts/editor/MenuBar.js | 2 + .../editor/ScriptureContentSearchBar.js | 114 + .../layouts/editor/SortabelList.module.css | 63 + renderer/src/layouts/editor/SortableList.js | 181 + renderer/src/layouts/editor/SubMenuBar.js | 52 + .../editor/pdfGenInterface/PdfPreview.js | 143 + .../HeaderWrapper/BCVHeaderWrapper.js | 246 + .../HeaderWrapper/JXLHeaderWrapper.js | 246 + .../HeaderWrapper/OBSHeaderWrapper.js | 154 + .../pdfGenWrappers/SectionAccordion.js | 322 + .../pdfGenWrappers/WrapperTemplate.js | 374 + .../pdfGenWrappers/fieldPicker/FieldPicker.js | 148 + .../pdfGenWrappers/fieldPicker/InputPicker.js | 53 + .../pdfGenWrappers/fieldPicker/IntPicker.js | 85 + .../pdfGenWrappers/fieldPicker/ListPicker.js | 197 + .../fieldPicker/RessourcePicker.js | 184 + .../fieldPicker/ScripturePicker.js | 162 + .../fieldPicker/SelectPicker.js | 71 + .../fieldPicker/WrapperSection.json | 58 + .../fieldPicker/booleanPicker.js | 61 + .../fieldPicker/customMuiComponent.js | 40 + .../pdfGenWrappers/modalSectionSelection.js | 177 + renderer/src/layouts/editor/selectOptions.js | 63 + renderer/src/util/cursorUtils.js | 4 +- styles/globals.css | 545 + yarn.lock | 6183 +++--- 106 files changed, 45923 insertions(+), 2522 deletions(-) create mode 100644 .expo/README.md create mode 100644 .expo/settings.json create mode 100644 public/icons/circle-info-solid.svg create mode 100644 public/icons/expand_more.svg create mode 100644 public/icons/sectionIcons/2Column.svg create mode 100644 public/icons/sectionIcons/4Column.svg create mode 100644 public/icons/sectionIcons/NotesOnly [not used yet].svg create mode 100644 public/icons/sectionIcons/bcv.svg create mode 100644 public/icons/sectionIcons/biblePlusNotes.svg create mode 100644 public/icons/sectionIcons/bookNote.svg create mode 100644 public/icons/sectionIcons/jxlSimple.svg create mode 100644 public/icons/sectionIcons/jxlSpread.svg create mode 100644 public/icons/sectionIcons/markdown.svg create mode 100644 public/icons/sectionIcons/obs.svg create mode 100644 public/icons/sectionIcons/obsPlusNotes.svg create mode 100644 public/icons/sectionIcons/paraBible.svg create mode 100644 public/icons/sundesmos/alignHelp.png create mode 100644 public/icons/sundesmos/check_circleTrue.svg create mode 100644 public/icons/sundesmos/check_circleWrong.svg create mode 100644 public/icons/trash.svg create mode 100644 public/icons/x-solid.svg create mode 100644 renderer/public/icons/trash.svg create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/AlignedButton.js create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/TIT.json create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/TIT_align_juxta_psle.json create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/Titus_ChatGPT_English_JUXTA.json create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/hooks/htmlmap.js create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/hooks/saveToFile.js create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/hooks/useReadJuxtaFile.js create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/index.jsx create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/jxtl.json create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/modalSureEverythingAlign.js create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/plse.json create mode 100644 renderer/src/components/EditorPage/JuxtAlignEditor/react-app-env.d.js create mode 100644 renderer/src/components/ScriptureContentPicker/ScriptureContentPicker.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/ScriptureContentPickerConfig.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/ScriptureContentPickerInterfaces.ts create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/filled-delete-icon.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/state-item.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list-item/delete-icon.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list-item/edit-icon.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list-item/scripture-content-list-item.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list-item/scripture-content-list-item.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list/scripture-content-list.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-list/scripture-content-list.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-type-menu/scripture-content-type-menu.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-type-menu/scripture-content-type-menu.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/spinner/spinner.module.css create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/spinner/spinner.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/components/tag/tag.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/contexts/scripture-content-picker-context.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/hooks/scripture-reader-hook.tsx create mode 100644 renderer/src/components/ScriptureContentPicker/shared/ui/index.ts create mode 100644 renderer/src/components/ScriptureContentPicker/shared/utils/index.ts create mode 100644 renderer/src/components/ScriptureContentPicker/shared/utils/lib/ScriptureReader.ts create mode 100644 renderer/src/components/ScriptureContentPicker/shared/utils/lib/utils.ts create mode 100644 renderer/src/layouts/editor/FramePdfPopup.jsx create mode 100644 renderer/src/layouts/editor/InnerFramePopup.js create mode 100644 renderer/src/layouts/editor/ScriptureContentSearchBar.js create mode 100644 renderer/src/layouts/editor/SortabelList.module.css create mode 100644 renderer/src/layouts/editor/SortableList.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/FieldPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/InputPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/IntPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/ListPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/RessourcePicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/ScripturePicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/SelectPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/WrapperSection.json create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/booleanPicker.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/fieldPicker/customMuiComponent.js create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/modalSectionSelection.js create mode 100644 renderer/src/layouts/editor/selectOptions.js diff --git a/.expo/README.md b/.expo/README.md new file mode 100644 index 000000000..fd146b4d3 --- /dev/null +++ b/.expo/README.md @@ -0,0 +1,15 @@ +> Why do I have a folder named ".expo" in my project? + +The ".expo" folder is created when an Expo project is started using "expo start" command. + +> What do the files contain? + +- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. +- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator. +- "settings.json": contains the server configuration that is used to serve the application manifest. + +> Should I commit the ".expo" folder? + +No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. + +Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/.expo/settings.json b/.expo/settings.json new file mode 100644 index 000000000..92bc513bf --- /dev/null +++ b/.expo/settings.json @@ -0,0 +1,8 @@ +{ + "hostType": "lan", + "lanType": "ip", + "dev": true, + "minify": false, + "urlRandomness": null, + "https": false +} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index e1477e5cf..f8ddc88df 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -1,4 +1,4 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# This workflow will do a clean install of node dependencies, build the source code, and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Node.js CI @@ -34,14 +34,6 @@ jobs: - name: set max memory allocation run: export NODE_OPTIONS=-max_old_space_size=4096 - # - name: Read version and commit sha - # run: | - # echo "::set-env name=HASH::$(echo $GITHUB_SHA | cut -c1-7)" - # echo "::set-env name=APP_VERSION::$(node -p -e "require('./package.json').version")" - - # - name: Set artifact name - # run: echo "::set-env name=ARTIFACT_NAME::$(echo "Autographa-linux-x64-$APP_VERSION.deb")" - - name: package id: package run: | @@ -51,10 +43,11 @@ jobs: run: | npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" - name: Upload artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: - name: Scribe - path: dist + name: Scribe + path: Scribe-${{ github.run_id }}-${{ github.sha }} + overwrite: true build-windows: runs-on: ubuntu-latest @@ -97,10 +90,11 @@ jobs: mkdir -p artifacts mv dist/*.exe artifacts - name: Upload artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: - name: Scribe + name: Scribe-${{ github.run_id }}-${{ github.sha }} path: artifacts + overwrite: true build-mac: runs-on: macos-latest @@ -119,6 +113,8 @@ jobs: - run: | node --version yarn --version + - name: Increase file descriptor limit + run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 - name: set @bitregistry translation-help run: yarn config set '@bit:registry' https://node.bit.dev @@ -137,14 +133,14 @@ jobs: echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" - /opt/homebrew/opt/python@3.12/bin/pip3 install setuptools - /opt/homebrew/opt/python@3.12/bin/pip3 install distutils + brew install python-setuptools + - name: set max memory allocation run: export NODE_OPTIONS=-max_old_space_size=4096 - name: yarn install - run: yarn install + run: yarn install --verbose - name: install dmg-license run: yarn add dmg-license @@ -158,7 +154,8 @@ jobs: run: | npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" - name: Upload artifacts - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: - name: Scribe - path: dist \ No newline at end of file + name: Scribe-${{ github.run_id }}-${{ github.sha }} + path: dist + overwrite: true \ No newline at end of file diff --git a/.gitignore b/.gitignore index 91bdc8c22..8cbe4b69a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ bower_components out_functions/ out_publish/ /out +/release # ignore db files Autogrpha-DB/ @@ -34,7 +35,7 @@ Autogrpha-DB/ /build /dist .next/ - +.todo # misc .DS_Store *.pem @@ -73,4 +74,4 @@ coverage .npm # Optional REPL history -.node_repl_history \ No newline at end of file +.node_repl_history diff --git a/main/index.js b/main/index.js index 158d55538..038cc32be 100644 --- a/main/index.js +++ b/main/index.js @@ -7,11 +7,14 @@ config.config(); // Packages const { BrowserWindow, app, ipcMain } = require('electron'); -const isDev = require('electron-is-dev'); +// const isDev = require('electron-is-dev'); const prepareNext = require('electron-next'); const { autoUpdater } = require('electron-updater'); let mainWindow; +function isDev() { + return process.argv[2] == '--dev'; +} // Prepare the renderer once the app is ready function createWindow() { mainWindow = new BrowserWindow({ @@ -27,7 +30,7 @@ function createWindow() { }, }); require('@electron/remote/main').enable(mainWindow.webContents); - const url = isDev + const url = isDev() ? 'http://localhost:8000' : format({ pathname: join(__dirname, '../renderer/out/index.html'), diff --git a/main/preload.js b/main/preload.js index 6493da2be..59b36b867 100644 --- a/main/preload.js +++ b/main/preload.js @@ -1,6 +1,7 @@ const { ipcRenderer } = require('electron'); const log = require('electron-log'); const fontList = require('font-list'); +const { PdfGen } = require('jxl-pdf'); const _fonts = []; const fetchFonts = async () => { @@ -19,7 +20,9 @@ fetchFonts(); // Since we disabled nodeIntegration we can reintroduce // needed node functionality here process.once('loaded', () => { + global.ipcRenderer = ipcRenderer; global.log = log; + global.PdfGenStatic = PdfGen global.fonts = _fonts; }); diff --git a/next.config.js b/next.config.js index 21d6210ad..c3dcde20e 100644 --- a/next.config.js +++ b/next.config.js @@ -7,6 +7,7 @@ const nextConfig = { // Fixes npm packages that depend on `fs` module if (!isServer) { config.resolve.fallback.fs = false; + config.resolve.alias.canvas = false; } config.module.rules.push({ test: /\.md$/, diff --git a/package.json b/package.json index b72a2de6e..70862d07e 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "scripts": { "clean": "rimraf dist renderer/.next renderer/out", - "start": "electron .", + "start": "electron . --dev", "dev": "next dev", "prod": "yarn build && next start", "test": "jest", @@ -27,12 +27,11 @@ "build": "next build renderer && next export renderer", "pack-app": "yarn build && electron-builder --dir", "dist": "yarn build && electron-builder -p never", - "deploy": "yarn build && electron-builder -p always" + "deploy": "yarn build && electron-builder -p always", + "makewin": "electron-builder --windows" }, "eslintIgnore": [ - "*.test.js", - "*.tsx", - "*.ts" + "*.test.js" ], "build": { "asar": true, @@ -40,6 +39,10 @@ "extraMetadata": { "main": "main/index.js" }, + "directories": { + "buildResources": "resources", + "output": "dist" + }, "files": [ "main", "renderer/out", @@ -83,9 +86,9 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.5.4", - "@babel/preset-env": "^7.18.2", + "@babel/preset-env": "^7.25.4", "@babel/preset-react": "^7.17.12", - "@capacitor/cli": "5.4.2", + "@mui/icons-material": "^5.8.4", "@netlify/plugin-nextjs": "^4.8.0", "@playwright/test": "^1.36.2", "@svgr/webpack": "^5.5.0", @@ -93,9 +96,6 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.2", "@testing-library/user-event": "14.2.0", - "@types/file-saver": "^2.0.5", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", "ajv": "^6.12.2", "autoprefixer": "^10.4.13", "babel-jest": "^28.1.1", @@ -119,8 +119,7 @@ "postcss": "^8.4.21", "prettier": "^2.8.3", "source-map-explorer": "^2.5.3", - "tailwindcss": "^3.2.4", - "@mui/icons-material": "^5.8.4" + "tailwindcss": "^3.2.4" }, "peerDependencies": { "@material-ui/core": "^4.x", @@ -128,15 +127,14 @@ "@mui/icons-material": "^5.x" }, "dependencies": { - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@capacitor/app": "5.0.6", "@capacitor/core": "5.4.2", "@capacitor/haptics": "5.0.6", "@capacitor/keyboard": "5.0.6", "@capacitor/status-bar": "5.0.6", "@electron/remote": "^2.0.8", - "@emotion/react": "^11.10.5", - "@emotion/styled": "^11.10.5", + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", "@headlessui/react": "^1.7.8", "@heroicons/react": "^2.0.14", "@ionic/react": "^7.0.0", @@ -145,9 +143,12 @@ "@material-ui/icons": "^4.11.3", "@material-ui/lab": "4.0.0-alpha.57", "@mui/lab": "^5.0.0-alpha.104", - "@mui/material": "^5.10.12", + "@mui/material": "^5.15.15", + "@mui/styles": "^5.15.18", + "@ory/kratos-client": "^0.10.1", "@radix-ui/react-dialog": "^1.0.3", "@radix-ui/react-dropdown-menu": "^2.0.4", + "@react-pdf/renderer": "^3.4.0", "@supabase/supabase-js": "^2.26.0", "@tailwindcss/forms": "^0.5.2", "@tailwindcss/typography": "^0.5.9", @@ -165,7 +166,7 @@ "clsx": "1.1.1", "crypto-js": "^4.1.1", "dotenv": "^16.3.1", - "electron-is-dev": "^2.0.0", + "easy-file-system": "^2.1.242", "electron-log": "4.4.7", "electron-next": "^3.1.5", "electron-updater": "^5.0.1", @@ -184,11 +185,14 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", + "jxl-pdf": "0.6.1", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", "md5": "^2.3.0", + "module": "^1.2.5", "moment": "^2.29.3", + "net": "^1.0.2", "next": "^13.4.10", "next-images": "^1.8.4", "next-on-netlify": "^3.0.1", @@ -199,43 +203,36 @@ "postcss-nested": "^6.0.0", "prop-types": "15.8.1", "proskomma-core": "^0.10.4", - "proskomma-json-tools": "^0.8.8", + "proskomma-json-tools": "^0.8.16", "proskomma-react-hooks": "2.4.0", + "random-words": "^2.0.1", "raw-loader": "^4.0.2", "react": "^18.2.0", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.2.0", "react-i18next": "^11.17.1", - "react-icons": "^4.11.0", + "react-icons": "^5.3.0", "react-markdown": "^9.0.0", "react-media-recorder": "^1.6.6", + "react-modal": "^3.16.1", + "react-number-format": "^5.3.4", + "react-pdf": "^7.7.1", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "react-scripts": "5.0.1", "styled-components": "^5.3.6", "tc-ui-toolkit": "5.3.3", + "tls": "^0.0.1", "translation-helps-rcl": "3.5.12", "typescript": "^4.9.5", "use-deep-compare": "^1.1.0", "usfm-editor": "0.8.7", "usfm-grammar": "^2.3.0", - "uuid": "^8.3.2", - "wavesurfer.js": "^6.6.4", + "uuid": "^9.0.1", + "wavesurfer.js": "^6.6.2", "webpack-node-externals": "^3.0.0", "winston": "^3.7.2", "word-aligner": "1.0.0", - "workbox-background-sync": "^7.0.0", - "workbox-broadcast-update": "^7.0.0", - "workbox-cacheable-response": "^7.0.0", - "workbox-core": "^7.0.0", - "workbox-expiration": "^7.0.0", - "workbox-google-analytics": "^7.0.0", - "workbox-navigation-preload": "^7.0.0", - "workbox-precaching": "^7.0.0", - "workbox-range-requests": "^7.0.0", - "workbox-routing": "^7.0.0", - "workbox-strategies": "^7.0.0", - "workbox-streams": "^7.0.0", "xregexp": "^5.1.1", "yarn": "^1.22.19" }, @@ -252,4 +249,4 @@ "word-aligner": "$word-aligner", "@mui/lab": "$@mui/lab" } -} \ No newline at end of file +} diff --git a/public/icons/circle-info-solid.svg b/public/icons/circle-info-solid.svg new file mode 100644 index 000000000..e7359e7c2 --- /dev/null +++ b/public/icons/circle-info-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/expand_more.svg b/public/icons/expand_more.svg new file mode 100644 index 000000000..16b0ae0bc --- /dev/null +++ b/public/icons/expand_more.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/icons/sectionIcons/2Column.svg b/public/icons/sectionIcons/2Column.svg new file mode 100644 index 000000000..800330428 --- /dev/null +++ b/public/icons/sectionIcons/2Column.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/4Column.svg b/public/icons/sectionIcons/4Column.svg new file mode 100644 index 000000000..21ef3e3cd --- /dev/null +++ b/public/icons/sectionIcons/4Column.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/NotesOnly [not used yet].svg b/public/icons/sectionIcons/NotesOnly [not used yet].svg new file mode 100644 index 000000000..3212483e8 --- /dev/null +++ b/public/icons/sectionIcons/NotesOnly [not used yet].svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/bcv.svg b/public/icons/sectionIcons/bcv.svg new file mode 100644 index 000000000..293e4b9a8 --- /dev/null +++ b/public/icons/sectionIcons/bcv.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/biblePlusNotes.svg b/public/icons/sectionIcons/biblePlusNotes.svg new file mode 100644 index 000000000..58f339857 --- /dev/null +++ b/public/icons/sectionIcons/biblePlusNotes.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/bookNote.svg b/public/icons/sectionIcons/bookNote.svg new file mode 100644 index 000000000..3d093b88a --- /dev/null +++ b/public/icons/sectionIcons/bookNote.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/jxlSimple.svg b/public/icons/sectionIcons/jxlSimple.svg new file mode 100644 index 000000000..ad7244210 --- /dev/null +++ b/public/icons/sectionIcons/jxlSimple.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/jxlSpread.svg b/public/icons/sectionIcons/jxlSpread.svg new file mode 100644 index 000000000..c3c6815e4 --- /dev/null +++ b/public/icons/sectionIcons/jxlSpread.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/markdown.svg b/public/icons/sectionIcons/markdown.svg new file mode 100644 index 000000000..ced6f677a --- /dev/null +++ b/public/icons/sectionIcons/markdown.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/obs.svg b/public/icons/sectionIcons/obs.svg new file mode 100644 index 000000000..de8f70246 --- /dev/null +++ b/public/icons/sectionIcons/obs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/obsPlusNotes.svg b/public/icons/sectionIcons/obsPlusNotes.svg new file mode 100644 index 000000000..8e4316c6b --- /dev/null +++ b/public/icons/sectionIcons/obsPlusNotes.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sectionIcons/paraBible.svg b/public/icons/sectionIcons/paraBible.svg new file mode 100644 index 000000000..a5ea75e2c --- /dev/null +++ b/public/icons/sectionIcons/paraBible.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/icons/sundesmos/alignHelp.png b/public/icons/sundesmos/alignHelp.png new file mode 100644 index 0000000000000000000000000000000000000000..b181991f619c48513df2de5ee97a56b75ff2105c GIT binary patch literal 71633 zcmeFZWn5I-`#wCt00T%#3J3}cNF$wt0T`4@w<6ur9fC;fK>_JdO6l%UKg? zqj3N3Emc>n^%LTEy8B*iuBX-4cP!Em#BrwJ_t&3?w_<1S{49*by?11Mle77;!msDp zV*fm4jk@*aQ!u_MSJ#6Nq6gY>FKY^2E(U9^TV2Eve^u!6GTf?U{u?dUD+-f~<##{Q z=8HUTkH?i9;SQ7eeox!GS^v>$9{Ta*;G|kPGT9*{dR1Lxy1Z&I2(^k{dw6*}o$18P zaOjKH@WJ7s!Op66WA>BGJlB2Up5bAUH((0qm#-u~8igWBl5~4v1{(V~t&bE2P3>if zTvnhMh-tZj?YETR&?T>wD88RmasBU8uoQ~A$?54+r1CZP5ob|8BHScV`#A%1Jow)h zzW4XpS|gcG?^a)JENk-Pt=;Qu4aCO!`?aCP{^8;2X5~^6IyfgXpOWObH`3ejhn8vL zer7&qC*OG z`V~$jqZDcDWKv^;Y4OL3RG3Ln|OP28Irz-)y~9&cZoZAh1o^gbTsjk)&k*C`sh z_It~{)7EwKdz!PfY@S0}rYF|e|9Fz0{}z0p+3@u9 zY2~$lU!pBkuqH@cq9vfc@VZ!2W-(!G}ah$9%^;7T#<0 zIdn@6AMG|Y$cUrYi_ffxih-9rFr)9!8;N@#yQ1Rjf5*2B+W|xLshy{qt20iB^Gt8| zpMN>Cd;=ptqS*RLeU85NH#U&@U>Zri-vGZcSaIHph2hK&2~jmRAWlzyvLP=ObG2M( zeF428B`E+0YL(KWlpxw$u`ro0c4jG8?~9&&TCi(l%}3L~!i=>%QhcvKj|@cGoqwtT zL$v}keB_Yw=SI|@PlbS!BAuZtBdh#w?a&jxQ*3{R@ILVLR|}!3AUcGn4`jA$_M z?8HojsGJWY2D~*8rB8d`fpPLZDp~BEuluS5=EbVVzR;9wB64Tnan6(`Qv)xCkN_Jt za1RdG`O)O()(*|ucj`I=LMBfOAH&?qIM$CK!4hcwvbCXj5|sQP{{qiLwkb>(9452H zX^9xPa<+*3U@>JL76&ofz;XOO+>i_IcAG;A*U5!~vD9+X^XlGpI3Ja=54P{4q81t7 z3hEB=?Yr1urHfQj7G=O&VOdPGGO(_m!=~4USL|N3xbA4=6T@J8jPn7|pbQr;lE7y! z@GDhp9kml&>8IsCUe1F?5p2>>QA&tqa%db0wS%q7ijw*Er(LodIy_+Y?FCaGK!7Rs zNEB^P1A)-tv1PpR<<|Lj%0o?2q{#QMUtl;i1YqhHQ|mF9U#GZPe|G$=i3u?gKK5@^ zGNTe0&?^KkbvPvi&tR*{XB~L&IbwhBcX0%MqlbQs7?+Ujd?OL~*ml~}J24b8Np&<4 z&_2mar2B_cLC^Z4fW)T+CB!*6ix+O|t^AZF>dO}C@Y)xClcKSI85xc8K2nHtI?5hE z9w!dCs2-8Pe7nqTa5{)ijnjk9wh0A%P6}IsxQ`9$huY`9ALU&4RA@50#Mu(v_Y-Uq zhPRG?3$C3`#G8{=-s<#+7ET4(&feVT3@qm0LL%IJ6mNb z0(|Tqr?eXz-+Zb?v2G-Kw);B*bOWqLiIL+>K0A#4kBnXe9S)0$omvyPP6n6P17jg0 zkrP1>(F&j+J?8~zSVHG*__zAtHJe~ZF2Z18@{d>ysSyL`s=9yPVBbLRo$qj>`&St- zb!XX`{4DYUF|z*^nLLNpFAf*CtDe}##slGH4mgGSH(Wf23BGh8GKPaHDTPhY-Lu7j zJ_X1R+HFRsfhN9;!-cju#rv-vVy2Cy!Eh3hLQ{s-KKx^bScz~<8XJnXlmAD9!1r0H z05`T7y%hRmP=FkQyE4Q=_?VC;AMJC~_SeL{VkXlpC0CL8S0luKX2jb(0O-|wlQ>o@ zn%5x7L+Z7$V`Lx^jkr26bdTYfoG>aIw!3Hhv==c-z}lO7CrIhkZF8d1+|cj}G;%(n zqMqb!Ch#vww41DQG6$9) zf_1)KKW_WUcKUVB|51-+Wj-Zx!kYD>_P%It9S(dPo#2$2u~N(ara&TxaXe_4S$T>4 zO>!g7k5JtASw<{-OH{TL&-k+gJaQl&=mGL3^a7!8ZKI@6O?rN7UC2;%U z?oxOD-Y&G1&?w9d;5eVdXd)Km$j&Bmg1~=#KLC5H4!zmbdUuAm$wv!jw=>sl-sq2; z8Pl3vJTv2mgU=EEauZo%UQ)uQA-aZj4oHhGk_#@Wle`hWQC4YjOBlN?|hlZAXwoICSZ?b?}lUW^}ZhiI(N?M9}BtB z2OARen2`vC1qlgBMs^SPTCer5gNLtA`W`NgDfEO72Wn>a4u2JOnWGc!T{FxN9oATn z7uC0Kj~G;_TLiL@H+=Y%x*U2T$>Cum+DEzazftZ-QBlFRz|z3dl7|5yF~t9e8_+U`H! z%5xad%&k3V{Hz(NnJJnXI&`BeUbK9?R;hW-X=ALkvb}ygkhkP=UNr`_=J0iXXRLlc zLgGbz`SL#Fa2~B%a<=6&!nRYobh>o4jO1^Eb>4f$32m0L)MXB$RP|bebLf`oxUtpjLyaiW zckkI*+-2wMYTnVMnL7$2$#r^=aHmjTtt(a3c5aM1vVJMaW6Z*a+ucj*^msR0Pd0zl z>=*skq3|?Q>-u86ZJwj`>(+1F`WicNabZSktPu|xx|#j`U@(PGh-2e&Ni91SkFz;J z=TbY4$c1j{RoKl2_}?r< zhR`+TNXxJHABkV~OZ-8GW;u9R?bp)F{GGBjdoqP)BUre+s7L*+XqUZSFkUr2qiYJw z(=OL=`EBkzp?R(3>kp#^o9dm2*h?5%?qwS%Ms5^fcBi>SD@3yD7fnGSc;l{9#i!jCPIE4QPx=sHDvU6-|tvn=0D>RJ6aH`Nl`XC5ri zDbt^Qs6f0@GhYmyr(AlR(dKkjpWeQ6G?ux5szM~dv8wZb@C--{yn&l^vQ~HGPxZ6$q6}M2Sqz_FO^h{ za8U8?mpi@g0SJqhI%_Jy-~t6WY!};1?W<`aiE(3m@E7^lyU$NCCt%(D`g&9QM1^H% z8xS+iZenWB>M3zqS>TSXmt9IEyXWdgOpS?Sb_AI1gh!XOCyi%one7$kjxTLFrK){* zl4Px7ysFRUbOFD`lH;Hgc<@$T%QR!BrLM$JTMr9uSy>ojh3-*@7e?++0|WlC9-tQ) zMn4(I$i$9@QDqb%gw?F!9k>07Xn3r`9&i(>Dc*&fh9pV&`;m8jC)&Pi#?tgc_G&R= zP z^n>Ut<6EE1#EqV{byxg{%)w@)W}TEAHY4u!f;QAIiPp*`wSxY`K?As!Lij72?<+v zDTORb1-kex#XBg7)uOVwWG-Ee<=}QBzXwut9)$5rA^s7@Ymc0)9N+IReR=bxBX$c(PP$7I*34v-<54c5 zg_&xy-#;(cOaPsGcHEXn#E+`HY@C}mU&-^$GMnq#7+2SaGzYFBqoOgb%sYcBF04(J zvLSK_2LbiL0S z`CWR{YdtIW$x+u2d=hru%8Ts!%w+Qu^+(wzbGT--g;8!LMQcs2O$j@m8v)ZzGc$&> zzYqmOvek`MMMh)U!>R$}?Q-`utTk|9zS+?t>J_Um&c=3#z`tojZX;$lBa?pBocU@a z;-m4^#-bkC;v)Y1d4i(AH0L}pI4x@Nc3gszL`;wGmCb-Ne7DGHLv>1=nyqU#+{p_nfk)>I;%xKoa*dDAFq*Ig2xIxv7k(~ftB3k2 zg=#6;YK8?`)!~*OXvyO;C*|(4Kc=3!yd}mkUkKTRQeEM5u&4Rz-ZbDuMPP> zA?h_|lvbwKY$Xq>*77Xj@ZEQ~i+MG_+6K&x8`F0<#zYFapj*o^u zOO~Y-j%!ZSDl%ib`Md4**BIRw_x+t!34T$BrzdlLZN=+jk>|PZUt{>1XdFsq`O;h~gM4o1>nmX6c~G_2sWBdoaR$JCMJH z-&SEB+SuhUY4gkst{Dg{o9Q~KNpJK9wx85Dw~ptpO&WoRQAGWA`uX0WZwX^_AJrtF z@$oA!={sp}%qWZb*JJ#CH3w4RCVv3ILJY4!k}#m*N6$Z^+$>+)8w7q$GpK|7+y`gxKfk0nCkj>Q@b0d(v!l+Q*aR4M+HK0p_aqhJE3S)Aymk6NKg*1b@*m) z7v3bZ-1B_R!rSa*qIYUE0MO)g8Z%&0T46ekbm%kPOdd2NVTe4cLr~St2kX$yzs7>a ziWT)3yx>J)Z>tU;V6>7j^5sy=Lc`!*D0Bj5QAB>FJ;jTxFAP# z9`pd6=@hn^h}{GNGGU)$f7;WdLdU=$Igd#z{6Hx;Hk+*oXG#sC}j@R|2Xq z6^jn>SNr<)t9b^5nTcX}wM(+>r({J7!pO$=Uatjvb-OmBm2`^_Hz&tmxFr~nUx_f8 z2u2|>ImpRhY|Zrv@k`mxmKZtQV zkDC> zh;yO7*o@i>L`y(?e z^D$z|VWd;;M^Y<9-8DuXMO;^oIyo_XoygYLjxgVVZ-agwtTyPWuz~jzf)*@4_?cgYu5PmORCX5WVyZcak=} zX6>=&wUUqVNmktLV)QtP@SQ)406r~b(OB4j6t4(#Hr z<_Qxipqh?3tkp6Ma}QbT2MEohgYP?<^`KoBJC`&(Fxq-Ztw& z#W8xG99|1^Na@Rj3~oD`sN;E${+OVo2Y04@761h?(-ao2s65X?X3=!|QF0Is%fj+0 ze)${8GQ(9Vt6snTUi%CLmx1j@cNbLIiQJ=0mlm`NpUG}+%rw5trlAa1|w=^3wfJ!wHa#5g4i!*w{DTMPt~|NSPYwPGD#@8PQ@#K z;yqc@P{PNlKi&C=ytfU(p7w`2v`5JC$_&R^*(4gKy12sB5HRY=NdJEl_hO`;I zQsHz|3zDerbeHkCEJ^=M4&O^fgi-}E740-ps8NrYQym2Fb68fzn`PN_CrO!ee9T$Qo4ol+WIosNQctp2KNnaof*Jk(HCF&f-$zqpg9OUUD z(Js@jbEW%7od&;enJS{{%8cF5QN( z^_c3Bmrj}0rNgS`Lpjb7*SO>{Ds*L*6kn55VR9>rzhB|y_88uLN-{1Y^-_8=E(<#@ zOP}@kk8&d=f8EoGv=!mI>(NHXCt@}7X6%u3_-dft3@CHV{&Mba4aSRJdj=&9&ax-L zmM(+N6A1i>gU=6@GTe~+V?ia;o~tUTpBm#5>P#nd!~J)ZYn{L3#d#Fi({DKVl!NTE z3bGfjNqrQ$U~F`r0|S}-d)Y-WefV8wPvNALdxE>o6P}}_kf2F@;A;QlpX=|NWXRov zTO(|$L*I-)4|W)^5c@DO}Y-hyPCZyWI4_Ept=F0EYdy94j@^E(OII85{2fA0^*P<2a>Mn8+ zJ@KL<#yes$2Ps`yn#(8uh5b zCNdRx;GAi$b}5Hq^hmeC?>3FT?QOeFqaxu3M5pXXrrSqzuF!%B;BH=&UoSf}VnS;g z>HMO@X4!TG@#;dJ{BZ)JvROLZ>9tevQce|bv2|`=1$DTt?9#)4%SJkJ@zrz3<5f0=Jkxyxh`i(hv8+-+EkAC=K{nt zE5i}|<~!h1^dp{8;SS#<&-q~XSqE-wQ@v64ATqpFmOXcUNp?9Wk-VUjxkLB^C>x@G zPkC%v1M&Gu8N9(xh@w0RgOG3pNnRD>yj~EZ@10P!@w4QZ%fr3x?bx5@-wJU=m-;y6 zbn+c|^zx_azE^Q@Ry5PlO`dZacnDNNEiY=`O|RS0cy^P^^MlLOh0_8j2g8g(w}fFc zk4dNDZ~}Zr3yaG&hC_uAG9&Y=2YK|rB|RvEY%LFkzAI*JO5goOdSM!B0i$s`d*U~4 zGpT*GqM#aAp`N18=c3j8RLDD&-oN2-HIAOeOj}K`*y-Utp01aRubP6{J(6DHld`h1 z5(&Ai#tI>Ab!~HMBB~T?G9>ohSNFU(oJQRqUGx9oM*Ok6UR0RDwb3oR2g3ZnFzT%) zKd*xb-uHvqp4n_otDp}qB&e%*MBkJ>pAAC9DyZ{aYchftrX25L`T@+NDKdRw67txF#Q(h`@x;j<@uekx{Oj$6MKyE z9z)2kon+&J4aJg8KuxQI-VgouLS7Fqq(Zc)a-04%zrO3<_k+r%h?6S^+YaWBFEDxZ z$D$XL1^$8jO^#o^Yr=n(n-*^WtK=_2U^<@R_Fp$5K8G!R_kU&2Nu;Vu)lIQRg%#`E za-|j3IxkTxO+ikqr)5@@XlJlKj@X96=p6*sGLUEIsyIX9KxOz8d({Bc)ECt!B*{;jH{fx4qLZCEyxTG4!0H6Zud? zyW2cN+2dc4g_|ICZs{35zI@{G<9f_T5Hh>>9a>Le5<;9_C&vda6>TJU&BtDj5?zwt z3I$oUmb&HlDx+d9HcFE-Bg9eDl%t-xbY6>v0Du}PiI zeX!=P_m~Xc=2zpZ&vf_ISr~AB`x*JGbs-1du&`f)N@!l-V4_m`p7Hk zAgg^kX&`Q-1;=4>Z)M8J$(Y+GfXSF9NV?suJ^t0cGE!)?GHRNvh{Wtfc57l~=kLSnRkDGBcO?p|u$Z2G!Qg&X0Ci9OEOWB{)ye$YiG$uiYt64k?VSPhX+k zj0E7b5!ZW~^z07v96OIWuOw&W)JS82nz5GXHnFYiovP)u&_0k(itiF%L$y3M+D z+DZybA>yi^`x%QSK@P`wZ(+2uDQxJyw_*(qNBB+~L5ck2`Mf_M)pZ?t6l+Fv19l-$ zSW{U!u5zIg+5ME!N9i7igB{iqtLn(;x8O7|C+R;!#VZh+MiOhx{^fDD? zQ0#^2F^}P#Hlvk4X4|bDpA~NhG^@jX$IkQLXNAtH?_2sVX+UXio;1auvRcQUc7lZT zr9ZtuC1aT0Vx;u(gR1qp9|Q<}Z%n`WxX!5{06w&~8c$ z0^Vkf*SU_*c32<^6qg+n>uBUI@;P~*b|>H4La%oT{+a`RMdm~>lGG+T5HJ2^0JK3e zUZ6tUgP~O}6Jk`>1w#6w39BS-CZ5fZp^FLD8CkVVS~t zqG2Esh)-457aZklGfs(S{Rt8-HmH$S>1fO^-qV{>M>8*1o+P7G=j(bgr^)EYsGoU3 z-3Yu_hzs7BLND{#ra<%E#ZEBkO&V)oaulZp?!cdVvQ-@Ja8W6f0`ZI3GfTGQk4 zs0by`659Z*{CW(kC3&ecK8C0M_*cuum}S1=##oW@!}&E3j)J7Z@57w}k-A5<-7t=v&{r*|l>X+1@eonyAfIErYy!lU=?R1h& z{mDT~a=hNJ#Y$@_jn9u7$zdH7jg4t`hL2pgp`tug`vtiH$;%fyxHJo{nakFcBOq4^#~sPx<9uygiV(C> zla1xY_UY6v#f#RecD6=M9oEG_t6yY~1{)!~$S)tkVE*NB8AN>OXQQCrL^qCrH4L=- z`z5+FK+6Qx3bB?gih~Y5jw*XfLA;d|8)iY8*-G`Mh#?+ zk>Iz?&!c%NX8c>GS?nr65x>O&R9LJ*i3=OZR)532r%=C8c>phEP4?x?m#@?J&qzn! z&i4M|uX}U@wzW%fl~e0!FS{lrb>6IT&yFTCWH9ib1GBoIQ zZ!NPKFXP67@j10&`}ES%Mh3?p$UvjZV(RpR?Y%<~bcL`sYS{L)JA2!pW6{*y+V7-K ze|L+-oi@#W4eBo)){lP`6x9DbSgsxv2WR%Cm%5Xuo%#6d*y0G|htaR-ZSE;c|NeO? za=gyVW30sd39!i)3xV)r6+>!3*a6q7EYOwAME95W$$V6=NRWvn(k{IL1E-4d?ru6($8YFv~%4qQ*KMK8I82O3B%D~%YJ@u@{xs%7|7cs zfvm6HSoSVHU8iTmPgL(i-pEScF;pCm^M?xFmi-8u*|m?L$Zjq9Z1UHTgbg{uikka1 z5jEF6kfP3WZh_O^IOEFfe*|jQ5A@#~yQ+H`uWsey{7ZRG?Q$C}TVMdcSa7EJUV)}? zMvTj>1tg&BzLLFgTH>HikoyC~g=J|ic0QsL5b8nA1R{aGs@eSF(Dx&h`Xk1aRgH-ma5-Lp_q6Q~8zh6i zy?d!OhiGHDhq=y41V(@pXezq@s&eJqoH1aF___v-{ zBUM7j#E{xhF>Q7xidk$%fmmiM?;DM8bc(Tcj#an52KRj#)ttT*{GB0?uNOd8cix{e zCmxM9L;X)Z8M;6_+prE5^I&J5k`VBPCibE}s|&@!(Lwc5CYLcvtLRyQ>@Bu2D5F-T z_h_4!h{S>z+W9k^pYjiaAW8EmuZ1`^Hd*r6?m_b82f)@SQYFC1n*AYfueSf;RittN zY8k~@?GOd|3(&_Ug+Htwh_;y0uIIM!-t^cDbNqV+(nsK!KdyeCDcbo84N=AxdT99t zpw=i38~Aw5cLTLhgmjk901I|Sxdf|)o9JYr6vyPylJu;1h`K0J#YnHX#xGXo!dgMt0_&W1j&Y3zLJv<*$Aq1#7ffJ>w7Y zf1afO$$CNbA1qkLNJB#d05?q139A`{!g?=$T!)N4%Q^iBVjjZynisng@D#G)C!_Ig!ma+~~e%Pzruf4mK+?7Hpa zHj7M^fz~367Z`tE^BxX%jm*V{e6I~lqfMxo45{by#)dEa1zBQz(U;CSW9K6v*2Y}` zD(p(gl6mDuchH3|0f2!XCddsRoO$dmCLgj?ixCkI>Ks*7F4Ro&^PEArf z!8l?u2}~12ay1MIw}D$xk^S94R;XF{P`&|jv5vMK{WD5AL!TnoFISGxcC6$Eu#Kff zGX@S4S3sXIzG8@IrjQPJ1f^D_#~ag_jR8xWnw=K@Ls?5h!E4wsJ}KsFnxC$!K)ldD zmZ3oq2+ik%26-kg!Abkp%h?)MlU1e0<4;TQcz}z8-XIrAmG{dPdLl(16~QRAdU}in zQz$O4KiLQ`tm$MHbp<)iPwl+*l1{~%Tgm9kWO@gm5&OA;7$FW3-pok?BKbx7`^Q!8>6HYEU^(qsE;@ooQLOJ*qM z8u9`~3!o`eSO2AH0l+E?wB*euNNLNd*p+Zyp~Y%i`PG0!DyV%yM+mP)T%M1w3=8JF zGN?4ueeQ`Nz7_!a6zPF1&tquFj$=-L83@}v8D)l6W^cUyWPAnkW8KKpI zFDT`u6&P|+ko~9Z%eS>;3I<=#l5O}s8Dy>iJfS_((^;gIr}cFr@M0WTPvXD8MZ$g0 zZ2uAq@Hg3af=E6sw8zkt!Mox`c&$eYu0mF<@@bQ^?30vzI!6=?KbpNfOSH2vV9%X<|1MB*8=l35gI z6QsdvpULj-vs{p9$1CU2M;yTYozcVYa;)l<8FH#z1_LQ9u%2|^$G62pQ z4Ca^&D%-+MeytIgIfS1AKsBqg|Y@%*7i81hYOCQ}TYUi;mArdYp zlq2J_2_j{(nP9#^Yw-DX&n&>9eIRK8VbRZG3`ZRT-5J?lJuE6yR#o+{=dwcz3CM57yMTU+3C1BA@d`>ZPDz-UX zdR2lOQ?=DQ#SqQST^^9uFB#|rlRfQy0WC_3h&d#aPqm_E0CAHel0J{41wY@QUK&8o zD)I-Qc3l2Va~7N_5{bh}_C}cl7YUv+d<8{aS;3$vRl#rLx;0fBKJI!KVFx9(0o^UU zOa@S(HK<8ES3bq`6?aR=dmqm;B^TC+G0++Xns&yWv-?qyI%K6nv`^dVI=Op%W4QBM zot^%@gtX!9#D%v6wbenH?HlrpWD?2j$8m~|GHK%nz&1sQJjQW>X*;0 z_8#@0K2md7UWQYjx$d)24{Az&gabWm!Up|6MO`kEkcW_n@FI2(h->1UW`YM!_fiKA zo8Arp+IgdEqWIdnvI4LJ-&Ji;BY)B=mxe;ApNCJF1Ej0 z>MfYbtA9@hyl8wLw_jVEeY*Vw0!S->O%4ExZ#LwV!6hV6MO^UZl8OqMp~(lp6KA1C zJh?8X@jr(H_=HgBzR}Wn772vNB;pG{S;n0Nk75$Zw@^=z`anHh-@}(F2Ei;G=Yw;& z{ZM{VDBz_3{JYD*g=iTWa)~^qHC%jc-{jS5pv0F*$MTA45{Q)VkH6 zvn{iF$;$)f=BtGC7;NpUI2<3hPTx@@0Lupqpwj}5QRk-x3||0hJ7^+9tVVEb9QnVN z|Eyc3bNM_wHvw*BRo0lugr9Gh!Jln=(tCjxtD)vqgQj}PS-`fe_vf2CosIR-eb)c+ z4xkf(gq;`#g6!~(=mupIhwALg`M z*FBZU=x$N5Py})rB3@fh)*k1JIWDVcSJ*w>d@<~p@gyPMKBBD1aiy=s<8V{e#d{0e zx9eXum22QS%DhZgb;onW2h>cGF+D!#;q*=JGc@4X^!@w2u}TM1D7Sd*WoQTm!BsmR z_%OcRKQ#BwKOpsE%-wj1cCO764>AkdfPAnjcR20iQ}uf>o}OvMbnYd3W4t^QL}oGo zCdU>W;UgfsKL$wFmkwLE=;=jl6yk-gAAmGG^Pio3FNC)!gx_*9O6=ae*cnfc)hNmT zB7Z#2K7v8)ADi0!Apw8C4@YD^%^_6gfM7=ei2r3)qc>S;M`{2bG!CDB4??4KB((3a z(tgRu65EU(mF^LLbOY$yQGd%*fxV)3J<+;5eQHi zx_i7gi11#~#t&O-3*kjTwRbj{Z}97~Ic7C)HmtJ)FwhGuSh4+#!~HrV1NF)0x7)r2 z&8giEcmk2YKSh23v`B1N>}z03X?UQ>>%Td^!-e1Z>@1Ti5=xWL0j3Gp zNdmx54LaLGsa0&ExLI@*gpjR|1Xu*ZlF;Y`#4n6+Aj}f@Y8OH1mUlb?SbxzGgYg!i zg1!|?x(RAjk57RP_d%(i6q^`hxn5+nO302XdgPXKvr*yz{PIp z_^W>u;Dpz)8u5ua`NwepM5`5jtDQGibLsSEpZrUr_KJbQA*QftR|KLuq(z z!UQ()$PXqU2{cMGx=h2R*;C7^bU0XD^f?+*Ue=LFQlxGir@iyT5C&gygB zK@6AHO;+6@t39WZ9AbK5%2%uNwX9PP8MhPjk_$0ANm>We)N?1CWyS#f_y5wTUb5`n zQi2Y2%&YC6NIpkjof^&*V5ePkJJ}zmsheW%aowst6uun}Q<4Acc(vFI*kQ5Zj9q96 z$CrqM1+OCprk^IWrHG4GQ#E3x7Y_l09pHD| zrLNK5Dn-02{ng_#f22Xm+q}!*X|wLOkDhi-%e9*+uRpbFUm_s4v1Fq?`rUdU?C;{% zJ^UbGZH^kb^y+$Oe=Cx&ZrgsU+p6v~n%BFw(1(?oh*^EK#kC{99yKyj)_vU8ok^;1 zZyxt!tkPSSa|)cw;jBNHKjGZ+;+*g~J((xOkH+1B5^AhE&{FamdF9j%n@mRq5*X2E zh+m^!vV6~HQr&$CoyzVgI_9_)WOW%F!g*AIWF~V386yN9wu&XNzu?MB>}{-9FGAzu ztfO@K3-0QcBT}1rtHsCn%&4*quhQF?u`gnL4{j|+&u2K}FJqp$s-a1L1 z96b`xaJ$|jPVj;0zriR2yKv5wB|lkBJp9>@g&T5(RJEV zV5fE`Ng`=}l$&|oZPYlXl#lQy2a54&fS?zOKDd1rj;7aDVcc}Tp$ZSWOV!aR`3#Y%FSN8d#~U8c#cP_6D-qq z7n>|y_R6&br+m5umq(DbiEd{eh!J_=T7u}7jpgeWsh3E|K{+>ehuK%C4J|B{9p?wm zJB^dys!AR|mS1U~_U3SU0LMumEa;d>Frr|lJ^DfL3e9}1xlcQMe^hgbBh5IM{R-`t zmh6^}{f6Zsoi_Ee_;uDgaXsYxk!*pLWM^G^vxg1*vd50gThYw9lbR>!t7Crc{>6ze zb~{BxyqRuXMwzpEV%H&w7#gRCu5AvO%A1D|(aIea@p8nweXu^GF#^V%U}nJG4a)}aRY z6F5wu@sCGTa$r|Eiquzi`ej*vEGmep7u-I`A2e0;zy;+RK$@y=g7e zK|w+ESfMKn-Lz|zXk=ZB`|~wb)`;X=%ycmXOI?TQ*)Q+#0 zBAnCoCGnA>uI4rsytloW+@>YklbF5SvMSVglaO*JBnd7`v-5R&WObp@Uje);Umow5 zuirC$@9+1L#vnG&j8K;Gc=qiB#g|a6X)jsi1oe51|4qij_0~x5m9_Vb^k~keWSpg> zL^*x;-=(iwL;Siwu+mu+TUyj?&ZDS?3vZI=xvv+tDj5jG$?|2h2Mj5_;hLfk$;*xs zdt9M3+&vQ6E2@$4TZ;Qz*|!}Ik7RCfrmFkvK?s3p^HQdq8e!%dnpVe~2X~J1RGp>e z`0Sw5doUBie`B>PnnR45pY+Hw9*>GPtEZE*?2$34EO{Bg$=pE@ivIW@>XGNj$t%s?h~JEBX062**e&CV1|_8aVhs-~Q~_ zxVNqr9C>s9#ZZ%$B37_!HdSP2co0h;!^PvJkYqWfE%{hGbD=MqIDniZ zjK4bBM-u5vMeNUi@rb_M(c9A!{+n7bkja4P3CJcKZ`JMGHHX~<4(WvL)NEp0EQ+!g z*vUmu4dU>eY<1#k`B6s5Y}}YrbC_F!tgC;JmCtog^aD%a8ZZ;qH|SF7Te;+V7dN^Q zpPJED`u7T!J(pRHPie0n+_Ac&zpG!9FAw9hMSeRe^aR<9?5MUDw;)Z^Mj4n1-FZx( zl93~fXF>gOe0`!)z(wox+olg@sXv|wW>nC;3*?=9i85npBQgv?2r!7+89u(l+&PDH z1Q;?)jQNO~yL^Tam#tf1)QGkirj#^dK#uogJpXFh^|I0|+#9zeYT2=$=iWBE+GJ;Z ztAv--i%sp(bs5pUljFq(OMG5M*|wH-IreROCcP+$IMF6I$T{zg8vK?I?56Phkz@2v z`#0~?BmC%$Ew9zD`BOtew}VDEctuX+P~Xv0LW>@oTm<{F6hB35wDhVHcN|QMT)A5< ztCmZdhRZmH2hymE(++c0gz1EyP#5u_#pcyA*G#P*_Iig+Bj>!zmR(J^JY>f&F5MA1 zmA=?o+~&_7LL`i@|8L|$aN27*cKJra4OD})wC_~0 zsq(7q=yEgj&Qq7L+AnE|tq~g3h-_x;a9J#Wj`<+AwDp?T`=6Pyd5o6~!|rX$GU*ZQ}9d{zTdN4Hcjd_7r2Ppi?99e>kcV>AnYGvzaN zM8D#q&XX&dQDG%P-&jwt9vxvzvg7bMEG+MHO-sM}oHmVLw&dvdQS~8)Z?VIEX`g7Z~Uq5?plVo+*D5;1PQ>~^|tpw*7Gso#@VOEMp z{7@whc)muFetq{_nX*ayV@a0)TJ6a>&zy_?-zft%z5+D=n73-N?|9~kR#yJ%@~qia zEyBdm87fJh=V?L(lVtkr^wsF! zt*uP%!DQ2}0K{p2+nucVc+%1X{L%x!W^QRP0Y~3tiG7XJ2iwO6LvC9aDn$uB79ChX ziCx+%mVMe$|MXb$Z zVT=3+4XNud*TCt(Px?;=zECi^N3wnIvu3sYc|DQ5v8bj%8@>gCilG-;`YBri^?g-u zH#u=<8`AKaET`g_Q0#eOtl(sM7TYxu}iW!2_lp=N^7MT*;H%_cu%Bihs_%(@2pY(K;`HBeOW&H8x-vzijf-ff zvv2L+6Q-cT?P#HIh}>$oR9+vF@$B8A2OGgm-eFlTTNDEF%#@7fS3u$=|L@NMu8}Xvb|Rh-K}$<$sOJ1Jt_Et`6 z!_)yd>DO%?kJe`#Sh!!h4eN>{iGiDDxiVtm1}8)UQb~kcUQKUdx&#zr9Y|{mgpliI^mxo&9Mw9!&O=m7-8(p*nr(d>3!|V7@6=@6nnQACI_4~ot2vT`{M`z-TqG=8T?+u`-6t{LcYlmIsR85 zoj}E8D6gZSZ^j%K4T^Z>5&M?v)Y>V#%mWwa2}5s-2=rRAxGt4nIFW_f{%kffh4=iD zBQ!Pg+)d)eNTVw2wD{;;nT`C6F0;=4bDDERcd^rN_~VL*8dft$M9m8&)WkIReFN9U z5XYkhzjv4?JM&Amzg1DoITYqUKC$)JBtOuzHZ)AJa~s{SF)OhPSeJ{Wj__6Obx@KQ z&50Q9E}GY-FW zk7L;Ado}R|vU|-q?#3Dd%jfSWmgi=&mdnu#b4$Hcg>PYu=XCqK7^ z4wRRRKfWZesgB04vpN;S=?r1G3v@*$I3=n$Ui};aTtr+UarrwTGmWr(A=nurCjH{t zox0t}T081K0us~JCCXY{MF6ZBTQMzq+k=OZNnE4&CabTvr*z9_&4XLcyLcGcrVYCQ z-q-t++Nk%23_fLxIIdL3N#P%=+5vdYfv)7z5oP`6Z@&#U)Cb5byKBc30pscJ-}6>j zCoBK~3a87kk})Wa7jxw-O@|PQxoy2UbXhkcIBS4U9Ng`Es(9E6lglG$9yTTuN16`yol>3l0b-fbm2kJaoOWp(uu* zJD#1Lz7W2SZJ4HBT(F{}_3Kz>u9`0uO)u?MT)k#uUA`;%R95xU4PWlPMa|)7c$5wQ z-o7w^+K(=41~r26`2yG6j^^)jZ}S%8c5$(-Qlvqx_mTM5npr1OBofFwkm7Z`JZ*@Y z>9;!T^4X5lh--#mCjDuj`p6#3ZS#@*)U?90Gs zbtx^F_Y2Oo8cIGqnEhZks<3kGdlxQc99pfbjEe>fwWgk_ulm$5BW{;CtObbk#F)j@ zXyRxUNj8*r^yCO{G5T%3}&caQ%|74X$q@&O)zfN)|Roz!JFi}%v0GhVt z;ZVWJq}BhHHq*aHBiA62_FBk(JK>D1htbHR8NwN*3q##UcSI#jk^7E8J(fil3!xvv zrg#wiDI7EamU3EqRTEGa(&eQ7?Z`$06B=nde|3WCA%kqi?yn;Qz&DL*nD6Z`wnxa- zM`649qe~=MnJrv4%9$+}H~KO=U|@4HhcssH#_6C&999iM9SR2q(I^M^IZ z!0xez)|P(0KtO_x?&pX8)c^kEqbNh4n22l9s<^{Yj(&N#HlQTM z-E%7Qj-ro_-IAc48A!&nGB~gmk)7t!IoFQ)CSP>v$m{akSjE#dKJ&>2*wsxNb1c62 z{%1f&d}IJ6PD3OnCfR}8?~>Y$qNNLrbe_8F1s3S`hh8c3p?F<##NkoJWD+|QgT7%^ zc{3Iu&-+sOlYLw>Z56G{e_J`KAgbYAw>UiQ&!zp7!l)E~E=latP7j4oj6et0EKami zC{GC0nf}KdyJU5<{$Seza=mI^rNaD?j`qQiS5mfMTd=&nU`72|Udlf|XVvb)!Zh zi%?;nBj>P?l{Cqe>l|7-(ss1|TW?`tW@feoRH*V&+ai#_kDHPmdS&;aZw_vQ-Ca>c z4IvRFKV$Qe9S)9Gr`Ru!P528dS_~w_0PV04vNYN+p}V0hF#s0L_lyx>_ujP3$l~2@ z?xpbhDmIZ*bF@6(oOF;UT9O?b{g;j0;WfBZm?NvlrUERwZW?p z8cYiofg^VE`g}OVIp11WY!Kf>aDy5|BFjB7tVNbsXL6gOcvs0(%@9`wtlh@sOI2Z; zvnP7yLALOBcb*f590gJJvcRV35TL&3a<-2~!Dx5nvB=$MjiK!F)S3^g;D=mEX z%@Uzg$l!*;(n)tKof2#9`LCRK{Q(P7xQPBoEc=0GF+G5$^qGR$70`~5o&=$b%7MmU z1C9ohYO6u{kxqq7S^I}cS|F1uYv-4fxS`RZd(_ktT0JzwT1mWbgmPn1aSB-zeJu9K7xn|$A!_Q^x_Z3IJ}@6|-6PfQQW^aC3j ze4|DFo34A`(du=jH(5s)6W4mVf7uX(gLQ6X!Chudb5BQat3(ZiH6|^@ShVEIxWx>iQ!#p!>lGXE zTG(*tezx-zJ~OqDI&(nQV(NCn1|j^4h>v88C6&Xh>D zEr{z%nw@Eo&>kH}j7*k&Y4G5J*xLGsc)ObN*OH3O!nC=GfJt4t!2{8vQ<1)dw{zw( zGjKfiKDyt}VI+~T2H(wk+jL28PLG<+kShsKOjj5gYviT!?(9&7Yu9*|Hz%+_Z0}l8 z2YYFd+YW;wMg@?aVM~;DqA_*t)Xn1m;`MsNCX#`wzT_U%!nLW2SWOh#q1Deo?S0av zA3Ck)kKK}ayYaUKY~!BqtzMeimuZb;brDanJ^VA|P|7RE-r^mYU%Tf1U6%XxB;daH z9;ygpj_1FjipE{+*D8Q=)gKb?jdwfK???nN5;_EKabx&gLZ}X(;p-^@*rV4-Z+Otq z@#otLM215U4Onwsfz`6>RJXCrE77z!-(UY2+vN>Y>y-%EFis#d9U}|B>&_Jh=MfT$ zsZjqpC9^N>yb9Zs_BUf)NeD&i<5=k?#xLCjvA?e4Eq)*Qw`-7nZ$`4ySFyNYutK@y zqFI~7+c3)5NJUEehOh+uxhpB*t2?8#=58PA300S z_u<7XCbr6O3dbjD&5e@Gc@@ZQ#T?>XsVp{S(aYcp0zBe(UXX;!?fhy>0GFp(AzdM_ zIXN+>nG)TaZO`a{Pu(wGvq@=k#$ew0JS)rT{X$)8VHIN2*;qFBp~mCKALo*-V>V<+ zxm_~eKj_w`zsyCo8j#>Ep210^ zO_>9v2iboJf6UMryiR`egL1pyWj7OIg!JqIw?}4t^yss_2QDlU3E_Fn12UqT{+zJ$ zLisA9z1+{!qmr#S^?Rsa=#t;EDxK%@^D&*NGptHJI+!to?7*fcyKN5l16Jr}>dU;` z7Bl*Dx-k*(T)u~H_d!SYUS;d!@>%y`^Rl)^xR&sCZ?xl^tiu-S6#Yr$VGGq7$pco7 zLV1U~4)t!9Z7*}N`jw-ML3A$)gZ%fPT3Yk&5;wjb-CK4(37I+vrH*znFw49+EeG4* zTq3kDVe>W&b|{VBmnL|I!a1Ql^Pe6GwWb{J@OoANoE2)-la;Zd4E6Vj?r8I=8m|oHI9;TUC1~v^VY}Y5 zEnb++YZPtiPfLFq(KQ5HblQ~Xl&G3u;Il49tdzN5*E^e46f;L0KC(+f<3OBB@AZRr zG@{z5V_T(HYklE;T~OfkxT`Kculf{8Ivbr<%ZfQ&X{!Zkn3SHNAbGgPhm)tKRj>Kp z(QsXnn)ru7!Q(cal^%w+M{y`bn1cO>fc6xMSD6j02nr=p$aQOqgp7L)RMq59V~8Nr zv5OKxCo~8s%uf~~wYcZ-lb$E4Pbv>5?@w_>qi~*wuVyXA(vawYV$YwJ|J8dM2zi*F&tHus(Dc zv6v}<^C$YEL<}TF>5X6x->9ZsM5`Ion3--!7A{r=J1ifqnpG2?CkhR3>3=GVcd1U*u(D(@x_9`Ot|d(7nj$wq?x(6R^P4l*H}|JHcX#oHDVH@NcwrrqoT=kEb7o5W8$i3w$$!EVs-Hx!&S1G77 z5gl_mJX8rUM*#w%rLe6l6sJdF=;O00pAg*{?+T`!lMm3r;LnLwpNyWRp*@$^O6W&% za(qzU$FJ&I1V-7!%lO1teC+V#7V$5q{1WCjRTK|*KMN_3DAP~lNa)}+U zCkqD@7TKKog2URp&4JjwwHF1V!S4TqJlu>Ctl11*Y9QuP1S(CoA}c=&RefrG2&-Ue0=;+k{yKfW-nu#yh0aPcHY3b&f`Ul%nq{|OPYQg{Pbx^F3k+h zzh}u6AkkIs;E+7rvk!lK2~PWXO5)gBWM_PZ`3-o2a>ZQwLK+)q%@3X^*XgRR_Y-M< zq*dsjOnJT%3axTwr*~T_POH6O$M6VOjMU#Ayg)WtQj0yna!^!!6b)L_i+PxbTd~|>Uhfa;>VHv(3utqx|RYaJ8M`jN=kGhjSIPD)9I=75n6t9!* z)p0;PTQ9I>0E8N;eH`i)w?br&68#Xr?%w_v#jz(F(GTqH515FfM;O958KJ!2K$4RT zAj2G{JAr;n98qoYvW$%`KEgebYED3v8t-l9nG=W`!~3i5^bi&J^-)NSHRX$Xpy3); z?o%Z0vBx)h5$NCO9h6xl-&duM`O)d)#v(R(AjK;-2$} z{zI)r@SktiTzlJt#-ablfue*$wti&^gj}!4;#tbGd*{7-IjL_($TPToe;x9grAEby zspqas^$GD36{rvF%=MOjSFT*0Ra^4Gq*pUu30ZN}8^giE%9H`XDILhX^5;yr&Fa|T zM2gkV;E%<9gm=UUC+vWRX{gjA0{JbOm|GA15yeg`8ri;5EgeA3!^^anF&$T1*(pY1 z9xQ(`tlpA2YRpYiq)He844!gZQSj+dR~QyO z!2zNnqzNI&Nq{iZ!SO5>zyBqKW^Xepk~!6vr-Leu=qCxZib_9}T8N?dS{6UxBsrgM z|Kap?x8lyh{N73J2Wix{FnIh-$$r)=NBvFu1)0%(9G%s1pl&KHsLXmYV}}-nI(gQB zpcq=gi67y_i2se7(M4WWU`b$<`!FYHR`NwyNgd%0x#8FMM+wh~tO2;0<*)ZwErH4f zjsqF0dn~*TGj*a2^@Yp{9MOZf=>)n50D+cGQH0XF1&MVG8Zk<>pQ~G%191=AaL{io`3a!k zUI)Jzm4Pn=@$u*xv@QZr8J>RKVC>ff3rp#b?_0uk-;jpYf zvOqU#iO}r1-)5p7LTOEvIg?zynrM#&#WtEy-<$~m_4oe|qH^UY4H5e*N&e!D;3lf~# zD(!>%L{XPC=??~yC}t`8QtH;p>=zFJYw7!09ej{bYw*eewqRef$9Zt~8xpHTNT~H# z$GzUNRrsfKkVyxlZFbl>Qi|pAr(`dx?kzzd<~kD&eHR%f)ga3a!#wiFFWFM7htEuk zP$_CWh~;E|c7KSH@8*g8$GpCLU6(vMGT5IS$*N&J1LF;5|;LtctY9$v}IIi z1+0Zwu3Uj!u>}kq9B(BX3=XiLiP+P<$$_q|hBbESD^iRiGmVamJ1_e1m#iT8atBmq z-ARc!oJg6z=VnueK7`~wfOLXWRDQ5U`~xF52m9471o<^cy*=_+8aG|qxSac#yO+Uh zS?Xw=*@Lzezt&a4=~qurPcM*f2AjZRgcn31zSBTnISeDraux6;v+c)rECkXkXVVS>?vteSM&5miBI&D*XobQ1o&I2egiB9Q|vj$;12g+&&lG_Hb-^ zm-R}q4hMxEIi8$Q8DJ}nw;-&x8ER*P+5Q0Cu0J5FZ()}f6BA3|1ZTJu88-ztqt4-d zor*bae82LB`75TnX;-(du|Ms^l(!et^uxtJO%}{>^_iDiGm>3=FAt}&9M24n;qt3B z%T5E-R{&!?T2k?e1D(ytZwn^HZVVDQ?Jj`P`3c& z#WAoJ#cKrA>|9)02?m%67hU6+oIvi4V_Jb?3T$Lht1n<;nwzvvmpdT;4&s^+cM_wa zOWWOaJ`7#`OdP)zP3}leAOS!ULIGXoD@yAWhngmQ05ja4txawLA`3B0uCEtEEt_*} zmdfBnNsApRD)fNR-A2!mej!Y=(Gx=Gyu9y&-PfIDY$rqw=Q9_xv0RaRjngQOYG(i< zzg+kKDM`Ib6TZS8PcwYXhWBoMBez45E3uNjdZT7wDRs)rMa1#wsfcHlrQdUx_Ac>q zGJKO+LsqpTkxxpO*ekid1bE4g(UTF_0ZJEGt4gx6yOFtWCae`vFXuUtXs zGn55uJv>k_JW^#Qt-{S45VFUQ4$xhEe{cfUQ4zC0M(kYU%U=I)N8BMk4@)~A2XSprBnVA{T=IXAqHZLr4=^B?s zvNQ2%U&o8FNMYSjiqw*DElRdoiCnvg_f|RZ-;7Fw5{Uu$dn)oA-W9(X0&22r@qiqD zAIw*J?bDHFiKnElRfbDcZ@A&%y<6xKMJbj}IP03YO%q;_Zvm`?r&P25db+%dkUO6G z4&YE;>;&a!GBCRmP5)AFzAm&yT`f6dI-Z&+yRJc5V5=`~ke*8Zy9M=AZE}m#-V8sz ztnJNT$Uk>k%YgYf_o~5c!+w#8P00q_`4n{iz)nNkQN5SAT+B4z) z_CJ^L=}V8svPqqK67SQS@j@<8a{OZq_rp&gm^N|esT3ieVv$3aFfv9GECs1xdawXu z#q8OWMz!w^7XVngj4lpiT;u76*ylCxQUnqmHV7chXf)gL2=`d2H9i&m4j8r|73f{D z==i@iJo*z&BZ#ADoH>N&w~t_Ndp*eG4!yTuvWiCMWN6UJA%y0v)O5am^N? z*T6DO)V!{dy*GC_}=M*I~IqzxG=ESJ^kP%)v_O!izr z-W}jSL9Au2KqYrRP&1zIj)ITZb3e ze<;?{5lXw*>|sfX8o(L(QPAmVWm-UuC<)?#e+_8?V&^U6fN|%=xm!7ATWQnb^)D9g zQ8{gyG~}2qzZ|3@ft|ESODv#$K}5p5@>{;=KyH>ke20vtd?=A_ALpZ4UsX`*k7liKm?)` zPB58jA^)f{oieM@6F{l(bJIH(;`4Zjd;q(T>cf{jY*k6~b^ygOz;y?$^p^p>CpZh5 z2~0Sj5Fhy20$0G14kpCcRU-LIFaRtOwc0YE3aP6s8j^uyD1+BN>MSycdkxke;)DPA zHcr@e!^nNJiK-7L{h8!C8?*!HdUV?dD+c=&j-!_8sS(N|cN1SXT(&%N^a-cNqlODs zFDZqZy2Z;1xgrx?(r~MS0p-|9RB4rI#|aPr#>@vs5We+1mlI$HqgjwzZzO^gXoN*#!Wy(+KT z0C6PkroO*lHA~6e5{?r4qGGEdfk~WMu$`L4QvzRg*7HOJ=ib@|eYFJ)ag+7%gLQqB zyQYfL^$wPcB}Dip!ZZJZg+=pODLnA`@r@9Z$<8*e44BwY%@#Uhaa2UBMyC{0G6IjA z*E<^Ofc3xbFv(xjEwxnwjY6FcshalA-%-a&1XbXa@4ro3Xag$h%=2&i#R?4FT4{%NPyD@#0d=^jRSZ?I^cW@;=&J(Xh1`K0HF6LYmOlAPp21kCYSSl zfnyc9z6K8h#`#~9zcl#*KCY+x@n%a)qi^jNTkU6M$&($&tyb1_M7X2@c#vXnApTIU zp`nm$-pF{l18u~~dQ23PlK@q=EvI-8l4O2%w}c{yk&^>=5A|@#M5u$?d0! zxvF}~n&#@@*kfdiSd!8;a?qBD?8Li%WG?`CWC`f7@^XMSj&9o>dTtws46n!Plo$7O;O11Y;^Y1 zxI?A1G!B5<7GAJ#2m12W7P!+I=HCNhlnJodL+fyAv>>_XPrGm)ukP#F(3sjADP9W^ z${U!g>r;^wPXyCERA>VfctH)IdalkFAGdQG`iMJ?7-+Y!5;s4uD{CUHhY)nZB_%uK z1-n1j;2iiX)k!CzcY?xKi5CFE zBe)-!|8+rJ&@>keGdonJ#a&sO7;_!>+ak%V6z(r>A{OW-vD5L1|NVYh{&bM~#l*S8 zPuG9LvuoK8*kA-oXCf1)UXzcDLQjCA2duc@^Hk;Z+SuNFIGA0CD9k>$1M!ps}Oe(6Cf~Uz~b-x zYa;ZtiS4>Tgd2goy%hG$okwzT{OzFrvtZ?iFd=)~6^mC)xa;~OPS>a(!bk1#bTJcl z1^>SP@9MU>x-!WmbNB!G`r?;=2OlmgoOaX~Ss&R=LxEGV)w7W1DdmZJ5SG9X_oTD< z>BqN%dB1qZ(jso$xBtCWTHCEUKvh@QasNvqTl}vF15XO1@(%aiy7T`}Y<35R4Q`Mm z`xhkEoc1Pfry72|Pp3!H{|0S8VtaXvMs}pga55o4i0ka?HO2Gny8riyF+c(IxCvp} z{!e)7XfX`FLSt;D#ANlO0?8bgfxPSlG zSwCKFP<8YE>+Jt*HJXYD7mI_>?(NfAA8h$n`#4(gMqblr8BQtZzv$1 zH$YzR403(kt&h$OmBqL=nLF>$`vnv3>;LRJ&F$`sO-9^TS6EKpU2A)*zO%q0Pxuzj zHv;L!(|fD)@pBWOC!rU4S;2(+q5tFQ+`w5H3%*(SX?ftxqtJlvg`7|*UEl)?5%~N! z8EzeeWf$*lJabWz`xdn z?6W7qaw`EAUEE&Bqqx0QUjjUJdWjkSrH$Mg33@saHu^X(P_1PvB<&A4ebL__NXP4+ zC^EnH9pPgAxDP%Y58~cF1J9dEqFaUEH@D|LOg+Bj7ir{^X4?{1l^Lb&Jm*y|P`sxL%`5#E0+Qik!3qCwN+(~4DI1^fA<#o2P z^Y_K$erDWygz!0l)6_PTKUmc41K|-EdR@0qMwA!KJ~4qvS5rhTj_158({HfFEm+zTeWh@AY8lTYvmJ>h4@`C&|ppf2foYk_7s$aOOg$^c#(nmZ6Nz|6_Y{4M?U+gZz0X#G*5o?&qe4e+ zFn4W_Fn~v{n2KP)Jn%cafF|?))t*KvU|3D|Xz+B!?4@v&LXX|)i%9cu z;h*OEf5x84$;J+n4`4M%|G5pNiy=bXmH+GE?-5}O{-!hF(jRA&Q899ZEBOKFH}L6? zKDC7(ZL0NAXKF@&XImW}*}oI2#5*71E|pq)u7AJG`tZfqeH%~+!zI=Gn;#h5?_4Dz zVQtg5Z=%5I!*MXeyr|KiyLLy*D?oL*=w<8Y@s?8Ci8vg$@M3F%u)`l9R;erD3^s<+ z0FFZVTo1Yi{d>}}{%X7fBX-$Tp>LiT$+}pAz^uI=Z;{wdl3nUkxU>S#{z`S0MjF!? zjTbC(*@+lA*Dm?)WP$Co?>Npb3glL?;EdnMuVK(k5TocK_U)6nfba%~L6uN1Ei|oi zDJ`A`{`h8?l1xDI_~b$bP=~pG=2M_oI+AOvfUmjuM+I5|;yeZBxiU~Op?PLRIm;Ih z2;6`I{{*C8WXPWVS-RSd2I4-j^B!I<`4AW1r{RM2G>t6FKpwCA5+3U{Xj}LL@!w7t z@amXO#|W&&*Vvg!zemenp{|!B@Xa=^>xJ$G>iYZR;bLP(s zdc^JbaV57_f&+Bg1Ig=Ay8C4;M1?CeQd7%!u_$p zk{xt5)U{KAv-}pWGWtL=2K3boqR_1KiDF^_f{ZR@6SkBOQuNm9NTu_1o&Rr_biPy| zGVe7sIA$gKJ|sg;-Huf*0=(Yuw02cI4{~)ubh&N1h*leVtN}LB5@bI? zle4(-`*>y*1>B%iqs1r8%~1H0yP7HONZ+B8KQf6{;gMXGJ)kV6kJ;6V+W@VjO>|jq z+pXN|Q&|(1YTP5nmsdk+1qJ+4%^;~wWsef(Es@-w)uaG6o)_16tyVEPKUBb8{*$+H37BTK|kAO@F?IHM-@58QcD zUxQ5-7LVROs2EH)p&O+Cp3G#M6Q6koPH0=5VFW+-~#Ag<=rsUjc`pb{g@}}>Bjf@p%*)d zqnGq?!@S&e8epn*`WmryDv?o3Um+F?o7jS*>nfD0k5r~3b;4Cr~gIF>_niz z6PFI8tNgipjVla4X)WioZ?KX28jbMf;syriWBNl+>tJSbDnP%AFpl~W7xj%Bk8!#I zGY$Zq64z`6^1Z)XCa9q{P_U*6?@SQpb?O60;nApFE=1AhGUg+|350*1!)#y~p@6q8 zynq?5(K6$WdX!o*91RMN5({)IsR;d-J8m@YHe=`)w5)$}^ef#lI%^+n5?-mfF^EbG z&>b{wFZHI&{mE%b5?a8-vL?ouB_78)?%hadJlt*MyJ4&g{7Vhr*7$bIxTNQD$K#2x zj4v)?#*7IgWlETG^o0CgTD3|jT_Fcb%u1-3ZE_4>eo}MWDnMvxwmMN9y(8mu=V&}; z+2pVe!x}b{quf0t4;T4Z<1)AXW8}FvWz(Km9=0_K9$px>>M}$UavDv=wMLQICS4<} zzSB@wWyFQk|G7$1ie=1`gAHkcElZQjGh&A5(V;(}$Uf9HEl=Zyy+*sF?z17HSy^36lBonKg~0SpudT8#s$QDH844$OQx{6%+3Si%3`5 zmZo%N8e>h{RjD|X=v&10%oX#k_dUagxJ2xLCtDB8`Lt>4F)|CylQWCutMX-boA zLh|lPu!)S+PCVTyzdkn5`g!qY&VVZlr>izvqXFxR2OB}0fJ4LXB<(rav_AsQEtnCI zds_l3Jx}1Q;LMB1=skK`CUUQf{s+gFyTU!k<>S^>L+YNj2jf6^<)i z6QRRDtVKBug}C&Krhh&evv2=2bi7)+)m^VrZQlE7C>|UM@Tu#9pmmqmakYF2>OD!7 zsCwkuJCt}q>5i+6>uy-#dz!Jy*8H+%+NsAr4s&ItZ$`$D=_*|MjvWGCn@NmxhbP1) zNgmzm(F`MDTPp$$4MN?s9#QmD*HLR*%wxT+_ObUiYdFhZsI4OmtF0|ly&?}gqSlrM z(JtX=r{FGZSrq1|Z9m<)$RSBi>o`pCieOg;EZo!CF>}$=rlzaHsV1sg*{q z@;+K>&fOG;*02%rq&>7&vDWOBu!ss^-#i9o!EA1gpuAh;YjD@>g84*UFC~Mw5nfXn zMEK0s)i@|2J#v`K9+n%lk-jQs6{Y05nxm#=ZuK2UTPi!bF-@%LRz zGR*JRSzB3kC?D8vakxh1b)-IH+P4DIAAe(n%Yi|fYTzo{Mf4_4A+p|@?KEC_N!+!eYu--=IrMlCbq~>ktE12#o zTshpd_fTZ3-Dauzkf!GK+)0z0=DfHW(sDJr*5EL=l0m7(T;KoGnx14Qy6W#Ro`$b% zDbYYX&ohRI=LVaKjNwF_Ed^AOjYw6FYj-%u+D}7KXSw(_v}7&8p(}$fm=9(#2f#4w zp+#*EyE4D2i5l{%M`S_22DQFeV?YYk=76i<~Pfln@I?rwK?}7#Ap4i6jqdznkQUHLj6~rhT&Li{u`m)7%2*avc>d0Ia{Nt`c$^`eu z@EY}F#u_ID_bJWw#YJkRl6^|L?U*7>^;N7s8g6~4HAzq{mJ)qzvo{&scRb7A?2%;F zvh}NUa$vyZaIyQE4K=I6Wzon# z3S1nXp#^t8Ws`H%-xy7l8NLdU2^Cz24c+muBfHtvt?c*BOdC%W93OK85twjAgl0^= zv^NyY83-a0Lhx2TVb|NEf&3Wcmw-`opC8yXuuAk)c0|w-<)0*an(f1El?L5+cjf+| z1txp7N{aL$HH{@9tWT{c!!#!~y_u*Ld?*ji;_C-|kx5)3&YYRoFPhb>3x>&8H6Q8+ zN6c2Mi>sI=IjXj!nI9d^ic2a^khUO?{cb0CG>LZ8w0ZqZ1P8^H+v_p>zI;i3tQfo5 zV6~cPNBzWf_9)CEM;A^DDXe)j>4M@SuST(9$I41k$DIB@Cq(2;9xnxwSKb~&o_}yL z@+@8T1DPF6CFU$b6+kamT+WqrVdzlPSZ#CSwVqb>j8Btj!cdRonQdp-|ad zX?>`)cGYInja1=;GKl-0UzTm-r`W)wF0P@8 z+4hs>&5Q~|Seoj4)XDcz)-)*31nrzu5!7Ir(KvmN=;yX-bf0Veq&jsuH@>{4vH&8`KFH6i=tweN?c z)o06xqw^iD1*5w-j||kAQ-rt*F2~zTyhJuXU)s?NZDE!GrF;G5OAua-pnPMWMsq|@ z51U$8=6ZNg|B^7-%|#F_gd2#)g2HK7(5?2Itb@4TTr!;r!CsvUNu6-A{P0&T~-L(laaZ)Fy6-%VT5cif{5>4IO6FAuUM^axjf3O*4KBaMI=zp4*)qrOf9OL4`W{qFX)}EAzFV_XqAz z%KJOIp;!%4bo+WTf4s?QF4u4rZ{k_}AjG|AH&V0KTs&rj5I3J4mSqwZ*|DKuY*``q z@@}k&UGDbRsMr*Spnt4Zt6zPKDD(h%5l8p87$P?ul5km=kHVHCFb67dxWYE&!$)LI zxi9qh~CZ)zvNLJ9-Bo+2Pi>` zyq3jbIyJd4$|@eOS4+vv$VZ!`CHXS1a+`f`hWU8YmF4b~eNjs7Fknqvk5s~Vd^Msm z=q3IAZB^{5Y|FMsZGwmvWtP`W5~BtY{TTm|XJ@>s*6p|K?r_r~6Vch?U;|b=(JnD3 z4Mbd^!wOkwYof;+L*^27y5C>_rP-ivaq+%-TU2)ki;0uk$o-;;U}$i1Yz8UX0m!)r zpqZeF!wcXf(JvSMvd<@3i)a`$lI_bksyfrPrM+tUlGkdWTBg04jthDPjY4f;c&vMF zy<7DWJfCu(xKh?Xo#gv{9c2!3n@|(c8|^nW#WhWiMsO#b!^u$9ZHEE_ZL^)jjHOfF z9y5Fc!;Fx)=3>zsNcDs%*%?#ku12J%jJca}oJFqUxwVo^IN4^oHo1BWhOI(EIucJP zCnFjDc(a_Qw5*wxmmo=z$MokNp+is=(S7gR31zu)D62@=VR)^Kee@o&A#~xeGE0Ll zQEKo>qY32Lvy5pmX!yr~bE6kza=t0ZW!?R|sv~7YbMT~m@8<@d(Cjkd!Mh@R2>kfLX z367)sRM5kkW)ykXqwA&OSUVZ|ewcmaHZP20yOIB?(~TbGNLlH8FVmT4ER!k&NaxH% z2Y%ynLRwf6Z}yve&w~UJ?mr7U+-1!2Q7q7(fPQvSfDO%F4iYC-`lip->XNLpbewUo zXpxUby4wr3#d5|nB_j&1mxY04*#F@OX<4U)bNv{Ng7(5)Vt89xTV#N5ETMg{aiVpm z4qJ4!IF@(b?w*{stQvm%p81GGU`CMo-UBh#g<1N#^jLdL~;bs zzA&fQoD2?Ald+RU?mP$TPa4pUHc>%dQ*{3Fw(;W)G1L!k{=DB;!7$BthXxJ=*BH`u zbB*iTXiq`ylQ1Wv;dH`wQyRj2RmCrFtXQiWQb5)@V!U){!u2miFi1Mjd8zL%eYWwQ z&Y!IIHiDj&QJ@D_VVGd!dRIlJ-_P&B=-Z<3)@30^JG10J3Ef6xlPF(2((aF?A|ivM1ALPjm-(=a(AY zAKb`TJK>e@^{-F9tf!vVmN?Q};(6>>x^PhoLOZWySn2v;Wj)?sVgiwOSFaOMQ+=d+Fs+@79MLS*qSx+Ad17SawWe-jf<^9xdt6^ z{KIYt)56B3qATzs?+!!Nj|~x_r&ZQ_pG>y%1)|S|N#*@^l^z7EQ+tW1SKgw#rzz2k zT_&!yJ+LtD<;3;|N9oxi3oF>iLrku`YdkHyILu1MxF!-%N2Er?u$}*^mCUE2xNo&v z0l{zj^94vf+8#PV3S{)O$gfi>T?+{`%WUWk930h8F0r19mMuU)W?nqwBS#lR+;(Ao zb6>v_`D#R_I%piE>XhxxUuv9p|7>2i4+)0;F6e&e-Pekg8F4$_=~F>UXb4yqN5B=T zYsg*F%@$-FUuedY4IAInd}b7#Zv9YmAma@%P0l!M^SG%Hv+XO2QLyhvS3l4~+>jpl zDtJ%(nc{PSrL{hkCDwr@`A5~z$)rlA(pRh02?WGAZu}}EwIN+3NZ41@B-z9`!&f`2 z--BE#B5J=>#GJXAU5BB>;N9U8qnfqw3R)uU>cK;DojmQ3%LPCwg+CM9T?%N)BOvgzFxRnf5x&@Fc;4o8P- zqR?8DBnv?sd2mJ3o#z6PIa7P4Y^Lb_I^W48qQbvyF(`GG^!EW&i^csAq!5)7W2l#8 zWQ2x?(z9t&-(K??b*~#+)+6Ipx=96(U#`gsjSS6u*ZOg1TC|SZt+&C6hFvEBtN=Ef zmJE(3n@^0d-oAQ>HUf#xljyw8u_)!ROS!=rVQ#@uVV&_$VoQr`dL4gPp?E2fmSvtZ zRShleQMXktjPQJsk*`Q?ZxHB47Aurh|9kU%JID7G0ob3?g>%H!M(~tru<{kym zAqU2>LRO#41qFF|7CNJ#K=X!?tfDC0x^*xa(cTCnEV<*Kt^2y8@lNpDMCq1$M3D^u zW2wSevzv2S_tkxaQj3iKSV}dx6=(}J46o)DSAO60sTT(BW)NVHvCg+PjQx?%A$}`VqoD`S4sj~XTPVvTn!1p++Xaf;gs;9dEsIbyBBnb{NdHz z{bWBhA=Y`qThIN7Di>4vh1dJ!wfpvs545#iiQ5aRI2eW1*e+` z%Y{VOIsPP+UoU?piz_BXGAFo#bbLcMSDEQ}xN>rE@Ogb}nD>3=Zt-ZeR-=!by^+Cp zrq47s(>{k|WMSrznwZO-+G{f3JyZG%x_++QNZeeZ?+& zvUjL|`GUNG1drD|BUM_h`|N5FHo&lEP-P1)iSGZkMAm*SEx?@qNuiIpQW+ykW$DDn z-ji7)1a&wNUX!3KEL_i%cB)k#XHt9MHFB%ondR!k(u6l{cLTzsIm$w|W=m#*f@ zGD9Q^pBf6fcdAbvC|69s@5HCQ_}=>Nw1yli8rTa}r)1X7 zuJf8tLB5^?OH_In@zmtz`^~2PU-$){YtNOgb$DX%0fPAY>hlCco=^M|S(2VB`iUH4 zn603t3NO?X?3Sb<@Z zVr~(3o;pwybr$?!{8%DzV9p)SD)zY*nGw>ED4zA4S@Cd9oRP~mWx5)potZ(wOCq!5qG({D=1zM>0XY( z8_pn9W?l??x*wG|fZZBNGB<=z9{L=Q$&pikGGc}HppW%iQcJNTo0eF~^c-6HiwxD+ ze9Q9>ny>#uI)qXL0K7+;P@~R`+>DNSSat#^<%III`8a9k*`ZA z1n&t%Jh{Pz>^W#6O@$;K??z%PAn*>6L;eghU=_+NYD&e!m)tOB&*_Hg3`5-#OVQ>( z6cqt1ost?k+A_I2DEIX!#fee)4THC1$68Vrr;^iCasAe7KU3a!jd&I3`|2Gdqx7#RNul{dQ&KKWj z&8J=ld0{{yW3a5LoD@D_j}hA#M#zWlM?@MT3w2A<3w^eC9D7HyQwHoLcc;<@B+JV- z_`4DhebNO_)`6p3m6k`LH!(}0MqE+5Hn*YGfrsk{5z%3u69<^j3z+oaUv(*CJHtgg zGhE$|T#lF8FQ3j5HONWqwMV(ZLGqBAISxj;{g!N9d&S15vi3&SDkG{b@6y=WGu~Kh zWa~tNvuCEZ@>gRT8=EWFE7_KSaP(ymKr69KcscA#@|Cb9 zmsTO4>#H7g7_xaQSIPC>`sKYb@;T!r7@Ubv?$;k>-qI)#mx}n*>_=!yq;I9E8r0y}Cd)7RF%_&1b`#wk_|~|GH;5N zmtZUChG`9occtQLO^)p+^LIn0taBR$#Tx`(%h&PfFJ+x$?%eZ=98osWsR&LQo7 zdaS%R_W1USoH!!#DR&w{vucAO7Bl>ao0tIG$7-kue6rK(%9Lad-<1xTpJiBhI{l$H zrn=`V*m=e+{{4!S1kJg#Qtl%FzfH_I1x^}Uj!HgYk5LvJ1Y7ZM7_%x8OvQ37p1h=s zF1Q_VK{fGioc~>#ICs;CC-ls1UoMP7r`H2}7W=@u5mgj&+o&B{R>hraO*4|y!l0s- zdgph0loy8%OX>3GhF`S?bh469uPg1sw2VbmR{uZF-a0C(w(t8Mkra%P6i^Tpln@XJ zX_ZhJLg_{j>5`726eR>iq#G3wq`N~xX&Aa;q`PyN_t?aBU-x>}yVm=>{Bg28*)y}} zsQt^&H{}uWd2Y%nHg?)Xt@m0P$uBGK_vCKPXpX+DhhGCG!C`!S1`|Axw{vE0)a#F9 z@3UBT^U)2-xjzSst85%rap>lzm1jH?VpeF|M6Z*`-Whr&9W(-+?e12Holhx zSp>(Yh(yj$*#4%gj9JEFE4z0wMsPyyExJa&-x)m%yn<8zem4rKP(3|8&168;DvLBe zF<~T&!J|d5#cvq?6^B<&UX{EKkO#FB3ir}szVuPx45(0LU1`*v~*k^y=Hmnd)wRTtXPZ1 z|7acO(F=M7cBUqBnNWX^xds|b1ezS1m~3=G1(Cx2a8(t|%Tk{GWHmXf@;^y=>rehT z6pcS@3>s6-qL@gtW~n5~2Qv7h_E|0rp}9425B*fWvqEa$!DRmF-}}D|kJQ)1O9eDI z54K8B+*OY4m(@pgC}OoAxG#c|T-Pb@UrX;DB-%#`u)dqsM{UXTBP9#W-a%Cxzb2<9 z%Q6-ZkTzG}jYLd`?>xL-WG_l53L+>M7~7@X?Z+cTb*fgh^y9b>cnGLp>GHC#Mqd{C z;&w1L@>OIlpvwHvRoH4gyk|c4ka{*Kc$uAuhJH zIY6h;Y$teSCsJD5Lde2|{@O|HRktDq-n4{=Qu2jbaVYRUf#zDvGV;=j^kHlQeQM@U zsuo@w|BV<_{eEYjmc6z*iIC;svS~)8)Ie_JKYxtMgUEYH1G1BOpbB1~^SZ&BDYJEc zf>rj{*e9(DpVHFMUwVU%HlFGWsHJN#uSv7%sJ&iM$Z*dj$CH9LxK0nD{U0`x_JW|i zTFF{3^YX5&z^Xr`y8DRNcJhQ)Wwzt9t#(&a*Msp+#)G5I7>sD=`u2+yNw+o4v=C)3 zoj=jCD!k@-MuP@|?UqxMUpDsrcaG@oCVRbz65%((D`qTM58Rw4-UQ2LRTaCfi=?2p zM=mk(#$lqfvNp@he|omQ8aFI7lUo^bl$x`DzSv$> z(B9h7*Q3cybXQ-M=uy5YR^cw@pelMav@Z$EKMx&tK$GQLRT5$LeAjQz7fs0oA3zno z0~xEhtv%5C3X{F~>94&Vg#z0k(FZ;EP`ula{kb%ItNPc0btH+z0cV@<)+| zQi8ISMcSaJMI-H%yXC*4)$;Hi29+ZTvzi&k?E%9wp^}dL9y}_K#40#<*I@b?b3r*4 zO-Uw4dpJ3U$zFQ)AyV}@Pi^Q9aw;&8=}N=v-{p?193OnMe1C)u1sBnpF$GGcc7ZZ{r`9aEY>@1YsjMp(RvgOf5*pE$!A_caIi;Hd%JJ_tD?0Tql?+D?)>py|L}c6)z{f^549(H+F$%fMpEy?`Q(nJmTnTI4P#nf^iEeiTjl#Mfd}=Vo z?8FOK!tdPYKMM~ig_9KKb5WDqySSj!Bf~bV0;FV8~Gog2^zFSB8 ziLEYj%d)x(C1)!=ytfu}d93sY+?7IPrDR!_CB|r}&eZ_*@QGS~uUX9^N?QMSXH#Ym zzob%oPO)V3WUd^0Y?S*lX4A#5%2G3^jOE@p+H({oV zgx_PiSitZ!E%)-|nxi%aex)<^AAuL~o2p7HY&~zRPOgkKVhmIOu*!h43RvuO_y)Pm znwhelpLUPf)^*ENkpfOq1+M1g`TB>-w!bE+w6+3P9%ObhC}sNkUX2fu7!wo;nJj0I zqNkd%b)`Vs$25CUB9rUv6)TeUs~T~CCp`-o=<3`lAUtnaH7ypkGuTK|g`LiHH`)_e zv)O{WF0q?(*sl=or6FF*|F35&>b%^;y?%E&(pRHFJ3$wZ)V)2k${YIU-YK<;*ez~8 z_8ixZ42I4e5A|ymidHY!?%evWB5p;2iZ3*~8`sitNT(K+(g{R{vbYS=P0Gn~{sOXF zIR3LbI`D8XUMwPP$VE~fuzOXTRZ;j>XQ7NZlKbnwm$IGUyc3 zMj!sEbFv0PhrT$>@|ynA;rG}N7n>(DmHR9-ii5Ur;|c?y4KPWzM49R&hwS_kmdUwvpD)1FBMZ+KsmyPCO% z6ckcH58oA#L(}>bd0DrNx%^W%XA5xo7a{qF0<~RPau7UhP{O^&6Yt#KE!%tqQdKnP zbmJUF<98bzs8Jl~^48>Ko>4=}_93=^Z7vo4V^x^H9DEG5yTAN?X6MO@5zwp!v=p1>mWHP8Nqh3Ku!%*@PCX z_Q&Y>d3XK!S6lNg^I=Nts2rRA-bG>#P&7rI4C|)bb6IrZvc@^37=5tO_X^;IqiZP~ zJe34zO%G9it62}P(qdG78u7d~{UEX%7beYQw#)bm>5Do@HV8DKcG3G`djD4Xga33_ zBPe*3)JFTi)Q*roQp5EEGF*3EwQ)V*siAnKwmPoc6__PUOYt@dfeQNt`Zjc~hxulS z;8Tumn^sZ44t#{bKN~|o=2%IYo{*R1+h24UAc`B>tnGs5wsD;Smodj8<*Bbk9OF-j7;yrURp0|s4Mcj*fbD(|0w zLQ>Uy*SoR4Naus4A_s%9-mTrQ>{UXux$*HM`{h~b?e60v*Ezg3lDROZ##`CKg;OZf z2kdNK${i!bNn7@md?=58G|2FuqQCW{huPQ&U&Ph;@XlDA^ z7e;m_g0`3!<*#?{ro?ouA1RBzOF#UP`mG&lp+1Q1?ml#hip7qPUG9lJt+sh%yQ{)` zP5#bPj=v0%zJ!k$J_B*J88L6eHM*aA?ty$%1AybEuQtAxwoW~=EAolF(W=~2*A*k) zQ1*`P@u*K(1L+Q^VzSQsX0~UrUf*75f$L=_{P8|lXxdO>yWl8i_X{5iu2)4xx0CUX zj7Fpy$e+{$U#_9-yH#F4fje@lYT1OoXKrmateLWnZpS)+lLe>UY_C^&8?sdYF1TG? zd)?{c*El3xH0q?hW~j|3ETnB6*MM7NfoE!M0n&=1EW?x`?Au7b%xHeg#)G{p2e-H7 zin1nDnVdJTwmp$iz~MfK$M!sc>+S0V52W0XC2kk^np}%@tm$^uVLI!-$z(f%%Czr< zWg%x1KbGEKVoUl$$fUPElE8kOHs>kDb-SydUWZVW@z~u9lrWQnTaVZI&ZeMNc{Bf( zNJ@=xluH8^zC8no=_0luSbq7wI66xB+B8kp)blYkooohi<7gx z(Op+~xH+g4VBpcnScw%@(He|6;?Xt;83H4-Y6Q2G_-ea1)aZb8Ks(wtJ0>-%1Wx%$ zzE;i80=Wa%=G$^ETAd}Mf9>RXm(~}p5jmz5q_~W#H0=e{L)Ru|$FeX_+YuyYy*?Cu z$nW1wxeiGDHVSE0*oVR_aJ%6oQV%dW6w(<*QCIs-eok08F2*;GQa;kn%W~VC+MMQA z|LClPDdPAcc=USFd~*Xk1H6>I^2>23=YesWqt&U+tfL?N*~@34oFvhGE%8fmMuT8o z!5Rdj!|$0VT%e9UDgV*erM&*|%c6%?`tHgDK{;3k2LJxlp@U2S%|M$C4Epxajw%oI zSs$W>vVSf7GpbZhe{VHVK&_*&^D}i#JI|(by<{&pKGr&YeNQ+zey4&BC(LJEJMwMM z=pI?(-x<+Wm$?*dyb`;9h`m9x5pQi&Q4wV?7}%|*9llZNqU62$1v2yBjcx84^M$)^ zIu)+QXryiKmGzS#RIfgfWcU!jIiwN5p%@ZVE zSx?rozwev=W4^Ns#wF>Jm+Dsm}Vh$PuoLULbi#i5!T3tc706kj_&11;mNR504{PJT# zW2iS7DE=Zuf%1Hi)1h6Ki;Bql8Mi=T#27Ri=fNg91`t_~r z{HyaX<>BHnPScT)UMfxMk9UGOK#(yX^l3C4wQRpaD77$MlzmN~`*x}+9|-k@1&!Db znKKc{=JH<#I4b*=EwUM)B}h!&*EMS#4a%;KU1eAY{t1>cXLc^C2WZ?WRYsRse_HRJ zqiz;-K+jZ{J8dAY9sZaGm0)d&j-bHY=B*Btb&^h3$&yu=sMF|6@x9ud*FaWC5IB74 zaMC+}=cfvGPY-xj$=vS9Y1Zbs%2$prYvcOEq=L+Tp9htjCG2ojiN&tw;7&)Lm3RCi zjO`WoCrnuarTFR&_5iR3^$ja@f4ZW4L8M)g66gdvp=d zlhDXUA$zEUA9NKvv@8JiI!1_X(l{J0la1ZqNl8gRLVwb~;Q~UWbE25Ca0S*J+_eL& zYXjG#2|6t+PUQ5L929oaNs!KI%ZckYr&o1n)=n~Z?!EppDgLFfvwAz1}_Fj2V9f0P>ghlSS-xwj))P zDBP!hqPpgn;>zBojl@Sw^f_)j+mU&yiQfykUiwdMwRx8#x&2~V>C(GJj66_GF5!YR z6#8pqX?_G{K-q`+SVr^1M(@VqqO~eEvpUa_^}Vu&BZC&c_+adznb$bbS@;I0XjuR4 zZu@BFrcU{2Jey#|(c~Zdn78W_n~|4qkl|mVI*n`~Y)B#~@f$E8s4fQ!F$Qf*C2L&} zo1!Aa$ytk)sX(Tpe3utZ^%^EMiex#A81E}W)AJNF;)$IZD92( z$H)a>h$G`w?Xy=G7-s$F+~W7f^Cdg@wAV1X)!8&zQtoS(SZJ3dfMyV4GoEYNdk>w? z-4rV#mtba9{`C~`D|a@f<-7%hQEDZj(?w}2s|z7-c0=ha9oQ$XXBgOq|8>fIXek03XgwY~Cc{c$A*8&icN z&c;Yvq?~n|gcdO=2HityqJ7u}0A}I5=2!b8Li{#cv?_cXaQB3u-XyyuHX-6&4xxS+7MkM&J%;+~Gayv-`;qvdo7{Oei$+GqA| zP^y_8s7hEeBBNSs2Yk7~3mv&u8BY;z4?;6-K=4Ya)NBKkkf8$jM*DmF8m-y=`BXqC zJ~azcZ)}SP&26@SZ-?h!$7y`1xXr^DRmtUr?JH&_I!PA0mnAVQtqOxBns z>bBUwxUe7?BrS)X3~kgmd6iD&MRMcp&O*mIj&DocPxZE5e$v!Sa6m;zP~~8=%GaCp zmxn5mE{tN$Uim@hN_gg<9*1-dJlJ%*bmtJEg@v0Ui?%@~X$6I#xqN;~vMb40e9;2|9|Jij5e-eAdD` z2y(ooQ(y@SP@j`T6at7t?Hx{^FeYWhp(**cga<{Z{P1*p{Fv(CL$`}cL0U|;VvX6{ zIoJ(wH<#d6l6UwmN6Q=5eCIw{FHYtFnnf1pep6izxn-|P3^5lE=SmL$$H(uHAmv{` zJtH3@Xnjd3l7V_=1W>x;VF_)O+sReWS4K80yWX`|ir5WBxAVswxx4dMa&l_suFCH> z1U}IRFpjrSpc|xIJx`3d`Foc46MQ|ziX;#esIQSmWU(K}nzxtvniXc&Qd#GCm z2!Pz{jO=%Z6D$uEaqK*VTi3s?nV$1nDh3FS`e+_r;5kV0t5a;)J0HC#JRkc6wBoj0 zYfq_)+^GVYpFO&+qWFDFg(BD0n0IsBbVA*sKi%O6Bfx!0*}?980uk`q>dSFJPCENE z>7aj`$Jn=B;7pOelng8oU6t_jZ8$Z2@tp!kptv&X ztY`G$VRQ5qsvx5Co(h+_djDC{VRk`@82 z(z!rUr)N}8rH|nx?mWkc0h4LaXfOv!p98r|P3K8p<}U7bA)6L-mdnUOmvKsLn5@X& zKU;tRNtr`og!Oa}K_V@l7qCSR9N#m+V+m!GM}d?O5Xg(}0&Sx-MMCfk^>2Sb;ZQov ztdz`!m|JUfpQ3|00n&2Wh7m^yv@mpi6xqDlMAUOc&<3JmDXukb>J3x$+ z)ZLo-v77s|j~1tmw5`DO9mO~W0lZii|K@(;1B`D45p4c7z>Ca*v&7`R7bvY0d4uC} zh!U=Gx0QI&LGsi?+iWM;f zSOX-ZUNs@Mc5xsN1>s(b{5dK?Z{cK3Hl#AS#CZyb`^9#|4G}Hf*1AfXyCz7rLqIG2 z|2_Q=^c9^ zau{g z>bAA+RX;a1hAg`M;hd4idrz?Pe`f4vArO~x{n(_56SPU3H(k!ge`#v-UtaCERUiWUgcG$=vE%G7(P4AiLns zKUtDbzV5Mzxdn0F>)DHy@)X;!*@(GA!A3+ok54ZnN|6ooQ zdpgqqNIzQcG#92}VT?E;1|%Ul08z3Y1g2@!9j?w5APp|EKa-f4SophcH!4E0zkDQI z%U;cSwT2+b3ChNP1!1mmD$Ub*ZGGK*p)rH)F#YOfXvb{kjg&d?G0g?^0=nPYy~~;s zY&Q>oa3FueiL{YhJ;%Fc$pl~<5082^EU$ALbB0k`Y*k*PJ$buo7_`8FSytxrPtxBQ z+3KmqwCq3SEG0LwkW6?U-Rs+5SiTfEG`mBsa0SSylD_+U`jsQWLVmGps7?=FEoS<^ zd4I|OLCWPqYRxTSH*R2fz;&?A5C4Pwd!%$a#nfq6j|_Givrs7qE_KjV75@kGPhR}2 zY_I%R_S8G5;Cz1wBL3Od>YM_R{qAu37f$D)wKUj`}+@mEfJ*RHNaK^l%Zds&o~+6>-gM6 zL4@3Psi2S7&D)Ke@uc7$MSG+ac>{W{YE}l^!>;hk?&3$Hryv=VJ6_c+sPlO<(AOmS z0!&m~JLc0LUlxiJ%fJAXg&nI_E3u4gzW3 zoq>0h06!#1Lmm2psb&8M@9*8&geVrqSZx;{gNdkc{}0$7e)Or4llFWUbR9sqcqRYB z6u>$xD^iYOk9L5U=D0Rlr+Y@eDYyWW@C27t)BEyU0X#wDFyHznA7hre0V zmbrAc#z-f006XE~@tbyl#&FvfB!mulSp~$|hXC-=F2f z?iJVBCv?;{I*3cdU~kW>VCXt(wpYmXh-h5cL9tL)EYyXf!cQ$@qopFC9lp?TEb2h5&*(ozQGZ z{FKs_3u12U{*`mPzZKogQRND7gFKu}w;rEWt||FqPtHMniT9ov$pp*5RfoEte(Gqt zW472+t~Yd7LvYVmgL&;D3uA}pz^wudmyjc81qkrZ?ajo?$%*W}-rs9?cl&>}uAt$t zDxZ_FG+}EVVymqYTq);n1?T=&ZvS#o`4l_A>HYMCB4J*i+|dN!Y8X$q5PP=KeO-`E z1^=q1H|Du*1>!PV0D!8WRHJ=$$R2P7i(G%jGtu3Dcru>Q%c{lH0BE~;%6n&JY|Lkc zfozc{M<&NSC*T`|;a-bNh&&x6mgpP(LK0T_5!9-i{NRORS`zYn?nj4QJ5sJYnGO}{ zDNKZKNY874CbXEVFk6;NA`7!BaoXcOY*ae{N2 zj&?)U>;N3or1@v?E?;905T_FYukv`r3+TKSRhVty4yjWRN{aC-LF=@E?6)!?%0@Gi zeAJsMwJ! zRL_0=Y~pJ*Fi2B?6Z{>VWz2j`W-5paISIFYR=xAM;%N&V$wZ z?}2^;$?@i@z5^%71pV<=e!6)eu+PhMP_fr)X@Q_Li({d>sXM$4mQgX_zf>v1J14+0 zfEdeH^Us)4-9isJE!AFy0AmtNPyx4u6~iyp90p+g+a=?51<##!rGn_-bqvpeF!VK+ zfZn7m4W9)9I6?A^-O+4-LHQhV^IR=o(Z`-qi0?$x?jCNm^Dz-jv$N8MoR{ODc>e%d zS|tTNZRDAvZxw^^L{sxc74l|+Ea0$d0q-E-4!q&)OtqcuNZg$C=b*U9>bgId!Z%rc zjr+|BIXOWF!tS&2l>>vVA%hft?jDGi0SEXO7yFgcXQxlUub{hye-(sH*W z{0$o>{=d-t5O<)F6-H0}=16fz1f>N3mP?sI5eHz;!A7{yf3Vuova%_%2L+p^b1Eob zly*pJQJVEQ_$-Lx34Xdepc+$!#l7Dg-{WbIjH#c=F~fBA%3c4tujTPF9Aa68qhtjS zIl4OXxy8NCPp(e<_70Ny4-gRAaJtVi=!r&DO0huo{J zR;>g=O4oDhR^={XAH3jLV&gC~KDp%BP6=UQx+)Cr_#CXl@Rl(9cvd1npFJczqZdLC z#Om++YWrD4uvsmvRQAJXXu3J#?;d+bwmK$%%rUIEa;#GfOLSsBNv8t zJZ!TF3c>O>d}72N1Q=(@aii|e@kkvxOy>99g3T(vUu(Z{B;m}0VH397t@2xmAX8iA zbM_iH8qhyA@{U1R)f^Ipj=lL~vfL@LUtkFu3<5#%?C@A@Z$3AQ^dt7}lHg&))6Ybq z0C&!_&;8%@Mya~*)rrQ24{$EQBA%wm9Z=478&^ebUq9lQqq~e1B?4K>QxrD1S&|#r zDN>k+C*=#>VVG{N_@^Tc)Q6zMF*LOT?kk4Zk90c~#Ym4=ctRyqq)(+gP$ve9xUj}O z%a@GdBPz`R_{1||UW1=w;+!sh{rhB8GR7YlR-rqc zuYkLNNc|7Z`ahreSvGb%od_rqSR!1IUcN62&9YD1d5$NYo#omHkb|~(8KL+ z5ONLz4gb&UwFQ^{flv6y1NNP6uEC3h|DJICE-;?DR8JQ=rvL zYi6HvKsnW*+r=LSz6kK8xdHw2#(CI0E7Ju@A){P+=*yj89`XA@a4G2C?cwJ_g`lhp z7q%ImCVe6L-pME(8`2kqL7EC|agJ~LRpq-JwU3~f1=!xlNJq|U0Oc-Sr-daHeY$ky zha=`m5B_%QSm5^qaX0Nz9?oG5Sx@GD17I~|`)ia}vIsPCB(ht?bb zyC5K~G(d~8L=i^dd7gTg$1u5Sv1nlD41!EIBknMWIHB8fzOI5gi>m;6$*{{BMc7Y! z%)bUVa5BNv4ESv7dQ`AkoylWNGnLSpYv)IwZ9-RCfkY8?ZUgKGHmtzLJsTrv zRqJ}u@>|g_jg;{%4dl&49DpeHKrzIIyXdD?W*;zc86u4V7IVPVCznUG>A>$z0T$7> zoqB7(CCzNzM^Q%Bm1bj=n1~fRCL7VM-_|B7oo?5G-1Bhq+vv$KBom^yq<3N7@kXtp zKPOmIto{Vh0DBxk!|!o#5D@7G0agx8k)sv~fZ{(uneKN$a*$Qq%mtXde9N)Qu%K8V zUoZ!Oi(`E{EWpx(n0f(JEONM_>B<=?p?@CAjrQ@5(NzT@6}IxY z4_ZE9@<4p~S^ObY<7yLY7Ta+ATFJGW_cy)fP$??fy#4>cdIv{KJoE&o3inB;xTo1~ zPu0(c6B!{+p2ZzUWtdi97!T~$(06&AI)Y%aNp5mG6ZKp8uE1Z&)jfsV6w)9JZbCVq z2mx~I7mMH0Ug@#s1VO>C!1mDH(%pU8K!xp!4W@3H(1>Y@gMwI2tNh);Vthug#jwSV z#OGA}>M@K?sGWT+O>~ajq~`p;JnqUjLVaS)lP>kIy8sX`nL)PxZBNH@n^hGuY$Wx` zVE_ezJ*@vQ*5NS09@KnxQUJy=xO|+Qe$V1h1vJ zRuY|`lYrwY#}Y!M{Ih3<*vCPw%KS8+LMT4IFT_~CuhxC!V;d}@Knmj36od2S>h{J*ldYA6-9tcv?B zu^qTV=L&>4_x9Y3`5#(3`0ULf=!7=X5cf2A^s7DWnjNyU8N zcSCBx-IoW6+MtsdoXdT?NH!Uo&f(YIav6Hx`DFn>q_01)Sjjga_s-8IuC!d*xmk0f zfv$83>D@Odl%AeiB>zepeujcmOq$=$jbOD%Rd-qI!IUrRiK6)Fnd)-C`M2QD_taSZX1%fjmf=Z ze?Lee*ilrX#$d6}r*P8Q>^8%&qo@=3UTS z4maWfH}>mC5}5obnqiZts4&~^L@3Smpm_z1jMyFwCQhM zo02M^%0f6}m@j?SoyVX`e%kj>#?ziTL$!W&3R9W<+#S-P{s2rAJKm^oztobMRGpth zT3ssU`}~#&d3-1wKTNBvR?JyTu$fTfEfm>;%^$l~*M0h#R|-MpX;T&{>4x9t{`YL3 zP`^U1+W6dY<9xyoOwa4ox!~DpK3|%=N|JWyg2?f-)&`gAKId@w>(v9F???I49lsP% z(?#n^UuhCUhUb!_laA{Y*`FoRn21_s+cp*)f=`$P138RO`ik3bQleE)`F3Oq zhiwP83D3{jF`a{AfUrq1u)!4Gi$jj+a>jLuM3vbss#LQi^|DvGM$F0c{|bhXnB3d8 zmudMwAM}GJzL&wWVK44QC4^BjgvrD#+Z5iCctwSZ&(S(Yp--)ctm=8LRi!e4h9mCswKwtk5k#E zh3+~53&m%2am016oY+#88)I<4?BK#m4^NpDNpt*F!|WA^HuF?q{>^TqXN2 z+O}>C!-Y?OOs{xV+mq~fMaLrWVh9a}UKHK7Vc%;K?*~~jAj#)F_hmC<`e}C0nSbUS z6$i#HFhebm36fW+728*?s<*|Ilks89fq;CQ=)Nq)p%M`marwU=6%1r0ps=7T;p$)5 zyIaXt+JG`lv@anT0`vAfnQX`o^te=azc#1kb+Brt9h4lszTzkq#b>GAJf*R-G!zcC zW9`2f3H$a#lz%1SxkjPcGrmzreRTkr_0sMu|7uleYsI>RpoBgbw(ozuxyex9z~f10 zHwJ_|e}H`G_Q;ov5!>-|>g|*m4-r@XlorBcdkN+Q6wP4ugQ7_RGVO34J_rms|8tqZ@q?4mkgZQIaAe zhWb4x=T`~!oY(90{y)C^lf_DnD3h^lqpev4cIrHBS%}a72H`s5@NAF-cTfi;PA~0n zJa>cOgrBFwISFpo=n3vkiM38Ya@H>TyMFnFW&>aF)fS_3i;Z$WX`481+W(UwUsU3< z<7!9ljD!oon{_RR3fXrgD|kTmE^`bz=vGZFKtaf}0M|sVR%yI&8NB?{8iiy1fI)eR z7ojq!^k`uGPK!{$rxHGLgFJW}l5M;7^-??@F~vU-ikZ#VAN)qHkP2+nIraVBtOjk! z-+=-~_S6zE#t@jyF`SOSy)27??M2}EL+Lis6w11!;oLjh-=13o4LIj#6S?(@NixI!lk2M*@`m9y?gfr;t9?8l@e zdDwribBL7`&p*)JRXbou03^@}k5}h0tKEZ_te!7%gvgAB_poYdFL&W zNG>z9f8&rmv!fqi?~rU*m~ybR3?Idcv@dtJCsmk^^7>ZyB$$Ud!{b_pMBv#&AgXF2 z_5KUcI{9i*xi?)aW}ukgl3v(nLjIeu=H9d$i?e9wazW^4;}@aL<-83QuYvBc44rAg z7eh9>A?uF%HI3v7D?v|1)u%5cvekyhb2E-3ydFo4kTcGHCyk!sW^is#Vbb-fiQgX; zME%DRFNRtPvqLYMNC0r_&FK3>GaxQ)`jFlc)bH6gvlo>QJmym$qcBI8Q#9Ue&>z5% zEtL0@-=Hb*Y^~#>LT4`KsBXIPT8_r-Khi#!l`pK-dM~Q+&?5bwSE@wg8t{0{Ih@sB zta9LZ{r-Iv37*O@SXx8X{yCT!agv^z_U&RqMyTwI@7C3t%+zh=&?}m_DeHyLD72eh zs?^BKSqf){fm8M>^+Bz%L9NpZZ>})^CAG2IQiK?1uYTph-3E(KE80|L@JlV}H>ifv zQq%P8*`~d1(GFzZ%gz#`+k`J3X5Xm`!;{m<*j2NWSn@^>(={?}M(vw;w&HkMyALO) zq>w^)CC@Gmes_FHr4Oal^OtW0tJQSk$9`cMxJKQ4X<&hYQ!QU+5-D!Q#ByHJ<1X=l zctUcId6#8w;dgjiGpT1;as9ThhFKpXGAE?Ka|AfesIC4I8$)*5upMele*7fnpLw67 zs5M*LXtJ9B$o&;V>=EXtPTd~UsNv{=AJ^M|e}dJCCx2^Rq9Bl`Kp}xwNa#UU01%CK1-a%gC^gJNKGM1I z%ODW{?u8fBTz>%X_oLT{Z1OR9VwxxMnIkQF$`?bXwC<-}rL(PI)<^hc8t=xFvY`is zhRCORbmDhP7LNix(*s~eu2H!Jd56(NEFMQ0{L12o{^cBul#~>4c))YV*nYX3c9)y{l%9~J0L#%ssr$L*|)r83HFi%G)3{xbH`HY zuN}&MNJzg`XsK;=zir4M?S1Xz)XNy2bRdwDbrOJ341&})^Y60QO5910y&|hT$F8jp zyz`P~$+A(mV7&H8WI>u+w4z#hm27!CA+v-}hFN{JGx%zqyahdDLo)CyF_yDj#OjiE z#cp9sWA++D7QkLEyq@1+&Q@so!qFB8ewi2KevoBVc*waNG^Kd*7@a?!LMNY9ppzw} zQ2J5@x0FHgYEASn9s}*E>JH0uA%typ06`zQog7g3tjAzz7NmVL@ix_o^6Pp14$ro#R-PsoFJa|oy+>JZ8fyo{@nsZEp3-5%x|M97+#Y; ziY1&SdA^&WZT1mp&wW=&kqsSW%4q?6CAxAHvojXI3=}XGdAKZ?n3yvAWp55CTl@1? zj->U57scz*ZRs0XynUOy9ha+r-|Z4{fsD(uZx|Xq8u6{JM+28I3G;o=D0(+HZJj}E z0|k7dC~aVdY>uqB?f5m0t%ntTcPK|+pNlfhdacaJW_z7<={W$leVJxl*#mU=0*X|aSY>47 zD`bhU4KbR9O}xA~|nD zAKsw@Epv}R026Xy@8{#;2?YgmnfV|<7#2rYQ=K#eT;AK~U{kLrs>;XX{XC)9$ZOSt z-__+yppDKxo$^%`R3iXMEd2fZH@RKdeo+-FfO^Gg1*zgfX=2zNWgVXEBh$PoMQ~mK zBX3?U3jCVBnT99XQ~f3gV(xDvaSs|A8oG9O9WzRGaq;7UsM9cSZ6t`V<%6P6T-aCc zvQVoRTVmuVCad%DeLG#deq9Eb`p;72;@h;Ach}HBLzU!{{7sm=ENdvtU;XlNwgmGG zIx%#$lhVdIze$;%tFiFWg(On1!sJI6n>+*R&=TgSPpaF{ld44n7gsJ$C=#-z1a7Ne zk(z}Rt%zVot&6(4-&S>o`GkeFSe_n7OE&2y#DICOZx2f8APBdU(!PJftM?>~W{~ra z3(LQUwF8kJRN?!JW^6v{FHqf`WofJgH|j zq;a6L|3l|FBs@tCz9p>sklg#oul5}nIdJk`1tY0TUlFA(-Hhr1y}O@*;suKr7%3T2 zQqltOFNP~r8Sl_cB!r*4>YK5Tm?eNT>LxR&#R5M)(6_7>b2gtY$aj6pZ*|k))gu^n z8Ry1ZFWIOO_2Pm1TRP{!bsqCnK>LoHhjQNOkMsX!f?I=S)g1yNAryHv&CQa3zP-qnL5XhoKy<#co^*SXe#~g z-)EEzhc?CJ&bXItQ{7!iWiQ z#N;%r_e9eY&Bo<=#GnCBWr9{LMfaZ$ur+73Ea{vzk_2)ucuAZSJNM}Lf*U6nlzqsQ zgNdy;4|Qme_FVC-`sJ+qjm0Y?|4b~;0iFqA;(uPGk+MOT<;OZ~8~Tw8mhSrh^7XH}~g!A54YbWGrD ziF3;LRGXw((rI!KU+g6yI$4j9CcEy7a?@EUppNKq1K#(~;i6W2YFv4mry9MLv$MM0 z$v2>{7>2=AAHc;`qr$%XMp}M{Ru+sxx%as$XLeNXs*bin^&;1QFH=>;7mrrWpIAzh za_h*AMeW(+z$hA?mfpkEt(FyB&CE{4r%J3UPxD|oadhnzzjg`=IU4eo?EEsXLQc?#Q@wbD3vua?tLvSBDoNzO0;FUnTy;X<7t2y4lih zw;xKVJI|}KgXCEN+uq>Z1J~sNTkEBzxh@xx&mM1cb#+t1&O>vz?+?wL|C_m==mIdC zWY?TAJ+?g|ScfH3ML4dX@rjV^J9Ci3s%H2D21kr_axmv#Br|D;TH1fF#qkf7e0Qk` z#fD6lW;t}EJzOO`t5SiUOP$P?81zA@CyP!qpY(<^rT`bVlv+R~Vtwn})B|FoH;L73 zw~kLP#pBx{W?>O#2X~DN+u%B^9Z-LIITFcZ*(UAk72E3%Uz=;o|{HO$?8dgLM!+p=2WMP^Gxg z^4MLS0D5)xIAkyBKDtkeuOSM0$h!e%Ca8bTq40?HL<_{1=F0O4+Qc00!br+DS zvJq<46nwkK8wJC!=~&20PFyMf92Vokdr|IChPssAl>oz*hDV`9(sDyZ?ZiEig5nEq zx^L>A?jL2)pf1YNI#YA`5S{-ID;OIVC%|-zko?CKC-ljR(a=0; z+Rq7##@@@+QXy`Dt$vWk8p)JCuvcKGFW!V^q>8%Wa-h8Ka8|*|YmWEjd5*`PlzpRd zFeBZ8b=$S`*zenRV77^7IShs_5T9gMw@AQgM5Sw~NJ2(}d*|v*lmE(|7|y=*3xjGx zf;XU08ax5jp&d-6%FQZi0!-*T%)q@_#@(0FUgaRZly;I?I6fAutJAzS!`S6uprJBm z52L}yl&}*@bR=OUf1&}HCJilcPqNUgdzf!LL>|2e9nrWqVOp^sqbkWt+4i;2r=8d! zB;V(9;t{a?nJyPMfpa}KkINcQ4&Q3AQrq7$L>}7+Fa_r-vdo&tleT|DF9o7?$Is5z z@}*et_ZCgTD34K!9vC{z`zT6@pk-O*^azF~!o%}Ho|zL)f-rYq;H`um2~JL8V78O| zuSXXce0k(lHN)foT0!6rA8nl+FQD)fdKiF5oUG4(%`gncl6mJaCF5i!j;(+2Mu^^* z{NNLau|z=e65Q+YF#~>s&XDR~db+?QcSJz8%-Mbcvmy__5EB;%p3~qmVE%RW1=5Me z0d1nrO^TrNVmJD(>Ry4enmd{f+lvF@mi+~$;Yd7NL}X!Y+J7Bo;KdR>1h_OmErpL` z*ow_vxH7a4-`Pj({Sk;}I)OLDW|-rZ<7J7dm1FPYxn5-ms0-|Ge~MjUY}p z!87O-0Ba;Uv^qYl_V{%&(xfB_z{UpP(*avhK+3m5bM4yC5vZ;&|B5V_r}~xl-dAR3 zY!GRL{eyP@y$brm-)rbbRCjlG^iHecSRJo0aHkrzv#z%`XbeN@Q<73rs05=zQGD|l zzAt>T_{gCLlj@JlsF#ZR4T~Ab;1&F+RPeljjr9gw@SI9=oW%lhglF!V?R&9B< zt`O7du4APABlZv&|IqN8<8UwuL=R-YdIIIN8=3#0cYq2OJrYC}{$Mb#fKvc992RJ# z2Lg|#&~j{aH3v!(Nzox~+nm{_?dQVEm#l`&i+%w4xY^ctG;#&_8oYbgi{9wH6xnVC zjEA?(vw3}jpi71QJ=a*Dsnh_5I(LmiM?)Xnx~nM4Tt~*?EILfAS8QHr5>IOOwe3GB zJu;Z&*;yP2Q4iiJ;rNHNpDjX{kb`CzSqO8ud>{VW6}Zn=<&mcrljHmI*9f^fsY%_O zLZY|y-f~%R1yhoS1U%-?_~UiUz}@}NW0SS=2rF}gmt5&@lwRi)Nf%9-f84hV;(TH@ zlawv))7Q+jre7s~=T)I>m3I1M!Q@W(weyi?<@Mj4C<^cBL+V_h_pc<2h7_IQXWeUt z(Z?w>gS|=&s<0R5ObSJk>zVOT>&&#r%NZ2hm*rjx4B0cWJIFtXxu5m$Y2Q^p9vZ_f z0DQK{MN-VHV-9xO1!0BqXr{0M5NAYXtC)RM&Lqll)$ZrS(HL+J#SANC4LIe8+Dy9E z3pDZuB1f8Ra@#Mi9hJeaeoFho^#*Mk+^? zvN^akQQ9vb>iBJJa^ONLz!73K#}KlbIj3a zna9(3*@N&EbFQLhz2;uwZMosW$oGLnn0?IEEclRtNLJr36ParRD?xom4sV5sS;Tt^ z?q|IqTlX>H$?)Tf+$m%Hsw`O^Bune!q~x>zqC9Kw6Kau1{Tj2|9V~47G zo5_-mhYb|#LR1rd`+nsCb*7=hm-H$�ky0)EDiaYto@(x}I}d6*^idu9_E^=*1Df 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 + + + + + diff --git a/public/icons/sundesmos/check_circleWrong.svg b/public/icons/sundesmos/check_circleWrong.svg new file mode 100644 index 000000000..9fa4d2366 --- /dev/null +++ b/public/icons/sundesmos/check_circleWrong.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/icons/trash.svg b/public/icons/trash.svg new file mode 100644 index 000000000..4eb953ab8 --- /dev/null +++ b/public/icons/trash.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/icons/x-solid.svg b/public/icons/x-solid.svg new file mode 100644 index 000000000..59d204b48 --- /dev/null +++ b/public/icons/x-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/renderer/public/icons/trash.svg b/renderer/public/icons/trash.svg new file mode 100644 index 000000000..4eb953ab8 --- /dev/null +++ b/renderer/public/icons/trash.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/AlignedButton.js b/renderer/src/components/EditorPage/JuxtAlignEditor/AlignedButton.js new file mode 100644 index 000000000..f9b364acd --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/AlignedButton.js @@ -0,0 +1,25 @@ +import CheckLogoWrong from "../../../../../public/icons/sundesmos/check_circleWrong.svg"; +import CheckLogoTrue from "../../../../../public/icons/sundesmos/check_circleTrue.svg"; + +export function AlignedButton({ onClick, isCurrentSentenceAlign }) { + return ( +
onClick()}> +
+ {isCurrentSentenceAlign ? ( + + ) : ( + + )} +
Aligned
+
+
+ ); +} diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/TIT.json b/renderer/src/components/EditorPage/JuxtAlignEditor/TIT.json new file mode 100644 index 000000000..3958ea43b --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/TIT.json @@ -0,0 +1,16400 @@ +{ + "checksum": "96234960d1b240766e1d5500b82d7382", + "bookCode": "TIT", + "sentences": [ + { + "chunks": [ + { + "source": [ + { + "content": "Παῦλος", + "lemma": [ + "Παῦλος" + ], + "strong": [ + "G39720" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Paul", + "checksum": "585134e056c1bbd8f5b61a0d675136d4" + }, + { + "source": [ + { + "content": "δοῦλος", + "lemma": [ + "δοῦλος" + ], + "strong": [ + "G14010" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "servant of *God*", + "checksum": "d59f8cf042d544373958051c737d46ce" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀπόστολος", + "lemma": [ + "ἀπόστολος" + ], + "strong": [ + "G06520" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but *an* apostle of Jesus Christ", + "checksum": "35af0dd867cba8295d6f938b26158bad" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐκλεκτῶν", + "lemma": [ + "ἐκλεκτός" + ], + "strong": [ + "G15880" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 2, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "according to *the* faith *of* God's chosen *ones*", + "checksum": "4eb6b99c3d0319c318d30bd7c04e3ed6" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπίγνωσιν", + "lemma": [ + "ἐπίγνωσις" + ], + "strong": [ + "G19220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* knowledge", + "checksum": "0f52c148e34c616e62b77161ec78064e" + }, + { + "source": [ + { + "content": "ἀληθείας", + "lemma": [ + "ἀλήθεια" + ], + "strong": [ + "G02250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* truth", + "checksum": "c07acbdfc35c90acd5e44798c18c2ad9" + }, + { + "source": [ + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "εὐσέβειαν", + "lemma": [ + "εὐσέβεια" + ], + "strong": [ + "G21500" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the *one* according to godliness", + "checksum": "0a276da258560526930e832b57eca7da" + }, + { + "source": [ + { + "content": "ἐπ’", + "lemma": [ + "ἐπί" + ], + "strong": [ + "G19090" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐλπίδι", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ζωῆς", + "lemma": [ + "ζωή" + ], + "strong": [ + "G22220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰωνίου", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "in *the* hope of eternal life", + "checksum": "d0bb73803aa8a2ff6ef10808093aa3e0" + }, + { + "source": [ + { + "content": "ἣν", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεὸς", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀψευδὴς", + "lemma": [ + "ἀψευδής" + ], + "strong": [ + "G08930" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which *the* God *who does not lie*", + "checksum": "ea5d84da1ed8e342bf9fff3d0fe1a9c8" + }, + { + "source": [ + { + "content": "ἐπηγγείλατο", + "lemma": [ + "ἐπαγγέλλω" + ], + "strong": [ + "G18610" + ], + "morph": [ + "Gr", + "V", + "IAM3", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*he* promised", + "checksum": "c938e3bf3163e49d5c6396dd44f09df0" + }, + { + "source": [ + { + "content": "πρὸ", + "lemma": [ + "πρό" + ], + "strong": [ + "G42530" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "χρόνων", + "lemma": [ + "χρόνος" + ], + "strong": [ + "G55500" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰωνίων", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:2", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "before *the* eternal ages", + "checksum": "3a1deef5dd2d3211a2e8f29f1cb67167" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 1 + } + ], + "gloss": "but", + "checksum": "64d8494c8b66be822f1550c48a426308" + }, + { + "source": [ + { + "content": "ἐφανέρωσεν", + "lemma": [ + "φανερόω" + ], + "strong": [ + "G53190" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "λόγον", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοῦ", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*who* revealed his word", + "checksum": "663e4529c4d0aa0c7e46c657376d183e" + }, + { + "source": [ + { + "content": "καιροῖς", + "lemma": [ + "καιρός" + ], + "strong": [ + "G25400" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "at *the* proper times", + "checksum": "badd9068e3968aa3fa80eb1606d713d7" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κηρύγματι", + "lemma": [ + "κήρυγμα" + ], + "strong": [ + "G27820" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* preaching", + "checksum": "789a75d765d1f559bab07a0612c69bed" + }, + { + "source": [ + { + "content": "ὃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐγὼ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐπιστεύθην", + "lemma": [ + "πιστεύω" + ], + "strong": [ + "G41000" + ], + "morph": [ + "Gr", + "V", + "IAP1", + "", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which I *was* entrusted", + "checksum": "3de9ddcd64d0eaced1381bf472554ed1" + }, + { + "source": [ + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἐπιταγὴν", + "lemma": [ + "ἐπιταγή" + ], + "strong": [ + "G20030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "according to *the* commandment", + "checksum": "ca7974c2bf8f5455f136ff53e4125ed5" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 2 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "1:3", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "of *the* God *the* Savior of *us*", + "checksum": "7a17dec9b0090f5ac30db3575f9dae04" + }, + { + "source": [ + { + "content": "Τίτῳ", + "lemma": [ + "Τίτος" + ], + "strong": [ + "G51030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *Titus*", + "checksum": "a8c8e7112ac2503092ea1973c429cb42" + }, + { + "source": [ + { + "content": "γνησίῳ", + "lemma": [ + "γνήσιος" + ], + "strong": [ + "G11030" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "τέκνῳ", + "lemma": [ + "τέκνον" + ], + "strong": [ + "G50430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "genuine *child*", + "checksum": "e2aefe502fa17cca0b763470a46db37c" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "κοινὴν", + "lemma": [ + "κοινός" + ], + "strong": [ + "G28390" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to a *common* faith", + "checksum": "7282c8938694bc3db9aaecff2ed3104a" + }, + { + "source": [ + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "εἰρήνη", + "lemma": [ + "εἰρήνη" + ], + "strong": [ + "G15150" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "grace and *peace*", + "checksum": "138a2efa64d897f8a7ddffca4470ca7b" + }, + { + "source": [ + { + "content": "ἀπὸ", + "lemma": [ + "ἀπό" + ], + "strong": [ + "G05750" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 3 + }, + { + "content": "Πατρὸς", + "lemma": [ + "πατήρ" + ], + "strong": [ + "G39620" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "from *the* God *the* Father", + "checksum": "3396d237ef39062adeb7a19efb20ef9b" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 2, + "index": 2 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "and of-Christ Jesus", + "checksum": "907edf70a07cf75ab396c34da4920b38" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "of *the* Savior of us", + "checksum": "0f904eb69df82707755d1295f538c665" + } + ], + "sourceString": "Παῦλος, δοῦλος Θεοῦ, ἀπόστολος δὲ Ἰησοῦ Χριστοῦ, κατὰ πίστιν ἐκλεκτῶν Θεοῦ, καὶ ἐπίγνωσιν ἀληθείας, τῆς κατ’ εὐσέβειαν ἐπ’ ἐλπίδι ζωῆς αἰωνίου, ἣν ἐπηγγείλατο ὁ ἀψευδὴς Θεὸς πρὸ χρόνων αἰωνίων, ἐφανέρωσεν δὲ καιροῖς ἰδίοις τὸν λόγον αὐτοῦ ἐν κηρύγματι, ὃ ἐπιστεύθην ἐγὼ, κατ’ ἐπιταγὴν τοῦ Σωτῆρος ἡμῶν, Θεοῦ; Τίτῳ, γνησίῳ τέκνῳ, κατὰ κοινὴν πίστιν: χάρις καὶ εἰρήνη ἀπὸ Θεοῦ Πατρὸς καὶ Χριστοῦ Ἰησοῦ τοῦ Σωτῆρος ἡμῶν.", + "checksum": "b8e31c2170b743b34ada66c20d02fcdc" + }, + { + "chunks": [ + { + "source": [ + { + "content": "τούτου", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "χάριν", + "lemma": [ + "χάριν" + ], + "strong": [ + "G54840" + ], + "morph": [ + "Gr", + "PI", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*For* this reason,", + "checksum": "937081b2531ac1666ab853fe8a01e6c5" + }, + { + "source": [ + { + "content": "ἀπέλιπόν", + "lemma": [ + "ἀπολίπω" + ], + "strong": [ + "G06200" + ], + "morph": [ + "Gr", + "V", + "IAA1", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Κρήτῃ", + "lemma": [ + "Κρήτη" + ], + "strong": [ + "G29140" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "I-left you in *the* Crete", + "checksum": "e7768297a42201608dc939a97c402694" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπιδιορθώσῃ", + "lemma": [ + "ἐπιδιορθόω" + ], + "strong": [ + "G19300" + ], + "morph": [ + "Gr", + "V", + "SAM2", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that you-may-*set*-*in*-order", + "checksum": "dbd057de66368c070f9ab2c56301d635" + }, + { + "source": [ + { + "content": "τὰ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "λείποντα", + "lemma": [ + "λείπω" + ], + "strong": [ + "G30070" + ], + "morph": [ + "Gr", + "V", + "PPA", + "ANP", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the *things* lacking", + "checksum": "e75dda7d29c6a4e6c4edbf1cc59ca5b8" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καταστήσῃς", + "lemma": [ + "καθίστημι" + ], + "strong": [ + "G25250" + ], + "morph": [ + "Gr", + "V", + "SAA2", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πρεσβυτέρους", + "lemma": [ + "πρεσβύτερος" + ], + "strong": [ + "G42450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMPC" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *that you should* appoint elders", + "checksum": "f75ba661f3e313e816b45400fa3649b0" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πόλιν", + "lemma": [ + "πόλις" + ], + "strong": [ + "G41720" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*in* each city", + "checksum": "0b148c4be703be723d4736f61fb92971" + }, + { + "source": [ + { + "content": "ὡς", + "lemma": [ + "ὡς" + ], + "strong": [ + "G56130" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐγώ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διεταξάμην", + "lemma": [ + "διατάσσω" + ], + "strong": [ + "G12990" + ], + "morph": [ + "Gr", + "V", + "IAM1", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σοι", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2D", + "S", + "" + ], + "cv": "1:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "as I *have* ordered to you", + "checksum": "733dfcc0d6ecd1019077dbb42ab52dab" + }, + { + "source": [ + { + "content": "εἴ", + "lemma": [ + "εἰ" + ], + "strong": [ + "G14870" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "τίς", + "lemma": [ + "τις" + ], + "strong": [ + "G51000" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐστιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "if anyone is", + "checksum": "3f90f2e0018d81ff5c4d5fb42fb02343" + }, + { + "source": [ + { + "content": "ἀνέγκλητος", + "lemma": [ + "ἀνέγκλητος" + ], + "strong": [ + "G04100" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "blameless", + "checksum": "bb33a3a56f85386867dd367dac2e2af4" + }, + { + "source": [ + { + "content": "ἀνήρ", + "lemma": [ + "ἀνήρ" + ], + "strong": [ + "G04350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "μιᾶς", + "lemma": [ + "εἷς" + ], + "strong": [ + "G15200" + ], + "morph": [ + "Gr", + "EN", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "γυναικὸς", + "lemma": [ + "γυνή" + ], + "strong": [ + "G11350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "husband of *a* one woman", + "checksum": "5e715e6e2d26ffbfa253fab04a596056" + }, + { + "source": [ + { + "content": "ἔχων", + "lemma": [ + "ἔχω" + ], + "strong": [ + "G21920" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "τέκνα", + "lemma": [ + "τέκνον" + ], + "strong": [ + "G50430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστά", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having faithful children", + "checksum": "0d816bc57daac83d19c1173a7d40f42f" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 1 + }, + { + "content": "κατηγορίᾳ", + "lemma": [ + "κατηγορία" + ], + "strong": [ + "G27240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not under any *accusation*", + "checksum": "6a6f095da214703315e41102c10c8f03" + }, + { + "source": [ + { + "content": "ἀσωτίας", + "lemma": [ + "ἀσωτία" + ], + "strong": [ + "G08100" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of *dissipation*,", + "checksum": "9db664c7182574a6f07adfd158ddebf0" + }, + { + "source": [ + { + "content": "ἢ", + "lemma": [ + "ἤ" + ], + "strong": [ + "G22280" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνυπότακτα", + "lemma": [ + "ἀνυπότακτος" + ], + "strong": [ + "G05060" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "or *unruly*", + "checksum": "29fe084b30b6d02fee46ccc80c2f3971" + } + ], + "sourceString": "τούτου χάριν, ἀπέλιπόν σε ἐν Κρήτῃ, ἵνα τὰ λείποντα ἐπιδιορθώσῃ, καὶ καταστήσῃς κατὰ πόλιν πρεσβυτέρους, ὡς ἐγώ σοι διεταξάμην; εἴ τίς ἐστιν ἀνέγκλητος, μιᾶς γυναικὸς ἀνήρ, τέκνα ἔχων πιστά, μὴ ἐν κατηγορίᾳ ἀσωτίας ἢ ἀνυπότακτα. ", + "checksum": "c37b9ce6f3bc496313cbe40843e7016c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for it *is necessary*", + "checksum": "281a53b1ab9f9d83d9cf4c44d83f44ad" + }, + { + "source": [ + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπίσκοπον", + "lemma": [ + "ἐπίσκοπος" + ], + "strong": [ + "G19850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*for* the overseer *to be*", + "checksum": "d510166e0db4abd024ee084d9beafbf4" + }, + { + "source": [ + { + "content": "ἀνέγκλητον", + "lemma": [ + "ἀνέγκλητος" + ], + "strong": [ + "G04100" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "above reproach", + "checksum": "bce6c8bcc1d828663ba7725c77f93a37" + }, + { + "source": [ + { + "content": "ὡς", + "lemma": [ + "ὡς" + ], + "strong": [ + "G56130" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἰκονόμον", + "lemma": [ + "οἰκονόμος" + ], + "strong": [ + "G36230" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "as a *steward* of God", + "checksum": "f24307d4aa3b6457fd382f4bf98d5498" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 5, + "index": 0 + }, + { + "content": "αὐθάδη", + "lemma": [ + "αὐθάδης" + ], + "strong": [ + "G08290" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* self-willed", + "checksum": "269514bf787511744e9cd773be86be02" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 2, + "occurrences": 5, + "index": 1 + }, + { + "content": "ὀργίλον", + "lemma": [ + "ὀργίλος" + ], + "strong": [ + "G37110" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *given to* anger,", + "checksum": "3e1244b72a21d727dfc77a9908136855" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 3, + "occurrences": 5, + "index": 2 + }, + { + "content": "πάροινον", + "lemma": [ + "πάροινος" + ], + "strong": [ + "G39430" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *a* drunkard", + "checksum": "7ec812da4c9e5655e8ced23d39079467" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 4, + "occurrences": 5, + "index": 3 + }, + { + "content": "πλήκτην", + "lemma": [ + "πλήκτης" + ], + "strong": [ + "G41310" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *a* brawler", + "checksum": "b8be626b13902c9f5a1ca1dc372bd7b2" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 5, + "occurrences": 5, + "index": 4 + }, + { + "content": "αἰσχροκερδῆ", + "lemma": [ + "αἰσχροκερδής" + ], + "strong": [ + "G01460" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *given to* sordid gain", + "checksum": "04b74e7843420831ca6d5b23e85d2755" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "φιλόξενον", + "lemma": [ + "φιλόξενος" + ], + "strong": [ + "G53820" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but hospitable,", + "checksum": "054460b67dc8571f7e68316e68ef2908" + }, + { + "source": [ + { + "content": "φιλάγαθον", + "lemma": [ + "φιλάγαθος" + ], + "strong": [ + "G53580" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "lover of *what is* good", + "checksum": "d9c5dcfd95b634941945bd1cf13c7525" + }, + { + "source": [ + { + "content": "σώφρονα", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "7a16697058523d3bf6d337d63da595de" + }, + { + "source": [ + { + "content": "δίκαιον", + "lemma": [ + "δίκαιος" + ], + "strong": [ + "G13420" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "righteous", + "checksum": "2a4c51da88c8f29ad5ae8d2a8beeaad0" + }, + { + "source": [ + { + "content": "ὅσιον", + "lemma": [ + "ὅσιος" + ], + "strong": [ + "G37410" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "holy", + "checksum": "b5b5a98ed5eda83c3c45d0fe76a61f12" + }, + { + "source": [ + { + "content": "ἐγκρατῆ", + "lemma": [ + "ἐγκρατής" + ], + "strong": [ + "G14680" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*self*-controlled", + "checksum": "3e2a90dfddde5bfb01ca561fe99dc2b1" + }, + { + "source": [ + { + "content": "ἀντεχόμενον", + "lemma": [ + "ἀντέχω" + ], + "strong": [ + "G04720" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "λόγου", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστοῦ", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "holding fast to the *trustworthy* word", + "checksum": "448b4b969c7ce09a834e17e869832e41" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:9", + "occurrence": 2, + "index": 0 + }, + { + "content": "διδαχὴν", + "lemma": [ + "διδαχή" + ], + "strong": [ + "G13220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to the teaching", + "checksum": "24c9a556afa105eaf53d62f2996e16e3" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "ᾖ", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "S", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "δυνατὸς", + "lemma": [ + "δυνατός" + ], + "strong": [ + "G14150" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that he may be *able*", + "checksum": "4de5ea1c20c044caba2b7d730b9a7b89" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "παρακαλεῖν", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *to* encourage", + "checksum": "0d2554d39497ba49f91d7f12646f3b0f" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 3, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in the *sound* teaching", + "checksum": "4357bf34b99899ba668026fbc9152b75" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 4, + "index": 1 + }, + { + "content": "ὑγιαινούσῃ", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the *one* *being* sound", + "checksum": "6a3f14707f1576913f16b87eede180c7" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἐλέγχειν", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:9", + "occurrence": 5, + "index": 0 + }, + { + "content": "ἀντιλέγοντας", + "lemma": [ + "ἀντιλέγω" + ], + "strong": [ + "G04830" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *to* refute those who contradict", + "checksum": "106714681a2213aeecb974bc82119e8f" + } + ], + "sourceString": "δεῖ γὰρ τὸν ἐπίσκοπον ἀνέγκλητον εἶναι, ὡς Θεοῦ οἰκονόμον; μὴ αὐθάδη, μὴ ὀργίλον, μὴ πάροινον, μὴ πλήκτην, μὴ αἰσχροκερδῆ, ἀλλὰ φιλόξενον, φιλάγαθον, σώφρονα, δίκαιον, ὅσιον, ἐγκρατῆ; ἀντεχόμενον τοῦ κατὰ τὴν διδαχὴν πιστοῦ λόγου, ἵνα δυνατὸς ᾖ, καὶ παρακαλεῖν ἐν τῇ διδασκαλίᾳ τῇ ὑγιαινούσῃ, καὶ τοὺς ἀντιλέγοντας ἐλέγχειν.", + "checksum": "e624ee5d8370b7cecec33af60e4d9f90" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εἰσὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for indeed *there* are", + "checksum": "208a7ddb963a87e30b35de00f1f43101" + }, + { + "source": [ + { + "content": "πολλοὶ", + "lemma": [ + "πολλός" + ], + "strong": [ + "G41830" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἀνυπότακτοι", + "lemma": [ + "ἀνυπότακτος" + ], + "strong": [ + "G05060" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "many and insubordinate", + "checksum": "8cc412d0670e99fb45f487c8fefb6e82" + }, + { + "source": [ + { + "content": "ματαιολόγοι", + "lemma": [ + "ματαιολόγος" + ], + "strong": [ + "G31510" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 2, + "occurrences": 2, + "index": 1 + }, + { + "content": "φρεναπάται", + "lemma": [ + "φρεναπάτης" + ], + "strong": [ + "G54230" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "empty talkers and deceivers", + "checksum": "40d6f5ece9e0563e581aa4b801aedd5d" + }, + { + "source": [ + { + "content": "μάλιστα", + "lemma": [ + "μάλιστα" + ], + "strong": [ + "G31220" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "S" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐκ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:10", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "περιτομῆς", + "lemma": [ + "περιτομή" + ], + "strong": [ + "G40610" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "especially those *who are* from the circumcision", + "checksum": "cc65fd7b0626a6f5e368bc80cd4d79db" + }, + { + "source": [ + { + "content": "οὓς", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιστομίζειν", + "lemma": [ + "ἐπιστομίζω" + ], + "strong": [ + "G19930" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "whom *it* is necessary to *silence*", + "checksum": "fc3af07c9d833a4beafa10b0608b771f" + }, + { + "source": [ + { + "content": "οἵτινες", + "lemma": [ + "ὅστις" + ], + "strong": [ + "G37480" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνατρέπουσιν", + "lemma": [ + "ἀνατρέπω" + ], + "strong": [ + "G03960" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*those-who* overturn", + "checksum": "72d79862e596fbcc95d16f290753e988" + }, + { + "source": [ + { + "content": "οἴκους", + "lemma": [ + "οἶκος" + ], + "strong": [ + "G36240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὅλους", + "lemma": [ + "ὅλος" + ], + "strong": [ + "G36500" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "entire households", + "checksum": "390f42363c5189b3455255ff0528a9d9" + }, + { + "source": [ + { + "content": "διδάσκοντες", + "lemma": [ + "διδάσκω" + ], + "strong": [ + "G13210" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:11", + "occurrence": 2, + "index": 0 + }, + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:11", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "teaching *things* which ought not *to be*", + "checksum": "93730fab319a4e9be8da987d47a76d0f" + }, + { + "source": [ + { + "content": "χάριν", + "lemma": [ + "χάριν" + ], + "strong": [ + "G54840" + ], + "morph": [ + "Gr", + "PI", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "κέρδους", + "lemma": [ + "κέρδος" + ], + "strong": [ + "G27710" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "αἰσχροῦ", + "lemma": [ + "αἰσχρός" + ], + "strong": [ + "G01500" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for the sake of *a* shameful *gain*", + "checksum": "ef02f499c4570980756d7930fb895cae" + } + ], + "sourceString": "εἰσὶν γὰρ πολλοὶ καὶ ἀνυπότακτοι, ματαιολόγοι, καὶ φρεναπάται, μάλιστα οἱ ἐκ τῆς περιτομῆς, οὓς δεῖ ἐπιστομίζειν, οἵτινες ὅλους οἴκους ἀνατρέπουσιν, διδάσκοντες ἃ μὴ δεῖ, αἰσχροῦ κέρδους χάριν. ", + "checksum": "1f7dd73e9b3871da068bc90495a2ac98" + }, + { + "chunks": [ + { + "source": [ + { + "content": "τις", + "lemma": [ + "τις" + ], + "strong": [ + "G51000" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "one of *them*", + "checksum": "b3448127c39296b9c4ab9f865823342a" + }, + { + "source": [ + { + "content": "προφήτης", + "lemma": [ + "προφήτης" + ], + "strong": [ + "G43960" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἴδιος", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:12", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "prophet *their own*", + "checksum": "9a26dd88a76ead3efd150529a809f5e9" + }, + { + "source": [ + { + "content": "εἶπέν", + "lemma": [ + "λέγω" + ], + "strong": [ + "G30040" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*someone* said:", + "checksum": "1a950ee293047e6468a89ea0f368a403" + }, + { + "source": [ + { + "content": "Κρῆτες", + "lemma": [ + "Κρής" + ], + "strong": [ + "G29120" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀεὶ", + "lemma": [ + "ἀεί" + ], + "strong": [ + "G01040" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ψεῦσται", + "lemma": [ + "ψεύστης" + ], + "strong": [ + "G55830" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Cretans *are* always liars", + "checksum": "38f3f401d4b0530cb5ff30f4bcb98ff9" + }, + { + "source": [ + { + "content": "κακὰ", + "lemma": [ + "κακός" + ], + "strong": [ + "G25560" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "θηρία", + "lemma": [ + "θηρίον" + ], + "strong": [ + "G23420" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "evil *beasts*", + "checksum": "d1cdd7f70646d45942dd686568f08600" + }, + { + "source": [ + { + "content": "γαστέρες", + "lemma": [ + "γαστήρ" + ], + "strong": [ + "G10640" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀργαί", + "lemma": [ + "ἀργός" + ], + "strong": [ + "G06920" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NFP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "lazy *bellies*", + "checksum": "85754051369ef81eaa5771df4ffe9cbc" + } + ], + "sourceString": "εἶπέν τις ἐξ αὐτῶν, ἴδιος αὐτῶν προφήτης, Κρῆτες ἀεὶ ψεῦσται, κακὰ θηρία, γαστέρες ἀργαί. ", + "checksum": "e96678fdc4dea0d6dc0989066e52fc1a" + }, + { + "chunks": [ + { + "source": [ + { + "content": "αὕτη", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "ED", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "μαρτυρία", + "lemma": [ + "μαρτυρία" + ], + "strong": [ + "G31410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "this *is the* testimony", + "checksum": "7d0189b22c0332cb0e53472a1f2732b6" + }, + { + "source": [ + { + "content": "ἐστὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀληθής", + "lemma": [ + "ἀληθής" + ], + "strong": [ + "G02270" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "is true", + "checksum": "769c3a6fd32c7845a430ce92a4700529" + } + ], + "sourceString": "ἡ μαρτυρία αὕτη ἐστὶν ἀληθής. ", + "checksum": "5ddeef9f24bd2500d9194b734e691564" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δι’", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἣν", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "ER", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰτίαν", + "lemma": [ + "αἰτία" + ], + "strong": [ + "G01560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for this cause", + "checksum": "86100f30f3fff0385d1ce7005c1e1d77" + }, + { + "source": [ + { + "content": "ἔλεγχε", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοὺς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3AMP", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀποτόμως", + "lemma": [ + "ἀποτόμως" + ], + "strong": [ + "G06640" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "rebuke them sharply", + "checksum": "bd94010ad450cc77e25d767b2097f568" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὑγιαίνωσιν", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that *they* may-be-healthy", + "checksum": "dd0ade9b7dfd52ce67ba97a31445a29a" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:13", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in the *faith*", + "checksum": "429052e69a03d76f89c625fa5c808a96" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "προσέχοντες", + "lemma": [ + "προσέχω" + ], + "strong": [ + "G43370" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "μύθοις", + "lemma": [ + "μῦθος" + ], + "strong": [ + "G34540" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἰουδαϊκοῖς", + "lemma": [ + "Ἰουδαϊκός" + ], + "strong": [ + "G24510" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not paying attention to *the* Jewish myths", + "checksum": "f417c21498e97ea285adcd89b7f2f229" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐντολαῖς", + "lemma": [ + "ἐντολή" + ], + "strong": [ + "G17850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* commandments", + "checksum": "e7167021baf5b2bf8869df0de825ecc4" + }, + { + "source": [ + { + "content": "ἀνθρώπων", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀποστρεφομένων", + "lemma": [ + "ἀποστρέφω" + ], + "strong": [ + "G06540" + ], + "morph": [ + "Gr", + "V", + "PPM", + "GMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀλήθειαν", + "lemma": [ + "ἀλήθεια" + ], + "strong": [ + "G02250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of men turning away from the truth", + "checksum": "96c1634a21ad1a37d048193fd79e32c3" + } + ], + "sourceString": "δι’ ἣν αἰτίαν ἔλεγχε αὐτοὺς ἀποτόμως, ἵνα ὑγιαίνωσιν ἐν τῇ πίστει, μὴ προσέχοντες Ἰουδαϊκοῖς μύθοις καὶ ἐντολαῖς ἀνθρώπων, ἀποστρεφομένων τὴν ἀλήθειαν. ", + "checksum": "a45d181906ec2892193adc4de78e4491" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πάντα", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαρὰ", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "All things *are* pure", + "checksum": "e74e7c3082bf3998a662fd2e399009a2" + }, + { + "source": [ + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαροῖς", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "to-the *ones* pure", + "checksum": "aa270d3c5d104949ea4ad90cefe9784e" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "μεμιαμμένοις", + "lemma": [ + "μιαίνω" + ], + "strong": [ + "G33920" + ], + "morph": [ + "Gr", + "V", + "PEP", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀπίστοις", + "lemma": [ + "ἄπιστος" + ], + "strong": [ + "G05710" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but to the defiled and unbelieving", + "checksum": "3104319ca300acb7af4142728050f3ca" + }, + { + "source": [ + { + "content": "οὐδὲν", + "lemma": [ + "οὐδείς" + ], + "strong": [ + "G37620" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαρόν", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNS", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 0 + } + ], + "gloss": "*nothing* is pure", + "checksum": "5024aa25e370ec1f6a79484883ad8a6e" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but", + "checksum": "0369e7d866b7b9c571d1ecda9c1cf6ee" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 0 + }, + { + "content": "νοῦς", + "lemma": [ + "νοῦς" + ], + "strong": [ + "G35630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and the mind", + "checksum": "f5b6cda41bd65d94237b8bdcf2ee1bee" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 2 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:15", + "occurrence": 4, + "index": 0 + }, + { + "content": "συνείδησις", + "lemma": [ + "συνείδησις" + ], + "strong": [ + "G48930" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* conscience of them", + "checksum": "8ca4554961b1181492a1c1b52a78bf93" + }, + { + "source": [ + { + "content": "μεμίανται", + "lemma": [ + "μιαίνω" + ], + "strong": [ + "G33920" + ], + "morph": [ + "Gr", + "V", + "IEP3", + "", + "S", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "are *defiled*", + "checksum": "92e9749c2943e05e5b0cf1d009239d51" + } + ], + "sourceString": "πάντα καθαρὰ τοῖς καθαροῖς; τοῖς δὲ μεμιαμμένοις καὶ ἀπίστοις, οὐδὲν καθαρόν; ἀλλὰ μεμίανται αὐτῶν καὶ ὁ νοῦς, καὶ ἡ συνείδησις. ", + "checksum": "1057762be23fcb6e8d1b44414d711184" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὁμολογοῦσιν", + "lemma": [ + "ὁμολογέω" + ], + "strong": [ + "G36700" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἰδέναι", + "lemma": [ + "εἴδω" + ], + "strong": [ + "G14920" + ], + "morph": [ + "Gr", + "V", + "NEA", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεὸν", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "They-confess to *know* God", + "checksum": "a1b745a16f28bb21920b395a52222ffd" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀρνοῦνται", + "lemma": [ + "ἀρνέομαι" + ], + "strong": [ + "G07200" + ], + "morph": [ + "Gr", + "V", + "IPM3", + "", + "P", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DNP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργοις", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but *they* deny *Him* by *their* works", + "checksum": "9aef5109f3b1f31e3f4a3e72f121f367" + }, + { + "source": [ + { + "content": "ὄντες", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "βδελυκτοὶ", + "lemma": [ + "βδελυκτός" + ], + "strong": [ + "G09470" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀπειθεῖς", + "lemma": [ + "ἀπειθής" + ], + "strong": [ + "G05450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being detestable and disobedient", + "checksum": "34b2a7933d6498b04dc71ce5123ec31b" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἀδόκιμοι", + "lemma": [ + "ἀδόκιμος" + ], + "strong": [ + "G00960" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργον", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἀγαθὸν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and disqualified for every good work", + "checksum": "c3ec965c7d902e584d05ca41519793fb" + } + ], + "sourceString": "Θεὸν ὁμολογοῦσιν εἰδέναι, τοῖς δὲ ἔργοις ἀρνοῦνται, βδελυκτοὶ ὄντες καὶ ἀπειθεῖς, καὶ πρὸς πᾶν ἔργον ἀγαθὸν ἀδόκιμοι.", + "checksum": "37d02292fa4980928d069f146771a086" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "σὺ", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2N", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But you", + "checksum": "3c2db3a127490c28aa2b64622271b641" + }, + { + "source": [ + { + "content": "λάλει", + "lemma": [ + "λαλέω" + ], + "strong": [ + "G29800" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "πρέπει", + "lemma": [ + "πρέπω" + ], + "strong": [ + "G42410" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "speak what *is* appropriate", + "checksum": "7e2fcf5e8ebbe221c7342279570b825b" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὑγιαινούσῃ", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to the teaching *that is* sound", + "checksum": "67585de835a3bebf07f8065653f48143" + } + ], + "sourceString": "σὺ δὲ λάλει ἃ πρέπει τῇ ὑγιαινούσῃ διδασκαλίᾳ. ", + "checksum": "37d709c6e01c1f03cde75ce9301f76e8" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρεσβύτας", + "lemma": [ + "πρεσβύτης" + ], + "strong": [ + "G42460" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*Tell* the older men *to* be", + "checksum": "f2ec8f371c2506db14d3a617f65ddd2b" + }, + { + "source": [ + { + "content": "νηφαλίους", + "lemma": [ + "νηφάλιος" + ], + "strong": [ + "G35240" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "temperate", + "checksum": "068b5002e0a555be27af4e6d83fa184b" + }, + { + "source": [ + { + "content": "σεμνούς", + "lemma": [ + "σεμνός" + ], + "strong": [ + "G45860" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "dignified", + "checksum": "87f88d44db0c92061584d70fd47bc1ee" + }, + { + "source": [ + { + "content": "σώφρονας", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "cf446f85c19ee586c5f5f18d9385a3e6" + }, + { + "source": [ + { + "content": "ὑγιαίνοντας", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being *sound* in *the* faith", + "checksum": "8e10edcbf3a44fd893f484922e566e20" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἀγάπῃ", + "lemma": [ + "ἀγάπη" + ], + "strong": [ + "G00260" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* love", + "checksum": "f149a48dc29eb00988f7897c4e746344" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 3, + "index": 2 + }, + { + "content": "ὑπομονῇ", + "lemma": [ + "ὑπομονή" + ], + "strong": [ + "G52810" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* patience", + "checksum": "3788884286e3873a9eb991af9e3f635b" + } + ], + "sourceString": "πρεσβύτας νηφαλίους εἶναι, σεμνούς, σώφρονας, ὑγιαίνοντας τῇ πίστει, τῇ ἀγάπῃ, τῇ ὑπομονῇ.", + "checksum": "f896e66c5c0d7464c316f58ca029365e" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρεσβύτιδας", + "lemma": [ + "πρεσβῦτις" + ], + "strong": [ + "G42470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*Tell the* older women", + "checksum": "29a8473840d470d2fdf7f328a237caab" + }, + { + "source": [ + { + "content": "ὡσαύτως", + "lemma": [ + "ὡσαύτως" + ], + "strong": [ + "G56150" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*in the same way*", + "checksum": "7740cc432115473822094f94ae3d3781" + }, + { + "source": [ + { + "content": "ἱεροπρεπεῖς", + "lemma": [ + "ἱεροπρεπής" + ], + "strong": [ + "G24120" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to be* reverent in behavior", + "checksum": "6890943a359dae7f5438b4b1bd4b3b05" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καταστήματι", + "lemma": [ + "κατάστημα" + ], + "strong": [ + "G26880" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *their* behavior,", + "checksum": "d492b0d214b13e9e0294016ae838253d" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διαβόλους", + "lemma": [ + "διάβολος" + ], + "strong": [ + "G12280" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* slanderers", + "checksum": "725dde4005deeea07e59dd9683b22302" + }, + { + "source": [ + { + "content": "μηδὲ", + "lemma": [ + "μηδέ" + ], + "strong": [ + "G33660" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεδουλωμένας", + "lemma": [ + "δουλόω" + ], + "strong": [ + "G14020" + ], + "morph": [ + "Gr", + "V", + "PEP", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πολλῷ", + "lemma": [ + "πολλός" + ], + "strong": [ + "G41830" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἴνῳ", + "lemma": [ + "οἶνος" + ], + "strong": [ + "G36310" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "nor *being* enslaved *to* much wine", + "checksum": "e483e1afbbf1ef09793e316e6118da4f" + }, + { + "source": [ + { + "content": "καλοδιδασκάλους", + "lemma": [ + "καλοδιδάσκαλος" + ], + "strong": [ + "G25670" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*good* teachers", + "checksum": "db0d0a6edbcff780acc35246f3fbea9a" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σωφρονίζωσι", + "lemma": [ + "σωφρονίζω" + ], + "strong": [ + "G49940" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that they-may-train *the* *young women*", + "checksum": "97ca83c66951841462810f880b0d007c" + }, + { + "source": [ + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νέας", + "lemma": [ + "νέος" + ], + "strong": [ + "G35010" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the young *women*", + "checksum": "5413363a35c624c44d712b1cfe7d0056" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "φιλάνδρους", + "lemma": [ + "φίλανδρος" + ], + "strong": [ + "G53620" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to be* husband-loving", + "checksum": "73bc9afe55e2774380e2cddd099bb0cf" + }, + { + "source": [ + { + "content": "φιλοτέκνους", + "lemma": [ + "φιλότεκνος" + ], + "strong": [ + "G53880" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "lovers of *their* children", + "checksum": "53ff0dfbe9b24178025d9c168c74de04" + }, + { + "source": [ + { + "content": "σώφρονας", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "f0df404af9256b26013edd333ea4be72" + }, + { + "source": [ + { + "content": "ἁγνάς", + "lemma": [ + "ἁγνός" + ], + "strong": [ + "G00530" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "pure", + "checksum": "faaf69965536d31a44de4d129cb62349" + }, + { + "source": [ + { + "content": "οἰκουργούς", + "lemma": [ + "οἰκουργός" + ], + "strong": [ + "G36260" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*workers at* home", + "checksum": "0b11716add692ec12538f01348227997" + }, + { + "source": [ + { + "content": "ἀγαθάς", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "good", + "checksum": "f3348f8ab21860d07f31b3a684c7649f" + }, + { + "source": [ + { + "content": "ὑποτασσομένας", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "PPP", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνδράσιν", + "lemma": [ + "ἀνήρ" + ], + "strong": [ + "G04350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "submitting *themselves* to their own husbands", + "checksum": "0b9a63d3dc9cc6e7b56dc2b09f1a765d" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 1 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:5", + "occurrence": 2, + "index": 0 + }, + { + "content": "λόγος", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:5", + "occurrence": 3, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that the word of *the* God", + "checksum": "5636c175f0d34fe26488e70d62cbc3de" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 1 + }, + { + "content": "βλασφημῆται", + "lemma": [ + "βλασφημέω" + ], + "strong": [ + "G09870" + ], + "morph": [ + "Gr", + "V", + "SPP3", + "", + "S", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not be *blasphemed*", + "checksum": "d4b61f250aa72235134462f72f7ed9d1" + } + ], + "sourceString": "πρεσβύτιδας ὡσαύτως ἐν καταστήματι ἱεροπρεπεῖς, μὴ διαβόλους, μηδὲ οἴνῳ πολλῷ δεδουλωμένας, καλοδιδασκάλους, ἵνα σωφρονίζωσι τὰς νέας, φιλάνδρους εἶναι, φιλοτέκνους, σώφρονας, ἁγνάς, οἰκουργούς, ἀγαθάς, ὑποτασσομένας τοῖς ἰδίοις ἀνδράσιν, ἵνα μὴ ὁ λόγος τοῦ Θεοῦ βλασφημῆται.", + "checksum": "aa08c043ade58482e2a758f3398fd228" + }, + { + "chunks": [ + { + "source": [ + { + "content": "παρακάλει", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὡσαύτως", + "lemma": [ + "ὡσαύτως" + ], + "strong": [ + "G56150" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "encourage likewise", + "checksum": "42824d8e8f86289b702945d64d92992a" + }, + { + "source": [ + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νεωτέρους", + "lemma": [ + "νεώτερος" + ], + "strong": [ + "G35125" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMPC" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the younger ones", + "checksum": "d551ae6c1c9ac68d3c0cc7eedcd6b8e7" + }, + { + "source": [ + { + "content": "σωφρονεῖν", + "lemma": [ + "σωφρονέω" + ], + "strong": [ + "G49930" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to be *self-controlled*", + "checksum": "870110744e567834c4b3197ec8ac0813" + }, + { + "source": [ + { + "content": "παρεχόμενος", + "lemma": [ + "παρέχω" + ], + "strong": [ + "G39300" + ], + "morph": [ + "Gr", + "V", + "PPM", + "NMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*providing*", + "checksum": "7c3c7fca29d2780c394f6f78c92916b8" + }, + { + "source": [ + { + "content": "σεαυτὸν", + "lemma": [ + "σεαυτοῦ" + ], + "strong": [ + "G45720" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "2AMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πάντα", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*yourself* in all things", + "checksum": "f67f2682f12ddff2204b97b314bb5dff" + }, + { + "source": [ + { + "content": "τύπον", + "lemma": [ + "τύπος" + ], + "strong": [ + "G51790" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*as* a model of good works", + "checksum": "680ec05e85b8c51d4e55940fa71c4ea1" + }, + { + "source": [ + { + "content": "ἀφθορίαν", + "lemma": [ + "ἀφθορία" + ], + "strong": [ + "G08627" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*incorruptibility*", + "checksum": "e0259642e50789a5900e5b844995b992" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* teaching", + "checksum": "72d8300fffbe3649f2332e037fa58c12" + }, + { + "source": [ + { + "content": "σεμνότητα", + "lemma": [ + "σεμνότης" + ], + "strong": [ + "G45870" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*with* dignity", + "checksum": "98409e5bb93960561ff052abf658b8cf" + }, + { + "source": [ + { + "content": "λόγον", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὑγιῆ", + "lemma": [ + "ὑγιής" + ], + "strong": [ + "G51990" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "a *wholesome* word", + "checksum": "4a41db7248e9b9af9c7b551cd1d8048d" + }, + { + "source": [ + { + "content": "ἀκατάγνωστον", + "lemma": [ + "ἀκατάγνωστος" + ], + "strong": [ + "G01760" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*that which is* beyond reproach", + "checksum": "6f3c7e772cfbe93276573a6fdc22f269" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐναντίας", + "lemma": [ + "ἐναντίος" + ], + "strong": [ + "G17270" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that *he who is* from *the* opposition", + "checksum": "2962c815b3e4d34ceb294df69e3cb1c6" + }, + { + "source": [ + { + "content": "ἐντραπῇ", + "lemma": [ + "ἐντρέπω" + ], + "strong": [ + "G17880" + ], + "morph": [ + "Gr", + "V", + "SAP3", + "", + "S", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "may be *put to* shame", + "checksum": "9224e10a2a934e44b7b275fd89167e0c" + }, + { + "source": [ + { + "content": "ἔχων", + "lemma": [ + "ἔχω" + ], + "strong": [ + "G21920" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδὲν", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "ANS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "φαῦλον", + "lemma": [ + "φαῦλος" + ], + "strong": [ + "G53370" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "ANS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having nothing *of* evil", + "checksum": "052779ab23ff649f9cde823c5a1ab3e0" + }, + { + "source": [ + { + "content": "λέγειν", + "lemma": [ + "λέγω" + ], + "strong": [ + "G30040" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to say", + "checksum": "fbd7a4b697ee217104b4858bbc8c2216" + }, + { + "source": [ + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "about *us*", + "checksum": "8f5f57da697da957195ca0ac96fb2859" + } + ], + "sourceString": "τοὺς νεωτέρους ὡσαύτως παρακάλει, σωφρονεῖν; περὶ πάντα σεαυτὸν παρεχόμενος τύπον καλῶν ἔργων, ἐν τῇ διδασκαλίᾳ ἀφθορίαν, σεμνότητα, λόγον ὑγιῆ, ἀκατάγνωστον, ἵνα ὁ ἐξ ἐναντίας ἐντραπῇ, μηδὲν ἔχων λέγειν περὶ ἡμῶν φαῦλον.", + "checksum": "44bc6252ee43cabdee3ba5273f5749ac" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δούλους", + "lemma": [ + "δοῦλος" + ], + "strong": [ + "G14010" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*Instruct* slaves", + "checksum": "ba4efaff42a10dc217ed67270b9ee895" + }, + { + "source": [ + { + "content": "ὑποτάσσεσθαι", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be submissive", + "checksum": "e48c80bbf0919cc568098886bcbfdda8" + }, + { + "source": [ + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεσπόταις", + "lemma": [ + "δεσπότης" + ], + "strong": [ + "G12030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to their* own masters", + "checksum": "d75b04141ba4715964c231c9fd000550" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "DNP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *all* things", + "checksum": "0a201dd21175d8fcc16e8360581ca52f" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εὐαρέστους", + "lemma": [ + "εὐάρεστος" + ], + "strong": [ + "G21010" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be pleasing", + "checksum": "8a22d5a9a47647c7332b129676bed48f" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀντιλέγοντας", + "lemma": [ + "ἀντιλέγω" + ], + "strong": [ + "G04830" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* contradicting", + "checksum": "b3fdd449c92e9fd56912040815b32806" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 1 + }, + { + "content": "νοσφιζομένους", + "lemma": [ + "νοσφίζω" + ], + "strong": [ + "G35570" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*not* embezzling", + "checksum": "4a47a5962f85e1c4a0fa2661bb2d7277" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐνδεικνυμένους", + "lemma": [ + "ἐνδείκνυμι" + ], + "strong": [ + "G17310" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶσαν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀγαθήν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but showing *all* good faith", + "checksum": "920cc639b7fe90be7f1a11ffe494499b" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "κοσμῶσιν", + "lemma": [ + "κοσμέω" + ], + "strong": [ + "G28850" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 1 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "DNP", + "" + ], + "cv": "2:10", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "so-that *they* may-adorn in all-things", + "checksum": "63354bfa1f6cfb1422c44f2fff84fb20" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "διδασκαλίαν", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 2, + "index": 1 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 3, + "index": 0 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the teaching *of* the Savior *of* ours", + "checksum": "c56d0f3727e6703daa74c6e3f2c7db53" + }, + { + "source": [ + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of *God*", + "checksum": "d77c585f735df5d0c63daaf7a9dc3218" + } + ], + "sourceString": "δούλους ἰδίοις δεσπόταις ὑποτάσσεσθαι ἐν πᾶσιν, εὐαρέστους εἶναι, μὴ ἀντιλέγοντας, μὴ νοσφιζομένους, ἀλλὰ πᾶσαν πίστιν ἐνδεικνυμένους ἀγαθήν, ἵνα τὴν διδασκαλίαν τὴν τοῦ Σωτῆρος ἡμῶν, Θεοῦ, κοσμῶσιν ἐν πᾶσιν.", + "checksum": "093cf60f07622a7b1605ec6a681f721c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:11", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "For the grace of *the* God", + "checksum": "e12558090316e6307d4808cf51ec98f8" + }, + { + "source": [ + { + "content": "σωτήριος", + "lemma": [ + "σωτήριος" + ], + "strong": [ + "G49920" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀνθρώποις", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "salvatory for-*all* *the*-men", + "checksum": "f1da11e5090ca6b470297f1436badbde" + }, + { + "source": [ + { + "content": "ἐπεφάνη", + "lemma": [ + "ἐπιφαίνω" + ], + "strong": [ + "G20140" + ], + "morph": [ + "Gr", + "V", + "IAP3", + "", + "S", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*has* appeared", + "checksum": "0031d11a18f3c03df9c77a9a1cbb8004" + }, + { + "source": [ + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "παιδεύουσα", + "lemma": [ + "παιδεύω" + ], + "strong": [ + "G38110" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "training *us*", + "checksum": "80ac2e8096eb5b73d6c5178451c757ce" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ζήσωμεν", + "lemma": [ + "ζάω" + ], + "strong": [ + "G21980" + ], + "morph": [ + "Gr", + "V", + "SAA1", + "", + "P", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that we-may*live*", + "checksum": "20a9a3826e1d0cc4a301268e35b6dd7a" + }, + { + "source": [ + { + "content": "σωφρόνως", + "lemma": [ + "σωφρόνως" + ], + "strong": [ + "G49960" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "δικαίως", + "lemma": [ + "δικαίως" + ], + "strong": [ + "G13460" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 3, + "occurrences": 3, + "index": 1 + }, + { + "content": "εὐσεβῶς", + "lemma": [ + "εὐσεβῶς" + ], + "strong": [ + "G21530" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "sensibly and righteously and devoutly", + "checksum": "dfef6c326066662b99745b5776f7995b" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῷ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:12", + "occurrence": 3, + "occurrences": 3, + "index": 0 + }, + { + "content": "αἰῶνι", + "lemma": [ + "αἰών" + ], + "strong": [ + "G01650" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νῦν", + "lemma": [ + "νῦν" + ], + "strong": [ + "G35680" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* present age", + "checksum": "6e8739a6f61f832ea31413ef7b417108" + }, + { + "source": [ + { + "content": "ἀρνησάμενοι", + "lemma": [ + "ἀρνέομαι" + ], + "strong": [ + "G07200" + ], + "morph": [ + "Gr", + "V", + "PAM", + "NMP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 3, + "index": 0 + }, + { + "content": "ἀσέβειαν", + "lemma": [ + "ἀσέβεια" + ], + "strong": [ + "G07630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "denying *the* ungodliness", + "checksum": "7e7ebdeb09ff866b4bac9c02ad29429f" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 3, + "index": 2 + }, + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "ἐπιθυμίας", + "lemma": [ + "ἐπιθυμία" + ], + "strong": [ + "G19390" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κοσμικὰς", + "lemma": [ + "κοσμικός" + ], + "strong": [ + "G28860" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* worldly desires", + "checksum": "7d13fefab5bc34ec5e39abb17a8ac18f" + }, + { + "source": [ + { + "content": "προσδεχόμενοι", + "lemma": [ + "προσδέχομαι" + ], + "strong": [ + "G43270" + ], + "morph": [ + "Gr", + "V", + "PPM", + "NMP", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "awaiting", + "checksum": "7e881e3d463498b0d2785c1643539f70" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 3, + "index": 1 + }, + { + "content": "μακαρίαν", + "lemma": [ + "μακάριος" + ], + "strong": [ + "G31070" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐλπίδα", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the blessed *hope*", + "checksum": "6be41723938fd15ad7d672edd60ef1a6" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 2, + "index": 3 + }, + { + "content": "ἐπιφάνειαν", + "lemma": [ + "ἐπιφάνεια" + ], + "strong": [ + "G20150" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* appearing", + "checksum": "5bac1b7cba7e21a1a0dc809b289ffe07" + }, + { + "source": [ + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:13", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "δόξης", + "lemma": [ + "δόξα" + ], + "strong": [ + "G13910" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of the*glory*", + "checksum": "8de9ad91dfa0d5da1d8d6ded024a4db1" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 3, + "occurrences": 3, + "index": 1 + }, + { + "content": "μεγάλου", + "lemma": [ + "μέγας" + ], + "strong": [ + "G31730" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:13", + "occurrence": 2, + "occurrences": 2, + "index": 4 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* great God and Savior *of* us", + "checksum": "d74403c75aaa6e7c31bfbd4a344f370b" + }, + { + "source": [ + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Jesus *of* Christ", + "checksum": "e5e9ef43fa0c659e6894c65ac5f8d236" + }, + { + "source": [ + { + "content": "ὃς", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔδωκεν", + "lemma": [ + "δίδωμι" + ], + "strong": [ + "G13250" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἑαυτὸν", + "lemma": [ + "ἑαυτοῦ" + ], + "strong": [ + "G14380" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "3AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "who *has* given Himself", + "checksum": "4a3d03f9235d1950aca38cc9a6fcb077" + }, + { + "source": [ + { + "content": "ὑπὲρ", + "lemma": [ + "ὑπέρ" + ], + "strong": [ + "G52280" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "on *behalf* of us", + "checksum": "2108297bc500809b45c6694746ebc781" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 1 + }, + { + "content": "λυτρώσηται", + "lemma": [ + "λυτρόω" + ], + "strong": [ + "G30840" + ], + "morph": [ + "Gr", + "V", + "SAM3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "2:14", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "so-that *he* might-redeem us", + "checksum": "34c1f6ea01e94b1569283f0cf7d3ba24" + }, + { + "source": [ + { + "content": "ἀπὸ", + "lemma": [ + "ἀπό" + ], + "strong": [ + "G05750" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "πάσης", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνομίας", + "lemma": [ + "ἀνομία" + ], + "strong": [ + "G04580" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "from all *forms of* iniquity", + "checksum": "ee1e71b5f721179c92a38ca6e1dc65e4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 5 + }, + { + "content": "καθαρίσῃ", + "lemma": [ + "καθαρίζω" + ], + "strong": [ + "G25110" + ], + "morph": [ + "Gr", + "V", + "SAA3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἑαυτῷ", + "lemma": [ + "ἑαυτοῦ" + ], + "strong": [ + "G14380" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "3DMS", + "" + ], + "cv": "2:14", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "and *that* he might purify for himself", + "checksum": "8e702a34374282ff891c6aed190e72cc" + }, + { + "source": [ + { + "content": "λαὸν", + "lemma": [ + "λαός" + ], + "strong": [ + "G29920" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιούσιον", + "lemma": [ + "περιούσιος" + ], + "strong": [ + "G40410" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*a* people *who are* his *very* own", + "checksum": "8e7ce3d9add1297caf2d247905ea09fd" + }, + { + "source": [ + { + "content": "ζηλωτὴν", + "lemma": [ + "ζηλωτής" + ], + "strong": [ + "G22070" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "zealous for *the* good works", + "checksum": "39c45acd7013f23890c6a822878a909f" + } + ], + "sourceString": "ἐπεφάνη γὰρ ἡ χάρις τοῦ Θεοῦ, σωτήριος πᾶσιν ἀνθρώποις, παιδεύουσα ἡμᾶς, ἵνα ἀρνησάμενοι τὴν ἀσέβειαν καὶ τὰς κοσμικὰς ἐπιθυμίας, σωφρόνως καὶ δικαίως, καὶ εὐσεβῶς, ζήσωμεν ἐν τῷ νῦν αἰῶνι; προσδεχόμενοι τὴν μακαρίαν ἐλπίδα, καὶ ἐπιφάνειαν τῆς δόξης τοῦ μεγάλου Θεοῦ καὶ Σωτῆρος ἡμῶν, Ἰησοῦ Χριστοῦ; ὃς ἔδωκεν ἑαυτὸν ὑπὲρ ἡμῶν, ἵνα λυτρώσηται ἡμᾶς ἀπὸ πάσης ἀνομίας, καὶ καθαρίσῃ ἑαυτῷ λαὸν περιούσιον, ζηλωτὴν καλῶν ἔργων.", + "checksum": "95d54e5a95dbf37e9d992cc1e09c0f5d" + }, + { + "chunks": [ + { + "source": [ + { + "content": "λάλει", + "lemma": [ + "λαλέω" + ], + "strong": [ + "G29800" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ταῦτα", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Speak these *things*", + "checksum": "b6180dfaef76eae5c2bd313e10906a94" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "παρακάλει", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and encourage", + "checksum": "370fb22386f72d739af22cfb9e4f075c" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἔλεγχε", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *reprove*", + "checksum": "41279d044fa60338a91fb164197295fd" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "πάσης", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιταγῆς", + "lemma": [ + "ἐπιταγή" + ], + "strong": [ + "G20030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "with all *authority*", + "checksum": "36110f73fa9cbc8b8b16d3c8b45cf60b" + } + ], + "sourceString": "ταῦτα λάλει, καὶ παρακάλει, καὶ ἔλεγχε, μετὰ πάσης ἐπιταγῆς. ", + "checksum": "5bba83a7dfe0c9ac14715a94bc22b0fb" + }, + { + "chunks": [ + { + "source": [ + { + "content": "μηδείς", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιφρονείτω", + "lemma": [ + "περιφρονέω" + ], + "strong": [ + "G40650" + ], + "morph": [ + "Gr", + "V", + "MPA3", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*Let* no one despise", + "checksum": "bdc0a1dca79a3b74876068fe18266292" + }, + { + "source": [ + { + "content": "σου", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "your", + "checksum": "c04ed2d97c289d5ba418237d187a6775" + } + ], + "sourceString": "μηδείς σου περιφρονείτω.", + "checksum": "40dfb93badca3e7a43c380d485e40052" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὑπομίμνῃσκε", + "lemma": [ + "ὑπομιμνῄσκω" + ], + "strong": [ + "G52790" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοὺς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3AMP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Remind *them*", + "checksum": "75fc71ae0ebe5f2a588245a4fdd9b055" + }, + { + "source": [ + { + "content": "ὑποτάσσεσθαι", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀρχαῖς", + "lemma": [ + "ἀρχή" + ], + "strong": [ + "G07460" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be subject *to* authorities", + "checksum": "75bba0c7d9bb1eeecd8367211d11b20d" + }, + { + "source": [ + { + "content": "ἐξουσίαις", + "lemma": [ + "ἐξουσία" + ], + "strong": [ + "G18490" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to *the* authorities", + "checksum": "ec671ea70d559eb7c47285ad7d25cce1" + }, + { + "source": [ + { + "content": "πειθαρχεῖν", + "lemma": [ + "πειθαρχέω" + ], + "strong": [ + "G39800" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to obey", + "checksum": "f9ec92feab8bb68ebb3731b2e247d834" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἑτοίμους", + "lemma": [ + "ἕτοιμος" + ], + "strong": [ + "G20920" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἔργον", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀγαθὸν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be ready for every good work", + "checksum": "f2f19b9fe71fd69bc2b0d55d9449a5ac" + }, + { + "source": [ + { + "content": "βλασφημεῖν", + "lemma": [ + "βλασφημέω" + ], + "strong": [ + "G09870" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδένα", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*to* blaspheme *no one*", + "checksum": "f4f567f50c15ab1f13f35e49dd9ae8c5" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἀμάχους", + "lemma": [ + "ἄμαχος" + ], + "strong": [ + "G02690" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*to* be non-contentious", + "checksum": "d6c6fd5c76387f6e471698f8953e4215" + }, + { + "source": [ + { + "content": "ἐπιεικεῖς", + "lemma": [ + "ἐπιεικής" + ], + "strong": [ + "G19330" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "gentle*men*", + "checksum": "51d8dbced68122e50d0ae11f35106be1" + }, + { + "source": [ + { + "content": "ἐνδεικνυμένους", + "lemma": [ + "ἐνδείκνυμι" + ], + "strong": [ + "G17310" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶσαν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πραΰτητα", + "lemma": [ + "πραΰτης" + ], + "strong": [ + "G42400" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "demonstrating all *gentleness*", + "checksum": "bf4e5a4de271610337d102fb281aabcf" + }, + { + "source": [ + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 1 + }, + { + "content": "πάντας", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἀνθρώπους", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "toward *all* men", + "checksum": "1c49b7be9f4d1a25e070d96f13c8b44a" + } + ], + "sourceString": "ὑπομίμνῃσκε αὐτοὺς ἀρχαῖς, ἐξουσίαις, ὑποτάσσεσθαι, πειθαρχεῖν; πρὸς πᾶν ἔργον ἀγαθὸν ἑτοίμους εἶναι, μηδένα βλασφημεῖν, ἀμάχους εἶναι, ἐπιεικεῖς, πᾶσαν ἐνδεικνυμένους πραΰτητα πρὸς πάντας ἀνθρώπους. ", + "checksum": "342cae2be43a16778a0e3970ec048c49" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γάρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμεῖς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "P", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for we also", + "checksum": "3782d5eeceef4a39bd4da3106e313c46" + }, + { + "source": [ + { + "content": "ποτε", + "lemma": [ + "ποτέ" + ], + "strong": [ + "G42180" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἦμεν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IIA1", + "", + "P", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "once *we* were", + "checksum": "cff141b8aa58b534c4006e55bf3a2182" + }, + { + "source": [ + { + "content": "ἀνόητοι", + "lemma": [ + "ἀνόητος" + ], + "strong": [ + "G04530" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "foolish", + "checksum": "70c7c3a5b1816222234e5b04ecc5efe4" + }, + { + "source": [ + { + "content": "ἀπειθεῖς", + "lemma": [ + "ἀπειθής" + ], + "strong": [ + "G05450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "disobedient", + "checksum": "bcf1ded489f61af021344eac6eea5fa8" + }, + { + "source": [ + { + "content": "πλανώμενοι", + "lemma": [ + "πλανάω" + ], + "strong": [ + "G41050" + ], + "morph": [ + "Gr", + "V", + "PPP", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*being* led astray", + "checksum": "2445f68ba2c84e194ad29cdc3c7689b9" + }, + { + "source": [ + { + "content": "δουλεύοντες", + "lemma": [ + "δουλεύω" + ], + "strong": [ + "G13980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιθυμίαις", + "lemma": [ + "ἐπιθυμία" + ], + "strong": [ + "G19390" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἡδοναῖς", + "lemma": [ + "ἡδονή" + ], + "strong": [ + "G22370" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ποικίλαις", + "lemma": [ + "ποικίλος" + ], + "strong": [ + "G41640" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being-slaves to-desires and *to* various pleasures", + "checksum": "04e3a2ccb782a8338992cb89975887d8" + }, + { + "source": [ + { + "content": "διάγοντες", + "lemma": [ + "διάγω" + ], + "strong": [ + "G12360" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "κακίᾳ", + "lemma": [ + "κακία" + ], + "strong": [ + "G25490" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 3, + "index": 2 + }, + { + "content": "φθόνῳ", + "lemma": [ + "φθόνος" + ], + "strong": [ + "G53550" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "living in *the* malice and envy", + "checksum": "ecc4b79168ea0408d0aa52693f8a550b" + }, + { + "source": [ + { + "content": "στυγητοί", + "lemma": [ + "στυγητός" + ], + "strong": [ + "G47670" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "hateful", + "checksum": "45521b8b2086da2debdaa508948d4bb8" + }, + { + "source": [ + { + "content": "μισοῦντες", + "lemma": [ + "μισέω" + ], + "strong": [ + "G34040" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀλλήλους", + "lemma": [ + "ἀλλήλων" + ], + "strong": [ + "G02400" + ], + "morph": [ + "Gr", + "RC", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "hating one another", + "checksum": "7f6aaaa1b9084d0e2137e8c4aee3600e" + } + ], + "sourceString": "ἦμεν γάρ ποτε καὶ ἡμεῖς ἀνόητοι, ἀπειθεῖς, πλανώμενοι, δουλεύοντες ἐπιθυμίαις καὶ ἡδοναῖς ποικίλαις, ἐν κακίᾳ καὶ φθόνῳ διάγοντες, στυγητοί, μισοῦντες ἀλλήλους. ", + "checksum": "37133c4bbb6d19a0c13ef246c3e73b51" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὅτε", + "lemma": [ + "ὅτε" + ], + "strong": [ + "G37530" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "But when", + "checksum": "b0f89ea0e0d2a2db7d755041342677f2" + }, + { + "source": [ + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 3, + "index": 0 + }, + { + "content": "χρηστότης", + "lemma": [ + "χρηστότης" + ], + "strong": [ + "G55440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 2, + "occurrences": 3, + "index": 1 + }, + { + "content": "φιλανθρωπία", + "lemma": [ + "φιλανθρωπία" + ], + "strong": [ + "G53630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the kindness and *the* love-for-mankind", + "checksum": "8fa04e4e6692c1da82c561b2e5f50fdc" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 3, + "occurrences": 3, + "index": 0 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* Savior of us, God", + "checksum": "a51d9a3b610d9c23ed6f8b4b5b8aafc9" + }, + { + "source": [ + { + "content": "ἐπεφάνη", + "lemma": [ + "ἐπιφαίνω" + ], + "strong": [ + "G20140" + ], + "morph": [ + "Gr", + "V", + "IAP3", + "", + "S", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*has* appeared", + "checksum": "0e2b1f641f9522a2c18fe3e1833ab30d" + }, + { + "source": [ + { + "content": "ἔσωσεν", + "lemma": [ + "σῴζω" + ], + "strong": [ + "G49820" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "he-saved *us*", + "checksum": "307441f83f06a1d08c31943310a6d4f8" + }, + { + "source": [ + { + "content": "οὐκ", + "lemma": [ + "οὐ" + ], + "strong": [ + "G37560" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *from*", + "checksum": "0e7b55512044cd4790167416941ff092" + }, + { + "source": [ + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῶν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δικαιοσύνῃ", + "lemma": [ + "δικαιοσύνη" + ], + "strong": [ + "G13430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of works *that are* in righteousness", + "checksum": "c8d04e3cbdc953466df8bb2b780f695a" + }, + { + "source": [ + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμεῖς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "P", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐποιήσαμεν", + "lemma": [ + "ποιέω" + ], + "strong": [ + "G41600" + ], + "morph": [ + "Gr", + "V", + "IAA1", + "", + "P", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*which* we *have* done", + "checksum": "1b20fed141619d4592e5181b1f4e5174" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὸ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἔλεος", + "lemma": [ + "ἔλεος" + ], + "strong": [ + "G16560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοῦ", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but according to *the* mercy of-him", + "checksum": "06707d275c5ffae12605dc58997a76ac" + }, + { + "source": [ + { + "content": "διὰ", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "λουτροῦ", + "lemma": [ + "λουτρόν" + ], + "strong": [ + "G30670" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "παλινγενεσίας", + "lemma": [ + "παλινγενεσία" + ], + "strong": [ + "G38240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "through *the* washing of regeneration", + "checksum": "5fb14c99949ffee683982c441a8b42d3" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἀνακαινώσεως", + "lemma": [ + "ἀνακαίνωσις" + ], + "strong": [ + "G03420" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Πνεύματος", + "lemma": [ + "πνεῦμα" + ], + "strong": [ + "G41510" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Ἁγίου", + "lemma": [ + "ἅγιος" + ], + "strong": [ + "G00400" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* renewal of *the* Holy Spirit", + "checksum": "b1649d8f993c75d6c576cdebfea20b4c" + }, + { + "source": [ + { + "content": "οὗ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐξέχεεν", + "lemma": [ + "ἐκχέω" + ], + "strong": [ + "G16320" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πλουσίως", + "lemma": [ + "πλουσίως" + ], + "strong": [ + "G41460" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which He poured out *upon us* abundantly", + "checksum": "41df8f179a7890922366a708a556ce2d" + }, + { + "source": [ + { + "content": "ἐφ’", + "lemma": [ + "ἐπί" + ], + "strong": [ + "G19090" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "upon *us*", + "checksum": "08fd6d9f6788d2504de67bf993cafec3" + }, + { + "source": [ + { + "content": "διὰ", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "3:6", + "occurrence": 2, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "through Jesus Christ, *the* Savior of us", + "checksum": "b9d4cf36d6d2008966fbaf6f5b2fc13a" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "γενηθῶμεν", + "lemma": [ + "γίνομαι" + ], + "strong": [ + "G10960" + ], + "morph": [ + "Gr", + "V", + "SAP1", + "", + "P", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "κληρονόμοι", + "lemma": [ + "κληρονόμος" + ], + "strong": [ + "G28180" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so-that we-might-become *heirs*", + "checksum": "fac27659b6c8a55af4c6925858bde826" + }, + { + "source": [ + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐλπίδα", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ζωῆς", + "lemma": [ + "ζωή" + ], + "strong": [ + "G22220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "αἰωνίου", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to *the* hope of eternal life", + "checksum": "b6007bc07009f4b9e9eca4c77dbe0c85" + }, + { + "source": [ + { + "content": "δικαιωθέντες", + "lemma": [ + "δικαιόω" + ], + "strong": [ + "G13440" + ], + "morph": [ + "Gr", + "V", + "PAP", + "NMP", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐκείνου", + "lemma": [ + "ἐκεῖνος" + ], + "strong": [ + "G15650" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "χάριτι", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having-been-justified *by* the grace *of* that-one", + "checksum": "82bc2a5a0b4d8157cad8a7b4d3bde5cf" + } + ], + "sourceString": "ὅτε δὲ ἡ χρηστότης καὶ ἡ φιλανθρωπία ἐπεφάνη τοῦ Σωτῆρος ἡμῶν, Θεοῦ, οὐκ ἐξ ἔργων τῶν ἐν δικαιοσύνῃ, ἃ ἐποιήσαμεν ἡμεῖς, ἀλλὰ κατὰ τὸ αὐτοῦ ἔλεος, ἔσωσεν ἡμᾶς, διὰ λουτροῦ παλινγενεσίας καὶ ἀνακαινώσεως Πνεύματος Ἁγίου, οὗ ἐξέχεεν ἐφ’ ἡμᾶς πλουσίως, διὰ Ἰησοῦ Χριστοῦ, τοῦ Σωτῆρος ἡμῶν, ἵνα δικαιωθέντες τῇ ἐκείνου χάριτι, κληρονόμοι γενηθῶμεν, κατ’ ἐλπίδα ζωῆς αἰωνίου.", + "checksum": "8aa9d785db7f52328f6aa3047f0ed67e" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "λόγος", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστὸς", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "The word *is* faithful", + "checksum": "6f4e0c14a64925dbc809031ae4a0555f" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "βούλομαί", + "lemma": [ + "βούλομαι" + ], + "strong": [ + "G10140" + ], + "morph": [ + "Gr", + "V", + "IPM1", + "", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "διαβεβαιοῦσθαι", + "lemma": [ + "διαβεβαιόομαι" + ], + "strong": [ + "G12260" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *I want* you *to be* firmly-asserting", + "checksum": "55279c1e7844fdc8f41e52f16251044b" + }, + { + "source": [ + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "τούτων", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "concerning *these* matters", + "checksum": "062228df634205f2d4d04090bb9bf007" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that *they*", + "checksum": "09e244bfc2be9dc5392ceff52c442bb6" + }, + { + "source": [ + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "πεπιστευκότες", + "lemma": [ + "πιστεύω" + ], + "strong": [ + "G41000" + ], + "morph": [ + "Gr", + "V", + "PEA", + "NMP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεῷ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "those *who have* believed *in* God", + "checksum": "fcbf9f6742fe43e9f28e3b07d6108dd6" + }, + { + "source": [ + { + "content": "φροντίζωσιν", + "lemma": [ + "φροντίζω" + ], + "strong": [ + "G54310" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*may* be careful to engage in", + "checksum": "e906480f86341e5fa036f588ab91486b" + }, + { + "source": [ + { + "content": "προΐστασθαι", + "lemma": [ + "προΐστημι" + ], + "strong": [ + "G42910" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to excel in *good* works", + "checksum": "4e01fda69953eec00e8131490d38ef1a" + } + ], + "sourceString": "πιστὸς ὁ λόγος, καὶ περὶ τούτων βούλομαί σε διαβεβαιοῦσθαι, ἵνα φροντίζωσιν καλῶν ἔργων, προΐστασθαι οἱ πεπιστευκότες Θεῷ. ", + "checksum": "a76d3d03a5fc9372ed34650c1eb3945b" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ταῦτά", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἐστιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλὰ", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "These things are *good*", + "checksum": "747a142adabb847f952f3dff3e32d860" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "ὠφέλιμα", + "lemma": [ + "ὠφέλιμος" + ], + "strong": [ + "G56240" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "3:8", + "occurrence": 3, + "index": 0 + }, + { + "content": "ἀνθρώποις", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and beneficial *to* men", + "checksum": "5e6c452d4de59ef2d4d4f4551f5f6081" + } + ], + "sourceString": "ταῦτά ἐστιν καλὰ καὶ ὠφέλιμα τοῖς ἀνθρώποις. ", + "checksum": "b619c1770166163778632938d60117aa" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιΐστασο", + "lemma": [ + "περιΐστημι" + ], + "strong": [ + "G40260" + ], + "morph": [ + "Gr", + "V", + "MPM2", + "", + "S", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But *avoid*", + "checksum": "ae277608417a065620343628fb47c678" + }, + { + "source": [ + { + "content": "ζητήσεις", + "lemma": [ + "ζήτησις" + ], + "strong": [ + "G22140" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "μωρὰς", + "lemma": [ + "μωρός" + ], + "strong": [ + "G34740" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "foolish controversies", + "checksum": "4814dfa40852406bb3cca73b6570ceb4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "γενεαλογίας", + "lemma": [ + "γενεαλογία" + ], + "strong": [ + "G10760" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* genealogies", + "checksum": "9b93816d7cebb58f5e1a46b7abc99474" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἔρεις", + "lemma": [ + "ἔρις" + ], + "strong": [ + "G20540" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* disputes", + "checksum": "bd32f9d657dec40752dd53114ad4aad4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 3, + "index": 2 + }, + { + "content": "μάχας", + "lemma": [ + "μάχη" + ], + "strong": [ + "G31630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "νομικὰς", + "lemma": [ + "νομικός" + ], + "strong": [ + "G35440" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *legal* battles", + "checksum": "8f85a3bbda8d28e4b826bd899f0c8884" + }, + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἰσὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνωφελεῖς", + "lemma": [ + "ἀνωφελής" + ], + "strong": [ + "G05120" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 4, + "index": 3 + }, + { + "content": "μάταιοι", + "lemma": [ + "μάταιος" + ], + "strong": [ + "G31520" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for they are unprofitable and *vain*", + "checksum": "88096b5cb3b6a88655f66f3736829f91" + } + ], + "sourceString": "μωρὰς δὲ ζητήσεις, καὶ γενεαλογίας, καὶ ἔρεις, καὶ μάχας νομικὰς, περιΐστασο; εἰσὶν γὰρ ἀνωφελεῖς καὶ μάταιοι. ", + "checksum": "64459f2fd3de56da601ec61db2f8ff2c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "παραιτοῦ", + "lemma": [ + "παραιτέομαι" + ], + "strong": [ + "G38680" + ], + "morph": [ + "Gr", + "V", + "MPM2", + "", + "S", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἄνθρωπον", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἱρετικὸν", + "lemma": [ + "αἱρετικός" + ], + "strong": [ + "G01410" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Reject a *man who is* heretical", + "checksum": "90f25b4c0a84efcc9f5625bce2be3ed5" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "μίαν", + "lemma": [ + "εἷς" + ], + "strong": [ + "G15200" + ], + "morph": [ + "Gr", + "EN", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δευτέραν", + "lemma": [ + "δεύτερος" + ], + "strong": [ + "G12080" + ], + "morph": [ + "Gr", + "EO", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νουθεσίαν", + "lemma": [ + "νουθεσία" + ], + "strong": [ + "G35590" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "after a first and second admonition", + "checksum": "c035011a21c62d3323e951939d57cf98" + }, + { + "source": [ + { + "content": "εἰδὼς", + "lemma": [ + "εἴδω" + ], + "strong": [ + "G14920" + ], + "morph": [ + "Gr", + "V", + "PEA", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὅτι", + "lemma": [ + "ὅτι" + ], + "strong": [ + "G37540" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "knowing that", + "checksum": "b6fddca202dd3d7a36ef76b22dfeb2f9" + }, + { + "source": [ + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοιοῦτος", + "lemma": [ + "τοιοῦτος" + ], + "strong": [ + "G51080" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the *such* man", + "checksum": "15b0b23f869d618cadc77b300d541257" + }, + { + "source": [ + { + "content": "ἐξέστραπται", + "lemma": [ + "ἐκστρέφω" + ], + "strong": [ + "G16120" + ], + "morph": [ + "Gr", + "V", + "IEP3", + "", + "S", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἁμαρτάνει", + "lemma": [ + "ἁμαρτάνω" + ], + "strong": [ + "G02640" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "has turned away and *is* sinning", + "checksum": "a8dfc56f57fff35f89db0637a2013399" + }, + { + "source": [ + { + "content": "ὢν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτοκατάκριτος", + "lemma": [ + "αὐτοκατάκριτος" + ], + "strong": [ + "G08430" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being *self*-condemned", + "checksum": "9b40409f2c5081da75c33a1a0d0935a9" + } + ], + "sourceString": "αἱρετικὸν ἄνθρωπον μετὰ μίαν καὶ δευτέραν νουθεσίαν παραιτοῦ, εἰδὼς ὅτι ἐξέστραπται ὁ τοιοῦτος καὶ ἁμαρτάνει, ὢν αὐτοκατάκριτος.", + "checksum": "99cae08d196b74276d505bde0bb46d23" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὅταν", + "lemma": [ + "ὅταν" + ], + "strong": [ + "G37520" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "πέμψω", + "lemma": [ + "πέμπω" + ], + "strong": [ + "G39920" + ], + "morph": [ + "Gr", + "V", + "SAA1", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "When I send*ing*", + "checksum": "0e974f486bb0e889f94de0c1890361ae" + }, + { + "source": [ + { + "content": "Ἀρτεμᾶν", + "lemma": [ + "Ἀρτεμᾶς" + ], + "strong": [ + "G07340" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἢ", + "lemma": [ + "ἤ" + ], + "strong": [ + "G22280" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "Τυχικόν", + "lemma": [ + "Τυχικός" + ], + "strong": [ + "G51900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Artemas or *Tychicus*", + "checksum": "c43c567778dd92fb1a1f87af7b167bf1" + }, + { + "source": [ + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "σὲ", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "toward you", + "checksum": "db75330d13a942ad175e311f3e48ff9b" + }, + { + "source": [ + { + "content": "σπούδασον", + "lemma": [ + "σπουδάζω" + ], + "strong": [ + "G47040" + ], + "morph": [ + "Gr", + "V", + "MAA2", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐλθεῖν", + "lemma": [ + "ἔρχομαι" + ], + "strong": [ + "G20640" + ], + "morph": [ + "Gr", + "V", + "NAA", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "make haste to come", + "checksum": "65e969e7f1282a5e20601d6a521cc854" + }, + { + "source": [ + { + "content": "πρός", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 2, + "index": 0 + }, + { + "content": "με", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *me*", + "checksum": "3e3ee7c4bd40b1a8a7dd49a8692d2f6f" + }, + { + "source": [ + { + "content": "εἰς", + "lemma": [ + "εἰς" + ], + "strong": [ + "G15190" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "Νικόπολιν", + "lemma": [ + "Νικόπολις" + ], + "strong": [ + "G35330" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *the city of* Nicopolis", + "checksum": "efd2321da9a1cecf390b88b82cbab8b8" + }, + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "κέκρικα", + "lemma": [ + "κρίνω" + ], + "strong": [ + "G29190" + ], + "morph": [ + "Gr", + "V", + "IEA1", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for I have *decided*", + "checksum": "f08ac8269f8da4b74116e0ed0556df46" + }, + { + "source": [ + { + "content": "παραχειμάσαι", + "lemma": [ + "παραχειμάζω" + ], + "strong": [ + "G39140" + ], + "morph": [ + "Gr", + "V", + "NAA", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐκεῖ", + "lemma": [ + "ἐκεῖ" + ], + "strong": [ + "G15630" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to spend-the-winter *there*", + "checksum": "90ab6379bd66ab2ff8341a5de427fff2" + } + ], + "sourceString": "ὅταν πέμψω Ἀρτεμᾶν πρὸς σὲ ἢ Τυχικόν, σπούδασον ἐλθεῖν πρός με εἰς Νικόπολιν; ἐκεῖ γὰρ κέκρικα παραχειμάσαι. ", + "checksum": "ef24182d94d863b642c7873a319fef3d" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρόπεμψον", + "lemma": [ + "προπέμπω" + ], + "strong": [ + "G43110" + ], + "morph": [ + "Gr", + "V", + "MAA2", + "", + "S", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "σπουδαίως", + "lemma": [ + "σπουδαίως" + ], + "strong": [ + "G47090" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "send on *his* way diligently", + "checksum": "50a1aaad19e080a996f3ec121a7472fa" + }, + { + "source": [ + { + "content": "Ζηνᾶν", + "lemma": [ + "Ζηνᾶς" + ], + "strong": [ + "G22110" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "νομικὸν", + "lemma": [ + "νομικός" + ], + "strong": [ + "G35440" + ], + "morph": [ + "Gr", + "AR", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Zenas the *lawyer*", + "checksum": "6d2753adfd21dd66dfeabd95bfeaec1d" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἀπολλῶν", + "lemma": [ + "Ἀπολλῶς" + ], + "strong": [ + "G06250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *Apollos*", + "checksum": "42e0f23d4d295908e3c32687b2046a03" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδὲν", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "λείπῃ", + "lemma": [ + "λείπω" + ], + "strong": [ + "G30070" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "S", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτοῖς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3DMP", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so-that *nothing* lack to-them", + "checksum": "01a33042697c53e32636129089900277" + } + ], + "sourceString": "Ζηνᾶν τὸν νομικὸν καὶ Ἀπολλῶν σπουδαίως πρόπεμψον, ἵνα μηδὲν αὐτοῖς λείπῃ. ", + "checksum": "ae539bfa32d4d1e96dce0ecb830be1fd" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But", + "checksum": "f1dcb1056a256e563b9808f732b03ad4" + }, + { + "source": [ + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμέτεροι", + "lemma": [ + "ἡμέτερος" + ], + "strong": [ + "G22510" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "our people also", + "checksum": "c77bf53be26b751f845c864f97db3b3f" + }, + { + "source": [ + { + "content": "μανθανέτωσαν", + "lemma": [ + "μανθάνω" + ], + "strong": [ + "G31290" + ], + "morph": [ + "Gr", + "V", + "MPA3", + "", + "P", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*let them* learn", + "checksum": "1c3e55931be6bf2585edc958ca22cbba" + }, + { + "source": [ + { + "content": "προΐστασθαι", + "lemma": [ + "προΐστημι" + ], + "strong": [ + "G42910" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to-excel in *good* works", + "checksum": "2f0c90d598736786daa23bf0b5edbdca" + }, + { + "source": [ + { + "content": "εἰς", + "lemma": [ + "εἰς" + ], + "strong": [ + "G15190" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 2, + "index": 0 + }, + { + "content": "χρείας", + "lemma": [ + "χρεία" + ], + "strong": [ + "G55320" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀναγκαίας", + "lemma": [ + "ἀναγκαῖος" + ], + "strong": [ + "G03160" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for the *necessary* needs", + "checksum": "34732cbdb97a9f5fc98098e2584d5264" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὦσιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that they may not be", + "checksum": "602897810c64bec1ce8af54c9a8bdce2" + }, + { + "source": [ + { + "content": "ἄκαρποι", + "lemma": [ + "ἄκαρπος" + ], + "strong": [ + "G01750" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "without *bearing* fruit", + "checksum": "025764fd49d5abde16be204a19eaed7e" + } + ], + "sourceString": "μανθανέτωσαν δὲ καὶ οἱ ἡμέτεροι καλῶν ἔργων προΐστασθαι εἰς τὰς ἀναγκαίας χρείας, ἵνα μὴ ὦσιν ἄκαρποι.", + "checksum": "2c28fd8cc63c70625ac9dd98a2a2fab9" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πάντες", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "μετ’", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐμοῦ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "S", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*All* those who are with me", + "checksum": "1fb12f24d0cb51f4003fa5ea4212fbef" + }, + { + "source": [ + { + "content": "ἀσπάζονταί", + "lemma": [ + "ἀσπάζομαι" + ], + "strong": [ + "G07820" + ], + "morph": [ + "Gr", + "V", + "IPM3", + "", + "P", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "greet *you*", + "checksum": "ecd8fc4c8998a7e0ea27e9102b171aaa" + } + ], + "sourceString": "ἀσπάζονταί σε οἱ μετ’ ἐμοῦ πάντες. ", + "checksum": "83c2cd094dac8dee5a115511bc38f5ff" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ἄσπασαι", + "lemma": [ + "ἀσπάζομαι" + ], + "strong": [ + "G07820" + ], + "morph": [ + "Gr", + "V", + "MAM2", + "", + "S", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "Greet", + "checksum": "087d931e6b8a65529f97c6a6ebc1c115" + }, + { + "source": [ + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "φιλοῦντας", + "lemma": [ + "φιλέω" + ], + "strong": [ + "G53680" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "those loving us", + "checksum": "67d2862702b73dfcaf290f353f50c57c" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* faith", + "checksum": "c4490bf03c92ddc150ca350c7fe45277" + } + ], + "sourceString": "ἄσπασαι τοὺς φιλοῦντας ἡμᾶς ἐν πίστει. ", + "checksum": "1a35dfcd9f8c7850f663a77f3bbe37e3" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:15", + "occurrence": 3, + "index": 0 + }, + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "The grace *be*", + "checksum": "50f669bb50c77f2b6cfa3d41ddf39ad1" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "ὑμῶν", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "P", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "πάντων", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "GMP", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "with *all* of you", + "checksum": "9625b26cd1885b2e4f210e345637f543" + } + ], + "sourceString": "ἡ χάρις μετὰ πάντων ὑμῶν.", + "checksum": "e5b197b4838332356bf988867e352001" + } + ] +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/TIT_align_juxta_psle.json b/renderer/src/components/EditorPage/JuxtAlignEditor/TIT_align_juxta_psle.json new file mode 100644 index 000000000..ca16e8fde --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/TIT_align_juxta_psle.json @@ -0,0 +1,216 @@ +{ + "bookcode": "TIT", + "checksum": "48b1a1e8203fa7e139ae6777847758b4", + "blocks": [ + { + "sentences": [ + 0 + ], + "tradText": "Paul, a servant of God and an apostle of Jesus Christ for the faith of God’s elect and their knowledge of the truth that leads to godliness, in the hope of eternal life, which God, who cannot lie, promised before time began. In His own time He has made His word evident in the proclamation entrusted to me by the command of God our Savior. To Titus, my true child in our common faith: Grace and peace from God the Father and Christ Jesus our Savior.", + "alignments": [] + }, + { + "sentences": [ + 1 + ], + "tradText": "The reason I left you in Crete was that you would set in order what was unfinished and appoint elders in every town, as I directed you. An elder must be blameless, the husband of but one wife, having children who are believers and who are not open to accusation of indiscretion or insubordination.", + "alignments": [] + }, + { + "sentences": [ + 2 + ], + "tradText": "As God’s steward, an overseer must be above reproach—not self-absorbed, not quick-tempered, not given to drunkenness, not violent, not greedy for money. Instead, he must be hospitable, a lover of good, self-controlled, upright, holy, and disciplined. He must hold firmly to the faithful word as it was taught, so that he can encourage others by sound teaching and refute those who contradict it.", + "alignments": [] + }, + { + "sentences": [ + 3 + ], + "tradText": "For many are rebellious and full of empty talk and deception, especially those of the circumcision, who must be silenced. For the sake of dishonorable gain, they undermine entire households and teach things they should not.", + "alignments": [] + }, + { + "sentences": [ + 4 + ], + "tradText": "As one of their own prophets has said, “Cretans are always liars, evil beasts, lazy gluttons.”", + "alignments": [] + }, + { + "sentences": [ + 5 + ], + "tradText": "This testimony is true.", + "alignments": [] + }, + { + "sentences": [ + 6 + ], + "tradText": "Therefore rebuke them sternly, so that they will be sound in the faith and will pay no attention to Jewish myths or to the commands of men who have rejected the truth.", + "alignments": [] + }, + { + "sentences": [ + 7 + ], + "tradText": "To the pure, all things are pure; but to the defiled and unbelieving, nothing is pure. Indeed, both their minds and their consciences are defiled.", + "alignments": [] + }, + { + "sentences": [ + 8 + ], + "tradText": "They profess to know God, but by their actions they deny Him. They are detestable, disobedient, and unfit for any good deed.", + "alignments": [] + }, + { + "sentences": [ + 9 + ], + "tradText": "But as for you, speak the things that are consistent with sound doctrine.", + "alignments": [] + }, + { + "sentences": [ + 10 + ], + "tradText": "Older men are to be temperate, dignified, self-controlled, and sound in faith, love, and perseverance.", + "alignments": [] + }, + { + "sentences": [ + 11 + ], + "tradText": "Older women, likewise, are to be reverent in their behavior, not slanderers or addicted to much wine, but teachers of good. In this way they can train the young women to love their husbands and children, to be self-controlled, pure, managers of their households, kind, and submissive to their own husbands, so that the word of God will not be discredited.", + "alignments": [] + }, + { + "sentences": [ + 12 + ], + "tradText": "In the same way, urge the younger men to be self-controlled. In everything, show yourself to be an example by doing good works. In your teaching show integrity, dignity, and wholesome speech that is above reproach, so that anyone who opposes us will be ashamed to have nothing bad to say about us.", + "alignments": [] + }, + { + "sentences": [ + 13 + ], + "tradText": "Slaves are to submit to their own masters in everything, to be well-pleasing, not argumentative, not stealing from them, but showing all good faith, so that in every respect they will adorn the teaching about God our Savior.", + "alignments": [] + }, + { + "sentences": [ + 14 + ], + "tradText": "For the grace of God has appeared, bringing salvation to everyone. It instructs us to renounce ungodliness and worldly passions, and to live sensible, upright, and godly lives in the present age, as we await the blessed hope and glorious appearance of our great God and Savior Jesus Christ. He gave Himself for us to redeem us from all lawlessness and to purify for Himself a people for His own possession, zealous for good deeds.", + "alignments": [] + }, + { + "sentences": [ + 15 + ], + "tradText": "Speak these things as you encourage and rebuke with all authority.", + "alignments": [] + }, + { + "sentences": [ + 16 + ], + "tradText": "Let no one despise you.", + "alignments": [] + }, + { + "sentences": [ + 17 + ], + "tradText": "Remind the believers to submit to rulers and authorities, to be obedient and ready for every good work, to malign no one, and to be peaceable and gentle, showing full consideration to everyone.", + "alignments": [] + }, + { + "sentences": [ + 18 + ], + "tradText": "For at one time we too were foolish, disobedient, misled, and enslaved to all sorts of desires and pleasures—living in malice and envy, being hated and hating one another.", + "alignments": [] + }, + { + "sentences": [ + 19 + ], + "tradText": "But when the kindness of God our Savior and His love for mankind appeared, He saved us, not by the righteous deeds we had done, but according to His mercy, through the washing of new birth and renewal by the Holy Spirit. This is the Spirit He poured out on us abundantly through Jesus Christ our Savior, so that, having been justified by His grace, we would become heirs with the hope of eternal life.", + "alignments": [] + }, + { + "sentences": [ + 20 + ], + "tradText": "This saying is trustworthy. And I want you to emphasize these things, so that those who have believed God will take care to devote themselves to good deeds.", + "alignments": [] + }, + { + "sentences": [ + 21 + ], + "tradText": "These things are excellent and profitable for the people.", + "alignments": [] + }, + { + "sentences": [ + 22 + ], + "tradText": "But avoid foolish controversies, genealogies, arguments, and quarrels about the law, because these things are pointless and worthless.", + "alignments": [] + }, + { + "sentences": [ + 23 + ], + "tradText": "Reject a divisive man after a first and second admonition, knowing that such a man is corrupt and sinful; he is self-condemned.", + "alignments": [] + }, + { + "sentences": [ + 24 + ], + "tradText": "As soon as I send Artemas or Tychicus to you, make every effort to come to me at Nicopolis, because I have decided to winter there.", + "alignments": [] + }, + { + "sentences": [ + 25 + ], + "tradText": "Do your best to equip Zenas the lawyer and Apollos, so that they will have everything they need.", + "alignments": [] + }, + { + "sentences": [ + 26 + ], + "tradText": "And our people must also learn to devote themselves to good works in order to meet the pressing needs of others, so that they will not be unfruitful.", + "alignments": [] + }, + { + "sentences": [ + 27 + ], + "tradText": "All who are with me send you greetings.", + "alignments": [] + }, + { + "sentences": [ + 28 + ], + "tradText": "Greet those who love us in the faith.", + "alignments": [] + }, + { + "sentences": [ + 29 + ], + "tradText": "Grace be with all of you.", + "alignments": [] + } + ] +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/Titus_ChatGPT_English_JUXTA.json b/renderer/src/components/EditorPage/JuxtAlignEditor/Titus_ChatGPT_English_JUXTA.json new file mode 100644 index 000000000..3958ea43b --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/Titus_ChatGPT_English_JUXTA.json @@ -0,0 +1,16400 @@ +{ + "checksum": "96234960d1b240766e1d5500b82d7382", + "bookCode": "TIT", + "sentences": [ + { + "chunks": [ + { + "source": [ + { + "content": "Παῦλος", + "lemma": [ + "Παῦλος" + ], + "strong": [ + "G39720" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Paul", + "checksum": "585134e056c1bbd8f5b61a0d675136d4" + }, + { + "source": [ + { + "content": "δοῦλος", + "lemma": [ + "δοῦλος" + ], + "strong": [ + "G14010" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "servant of *God*", + "checksum": "d59f8cf042d544373958051c737d46ce" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀπόστολος", + "lemma": [ + "ἀπόστολος" + ], + "strong": [ + "G06520" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but *an* apostle of Jesus Christ", + "checksum": "35af0dd867cba8295d6f938b26158bad" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐκλεκτῶν", + "lemma": [ + "ἐκλεκτός" + ], + "strong": [ + "G15880" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 2, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "according to *the* faith *of* God's chosen *ones*", + "checksum": "4eb6b99c3d0319c318d30bd7c04e3ed6" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπίγνωσιν", + "lemma": [ + "ἐπίγνωσις" + ], + "strong": [ + "G19220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* knowledge", + "checksum": "0f52c148e34c616e62b77161ec78064e" + }, + { + "source": [ + { + "content": "ἀληθείας", + "lemma": [ + "ἀλήθεια" + ], + "strong": [ + "G02250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* truth", + "checksum": "c07acbdfc35c90acd5e44798c18c2ad9" + }, + { + "source": [ + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:1", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "εὐσέβειαν", + "lemma": [ + "εὐσέβεια" + ], + "strong": [ + "G21500" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the *one* according to godliness", + "checksum": "0a276da258560526930e832b57eca7da" + }, + { + "source": [ + { + "content": "ἐπ’", + "lemma": [ + "ἐπί" + ], + "strong": [ + "G19090" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐλπίδι", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ζωῆς", + "lemma": [ + "ζωή" + ], + "strong": [ + "G22220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰωνίου", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "in *the* hope of eternal life", + "checksum": "d0bb73803aa8a2ff6ef10808093aa3e0" + }, + { + "source": [ + { + "content": "ἣν", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεὸς", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀψευδὴς", + "lemma": [ + "ἀψευδής" + ], + "strong": [ + "G08930" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which *the* God *who does not lie*", + "checksum": "ea5d84da1ed8e342bf9fff3d0fe1a9c8" + }, + { + "source": [ + { + "content": "ἐπηγγείλατο", + "lemma": [ + "ἐπαγγέλλω" + ], + "strong": [ + "G18610" + ], + "morph": [ + "Gr", + "V", + "IAM3", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*he* promised", + "checksum": "c938e3bf3163e49d5c6396dd44f09df0" + }, + { + "source": [ + { + "content": "πρὸ", + "lemma": [ + "πρό" + ], + "strong": [ + "G42530" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "χρόνων", + "lemma": [ + "χρόνος" + ], + "strong": [ + "G55500" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:2", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰωνίων", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:2", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "before *the* eternal ages", + "checksum": "3a1deef5dd2d3211a2e8f29f1cb67167" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 1 + } + ], + "gloss": "but", + "checksum": "64d8494c8b66be822f1550c48a426308" + }, + { + "source": [ + { + "content": "ἐφανέρωσεν", + "lemma": [ + "φανερόω" + ], + "strong": [ + "G53190" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "λόγον", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοῦ", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*who* revealed his word", + "checksum": "663e4529c4d0aa0c7e46c657376d183e" + }, + { + "source": [ + { + "content": "καιροῖς", + "lemma": [ + "καιρός" + ], + "strong": [ + "G25400" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "at *the* proper times", + "checksum": "badd9068e3968aa3fa80eb1606d713d7" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κηρύγματι", + "lemma": [ + "κήρυγμα" + ], + "strong": [ + "G27820" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* preaching", + "checksum": "789a75d765d1f559bab07a0612c69bed" + }, + { + "source": [ + { + "content": "ὃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐγὼ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐπιστεύθην", + "lemma": [ + "πιστεύω" + ], + "strong": [ + "G41000" + ], + "morph": [ + "Gr", + "V", + "IAP1", + "", + "S", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which I *was* entrusted", + "checksum": "3de9ddcd64d0eaced1381bf472554ed1" + }, + { + "source": [ + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἐπιταγὴν", + "lemma": [ + "ἐπιταγή" + ], + "strong": [ + "G20030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "according to *the* commandment", + "checksum": "ca7974c2bf8f5455f136ff53e4125ed5" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 2 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "1:3", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "of *the* God *the* Savior of *us*", + "checksum": "7a17dec9b0090f5ac30db3575f9dae04" + }, + { + "source": [ + { + "content": "Τίτῳ", + "lemma": [ + "Τίτος" + ], + "strong": [ + "G51030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *Titus*", + "checksum": "a8c8e7112ac2503092ea1973c429cb42" + }, + { + "source": [ + { + "content": "γνησίῳ", + "lemma": [ + "γνήσιος" + ], + "strong": [ + "G11030" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "τέκνῳ", + "lemma": [ + "τέκνον" + ], + "strong": [ + "G50430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "genuine *child*", + "checksum": "e2aefe502fa17cca0b763470a46db37c" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "κοινὴν", + "lemma": [ + "κοινός" + ], + "strong": [ + "G28390" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to a *common* faith", + "checksum": "7282c8938694bc3db9aaecff2ed3104a" + }, + { + "source": [ + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "εἰρήνη", + "lemma": [ + "εἰρήνη" + ], + "strong": [ + "G15150" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "grace and *peace*", + "checksum": "138a2efa64d897f8a7ddffca4470ca7b" + }, + { + "source": [ + { + "content": "ἀπὸ", + "lemma": [ + "ἀπό" + ], + "strong": [ + "G05750" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 3 + }, + { + "content": "Πατρὸς", + "lemma": [ + "πατήρ" + ], + "strong": [ + "G39620" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "from *the* God *the* Father", + "checksum": "3396d237ef39062adeb7a19efb20ef9b" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 2, + "index": 2 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "and of-Christ Jesus", + "checksum": "907edf70a07cf75ab396c34da4920b38" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "of *the* Savior of us", + "checksum": "0f904eb69df82707755d1295f538c665" + } + ], + "sourceString": "Παῦλος, δοῦλος Θεοῦ, ἀπόστολος δὲ Ἰησοῦ Χριστοῦ, κατὰ πίστιν ἐκλεκτῶν Θεοῦ, καὶ ἐπίγνωσιν ἀληθείας, τῆς κατ’ εὐσέβειαν ἐπ’ ἐλπίδι ζωῆς αἰωνίου, ἣν ἐπηγγείλατο ὁ ἀψευδὴς Θεὸς πρὸ χρόνων αἰωνίων, ἐφανέρωσεν δὲ καιροῖς ἰδίοις τὸν λόγον αὐτοῦ ἐν κηρύγματι, ὃ ἐπιστεύθην ἐγὼ, κατ’ ἐπιταγὴν τοῦ Σωτῆρος ἡμῶν, Θεοῦ; Τίτῳ, γνησίῳ τέκνῳ, κατὰ κοινὴν πίστιν: χάρις καὶ εἰρήνη ἀπὸ Θεοῦ Πατρὸς καὶ Χριστοῦ Ἰησοῦ τοῦ Σωτῆρος ἡμῶν.", + "checksum": "b8e31c2170b743b34ada66c20d02fcdc" + }, + { + "chunks": [ + { + "source": [ + { + "content": "τούτου", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "χάριν", + "lemma": [ + "χάριν" + ], + "strong": [ + "G54840" + ], + "morph": [ + "Gr", + "PI", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*For* this reason,", + "checksum": "937081b2531ac1666ab853fe8a01e6c5" + }, + { + "source": [ + { + "content": "ἀπέλιπόν", + "lemma": [ + "ἀπολίπω" + ], + "strong": [ + "G06200" + ], + "morph": [ + "Gr", + "V", + "IAA1", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Κρήτῃ", + "lemma": [ + "Κρήτη" + ], + "strong": [ + "G29140" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "I-left you in *the* Crete", + "checksum": "e7768297a42201608dc939a97c402694" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπιδιορθώσῃ", + "lemma": [ + "ἐπιδιορθόω" + ], + "strong": [ + "G19300" + ], + "morph": [ + "Gr", + "V", + "SAM2", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that you-may-*set*-*in*-order", + "checksum": "dbd057de66368c070f9ab2c56301d635" + }, + { + "source": [ + { + "content": "τὰ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "λείποντα", + "lemma": [ + "λείπω" + ], + "strong": [ + "G30070" + ], + "morph": [ + "Gr", + "V", + "PPA", + "ANP", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the *things* lacking", + "checksum": "e75dda7d29c6a4e6c4edbf1cc59ca5b8" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καταστήσῃς", + "lemma": [ + "καθίστημι" + ], + "strong": [ + "G25250" + ], + "morph": [ + "Gr", + "V", + "SAA2", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πρεσβυτέρους", + "lemma": [ + "πρεσβύτερος" + ], + "strong": [ + "G42450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMPC" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *that you should* appoint elders", + "checksum": "f75ba661f3e313e816b45400fa3649b0" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πόλιν", + "lemma": [ + "πόλις" + ], + "strong": [ + "G41720" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*in* each city", + "checksum": "0b148c4be703be723d4736f61fb92971" + }, + { + "source": [ + { + "content": "ὡς", + "lemma": [ + "ὡς" + ], + "strong": [ + "G56130" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐγώ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διεταξάμην", + "lemma": [ + "διατάσσω" + ], + "strong": [ + "G12990" + ], + "morph": [ + "Gr", + "V", + "IAM1", + "", + "S", + "" + ], + "cv": "1:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σοι", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2D", + "S", + "" + ], + "cv": "1:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "as I *have* ordered to you", + "checksum": "733dfcc0d6ecd1019077dbb42ab52dab" + }, + { + "source": [ + { + "content": "εἴ", + "lemma": [ + "εἰ" + ], + "strong": [ + "G14870" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "τίς", + "lemma": [ + "τις" + ], + "strong": [ + "G51000" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐστιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "if anyone is", + "checksum": "3f90f2e0018d81ff5c4d5fb42fb02343" + }, + { + "source": [ + { + "content": "ἀνέγκλητος", + "lemma": [ + "ἀνέγκλητος" + ], + "strong": [ + "G04100" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "blameless", + "checksum": "bb33a3a56f85386867dd367dac2e2af4" + }, + { + "source": [ + { + "content": "ἀνήρ", + "lemma": [ + "ἀνήρ" + ], + "strong": [ + "G04350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "μιᾶς", + "lemma": [ + "εἷς" + ], + "strong": [ + "G15200" + ], + "morph": [ + "Gr", + "EN", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "γυναικὸς", + "lemma": [ + "γυνή" + ], + "strong": [ + "G11350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "husband of *a* one woman", + "checksum": "5e715e6e2d26ffbfa253fab04a596056" + }, + { + "source": [ + { + "content": "ἔχων", + "lemma": [ + "ἔχω" + ], + "strong": [ + "G21920" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "τέκνα", + "lemma": [ + "τέκνον" + ], + "strong": [ + "G50430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστά", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having faithful children", + "checksum": "0d816bc57daac83d19c1173a7d40f42f" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 1 + }, + { + "content": "κατηγορίᾳ", + "lemma": [ + "κατηγορία" + ], + "strong": [ + "G27240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not under any *accusation*", + "checksum": "6a6f095da214703315e41102c10c8f03" + }, + { + "source": [ + { + "content": "ἀσωτίας", + "lemma": [ + "ἀσωτία" + ], + "strong": [ + "G08100" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of *dissipation*,", + "checksum": "9db664c7182574a6f07adfd158ddebf0" + }, + { + "source": [ + { + "content": "ἢ", + "lemma": [ + "ἤ" + ], + "strong": [ + "G22280" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνυπότακτα", + "lemma": [ + "ἀνυπότακτος" + ], + "strong": [ + "G05060" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:6", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "or *unruly*", + "checksum": "29fe084b30b6d02fee46ccc80c2f3971" + } + ], + "sourceString": "τούτου χάριν, ἀπέλιπόν σε ἐν Κρήτῃ, ἵνα τὰ λείποντα ἐπιδιορθώσῃ, καὶ καταστήσῃς κατὰ πόλιν πρεσβυτέρους, ὡς ἐγώ σοι διεταξάμην; εἴ τίς ἐστιν ἀνέγκλητος, μιᾶς γυναικὸς ἀνήρ, τέκνα ἔχων πιστά, μὴ ἐν κατηγορίᾳ ἀσωτίας ἢ ἀνυπότακτα. ", + "checksum": "c37b9ce6f3bc496313cbe40843e7016c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for it *is necessary*", + "checksum": "281a53b1ab9f9d83d9cf4c44d83f44ad" + }, + { + "source": [ + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐπίσκοπον", + "lemma": [ + "ἐπίσκοπος" + ], + "strong": [ + "G19850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*for* the overseer *to be*", + "checksum": "d510166e0db4abd024ee084d9beafbf4" + }, + { + "source": [ + { + "content": "ἀνέγκλητον", + "lemma": [ + "ἀνέγκλητος" + ], + "strong": [ + "G04100" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "above reproach", + "checksum": "bce6c8bcc1d828663ba7725c77f93a37" + }, + { + "source": [ + { + "content": "ὡς", + "lemma": [ + "ὡς" + ], + "strong": [ + "G56130" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἰκονόμον", + "lemma": [ + "οἰκονόμος" + ], + "strong": [ + "G36230" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "as a *steward* of God", + "checksum": "f24307d4aa3b6457fd382f4bf98d5498" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 5, + "index": 0 + }, + { + "content": "αὐθάδη", + "lemma": [ + "αὐθάδης" + ], + "strong": [ + "G08290" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* self-willed", + "checksum": "269514bf787511744e9cd773be86be02" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 2, + "occurrences": 5, + "index": 1 + }, + { + "content": "ὀργίλον", + "lemma": [ + "ὀργίλος" + ], + "strong": [ + "G37110" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *given to* anger,", + "checksum": "3e1244b72a21d727dfc77a9908136855" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 3, + "occurrences": 5, + "index": 2 + }, + { + "content": "πάροινον", + "lemma": [ + "πάροινος" + ], + "strong": [ + "G39430" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *a* drunkard", + "checksum": "7ec812da4c9e5655e8ced23d39079467" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 4, + "occurrences": 5, + "index": 3 + }, + { + "content": "πλήκτην", + "lemma": [ + "πλήκτης" + ], + "strong": [ + "G41310" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *a* brawler", + "checksum": "b8be626b13902c9f5a1ca1dc372bd7b2" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:7", + "occurrence": 5, + "occurrences": 5, + "index": 4 + }, + { + "content": "αἰσχροκερδῆ", + "lemma": [ + "αἰσχροκερδής" + ], + "strong": [ + "G01460" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *given to* sordid gain", + "checksum": "04b74e7843420831ca6d5b23e85d2755" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "φιλόξενον", + "lemma": [ + "φιλόξενος" + ], + "strong": [ + "G53820" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but hospitable,", + "checksum": "054460b67dc8571f7e68316e68ef2908" + }, + { + "source": [ + { + "content": "φιλάγαθον", + "lemma": [ + "φιλάγαθος" + ], + "strong": [ + "G53580" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "lover of *what is* good", + "checksum": "d9c5dcfd95b634941945bd1cf13c7525" + }, + { + "source": [ + { + "content": "σώφρονα", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "7a16697058523d3bf6d337d63da595de" + }, + { + "source": [ + { + "content": "δίκαιον", + "lemma": [ + "δίκαιος" + ], + "strong": [ + "G13420" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "righteous", + "checksum": "2a4c51da88c8f29ad5ae8d2a8beeaad0" + }, + { + "source": [ + { + "content": "ὅσιον", + "lemma": [ + "ὅσιος" + ], + "strong": [ + "G37410" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "holy", + "checksum": "b5b5a98ed5eda83c3c45d0fe76a61f12" + }, + { + "source": [ + { + "content": "ἐγκρατῆ", + "lemma": [ + "ἐγκρατής" + ], + "strong": [ + "G14680" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:8", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*self*-controlled", + "checksum": "3e2a90dfddde5bfb01ca561fe99dc2b1" + }, + { + "source": [ + { + "content": "ἀντεχόμενον", + "lemma": [ + "ἀντέχω" + ], + "strong": [ + "G04720" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "λόγου", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστοῦ", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "holding fast to the *trustworthy* word", + "checksum": "448b4b969c7ce09a834e17e869832e41" + }, + { + "source": [ + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:9", + "occurrence": 2, + "index": 0 + }, + { + "content": "διδαχὴν", + "lemma": [ + "διδαχή" + ], + "strong": [ + "G13220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to the teaching", + "checksum": "24c9a556afa105eaf53d62f2996e16e3" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "ᾖ", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "S", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "δυνατὸς", + "lemma": [ + "δυνατός" + ], + "strong": [ + "G14150" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that he may be *able*", + "checksum": "4de5ea1c20c044caba2b7d730b9a7b89" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "παρακαλεῖν", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *to* encourage", + "checksum": "0d2554d39497ba49f91d7f12646f3b0f" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 3, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in the *sound* teaching", + "checksum": "4357bf34b99899ba668026fbc9152b75" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 4, + "index": 1 + }, + { + "content": "ὑγιαινούσῃ", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "DFS", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the *one* *being* sound", + "checksum": "6a3f14707f1576913f16b87eede180c7" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἐλέγχειν", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:9", + "occurrence": 5, + "index": 0 + }, + { + "content": "ἀντιλέγοντας", + "lemma": [ + "ἀντιλέγω" + ], + "strong": [ + "G04830" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "1:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *to* refute those who contradict", + "checksum": "106714681a2213aeecb974bc82119e8f" + } + ], + "sourceString": "δεῖ γὰρ τὸν ἐπίσκοπον ἀνέγκλητον εἶναι, ὡς Θεοῦ οἰκονόμον; μὴ αὐθάδη, μὴ ὀργίλον, μὴ πάροινον, μὴ πλήκτην, μὴ αἰσχροκερδῆ, ἀλλὰ φιλόξενον, φιλάγαθον, σώφρονα, δίκαιον, ὅσιον, ἐγκρατῆ; ἀντεχόμενον τοῦ κατὰ τὴν διδαχὴν πιστοῦ λόγου, ἵνα δυνατὸς ᾖ, καὶ παρακαλεῖν ἐν τῇ διδασκαλίᾳ τῇ ὑγιαινούσῃ, καὶ τοὺς ἀντιλέγοντας ἐλέγχειν.", + "checksum": "e624ee5d8370b7cecec33af60e4d9f90" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εἰσὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for indeed *there* are", + "checksum": "208a7ddb963a87e30b35de00f1f43101" + }, + { + "source": [ + { + "content": "πολλοὶ", + "lemma": [ + "πολλός" + ], + "strong": [ + "G41830" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἀνυπότακτοι", + "lemma": [ + "ἀνυπότακτος" + ], + "strong": [ + "G05060" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "many and insubordinate", + "checksum": "8cc412d0670e99fb45f487c8fefb6e82" + }, + { + "source": [ + { + "content": "ματαιολόγοι", + "lemma": [ + "ματαιολόγος" + ], + "strong": [ + "G31510" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 2, + "occurrences": 2, + "index": 1 + }, + { + "content": "φρεναπάται", + "lemma": [ + "φρεναπάτης" + ], + "strong": [ + "G54230" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "empty talkers and deceivers", + "checksum": "40d6f5ece9e0563e581aa4b801aedd5d" + }, + { + "source": [ + { + "content": "μάλιστα", + "lemma": [ + "μάλιστα" + ], + "strong": [ + "G31220" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "S" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐκ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:10", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "περιτομῆς", + "lemma": [ + "περιτομή" + ], + "strong": [ + "G40610" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "especially those *who are* from the circumcision", + "checksum": "cc65fd7b0626a6f5e368bc80cd4d79db" + }, + { + "source": [ + { + "content": "οὓς", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιστομίζειν", + "lemma": [ + "ἐπιστομίζω" + ], + "strong": [ + "G19930" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "whom *it* is necessary to *silence*", + "checksum": "fc3af07c9d833a4beafa10b0608b771f" + }, + { + "source": [ + { + "content": "οἵτινες", + "lemma": [ + "ὅστις" + ], + "strong": [ + "G37480" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνατρέπουσιν", + "lemma": [ + "ἀνατρέπω" + ], + "strong": [ + "G03960" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*those-who* overturn", + "checksum": "72d79862e596fbcc95d16f290753e988" + }, + { + "source": [ + { + "content": "οἴκους", + "lemma": [ + "οἶκος" + ], + "strong": [ + "G36240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὅλους", + "lemma": [ + "ὅλος" + ], + "strong": [ + "G36500" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "entire households", + "checksum": "390f42363c5189b3455255ff0528a9d9" + }, + { + "source": [ + { + "content": "διδάσκοντες", + "lemma": [ + "διδάσκω" + ], + "strong": [ + "G13210" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "1:11", + "occurrence": 2, + "index": 0 + }, + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "δεῖ", + "lemma": [ + "δέω" + ], + "strong": [ + "G12100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:11", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "teaching *things* which ought not *to be*", + "checksum": "93730fab319a4e9be8da987d47a76d0f" + }, + { + "source": [ + { + "content": "χάριν", + "lemma": [ + "χάριν" + ], + "strong": [ + "G54840" + ], + "morph": [ + "Gr", + "PI", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "κέρδους", + "lemma": [ + "κέρδος" + ], + "strong": [ + "G27710" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "αἰσχροῦ", + "lemma": [ + "αἰσχρός" + ], + "strong": [ + "G01500" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for the sake of *a* shameful *gain*", + "checksum": "ef02f499c4570980756d7930fb895cae" + } + ], + "sourceString": "εἰσὶν γὰρ πολλοὶ καὶ ἀνυπότακτοι, ματαιολόγοι, καὶ φρεναπάται, μάλιστα οἱ ἐκ τῆς περιτομῆς, οὓς δεῖ ἐπιστομίζειν, οἵτινες ὅλους οἴκους ἀνατρέπουσιν, διδάσκοντες ἃ μὴ δεῖ, αἰσχροῦ κέρδους χάριν. ", + "checksum": "1f7dd73e9b3871da068bc90495a2ac98" + }, + { + "chunks": [ + { + "source": [ + { + "content": "τις", + "lemma": [ + "τις" + ], + "strong": [ + "G51000" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "one of *them*", + "checksum": "b3448127c39296b9c4ab9f865823342a" + }, + { + "source": [ + { + "content": "προφήτης", + "lemma": [ + "προφήτης" + ], + "strong": [ + "G43960" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἴδιος", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:12", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "prophet *their own*", + "checksum": "9a26dd88a76ead3efd150529a809f5e9" + }, + { + "source": [ + { + "content": "εἶπέν", + "lemma": [ + "λέγω" + ], + "strong": [ + "G30040" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*someone* said:", + "checksum": "1a950ee293047e6468a89ea0f368a403" + }, + { + "source": [ + { + "content": "Κρῆτες", + "lemma": [ + "Κρής" + ], + "strong": [ + "G29120" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀεὶ", + "lemma": [ + "ἀεί" + ], + "strong": [ + "G01040" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ψεῦσται", + "lemma": [ + "ψεύστης" + ], + "strong": [ + "G55830" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Cretans *are* always liars", + "checksum": "38f3f401d4b0530cb5ff30f4bcb98ff9" + }, + { + "source": [ + { + "content": "κακὰ", + "lemma": [ + "κακός" + ], + "strong": [ + "G25560" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "θηρία", + "lemma": [ + "θηρίον" + ], + "strong": [ + "G23420" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "evil *beasts*", + "checksum": "d1cdd7f70646d45942dd686568f08600" + }, + { + "source": [ + { + "content": "γαστέρες", + "lemma": [ + "γαστήρ" + ], + "strong": [ + "G10640" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀργαί", + "lemma": [ + "ἀργός" + ], + "strong": [ + "G06920" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "NFP", + "" + ], + "cv": "1:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "lazy *bellies*", + "checksum": "85754051369ef81eaa5771df4ffe9cbc" + } + ], + "sourceString": "εἶπέν τις ἐξ αὐτῶν, ἴδιος αὐτῶν προφήτης, Κρῆτες ἀεὶ ψεῦσται, κακὰ θηρία, γαστέρες ἀργαί. ", + "checksum": "e96678fdc4dea0d6dc0989066e52fc1a" + }, + { + "chunks": [ + { + "source": [ + { + "content": "αὕτη", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "ED", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "μαρτυρία", + "lemma": [ + "μαρτυρία" + ], + "strong": [ + "G31410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "this *is the* testimony", + "checksum": "7d0189b22c0332cb0e53472a1f2732b6" + }, + { + "source": [ + { + "content": "ἐστὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀληθής", + "lemma": [ + "ἀληθής" + ], + "strong": [ + "G02270" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "is true", + "checksum": "769c3a6fd32c7845a430ce92a4700529" + } + ], + "sourceString": "ἡ μαρτυρία αὕτη ἐστὶν ἀληθής. ", + "checksum": "5ddeef9f24bd2500d9194b734e691564" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δι’", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἣν", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "ER", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἰτίαν", + "lemma": [ + "αἰτία" + ], + "strong": [ + "G01560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "for this cause", + "checksum": "86100f30f3fff0385d1ce7005c1e1d77" + }, + { + "source": [ + { + "content": "ἔλεγχε", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοὺς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3AMP", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀποτόμως", + "lemma": [ + "ἀποτόμως" + ], + "strong": [ + "G06640" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "rebuke them sharply", + "checksum": "bd94010ad450cc77e25d767b2097f568" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὑγιαίνωσιν", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that *they* may-be-healthy", + "checksum": "dd0ade9b7dfd52ce67ba97a31445a29a" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:13", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in the *faith*", + "checksum": "429052e69a03d76f89c625fa5c808a96" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "προσέχοντες", + "lemma": [ + "προσέχω" + ], + "strong": [ + "G43370" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "μύθοις", + "lemma": [ + "μῦθος" + ], + "strong": [ + "G34540" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἰουδαϊκοῖς", + "lemma": [ + "Ἰουδαϊκός" + ], + "strong": [ + "G24510" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not paying attention to *the* Jewish myths", + "checksum": "f417c21498e97ea285adcd89b7f2f229" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐντολαῖς", + "lemma": [ + "ἐντολή" + ], + "strong": [ + "G17850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* commandments", + "checksum": "e7167021baf5b2bf8869df0de825ecc4" + }, + { + "source": [ + { + "content": "ἀνθρώπων", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀποστρεφομένων", + "lemma": [ + "ἀποστρέφω" + ], + "strong": [ + "G06540" + ], + "morph": [ + "Gr", + "V", + "PPM", + "GMP", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀλήθειαν", + "lemma": [ + "ἀλήθεια" + ], + "strong": [ + "G02250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of men turning away from the truth", + "checksum": "96c1634a21ad1a37d048193fd79e32c3" + } + ], + "sourceString": "δι’ ἣν αἰτίαν ἔλεγχε αὐτοὺς ἀποτόμως, ἵνα ὑγιαίνωσιν ἐν τῇ πίστει, μὴ προσέχοντες Ἰουδαϊκοῖς μύθοις καὶ ἐντολαῖς ἀνθρώπων, ἀποστρεφομένων τὴν ἀλήθειαν. ", + "checksum": "a45d181906ec2892193adc4de78e4491" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πάντα", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαρὰ", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "All things *are* pure", + "checksum": "e74e7c3082bf3998a662fd2e399009a2" + }, + { + "source": [ + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαροῖς", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "to-the *ones* pure", + "checksum": "aa270d3c5d104949ea4ad90cefe9784e" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "μεμιαμμένοις", + "lemma": [ + "μιαίνω" + ], + "strong": [ + "G33920" + ], + "morph": [ + "Gr", + "V", + "PEP", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀπίστοις", + "lemma": [ + "ἄπιστος" + ], + "strong": [ + "G05710" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but to the defiled and unbelieving", + "checksum": "3104319ca300acb7af4142728050f3ca" + }, + { + "source": [ + { + "content": "οὐδὲν", + "lemma": [ + "οὐδείς" + ], + "strong": [ + "G37620" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "καθαρόν", + "lemma": [ + "καθαρός" + ], + "strong": [ + "G25130" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNS", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 0 + } + ], + "gloss": "*nothing* is pure", + "checksum": "5024aa25e370ec1f6a79484883ad8a6e" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but", + "checksum": "0369e7d866b7b9c571d1ecda9c1cf6ee" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 0 + }, + { + "content": "νοῦς", + "lemma": [ + "νοῦς" + ], + "strong": [ + "G35630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and the mind", + "checksum": "f5b6cda41bd65d94237b8bdcf2ee1bee" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:15", + "occurrence": 3, + "index": 2 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:15", + "occurrence": 4, + "index": 0 + }, + { + "content": "συνείδησις", + "lemma": [ + "συνείδησις" + ], + "strong": [ + "G48930" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτῶν", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMP", + "" + ], + "cv": "1:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* conscience of them", + "checksum": "8ca4554961b1181492a1c1b52a78bf93" + }, + { + "source": [ + { + "content": "μεμίανται", + "lemma": [ + "μιαίνω" + ], + "strong": [ + "G33920" + ], + "morph": [ + "Gr", + "V", + "IEP3", + "", + "S", + "" + ], + "cv": "1:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "are *defiled*", + "checksum": "92e9749c2943e05e5b0cf1d009239d51" + } + ], + "sourceString": "πάντα καθαρὰ τοῖς καθαροῖς; τοῖς δὲ μεμιαμμένοις καὶ ἀπίστοις, οὐδὲν καθαρόν; ἀλλὰ μεμίανται αὐτῶν καὶ ὁ νοῦς, καὶ ἡ συνείδησις. ", + "checksum": "1057762be23fcb6e8d1b44414d711184" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὁμολογοῦσιν", + "lemma": [ + "ὁμολογέω" + ], + "strong": [ + "G36700" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἰδέναι", + "lemma": [ + "εἴδω" + ], + "strong": [ + "G14920" + ], + "morph": [ + "Gr", + "V", + "NEA", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεὸν", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "They-confess to *know* God", + "checksum": "a1b745a16f28bb21920b395a52222ffd" + }, + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀρνοῦνται", + "lemma": [ + "ἀρνέομαι" + ], + "strong": [ + "G07200" + ], + "morph": [ + "Gr", + "V", + "IPM3", + "", + "P", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DNP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργοις", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but *they* deny *Him* by *their* works", + "checksum": "9aef5109f3b1f31e3f4a3e72f121f367" + }, + { + "source": [ + { + "content": "ὄντες", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "βδελυκτοὶ", + "lemma": [ + "βδελυκτός" + ], + "strong": [ + "G09470" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀπειθεῖς", + "lemma": [ + "ἀπειθής" + ], + "strong": [ + "G05450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being detestable and disobedient", + "checksum": "34b2a7933d6498b04dc71ce5123ec31b" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἀδόκιμοι", + "lemma": [ + "ἀδόκιμος" + ], + "strong": [ + "G00960" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργον", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἀγαθὸν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:16", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and disqualified for every good work", + "checksum": "c3ec965c7d902e584d05ca41519793fb" + } + ], + "sourceString": "Θεὸν ὁμολογοῦσιν εἰδέναι, τοῖς δὲ ἔργοις ἀρνοῦνται, βδελυκτοὶ ὄντες καὶ ἀπειθεῖς, καὶ πρὸς πᾶν ἔργον ἀγαθὸν ἀδόκιμοι.", + "checksum": "37d02292fa4980928d069f146771a086" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "σὺ", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2N", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But you", + "checksum": "3c2db3a127490c28aa2b64622271b641" + }, + { + "source": [ + { + "content": "λάλει", + "lemma": [ + "λαλέω" + ], + "strong": [ + "G29800" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "πρέπει", + "lemma": [ + "πρέπω" + ], + "strong": [ + "G42410" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "speak what *is* appropriate", + "checksum": "7e2fcf5e8ebbe221c7342279570b825b" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὑγιαινούσῃ", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "DFS", + "" + ], + "cv": "2:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to the teaching *that is* sound", + "checksum": "67585de835a3bebf07f8065653f48143" + } + ], + "sourceString": "σὺ δὲ λάλει ἃ πρέπει τῇ ὑγιαινούσῃ διδασκαλίᾳ. ", + "checksum": "37d709c6e01c1f03cde75ce9301f76e8" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρεσβύτας", + "lemma": [ + "πρεσβύτης" + ], + "strong": [ + "G42460" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*Tell* the older men *to* be", + "checksum": "f2ec8f371c2506db14d3a617f65ddd2b" + }, + { + "source": [ + { + "content": "νηφαλίους", + "lemma": [ + "νηφάλιος" + ], + "strong": [ + "G35240" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "temperate", + "checksum": "068b5002e0a555be27af4e6d83fa184b" + }, + { + "source": [ + { + "content": "σεμνούς", + "lemma": [ + "σεμνός" + ], + "strong": [ + "G45860" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "dignified", + "checksum": "87f88d44db0c92061584d70fd47bc1ee" + }, + { + "source": [ + { + "content": "σώφρονας", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "cf446f85c19ee586c5f5f18d9385a3e6" + }, + { + "source": [ + { + "content": "ὑγιαίνοντας", + "lemma": [ + "ὑγιαίνω" + ], + "strong": [ + "G51980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being *sound* in *the* faith", + "checksum": "8e10edcbf3a44fd893f484922e566e20" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἀγάπῃ", + "lemma": [ + "ἀγάπη" + ], + "strong": [ + "G00260" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* love", + "checksum": "f149a48dc29eb00988f7897c4e746344" + }, + { + "source": [ + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 3, + "index": 2 + }, + { + "content": "ὑπομονῇ", + "lemma": [ + "ὑπομονή" + ], + "strong": [ + "G52810" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* patience", + "checksum": "3788884286e3873a9eb991af9e3f635b" + } + ], + "sourceString": "πρεσβύτας νηφαλίους εἶναι, σεμνούς, σώφρονας, ὑγιαίνοντας τῇ πίστει, τῇ ἀγάπῃ, τῇ ὑπομονῇ.", + "checksum": "f896e66c5c0d7464c316f58ca029365e" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρεσβύτιδας", + "lemma": [ + "πρεσβῦτις" + ], + "strong": [ + "G42470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*Tell the* older women", + "checksum": "29a8473840d470d2fdf7f328a237caab" + }, + { + "source": [ + { + "content": "ὡσαύτως", + "lemma": [ + "ὡσαύτως" + ], + "strong": [ + "G56150" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*in the same way*", + "checksum": "7740cc432115473822094f94ae3d3781" + }, + { + "source": [ + { + "content": "ἱεροπρεπεῖς", + "lemma": [ + "ἱεροπρεπής" + ], + "strong": [ + "G24120" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to be* reverent in behavior", + "checksum": "6890943a359dae7f5438b4b1bd4b3b05" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καταστήματι", + "lemma": [ + "κατάστημα" + ], + "strong": [ + "G26880" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DNS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *their* behavior,", + "checksum": "d492b0d214b13e9e0294016ae838253d" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διαβόλους", + "lemma": [ + "διάβολος" + ], + "strong": [ + "G12280" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* slanderers", + "checksum": "725dde4005deeea07e59dd9683b22302" + }, + { + "source": [ + { + "content": "μηδὲ", + "lemma": [ + "μηδέ" + ], + "strong": [ + "G33660" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεδουλωμένας", + "lemma": [ + "δουλόω" + ], + "strong": [ + "G14020" + ], + "morph": [ + "Gr", + "V", + "PEP", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πολλῷ", + "lemma": [ + "πολλός" + ], + "strong": [ + "G41830" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "οἴνῳ", + "lemma": [ + "οἶνος" + ], + "strong": [ + "G36310" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "nor *being* enslaved *to* much wine", + "checksum": "e483e1afbbf1ef09793e316e6118da4f" + }, + { + "source": [ + { + "content": "καλοδιδασκάλους", + "lemma": [ + "καλοδιδάσκαλος" + ], + "strong": [ + "G25670" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:3", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*good* teachers", + "checksum": "db0d0a6edbcff780acc35246f3fbea9a" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "σωφρονίζωσι", + "lemma": [ + "σωφρονίζω" + ], + "strong": [ + "G49940" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that they-may-train *the* *young women*", + "checksum": "97ca83c66951841462810f880b0d007c" + }, + { + "source": [ + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νέας", + "lemma": [ + "νέος" + ], + "strong": [ + "G35010" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the young *women*", + "checksum": "5413363a35c624c44d712b1cfe7d0056" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "φιλάνδρους", + "lemma": [ + "φίλανδρος" + ], + "strong": [ + "G53620" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to be* husband-loving", + "checksum": "73bc9afe55e2774380e2cddd099bb0cf" + }, + { + "source": [ + { + "content": "φιλοτέκνους", + "lemma": [ + "φιλότεκνος" + ], + "strong": [ + "G53880" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "lovers of *their* children", + "checksum": "53ff0dfbe9b24178025d9c168c74de04" + }, + { + "source": [ + { + "content": "σώφρονας", + "lemma": [ + "σώφρων" + ], + "strong": [ + "G49980" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "self-controlled", + "checksum": "f0df404af9256b26013edd333ea4be72" + }, + { + "source": [ + { + "content": "ἁγνάς", + "lemma": [ + "ἁγνός" + ], + "strong": [ + "G00530" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "pure", + "checksum": "faaf69965536d31a44de4d129cb62349" + }, + { + "source": [ + { + "content": "οἰκουργούς", + "lemma": [ + "οἰκουργός" + ], + "strong": [ + "G36260" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*workers at* home", + "checksum": "0b11716add692ec12538f01348227997" + }, + { + "source": [ + { + "content": "ἀγαθάς", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "good", + "checksum": "f3348f8ab21860d07f31b3a684c7649f" + }, + { + "source": [ + { + "content": "ὑποτασσομένας", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "PPP", + "AFP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνδράσιν", + "lemma": [ + "ἀνήρ" + ], + "strong": [ + "G04350" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "submitting *themselves* to their own husbands", + "checksum": "0b9a63d3dc9cc6e7b56dc2b09f1a765d" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 1 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:5", + "occurrence": 2, + "index": 0 + }, + { + "content": "λόγος", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:5", + "occurrence": 3, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that the word of *the* God", + "checksum": "5636c175f0d34fe26488e70d62cbc3de" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 1 + }, + { + "content": "βλασφημῆται", + "lemma": [ + "βλασφημέω" + ], + "strong": [ + "G09870" + ], + "morph": [ + "Gr", + "V", + "SPP3", + "", + "S", + "" + ], + "cv": "2:5", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "not be *blasphemed*", + "checksum": "d4b61f250aa72235134462f72f7ed9d1" + } + ], + "sourceString": "πρεσβύτιδας ὡσαύτως ἐν καταστήματι ἱεροπρεπεῖς, μὴ διαβόλους, μηδὲ οἴνῳ πολλῷ δεδουλωμένας, καλοδιδασκάλους, ἵνα σωφρονίζωσι τὰς νέας, φιλάνδρους εἶναι, φιλοτέκνους, σώφρονας, ἁγνάς, οἰκουργούς, ἀγαθάς, ὑποτασσομένας τοῖς ἰδίοις ἀνδράσιν, ἵνα μὴ ὁ λόγος τοῦ Θεοῦ βλασφημῆται.", + "checksum": "aa08c043ade58482e2a758f3398fd228" + }, + { + "chunks": [ + { + "source": [ + { + "content": "παρακάλει", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὡσαύτως", + "lemma": [ + "ὡσαύτως" + ], + "strong": [ + "G56150" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "encourage likewise", + "checksum": "42824d8e8f86289b702945d64d92992a" + }, + { + "source": [ + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νεωτέρους", + "lemma": [ + "νεώτερος" + ], + "strong": [ + "G35125" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMPC" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the younger ones", + "checksum": "d551ae6c1c9ac68d3c0cc7eedcd6b8e7" + }, + { + "source": [ + { + "content": "σωφρονεῖν", + "lemma": [ + "σωφρονέω" + ], + "strong": [ + "G49930" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to be *self-controlled*", + "checksum": "870110744e567834c4b3197ec8ac0813" + }, + { + "source": [ + { + "content": "παρεχόμενος", + "lemma": [ + "παρέχω" + ], + "strong": [ + "G39300" + ], + "morph": [ + "Gr", + "V", + "PPM", + "NMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*providing*", + "checksum": "7c3c7fca29d2780c394f6f78c92916b8" + }, + { + "source": [ + { + "content": "σεαυτὸν", + "lemma": [ + "σεαυτοῦ" + ], + "strong": [ + "G45720" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "2AMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πάντα", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*yourself* in all things", + "checksum": "f67f2682f12ddff2204b97b314bb5dff" + }, + { + "source": [ + { + "content": "τύπον", + "lemma": [ + "τύπος" + ], + "strong": [ + "G51790" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*as* a model of good works", + "checksum": "680ec05e85b8c51d4e55940fa71c4ea1" + }, + { + "source": [ + { + "content": "ἀφθορίαν", + "lemma": [ + "ἀφθορία" + ], + "strong": [ + "G08627" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*incorruptibility*", + "checksum": "e0259642e50789a5900e5b844995b992" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "διδασκαλίᾳ", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* teaching", + "checksum": "72d8300fffbe3649f2332e037fa58c12" + }, + { + "source": [ + { + "content": "σεμνότητα", + "lemma": [ + "σεμνότης" + ], + "strong": [ + "G45870" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:7", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*with* dignity", + "checksum": "98409e5bb93960561ff052abf658b8cf" + }, + { + "source": [ + { + "content": "λόγον", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὑγιῆ", + "lemma": [ + "ὑγιής" + ], + "strong": [ + "G51990" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "a *wholesome* word", + "checksum": "4a41db7248e9b9af9c7b551cd1d8048d" + }, + { + "source": [ + { + "content": "ἀκατάγνωστον", + "lemma": [ + "ἀκατάγνωστος" + ], + "strong": [ + "G01760" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*that which is* beyond reproach", + "checksum": "6f3c7e772cfbe93276573a6fdc22f269" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐναντίας", + "lemma": [ + "ἐναντίος" + ], + "strong": [ + "G17270" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that *he who is* from *the* opposition", + "checksum": "2962c815b3e4d34ceb294df69e3cb1c6" + }, + { + "source": [ + { + "content": "ἐντραπῇ", + "lemma": [ + "ἐντρέπω" + ], + "strong": [ + "G17880" + ], + "morph": [ + "Gr", + "V", + "SAP3", + "", + "S", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "may be *put to* shame", + "checksum": "9224e10a2a934e44b7b275fd89167e0c" + }, + { + "source": [ + { + "content": "ἔχων", + "lemma": [ + "ἔχω" + ], + "strong": [ + "G21920" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδὲν", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "ANS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "φαῦλον", + "lemma": [ + "φαῦλος" + ], + "strong": [ + "G53370" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "ANS", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having nothing *of* evil", + "checksum": "052779ab23ff649f9cde823c5a1ab3e0" + }, + { + "source": [ + { + "content": "λέγειν", + "lemma": [ + "λέγω" + ], + "strong": [ + "G30040" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to say", + "checksum": "fbd7a4b697ee217104b4858bbc8c2216" + }, + { + "source": [ + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "about *us*", + "checksum": "8f5f57da697da957195ca0ac96fb2859" + } + ], + "sourceString": "τοὺς νεωτέρους ὡσαύτως παρακάλει, σωφρονεῖν; περὶ πάντα σεαυτὸν παρεχόμενος τύπον καλῶν ἔργων, ἐν τῇ διδασκαλίᾳ ἀφθορίαν, σεμνότητα, λόγον ὑγιῆ, ἀκατάγνωστον, ἵνα ὁ ἐξ ἐναντίας ἐντραπῇ, μηδὲν ἔχων λέγειν περὶ ἡμῶν φαῦλον.", + "checksum": "44bc6252ee43cabdee3ba5273f5749ac" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δούλους", + "lemma": [ + "δοῦλος" + ], + "strong": [ + "G14010" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*Instruct* slaves", + "checksum": "ba4efaff42a10dc217ed67270b9ee895" + }, + { + "source": [ + { + "content": "ὑποτάσσεσθαι", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be submissive", + "checksum": "e48c80bbf0919cc568098886bcbfdda8" + }, + { + "source": [ + { + "content": "ἰδίοις", + "lemma": [ + "ἴδιος" + ], + "strong": [ + "G23980" + ], + "morph": [ + "Gr", + "EF", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δεσπόταις", + "lemma": [ + "δεσπότης" + ], + "strong": [ + "G12030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to their* own masters", + "checksum": "d75b04141ba4715964c231c9fd000550" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "DNP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *all* things", + "checksum": "0a201dd21175d8fcc16e8360581ca52f" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "εὐαρέστους", + "lemma": [ + "εὐάρεστος" + ], + "strong": [ + "G21010" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be pleasing", + "checksum": "8a22d5a9a47647c7332b129676bed48f" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀντιλέγοντας", + "lemma": [ + "ἀντιλέγω" + ], + "strong": [ + "G04830" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "2:9", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*not* contradicting", + "checksum": "b3fdd449c92e9fd56912040815b32806" + }, + { + "source": [ + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 1 + }, + { + "content": "νοσφιζομένους", + "lemma": [ + "νοσφίζω" + ], + "strong": [ + "G35570" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*not* embezzling", + "checksum": "4a47a5962f85e1c4a0fa2661bb2d7277" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐνδεικνυμένους", + "lemma": [ + "ἐνδείκνυμι" + ], + "strong": [ + "G17310" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶσαν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀγαθήν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστιν", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "but showing *all* good faith", + "checksum": "920cc639b7fe90be7f1a11ffe494499b" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "κοσμῶσιν", + "lemma": [ + "κοσμέω" + ], + "strong": [ + "G28850" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 1 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "DNP", + "" + ], + "cv": "2:10", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "so-that *they* may-adorn in all-things", + "checksum": "63354bfa1f6cfb1422c44f2fff84fb20" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "διδασκαλίαν", + "lemma": [ + "διδασκαλία" + ], + "strong": [ + "G13190" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:10", + "occurrence": 2, + "index": 1 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 3, + "index": 0 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the teaching *of* the Savior *of* ours", + "checksum": "c56d0f3727e6703daa74c6e3f2c7db53" + }, + { + "source": [ + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:10", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "of *God*", + "checksum": "d77c585f735df5d0c63daaf7a9dc3218" + } + ], + "sourceString": "δούλους ἰδίοις δεσπόταις ὑποτάσσεσθαι ἐν πᾶσιν, εὐαρέστους εἶναι, μὴ ἀντιλέγοντας, μὴ νοσφιζομένους, ἀλλὰ πᾶσαν πίστιν ἐνδεικνυμένους ἀγαθήν, ἵνα τὴν διδασκαλίαν τὴν τοῦ Σωτῆρος ἡμῶν, Θεοῦ, κοσμῶσιν ἐν πᾶσιν.", + "checksum": "093cf60f07622a7b1605ec6a681f721c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:11", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "For the grace of *the* God", + "checksum": "e12558090316e6307d4808cf51ec98f8" + }, + { + "source": [ + { + "content": "σωτήριος", + "lemma": [ + "σωτήριος" + ], + "strong": [ + "G49920" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶσιν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀνθρώποις", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "salvatory for-*all* *the*-men", + "checksum": "f1da11e5090ca6b470297f1436badbde" + }, + { + "source": [ + { + "content": "ἐπεφάνη", + "lemma": [ + "ἐπιφαίνω" + ], + "strong": [ + "G20140" + ], + "morph": [ + "Gr", + "V", + "IAP3", + "", + "S", + "" + ], + "cv": "2:11", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*has* appeared", + "checksum": "0031d11a18f3c03df9c77a9a1cbb8004" + }, + { + "source": [ + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "παιδεύουσα", + "lemma": [ + "παιδεύω" + ], + "strong": [ + "G38110" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "training *us*", + "checksum": "80ac2e8096eb5b73d6c5178451c757ce" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ζήσωμεν", + "lemma": [ + "ζάω" + ], + "strong": [ + "G21980" + ], + "morph": [ + "Gr", + "V", + "SAA1", + "", + "P", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "so-that we-may*live*", + "checksum": "20a9a3826e1d0cc4a301268e35b6dd7a" + }, + { + "source": [ + { + "content": "σωφρόνως", + "lemma": [ + "σωφρόνως" + ], + "strong": [ + "G49960" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "δικαίως", + "lemma": [ + "δικαίως" + ], + "strong": [ + "G13460" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 3, + "occurrences": 3, + "index": 1 + }, + { + "content": "εὐσεβῶς", + "lemma": [ + "εὐσεβῶς" + ], + "strong": [ + "G21530" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "sensibly and righteously and devoutly", + "checksum": "dfef6c326066662b99745b5776f7995b" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῷ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:12", + "occurrence": 3, + "occurrences": 3, + "index": 0 + }, + { + "content": "αἰῶνι", + "lemma": [ + "αἰών" + ], + "strong": [ + "G01650" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νῦν", + "lemma": [ + "νῦν" + ], + "strong": [ + "G35680" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "in *the* present age", + "checksum": "6e8739a6f61f832ea31413ef7b417108" + }, + { + "source": [ + { + "content": "ἀρνησάμενοι", + "lemma": [ + "ἀρνέομαι" + ], + "strong": [ + "G07200" + ], + "morph": [ + "Gr", + "V", + "PAM", + "NMP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 3, + "index": 0 + }, + { + "content": "ἀσέβειαν", + "lemma": [ + "ἀσέβεια" + ], + "strong": [ + "G07630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "denying *the* ungodliness", + "checksum": "7e7ebdeb09ff866b4bac9c02ad29429f" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 3, + "index": 2 + }, + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "ἐπιθυμίας", + "lemma": [ + "ἐπιθυμία" + ], + "strong": [ + "G19390" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κοσμικὰς", + "lemma": [ + "κοσμικός" + ], + "strong": [ + "G28860" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "2:12", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* worldly desires", + "checksum": "7d13fefab5bc34ec5e39abb17a8ac18f" + }, + { + "source": [ + { + "content": "προσδεχόμενοι", + "lemma": [ + "προσδέχομαι" + ], + "strong": [ + "G43270" + ], + "morph": [ + "Gr", + "V", + "PPM", + "NMP", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "awaiting", + "checksum": "7e881e3d463498b0d2785c1643539f70" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 3, + "index": 1 + }, + { + "content": "μακαρίαν", + "lemma": [ + "μακάριος" + ], + "strong": [ + "G31070" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐλπίδα", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the blessed *hope*", + "checksum": "6be41723938fd15ad7d672edd60ef1a6" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 2, + "index": 3 + }, + { + "content": "ἐπιφάνειαν", + "lemma": [ + "ἐπιφάνεια" + ], + "strong": [ + "G20150" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* appearing", + "checksum": "5bac1b7cba7e21a1a0dc809b289ffe07" + }, + { + "source": [ + { + "content": "τῆς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:13", + "occurrence": 2, + "occurrences": 3, + "index": 0 + }, + { + "content": "δόξης", + "lemma": [ + "δόξα" + ], + "strong": [ + "G13910" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of the*glory*", + "checksum": "8de9ad91dfa0d5da1d8d6ded024a4db1" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 3, + "occurrences": 3, + "index": 1 + }, + { + "content": "μεγάλου", + "lemma": [ + "μέγας" + ], + "strong": [ + "G31730" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:13", + "occurrence": 2, + "occurrences": 2, + "index": 4 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* great God and Savior *of* us", + "checksum": "d74403c75aaa6e7c31bfbd4a344f370b" + }, + { + "source": [ + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "2:13", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Jesus *of* Christ", + "checksum": "e5e9ef43fa0c659e6894c65ac5f8d236" + }, + { + "source": [ + { + "content": "ὃς", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔδωκεν", + "lemma": [ + "δίδωμι" + ], + "strong": [ + "G13250" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἑαυτὸν", + "lemma": [ + "ἑαυτοῦ" + ], + "strong": [ + "G14380" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "3AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "who *has* given Himself", + "checksum": "4a3d03f9235d1950aca38cc9a6fcb077" + }, + { + "source": [ + { + "content": "ὑπὲρ", + "lemma": [ + "ὑπέρ" + ], + "strong": [ + "G52280" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 1 + } + ], + "gloss": "on *behalf* of us", + "checksum": "2108297bc500809b45c6694746ebc781" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 1 + }, + { + "content": "λυτρώσηται", + "lemma": [ + "λυτρόω" + ], + "strong": [ + "G30840" + ], + "morph": [ + "Gr", + "V", + "SAM3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "2:14", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "so-that *he* might-redeem us", + "checksum": "34c1f6ea01e94b1569283f0cf7d3ba24" + }, + { + "source": [ + { + "content": "ἀπὸ", + "lemma": [ + "ἀπό" + ], + "strong": [ + "G05750" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "πάσης", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνομίας", + "lemma": [ + "ἀνομία" + ], + "strong": [ + "G04580" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "from all *forms of* iniquity", + "checksum": "ee1e71b5f721179c92a38ca6e1dc65e4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 5 + }, + { + "content": "καθαρίσῃ", + "lemma": [ + "καθαρίζω" + ], + "strong": [ + "G25110" + ], + "morph": [ + "Gr", + "V", + "SAA3", + "", + "S", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἑαυτῷ", + "lemma": [ + "ἑαυτοῦ" + ], + "strong": [ + "G14380" + ], + "morph": [ + "Gr", + "RE", + "", + "", + "3DMS", + "" + ], + "cv": "2:14", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "and *that* he might purify for himself", + "checksum": "8e702a34374282ff891c6aed190e72cc" + }, + { + "source": [ + { + "content": "λαὸν", + "lemma": [ + "λαός" + ], + "strong": [ + "G29920" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιούσιον", + "lemma": [ + "περιούσιος" + ], + "strong": [ + "G40410" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*a* people *who are* his *very* own", + "checksum": "8e7ce3d9add1297caf2d247905ea09fd" + }, + { + "source": [ + { + "content": "ζηλωτὴν", + "lemma": [ + "ζηλωτής" + ], + "strong": [ + "G22070" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "2:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "zealous for *the* good works", + "checksum": "39c45acd7013f23890c6a822878a909f" + } + ], + "sourceString": "ἐπεφάνη γὰρ ἡ χάρις τοῦ Θεοῦ, σωτήριος πᾶσιν ἀνθρώποις, παιδεύουσα ἡμᾶς, ἵνα ἀρνησάμενοι τὴν ἀσέβειαν καὶ τὰς κοσμικὰς ἐπιθυμίας, σωφρόνως καὶ δικαίως, καὶ εὐσεβῶς, ζήσωμεν ἐν τῷ νῦν αἰῶνι; προσδεχόμενοι τὴν μακαρίαν ἐλπίδα, καὶ ἐπιφάνειαν τῆς δόξης τοῦ μεγάλου Θεοῦ καὶ Σωτῆρος ἡμῶν, Ἰησοῦ Χριστοῦ; ὃς ἔδωκεν ἑαυτὸν ὑπὲρ ἡμῶν, ἵνα λυτρώσηται ἡμᾶς ἀπὸ πάσης ἀνομίας, καὶ καθαρίσῃ ἑαυτῷ λαὸν περιούσιον, ζηλωτὴν καλῶν ἔργων.", + "checksum": "95d54e5a95dbf37e9d992cc1e09c0f5d" + }, + { + "chunks": [ + { + "source": [ + { + "content": "λάλει", + "lemma": [ + "λαλέω" + ], + "strong": [ + "G29800" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ταῦτα", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Speak these *things*", + "checksum": "b6180dfaef76eae5c2bd313e10906a94" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "παρακάλει", + "lemma": [ + "παρακαλέω" + ], + "strong": [ + "G38700" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and encourage", + "checksum": "370fb22386f72d739af22cfb9e4f075c" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἔλεγχε", + "lemma": [ + "ἐλέγχω" + ], + "strong": [ + "G16510" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *reprove*", + "checksum": "41279d044fa60338a91fb164197295fd" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "πάσης", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιταγῆς", + "lemma": [ + "ἐπιταγή" + ], + "strong": [ + "G20030" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "with all *authority*", + "checksum": "36110f73fa9cbc8b8b16d3c8b45cf60b" + } + ], + "sourceString": "ταῦτα λάλει, καὶ παρακάλει, καὶ ἔλεγχε, μετὰ πάσης ἐπιταγῆς. ", + "checksum": "5bba83a7dfe0c9ac14715a94bc22b0fb" + }, + { + "chunks": [ + { + "source": [ + { + "content": "μηδείς", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMS", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιφρονείτω", + "lemma": [ + "περιφρονέω" + ], + "strong": [ + "G40650" + ], + "morph": [ + "Gr", + "V", + "MPA3", + "", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*Let* no one despise", + "checksum": "bdc0a1dca79a3b74876068fe18266292" + }, + { + "source": [ + { + "content": "σου", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "S", + "" + ], + "cv": "2:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "your", + "checksum": "c04ed2d97c289d5ba418237d187a6775" + } + ], + "sourceString": "μηδείς σου περιφρονείτω.", + "checksum": "40dfb93badca3e7a43c380d485e40052" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὑπομίμνῃσκε", + "lemma": [ + "ὑπομιμνῄσκω" + ], + "strong": [ + "G52790" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "S", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοὺς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3AMP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Remind *them*", + "checksum": "75fc71ae0ebe5f2a588245a4fdd9b055" + }, + { + "source": [ + { + "content": "ὑποτάσσεσθαι", + "lemma": [ + "ὑποτάσσω" + ], + "strong": [ + "G52930" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀρχαῖς", + "lemma": [ + "ἀρχή" + ], + "strong": [ + "G07460" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be subject *to* authorities", + "checksum": "75bba0c7d9bb1eeecd8367211d11b20d" + }, + { + "source": [ + { + "content": "ἐξουσίαις", + "lemma": [ + "ἐξουσία" + ], + "strong": [ + "G18490" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to *the* authorities", + "checksum": "ec671ea70d559eb7c47285ad7d25cce1" + }, + { + "source": [ + { + "content": "πειθαρχεῖν", + "lemma": [ + "πειθαρχέω" + ], + "strong": [ + "G39800" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "to obey", + "checksum": "f9ec92feab8bb68ebb3731b2e247d834" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἑτοίμους", + "lemma": [ + "ἕτοιμος" + ], + "strong": [ + "G20920" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πᾶν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἔργον", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἀγαθὸν", + "lemma": [ + "ἀγαθός" + ], + "strong": [ + "G00180" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:1", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*to* be ready for every good work", + "checksum": "f2f19b9fe71fd69bc2b0d55d9449a5ac" + }, + { + "source": [ + { + "content": "βλασφημεῖν", + "lemma": [ + "βλασφημέω" + ], + "strong": [ + "G09870" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδένα", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*to* blaspheme *no one*", + "checksum": "f4f567f50c15ab1f13f35e49dd9ae8c5" + }, + { + "source": [ + { + "content": "εἶναι", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "NPA", + "", + "", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἀμάχους", + "lemma": [ + "ἄμαχος" + ], + "strong": [ + "G02690" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*to* be non-contentious", + "checksum": "d6c6fd5c76387f6e471698f8953e4215" + }, + { + "source": [ + { + "content": "ἐπιεικεῖς", + "lemma": [ + "ἐπιεικής" + ], + "strong": [ + "G19330" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "gentle*men*", + "checksum": "51d8dbced68122e50d0ae11f35106be1" + }, + { + "source": [ + { + "content": "ἐνδεικνυμένους", + "lemma": [ + "ἐνδείκνυμι" + ], + "strong": [ + "G17310" + ], + "morph": [ + "Gr", + "V", + "PPM", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πᾶσαν", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "πραΰτητα", + "lemma": [ + "πραΰτης" + ], + "strong": [ + "G42400" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "demonstrating all *gentleness*", + "checksum": "bf4e5a4de271610337d102fb281aabcf" + }, + { + "source": [ + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 1 + }, + { + "content": "πάντας", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "EQ", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἀνθρώπους", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "toward *all* men", + "checksum": "1c49b7be9f4d1a25e070d96f13c8b44a" + } + ], + "sourceString": "ὑπομίμνῃσκε αὐτοὺς ἀρχαῖς, ἐξουσίαις, ὑποτάσσεσθαι, πειθαρχεῖν; πρὸς πᾶν ἔργον ἀγαθὸν ἑτοίμους εἶναι, μηδένα βλασφημεῖν, ἀμάχους εἶναι, ἐπιεικεῖς, πᾶσαν ἐνδεικνυμένους πραΰτητα πρὸς πάντας ἀνθρώπους. ", + "checksum": "342cae2be43a16778a0e3970ec048c49" + }, + { + "chunks": [ + { + "source": [ + { + "content": "γάρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμεῖς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "P", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for we also", + "checksum": "3782d5eeceef4a39bd4da3106e313c46" + }, + { + "source": [ + { + "content": "ποτε", + "lemma": [ + "ποτέ" + ], + "strong": [ + "G42180" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἦμεν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IIA1", + "", + "P", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "once *we* were", + "checksum": "cff141b8aa58b534c4006e55bf3a2182" + }, + { + "source": [ + { + "content": "ἀνόητοι", + "lemma": [ + "ἀνόητος" + ], + "strong": [ + "G04530" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "foolish", + "checksum": "70c7c3a5b1816222234e5b04ecc5efe4" + }, + { + "source": [ + { + "content": "ἀπειθεῖς", + "lemma": [ + "ἀπειθής" + ], + "strong": [ + "G05450" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "disobedient", + "checksum": "bcf1ded489f61af021344eac6eea5fa8" + }, + { + "source": [ + { + "content": "πλανώμενοι", + "lemma": [ + "πλανάω" + ], + "strong": [ + "G41050" + ], + "morph": [ + "Gr", + "V", + "PPP", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*being* led astray", + "checksum": "2445f68ba2c84e194ad29cdc3c7689b9" + }, + { + "source": [ + { + "content": "δουλεύοντες", + "lemma": [ + "δουλεύω" + ], + "strong": [ + "G13980" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐπιθυμίαις", + "lemma": [ + "ἐπιθυμία" + ], + "strong": [ + "G19390" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἡδοναῖς", + "lemma": [ + "ἡδονή" + ], + "strong": [ + "G22370" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ποικίλαις", + "lemma": [ + "ποικίλος" + ], + "strong": [ + "G41640" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "DFP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being-slaves to-desires and *to* various pleasures", + "checksum": "04e3a2ccb782a8338992cb89975887d8" + }, + { + "source": [ + { + "content": "διάγοντες", + "lemma": [ + "διάγω" + ], + "strong": [ + "G12360" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "κακίᾳ", + "lemma": [ + "κακία" + ], + "strong": [ + "G25490" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:3", + "occurrence": 3, + "index": 2 + }, + { + "content": "φθόνῳ", + "lemma": [ + "φθόνος" + ], + "strong": [ + "G53550" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "living in *the* malice and envy", + "checksum": "ecc4b79168ea0408d0aa52693f8a550b" + }, + { + "source": [ + { + "content": "στυγητοί", + "lemma": [ + "στυγητός" + ], + "strong": [ + "G47670" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "hateful", + "checksum": "45521b8b2086da2debdaa508948d4bb8" + }, + { + "source": [ + { + "content": "μισοῦντες", + "lemma": [ + "μισέω" + ], + "strong": [ + "G34040" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀλλήλους", + "lemma": [ + "ἀλλήλων" + ], + "strong": [ + "G02400" + ], + "morph": [ + "Gr", + "RC", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "hating one another", + "checksum": "7f6aaaa1b9084d0e2137e8c4aee3600e" + } + ], + "sourceString": "ἦμεν γάρ ποτε καὶ ἡμεῖς ἀνόητοι, ἀπειθεῖς, πλανώμενοι, δουλεύοντες ἐπιθυμίαις καὶ ἡδοναῖς ποικίλαις, ἐν κακίᾳ καὶ φθόνῳ διάγοντες, στυγητοί, μισοῦντες ἀλλήλους. ", + "checksum": "37133c4bbb6d19a0c13ef246c3e73b51" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ὅτε", + "lemma": [ + "ὅτε" + ], + "strong": [ + "G37530" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "But when", + "checksum": "b0f89ea0e0d2a2db7d755041342677f2" + }, + { + "source": [ + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 3, + "index": 0 + }, + { + "content": "χρηστότης", + "lemma": [ + "χρηστότης" + ], + "strong": [ + "G55440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 2, + "occurrences": 3, + "index": 1 + }, + { + "content": "φιλανθρωπία", + "lemma": [ + "φιλανθρωπία" + ], + "strong": [ + "G53630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "the kindness and *the* love-for-mankind", + "checksum": "8fa04e4e6692c1da82c561b2e5f50fdc" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 3, + "occurrences": 3, + "index": 0 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of *the* Savior of us, God", + "checksum": "a51d9a3b610d9c23ed6f8b4b5b8aafc9" + }, + { + "source": [ + { + "content": "ἐπεφάνη", + "lemma": [ + "ἐπιφαίνω" + ], + "strong": [ + "G20140" + ], + "morph": [ + "Gr", + "V", + "IAP3", + "", + "S", + "" + ], + "cv": "3:4", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*has* appeared", + "checksum": "0e2b1f641f9522a2c18fe3e1833ab30d" + }, + { + "source": [ + { + "content": "ἔσωσεν", + "lemma": [ + "σῴζω" + ], + "strong": [ + "G49820" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + } + ], + "gloss": "he-saved *us*", + "checksum": "307441f83f06a1d08c31943310a6d4f8" + }, + { + "source": [ + { + "content": "οὐκ", + "lemma": [ + "οὐ" + ], + "strong": [ + "G37560" + ], + "morph": [ + "Gr", + "DO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐξ", + "lemma": [ + "ἐκ" + ], + "strong": [ + "G15370" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "not *from*", + "checksum": "0e7b55512044cd4790167416941ff092" + }, + { + "source": [ + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τῶν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δικαιοσύνῃ", + "lemma": [ + "δικαιοσύνη" + ], + "strong": [ + "G13430" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "of works *that are* in righteousness", + "checksum": "c8d04e3cbdc953466df8bb2b780f695a" + }, + { + "source": [ + { + "content": "ἃ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "ANP", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμεῖς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1N", + "P", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἐποιήσαμεν", + "lemma": [ + "ποιέω" + ], + "strong": [ + "G41600" + ], + "morph": [ + "Gr", + "V", + "IAA1", + "", + "P", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "*which* we *have* done", + "checksum": "1b20fed141619d4592e5181b1f4e5174" + }, + { + "source": [ + { + "content": "ἀλλὰ", + "lemma": [ + "ἀλλά" + ], + "strong": [ + "G02350" + ], + "morph": [ + "Gr", + "CO", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "κατὰ", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τὸ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:5", + "occurrence": 2, + "occurrences": 2, + "index": 0 + }, + { + "content": "ἔλεος", + "lemma": [ + "ἔλεος" + ], + "strong": [ + "G16560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αὐτοῦ", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "but according to *the* mercy of-him", + "checksum": "06707d275c5ffae12605dc58997a76ac" + }, + { + "source": [ + { + "content": "διὰ", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "λουτροῦ", + "lemma": [ + "λουτρόν" + ], + "strong": [ + "G30670" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "παλινγενεσίας", + "lemma": [ + "παλινγενεσία" + ], + "strong": [ + "G38240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "through *the* washing of regeneration", + "checksum": "5fb14c99949ffee683982c441a8b42d3" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἀνακαινώσεως", + "lemma": [ + "ἀνακαίνωσις" + ], + "strong": [ + "G03420" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Πνεύματος", + "lemma": [ + "πνεῦμα" + ], + "strong": [ + "G41510" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Ἁγίου", + "lemma": [ + "ἅγιος" + ], + "strong": [ + "G00400" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:5", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "and *the* renewal of *the* Holy Spirit", + "checksum": "b1649d8f993c75d6c576cdebfea20b4c" + }, + { + "source": [ + { + "content": "οὗ", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "GNS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἐξέχεεν", + "lemma": [ + "ἐκχέω" + ], + "strong": [ + "G16320" + ], + "morph": [ + "Gr", + "V", + "IAA3", + "", + "S", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "πλουσίως", + "lemma": [ + "πλουσίως" + ], + "strong": [ + "G41460" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "which He poured out *upon us* abundantly", + "checksum": "41df8f179a7890922366a708a556ce2d" + }, + { + "source": [ + { + "content": "ἐφ’", + "lemma": [ + "ἐπί" + ], + "strong": [ + "G19090" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "upon *us*", + "checksum": "08fd6d9f6788d2504de67bf993cafec3" + }, + { + "source": [ + { + "content": "διὰ", + "lemma": [ + "διά" + ], + "strong": [ + "G12230" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "Σωτῆρος", + "lemma": [ + "σωτήρ" + ], + "strong": [ + "G49900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:6", + "occurrence": 1, + "occurrences": 1, + "index": 1 + }, + { + "content": "ἡμῶν", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "P", + "" + ], + "cv": "3:6", + "occurrence": 2, + "occurrences": 2, + "index": 1 + } + ], + "gloss": "through Jesus Christ, *the* Savior of us", + "checksum": "b9d4cf36d6d2008966fbaf6f5b2fc13a" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "γενηθῶμεν", + "lemma": [ + "γίνομαι" + ], + "strong": [ + "G10960" + ], + "morph": [ + "Gr", + "V", + "SAP1", + "", + "P", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "κληρονόμοι", + "lemma": [ + "κληρονόμος" + ], + "strong": [ + "G28180" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so-that we-might-become *heirs*", + "checksum": "fac27659b6c8a55af4c6925858bde826" + }, + { + "source": [ + { + "content": "κατ’", + "lemma": [ + "κατά" + ], + "strong": [ + "G25960" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐλπίδα", + "lemma": [ + "ἐλπίς" + ], + "strong": [ + "G16800" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ζωῆς", + "lemma": [ + "ζωή" + ], + "strong": [ + "G22220" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "αἰωνίου", + "lemma": [ + "αἰώνιος" + ], + "strong": [ + "G01660" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "according to *the* hope of eternal life", + "checksum": "b6007bc07009f4b9e9eca4c77dbe0c85" + }, + { + "source": [ + { + "content": "δικαιωθέντες", + "lemma": [ + "δικαιόω" + ], + "strong": [ + "G13440" + ], + "morph": [ + "Gr", + "V", + "PAP", + "NMP", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐκείνου", + "lemma": [ + "ἐκεῖνος" + ], + "strong": [ + "G15650" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GMS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + }, + { + "content": "χάριτι", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:7", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "having-been-justified *by* the grace *of* that-one", + "checksum": "82bc2a5a0b4d8157cad8a7b4d3bde5cf" + } + ], + "sourceString": "ὅτε δὲ ἡ χρηστότης καὶ ἡ φιλανθρωπία ἐπεφάνη τοῦ Σωτῆρος ἡμῶν, Θεοῦ, οὐκ ἐξ ἔργων τῶν ἐν δικαιοσύνῃ, ἃ ἐποιήσαμεν ἡμεῖς, ἀλλὰ κατὰ τὸ αὐτοῦ ἔλεος, ἔσωσεν ἡμᾶς, διὰ λουτροῦ παλινγενεσίας καὶ ἀνακαινώσεως Πνεύματος Ἁγίου, οὗ ἐξέχεεν ἐφ’ ἡμᾶς πλουσίως, διὰ Ἰησοῦ Χριστοῦ, τοῦ Σωτῆρος ἡμῶν, ἵνα δικαιωθέντες τῇ ἐκείνου χάριτι, κληρονόμοι γενηθῶμεν, κατ’ ἐλπίδα ζωῆς αἰωνίου.", + "checksum": "8aa9d785db7f52328f6aa3047f0ed67e" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "λόγος", + "lemma": [ + "λόγος" + ], + "strong": [ + "G30560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "πιστὸς", + "lemma": [ + "πιστός" + ], + "strong": [ + "G41030" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "The word *is* faithful", + "checksum": "6f4e0c14a64925dbc809031ae4a0555f" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "βούλομαί", + "lemma": [ + "βούλομαι" + ], + "strong": [ + "G10140" + ], + "morph": [ + "Gr", + "V", + "IPM1", + "", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "διαβεβαιοῦσθαι", + "lemma": [ + "διαβεβαιόομαι" + ], + "strong": [ + "G12260" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *I want* you *to be* firmly-asserting", + "checksum": "55279c1e7844fdc8f41e52f16251044b" + }, + { + "source": [ + { + "content": "περὶ", + "lemma": [ + "περί" + ], + "strong": [ + "G40120" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "τούτων", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "concerning *these* matters", + "checksum": "062228df634205f2d4d04090bb9bf007" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that *they*", + "checksum": "09e244bfc2be9dc5392ceff52c442bb6" + }, + { + "source": [ + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "πεπιστευκότες", + "lemma": [ + "πιστεύω" + ], + "strong": [ + "G41000" + ], + "morph": [ + "Gr", + "V", + "PEA", + "NMP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεῷ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "those *who have* believed *in* God", + "checksum": "fcbf9f6742fe43e9f28e3b07d6108dd6" + }, + { + "source": [ + { + "content": "φροντίζωσιν", + "lemma": [ + "φροντίζω" + ], + "strong": [ + "G54310" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*may* be careful to engage in", + "checksum": "e906480f86341e5fa036f588ab91486b" + }, + { + "source": [ + { + "content": "προΐστασθαι", + "lemma": [ + "προΐστημι" + ], + "strong": [ + "G42910" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to excel in *good* works", + "checksum": "4e01fda69953eec00e8131490d38ef1a" + } + ], + "sourceString": "πιστὸς ὁ λόγος, καὶ περὶ τούτων βούλομαί σε διαβεβαιοῦσθαι, ἵνα φροντίζωσιν καλῶν ἔργων, προΐστασθαι οἱ πεπιστευκότες Θεῷ. ", + "checksum": "a76d3d03a5fc9372ed34650c1eb3945b" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ταῦτά", + "lemma": [ + "οὗτος" + ], + "strong": [ + "G37780" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἐστιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλὰ", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "These things are *good*", + "checksum": "747a142adabb847f952f3dff3e32d860" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:8", + "occurrence": 2, + "index": 0 + }, + { + "content": "ὠφέλιμα", + "lemma": [ + "ὠφέλιμος" + ], + "strong": [ + "G56240" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NNP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοῖς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMP", + "" + ], + "cv": "3:8", + "occurrence": 3, + "index": 0 + }, + { + "content": "ἀνθρώποις", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMP", + "" + ], + "cv": "3:8", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and beneficial *to* men", + "checksum": "5e6c452d4de59ef2d4d4f4551f5f6081" + } + ], + "sourceString": "ταῦτά ἐστιν καλὰ καὶ ὠφέλιμα τοῖς ἀνθρώποις. ", + "checksum": "b619c1770166163778632938d60117aa" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "περιΐστασο", + "lemma": [ + "περιΐστημι" + ], + "strong": [ + "G40260" + ], + "morph": [ + "Gr", + "V", + "MPM2", + "", + "S", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But *avoid*", + "checksum": "ae277608417a065620343628fb47c678" + }, + { + "source": [ + { + "content": "ζητήσεις", + "lemma": [ + "ζήτησις" + ], + "strong": [ + "G22140" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "μωρὰς", + "lemma": [ + "μωρός" + ], + "strong": [ + "G34740" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "foolish controversies", + "checksum": "4814dfa40852406bb3cca73b6570ceb4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "γενεαλογίας", + "lemma": [ + "γενεαλογία" + ], + "strong": [ + "G10760" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* genealogies", + "checksum": "9b93816d7cebb58f5e1a46b7abc99474" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 2, + "index": 1 + }, + { + "content": "ἔρεις", + "lemma": [ + "ἔρις" + ], + "strong": [ + "G20540" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *the* disputes", + "checksum": "bd32f9d657dec40752dd53114ad4aad4" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 3, + "index": 2 + }, + { + "content": "μάχας", + "lemma": [ + "μάχη" + ], + "strong": [ + "G31630" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "νομικὰς", + "lemma": [ + "νομικός" + ], + "strong": [ + "G35440" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *legal* battles", + "checksum": "8f85a3bbda8d28e4b826bd899f0c8884" + }, + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "εἰσὶν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "P", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀνωφελεῖς", + "lemma": [ + "ἀνωφελής" + ], + "strong": [ + "G05120" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:9", + "occurrence": 4, + "index": 3 + }, + { + "content": "μάταιοι", + "lemma": [ + "μάταιος" + ], + "strong": [ + "G31520" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "NFP", + "" + ], + "cv": "3:9", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for they are unprofitable and *vain*", + "checksum": "88096b5cb3b6a88655f66f3736829f91" + } + ], + "sourceString": "μωρὰς δὲ ζητήσεις, καὶ γενεαλογίας, καὶ ἔρεις, καὶ μάχας νομικὰς, περιΐστασο; εἰσὶν γὰρ ἀνωφελεῖς καὶ μάταιοι. ", + "checksum": "64459f2fd3de56da601ec61db2f8ff2c" + }, + { + "chunks": [ + { + "source": [ + { + "content": "παραιτοῦ", + "lemma": [ + "παραιτέομαι" + ], + "strong": [ + "G38680" + ], + "morph": [ + "Gr", + "V", + "MPM2", + "", + "S", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "ἄνθρωπον", + "lemma": [ + "ἄνθρωπος" + ], + "strong": [ + "G04440" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "αἱρετικὸν", + "lemma": [ + "αἱρετικός" + ], + "strong": [ + "G01410" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "Reject a *man who is* heretical", + "checksum": "90f25b4c0a84efcc9f5625bce2be3ed5" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "μίαν", + "lemma": [ + "εἷς" + ], + "strong": [ + "G15200" + ], + "morph": [ + "Gr", + "EN", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "δευτέραν", + "lemma": [ + "δεύτερος" + ], + "strong": [ + "G12080" + ], + "morph": [ + "Gr", + "EO", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + }, + { + "content": "νουθεσίαν", + "lemma": [ + "νουθεσία" + ], + "strong": [ + "G35590" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:10", + "occurrence": 1, + "occurrences": 1, + "index": 0 + } + ], + "gloss": "after a first and second admonition", + "checksum": "c035011a21c62d3323e951939d57cf98" + }, + { + "source": [ + { + "content": "εἰδὼς", + "lemma": [ + "εἴδω" + ], + "strong": [ + "G14920" + ], + "morph": [ + "Gr", + "V", + "PEA", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὅτι", + "lemma": [ + "ὅτι" + ], + "strong": [ + "G37540" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "knowing that", + "checksum": "b6fddca202dd3d7a36ef76b22dfeb2f9" + }, + { + "source": [ + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "τοιοῦτος", + "lemma": [ + "τοιοῦτος" + ], + "strong": [ + "G51080" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "the *such* man", + "checksum": "15b0b23f869d618cadc77b300d541257" + }, + { + "source": [ + { + "content": "ἐξέστραπται", + "lemma": [ + "ἐκστρέφω" + ], + "strong": [ + "G16120" + ], + "morph": [ + "Gr", + "V", + "IEP3", + "", + "S", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 1 + }, + { + "content": "ἁμαρτάνει", + "lemma": [ + "ἁμαρτάνω" + ], + "strong": [ + "G02640" + ], + "morph": [ + "Gr", + "V", + "IPA3", + "", + "S", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "has turned away and *is* sinning", + "checksum": "a8dfc56f57fff35f89db0637a2013399" + }, + { + "source": [ + { + "content": "ὢν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτοκατάκριτος", + "lemma": [ + "αὐτοκατάκριτος" + ], + "strong": [ + "G08430" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMS", + "" + ], + "cv": "3:11", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "being *self*-condemned", + "checksum": "9b40409f2c5081da75c33a1a0d0935a9" + } + ], + "sourceString": "αἱρετικὸν ἄνθρωπον μετὰ μίαν καὶ δευτέραν νουθεσίαν παραιτοῦ, εἰδὼς ὅτι ἐξέστραπται ὁ τοιοῦτος καὶ ἁμαρτάνει, ὢν αὐτοκατάκριτος.", + "checksum": "99cae08d196b74276d505bde0bb46d23" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ὅταν", + "lemma": [ + "ὅταν" + ], + "strong": [ + "G37520" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "πέμψω", + "lemma": [ + "πέμπω" + ], + "strong": [ + "G39920" + ], + "morph": [ + "Gr", + "V", + "SAA1", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "When I send*ing*", + "checksum": "0e974f486bb0e889f94de0c1890361ae" + }, + { + "source": [ + { + "content": "Ἀρτεμᾶν", + "lemma": [ + "Ἀρτεμᾶς" + ], + "strong": [ + "G07340" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἢ", + "lemma": [ + "ἤ" + ], + "strong": [ + "G22280" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "Τυχικόν", + "lemma": [ + "Τυχικός" + ], + "strong": [ + "G51900" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Artemas or *Tychicus*", + "checksum": "c43c567778dd92fb1a1f87af7b167bf1" + }, + { + "source": [ + { + "content": "πρὸς", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "σὲ", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "toward you", + "checksum": "db75330d13a942ad175e311f3e48ff9b" + }, + { + "source": [ + { + "content": "σπούδασον", + "lemma": [ + "σπουδάζω" + ], + "strong": [ + "G47040" + ], + "morph": [ + "Gr", + "V", + "MAA2", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐλθεῖν", + "lemma": [ + "ἔρχομαι" + ], + "strong": [ + "G20640" + ], + "morph": [ + "Gr", + "V", + "NAA", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "make haste to come", + "checksum": "65e969e7f1282a5e20601d6a521cc854" + }, + { + "source": [ + { + "content": "πρός", + "lemma": [ + "πρός" + ], + "strong": [ + "G43140" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 2, + "index": 0 + }, + { + "content": "με", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *me*", + "checksum": "3e3ee7c4bd40b1a8a7dd49a8692d2f6f" + }, + { + "source": [ + { + "content": "εἰς", + "lemma": [ + "εἰς" + ], + "strong": [ + "G15190" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "Νικόπολιν", + "lemma": [ + "Νικόπολις" + ], + "strong": [ + "G35330" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to *the city of* Nicopolis", + "checksum": "efd2321da9a1cecf390b88b82cbab8b8" + }, + { + "source": [ + { + "content": "γὰρ", + "lemma": [ + "γάρ" + ], + "strong": [ + "G10630" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "κέκρικα", + "lemma": [ + "κρίνω" + ], + "strong": [ + "G29190" + ], + "morph": [ + "Gr", + "V", + "IEA1", + "", + "S", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for I have *decided*", + "checksum": "f08ac8269f8da4b74116e0ed0556df46" + }, + { + "source": [ + { + "content": "παραχειμάσαι", + "lemma": [ + "παραχειμάζω" + ], + "strong": [ + "G39140" + ], + "morph": [ + "Gr", + "V", + "NAA", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐκεῖ", + "lemma": [ + "ἐκεῖ" + ], + "strong": [ + "G15630" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:12", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to spend-the-winter *there*", + "checksum": "90ab6379bd66ab2ff8341a5de427fff2" + } + ], + "sourceString": "ὅταν πέμψω Ἀρτεμᾶν πρὸς σὲ ἢ Τυχικόν, σπούδασον ἐλθεῖν πρός με εἰς Νικόπολιν; ἐκεῖ γὰρ κέκρικα παραχειμάσαι. ", + "checksum": "ef24182d94d863b642c7873a319fef3d" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πρόπεμψον", + "lemma": [ + "προπέμπω" + ], + "strong": [ + "G43110" + ], + "morph": [ + "Gr", + "V", + "MAA2", + "", + "S", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "σπουδαίως", + "lemma": [ + "σπουδαίως" + ], + "strong": [ + "G47090" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "send on *his* way diligently", + "checksum": "50a1aaad19e080a996f3ec121a7472fa" + }, + { + "source": [ + { + "content": "Ζηνᾶν", + "lemma": [ + "Ζηνᾶς" + ], + "strong": [ + "G22110" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "νομικὸν", + "lemma": [ + "νομικός" + ], + "strong": [ + "G35440" + ], + "morph": [ + "Gr", + "AR", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Zenas the *lawyer*", + "checksum": "6d2753adfd21dd66dfeabd95bfeaec1d" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἀπολλῶν", + "lemma": [ + "Ἀπολλῶς" + ], + "strong": [ + "G06250" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "and *Apollos*", + "checksum": "42e0f23d4d295908e3c32687b2046a03" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "μηδὲν", + "lemma": [ + "μηδείς" + ], + "strong": [ + "G33670" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NNS", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "λείπῃ", + "lemma": [ + "λείπω" + ], + "strong": [ + "G30070" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "S", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτοῖς", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3DMP", + "" + ], + "cv": "3:13", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so-that *nothing* lack to-them", + "checksum": "01a33042697c53e32636129089900277" + } + ], + "sourceString": "Ζηνᾶν τὸν νομικὸν καὶ Ἀπολλῶν σπουδαίως πρόπεμψον, ἵνα μηδὲν αὐτοῖς λείπῃ. ", + "checksum": "ae539bfa32d4d1e96dce0ecb830be1fd" + }, + { + "chunks": [ + { + "source": [ + { + "content": "δὲ", + "lemma": [ + "δέ" + ], + "strong": [ + "G11610" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "But", + "checksum": "f1dcb1056a256e563b9808f732b03ad4" + }, + { + "source": [ + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμέτεροι", + "lemma": [ + "ἡμέτερος" + ], + "strong": [ + "G22510" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "our people also", + "checksum": "c77bf53be26b751f845c864f97db3b3f" + }, + { + "source": [ + { + "content": "μανθανέτωσαν", + "lemma": [ + "μανθάνω" + ], + "strong": [ + "G31290" + ], + "morph": [ + "Gr", + "V", + "MPA3", + "", + "P", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*let them* learn", + "checksum": "1c3e55931be6bf2585edc958ca22cbba" + }, + { + "source": [ + { + "content": "προΐστασθαι", + "lemma": [ + "προΐστημι" + ], + "strong": [ + "G42910" + ], + "morph": [ + "Gr", + "V", + "NPM", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἔργων", + "lemma": [ + "ἔργον" + ], + "strong": [ + "G20410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "καλῶν", + "lemma": [ + "καλός" + ], + "strong": [ + "G25700" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "GNP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "to-excel in *good* works", + "checksum": "2f0c90d598736786daa23bf0b5edbdca" + }, + { + "source": [ + { + "content": "εἰς", + "lemma": [ + "εἰς" + ], + "strong": [ + "G15190" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 2, + "index": 0 + }, + { + "content": "χρείας", + "lemma": [ + "χρεία" + ], + "strong": [ + "G55320" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀναγκαίας", + "lemma": [ + "ἀναγκαῖος" + ], + "strong": [ + "G03160" + ], + "morph": [ + "Gr", + "AA", + "", + "", + "", + "AFP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "for the *necessary* needs", + "checksum": "34732cbdb97a9f5fc98098e2584d5264" + }, + { + "source": [ + { + "content": "ἵνα", + "lemma": [ + "ἵνα" + ], + "strong": [ + "G24430" + ], + "morph": [ + "Gr", + "CS", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "μὴ", + "lemma": [ + "μή" + ], + "strong": [ + "G33610" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὦσιν", + "lemma": [ + "εἰμί" + ], + "strong": [ + "G15100" + ], + "morph": [ + "Gr", + "V", + "SPA3", + "", + "P", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "so that they may not be", + "checksum": "602897810c64bec1ce8af54c9a8bdce2" + }, + { + "source": [ + { + "content": "ἄκαρποι", + "lemma": [ + "ἄκαρπος" + ], + "strong": [ + "G01750" + ], + "morph": [ + "Gr", + "NP", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:14", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "without *bearing* fruit", + "checksum": "025764fd49d5abde16be204a19eaed7e" + } + ], + "sourceString": "μανθανέτωσαν δὲ καὶ οἱ ἡμέτεροι καλῶν ἔργων προΐστασθαι εἰς τὰς ἀναγκαίας χρείας, ἵνα μὴ ὦσιν ἄκαρποι.", + "checksum": "2c28fd8cc63c70625ac9dd98a2a2fab9" + }, + { + "chunks": [ + { + "source": [ + { + "content": "πάντες", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "οἱ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "μετ’", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐμοῦ", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "S", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "*All* those who are with me", + "checksum": "1fb12f24d0cb51f4003fa5ea4212fbef" + }, + { + "source": [ + { + "content": "ἀσπάζονταί", + "lemma": [ + "ἀσπάζομαι" + ], + "strong": [ + "G07820" + ], + "morph": [ + "Gr", + "V", + "IPM3", + "", + "P", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "σε", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2A", + "S", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "greet *you*", + "checksum": "ecd8fc4c8998a7e0ea27e9102b171aaa" + } + ], + "sourceString": "ἀσπάζονταί σε οἱ μετ’ ἐμοῦ πάντες. ", + "checksum": "83c2cd094dac8dee5a115511bc38f5ff" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ἄσπασαι", + "lemma": [ + "ἀσπάζομαι" + ], + "strong": [ + "G07820" + ], + "morph": [ + "Gr", + "V", + "MAM2", + "", + "S", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "Greet", + "checksum": "087d931e6b8a65529f97c6a6ebc1c115" + }, + { + "source": [ + { + "content": "τοὺς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMP", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "φιλοῦντας", + "lemma": [ + "φιλέω" + ], + "strong": [ + "G53680" + ], + "morph": [ + "Gr", + "V", + "PPA", + "AMP", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἡμᾶς", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1A", + "P", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "those loving us", + "checksum": "67d2862702b73dfcaf290f353f50c57c" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + }, + { + "content": "πίστει", + "lemma": [ + "πίστις" + ], + "strong": [ + "G41020" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DFS", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "in *the* faith", + "checksum": "c4490bf03c92ddc150ca350c7fe45277" + } + ], + "sourceString": "ἄσπασαι τοὺς φιλοῦντας ἡμᾶς ἐν πίστει. ", + "checksum": "1a35dfcd9f8c7850f663a77f3bbe37e3" + }, + { + "chunks": [ + { + "source": [ + { + "content": "ἡ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:15", + "occurrence": 3, + "index": 0 + }, + { + "content": "χάρις", + "lemma": [ + "χάρις" + ], + "strong": [ + "G54850" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "3:15", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "The grace *be*", + "checksum": "50f669bb50c77f2b6cfa3d41ddf39ad1" + }, + { + "source": [ + { + "content": "μετὰ", + "lemma": [ + "μετά" + ], + "strong": [ + "G33260" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "ὑμῶν", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "P", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + }, + { + "content": "πάντων", + "lemma": [ + "πᾶς" + ], + "strong": [ + "G39560" + ], + "morph": [ + "Gr", + "RI", + "", + "", + "", + "GMP", + "" + ], + "cv": "3:15", + "occurrence": 2, + "index": 0 + } + ], + "gloss": "with *all* of you", + "checksum": "9625b26cd1885b2e4f210e345637f543" + } + ], + "sourceString": "ἡ χάρις μετὰ πάντων ὑμῶν.", + "checksum": "e5b197b4838332356bf988867e352001" + } + ] +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/htmlmap.js b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/htmlmap.js new file mode 100644 index 000000000..7f712c9f2 --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/htmlmap.js @@ -0,0 +1,65 @@ +const htmlMap = (context) => ({ + '*': { + '*': { + tagName: 'span', + }, + sequence: { + tagName: 'section', + }, + }, + wrapper: { + '*': { + tagName: 'wrapper', + }, + sequence: { + tagName: 'section', + }, + }, + paragraph: { + '*': { + tagName: 'p', + }, + 'usfm:mt': { + classList: ['major-title paragraph mt hidden'], + tagName: 'h2', + attributes: { contenteditable: false }, + }, + 'usfm:ms': { + classList: ['major-section-heading paragraph ms'], + tagName: 'h3', + attributes: { contenteditable: false }, + }, + }, + mark: { + '*': { + tagName: 'span', + }, + chapter: ({ atts }) => { + context.lastChapter = atts.number; + return ({ + classList: ['mark', 'chapter', `chapter-${atts.number}`], + id: `ch-${atts.number}`, + tagName: 'span', + }); + }, + verses: ({ atts }) => ({ + classList: ['mark', 'verse', `verse-${atts.number}`], + id: `ch${context.lastChapter}v${atts.number}`, + tagName: 'span', + attributes: { contenteditable: false }, + }), + }, + graft: { + heading: { + tagName: 'div', + }, + title: { + tagName: 'div', + }, + introduction: { + tagName: 'div', + }, + }, +}); + +export default htmlMap({}); diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/saveToFile.js b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/saveToFile.js new file mode 100644 index 000000000..5b226c677 --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/saveToFile.js @@ -0,0 +1,39 @@ +import localforage from 'localforage'; +// import { readRefMeta } from '../../../core/reference/readRefMeta'; +import { isElectron } from '@/core/handleElectron'; +import writeToFile from '@/core/editor/writeToFile'; +import { readRefBurrito } from '@/core/reference/readRefBurrito'; +import packageInfo from '../../../../../../package.json'; +import { newPath } from '../../../../../../supabase'; +import * as logger from '../../../../logger'; + +// function to save to file. +export const saveToFile = async (juxtaData, bookCode) => { + logger.debug('saveToFile.js', `saving ${bookCode} to file`); + try { + const upperCaseBookCode = bookCode.toUpperCase(); + const userProfile = await localforage.getItem('userProfile'); + const userName = isElectron() ? userProfile?.username : userProfile?.user?.email; + const projectName = await localforage.getItem('currentProject'); + const path = require('path'); + const newpath = localStorage.getItem('userPath'); + const metaPath = isElectron() ? path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json') : `${newPath}/${userName}/projects/${projectName}/metadata.json`; + const metaData = JSON.parse(await readRefBurrito({ metaPath })); + Object.entries(metaData.ingredients).forEach(async ([key, _ingredients]) => { + if (_ingredients.scope) { + const _bookID = Object.entries(_ingredients.scope)[0][0]; + if (_bookID === upperCaseBookCode) { + await writeToFile({ + username: userName, + projectname: projectName, + filename: key, + data: juxtaData, + }); + } + } + }); + } catch (err) { + // eslint-disable-next-line no-console + return console.log(err); + } +}; diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/useReadJuxtaFile.js b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/useReadJuxtaFile.js new file mode 100644 index 000000000..be866b6bd --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/hooks/useReadJuxtaFile.js @@ -0,0 +1,63 @@ +/* eslint-disable */ + +import { useEffect, useState, useContext } from 'react'; +import localforage from 'localforage'; +import { ReferenceContext } from '@/components/context/ReferenceContext'; +import { readRefBurrito } from '../../../../core/reference/readRefBurrito'; +import { readFile } from '../../../../core/editor/readFile'; +import packageInfo from '../../../../../../package.json'; + +// hook to fetch juxtalinear files from system drive +export const useReadJuxtalign = () => { + const [readFileNameTranslation, setReadFileNameTranslation] = useState(''); + const [usfmData, setUsfmData] = useState([]); + const [bookAvailable, setbookAvailable] = useState(false); + const { + state: { + bookId, + }, + } = useContext(ReferenceContext); + useEffect(() => { + async function readLocalFile() { + try { + const userProfile = await localforage.getItem('userProfile'); + const userName = userProfile?.username; + const projectName = await localforage.getItem('currentProject'); + const path = require('path'); + const newpath = localStorage.getItem('userPath'); + const metaPath = path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json'); + const metaData = JSON.parse(await readRefBurrito({ metaPath })); + const _books = []; + Object.entries(metaData.ingredients).forEach(async ([key, _ingredients]) => { + if (_ingredients.scope) { + const _bookID = Object.entries(_ingredients.scope)[0][0]; + const bookObj = { bookId: _bookID, fileName: key }; + _books.push(bookObj); + } + }); + const [currentBook] = _books.filter((bookObj) => bookObj.bookId === bookId?.toUpperCase()); + if (currentBook) { + setReadFileName(currentBook.fileName); + const fileData = await readFile({ projectname: projectName, filename: currentBook.fileName, username: userName }); + const books = [{ + selectors: { org: 'unfoldingWord', lang: 'en', abbr: 'ult' }, + bookCode: currentBook.bookId.toLowerCase(), + bookFileName: currentBook.fileName, + data: fileData, + }]; + setUsfmData(books); + setbookAvailable(true); + } else { + setUsfmData([]); + setbookAvailable(false); + } + // setUsfmData(fileData); + } catch (err) { + // eslint-disable-next-line no-console + return console.log(err); + } + } + readLocalFile(); + }, [bookId]); + return { usfmData, bookAvailable, readFileName }; +}; diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/index.jsx b/renderer/src/components/EditorPage/JuxtAlignEditor/index.jsx new file mode 100644 index 000000000..6b91b899c --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/index.jsx @@ -0,0 +1,568 @@ +/* eslint-disable */ +import React, { useState, useEffect, useContext } from 'react'; +import ReactMarkdown from 'react-markdown' + +// import { setupIonicReact } from '@ionic/react' +// import { useTranslation } from 'react-i18next'; +import { SentenceContext } from '@/components/context/SentenceContext'; +// import { ReferenceContext } from '@/components/context/ReferenceContext'; +// import Home from '../JuxtalinearEditor/pages/Home'; + +/* Core CSS required for Ionic components to work properly */ +// import '@ionic/react/css/core.css'; + +import Help from '../../../../../public/icons/sundesmos/alignHelp.png'; +import Information from '../../../../../public/icons/circle-info-solid.svg'; +import Close from '../../../../../public/icons/x-solid.svg'; + +import { ModalSureEverythingAlign } from "./modalSureEverythingAlign"; +import { AlignedButton } from "./AlignedButton"; + +import { lexingRegexes } from "proskomma-core"; +import XRegExp from "xregexp"; +import { readUserSettings, saveUserSettings } from '@/core/projects/userSettings'; + +// import { ISentence, IChunk } from './types'; +import plse from './plse.json'; + +export default function JuxtAlignEditor() { + const { + sentences, + // originText, + // itemArrays, + curIndex, + // fileName, + helpAldearyOpenedOnce, + zoomLeftJuxtalign, + zoomRightJuxtalign, + userSettingsJson, + // setFileName, + // setGlobalTotalSentences, + // setItemArrays, + // setOriginText, + setCurIndex, + // setGlobalSentences, + // setGlobalItemArrays, + setHelpAldearyOpenedOnce, + setZoomLeftJuxtalign, + setZoomRightJuxtalign, + setUserSettingsJson, + } = useContext(SentenceContext); + + // const { + // state: { + // bookId, + // bookList, + // bookName, + // chapter, + // verse, + // chapterList, + // verseList, + // fontSize, + // selectedFont, + // languageId, + // folderPath, + // refName, + // // closeNavigation, + // }, actions: { + // onChangeChapter, + // onChangeVerse, + // }, + // } = useContext(ReferenceContext); + + const mapSentencesToBlocks = () => { + let res = {}; + for (let i = 0; i < plse.blocks.length; i++) { + for (let sents = 0; sents < plse.blocks[i].sentences.length; sents++) { + res[plse.blocks[i].sentences[sents]] = i; + } + } + + return res; + } + const [sentencesToBlocksMap, setSentencesToBlocksMap] = useState(mapSentencesToBlocks()); + + const mainRegex = XRegExp.union(lexingRegexes.map((x) => x[2])); + // **** + // * Need to put this in a context + const [optionDontShowAlignModal, setOptionDontShowAlignModal] = useState(false); + // **** + const [isAlignModalOpen, setIsAlignModalOpen] = useState(false); + const [isCurrentSentenceAlign, setIsCurrentSentenceAlign] = useState(false); + + const [openHelp, setOpenHelp] = useState(!helpAldearyOpenedOnce); + const [left, setLeft] = useState('none'); + const [ctrlPressed, setCtrlPressed] = useState(false); + const [currentChuncksId, setCurrentChuncksId] = useState('none'); + const [elemSelected, setElemSelected] = useState('none'); + const [currentBlockid, setCurrentBlockId] = useState(sentencesToBlocksMap[curIndex]); + const [blocksSentenceId, setBlockSentenceId] = useState( + plse.blocks[0].sentences + ); + const [currentSetenceId, setcurrentSentenceId] = useState( + blocksSentenceId[0] + ); + + const [currentWords, setCurrentWords] = useState([]); + const [idsWord, setIdsWord] = useState([]); + + const [hoverNotSelectedWord, setHoverNotSelectedWord] = useState([]); + + const modifyPLSE = () => { + if (plse.blocks[currentBlockid] && plse.blocks[currentBlockid].alignments.length > 0) { + for (let i = 0; i < plse.blocks[currentBlockid].alignments.length; i++) { + if ( + currentChuncksId + === plse.blocks[currentBlockid].alignments[i].md5Chunck + ) { + plse.blocks[currentBlockid].alignments[i] = { + sentences: currentSetenceId, + words: currentWords, + md5Chunck: currentChuncksId, + }; + return; + } + } + plse.blocks[currentBlockid].alignments.push({ + sentences: currentSetenceId, + words: currentWords, + md5Chunck: currentChuncksId, + }); + } else if (plse.blocks[currentBlockid]) { + plse.blocks[currentBlockid].alignments.push({ + sentences: currentSetenceId, + words: currentWords, + md5Chunck: currentChuncksId, + }); + } + }; + + useEffect(() => { + if (!helpAldearyOpenedOnce) { + setHelpAldearyOpenedOnce(true); + } + if (userSettingsJson && !userSettingsJson.juxtalignHelperOpened) { + userSettingsJson.juxtalignHelperOpened = true; + setUserSettingsJson(userSettingsJson); + // write file back + saveUserSettings(userSettingsJson); + } + }, [openHelp]); + + useEffect(() => { + if (currentChuncksId != '' && plse.blocks[currentBlockid]) { + for (let i = 0; i < plse.blocks[currentBlockid].alignments.length; i++) { + if (currentChuncksId === plse.blocks[currentBlockid].alignments[i].md5Chunck) { + setCurrentWords(plse.blocks[currentBlockid].alignments[i].words); + return; + } + } + } + setCurrentWords([]); + }, [currentChuncksId]); + + const changeBlockId = (bid) => { + // if (bid >= 0 && bid < plse.blocks.length) { + modifyPLSE(); + setCurrentBlockId(bid); + // } + }; + + useEffect(() => { + modifyPLSE() + }, [isCurrentSentenceAlign]) + + useEffect(() => { + if (sentences.length && sentences[curIndex]) { + setcurrentSentenceId(curIndex); + changeBlockId(sentencesToBlocksMap[curIndex]); + setCurIndex(curIndex); + } + }, [curIndex, sentences, setCurIndex]); + + useEffect(() => { + if (plse.blocks[currentBlockid]) { + let tabl = []; + for (let i = 0; i <= XRegExp.match(plse.blocks[currentBlockid].tradText, mainRegex, "all").length; i++) { + tabl.push(i); + } + for (let i = 0; i < plse.blocks[currentBlockid].alignments.length; i++) { + plse.blocks[currentBlockid].alignments[i].words.map((w) => { + tabl.splice(tabl.indexOf(w), 1); + }); + } + + + if (!plse.blocks[currentBlockid].chunckAlign) { + let chunckAlign = {} + for (let i = 0; i < plse.blocks[currentBlockid].sentences.length; i++) { + sentences[plse.blocks[currentBlockid].sentences[i]].chunks.map(c => chunckAlign[c.checksum] = false) + } + plse.blocks[currentBlockid].chunckAlign = chunckAlign + + } + + if (!plse.blocksAlign) { + let blocksAlign = [] + for (let i = 0; i < plse.blocks.length; i++) { + blocksAlign.push(false) + } + plse.blocksAlign = blocksAlign + } else { + setIsCurrentSentenceAlign(plse.blocksAlign[currentBlockid]) + } + setIdsWord(tabl); + setBlockSentenceId(plse.blocks[currentBlockid].sentences); + setCurrentChuncksId( + sentences[plse.blocks[currentBlockid].sentences[0]].chunks[0].checksum + ); + } + }, [currentBlockid]); + + const myFunctionPlusTrue = () => { + if (left) { + setZoomLeftJuxtalign((prev) => prev + 2); + } + if (!left) { + setZoomRightJuxtalign((prev) => prev + 2); + } + }; + const myFunctionMinusFalse = () => { + if (left) { + setZoomLeftJuxtalign((prev) => prev - 2); + } + if (!left) { + setZoomRightJuxtalign((prev) => prev - 2); + } + }; + const myFunctionControlFalse = () => { + setCtrlPressed(false); + }; + const myFunctionControlTrue = () => { + setCtrlPressed(true); + }; + + const onWheel = e => { + if (ctrlPressed) { + if (e.deltaY < 0) myFunctionPlusTrue(); + else myFunctionMinusFalse(); + } + } + + useEffect(() => { + const keyDownHandler = (event) => { + if (event.key === "Control") { + event.preventDefault(); + myFunctionControlTrue(); + } + if (ctrlPressed && event.key === "(") { + event.preventDefault(); + myFunctionPlusTrue(); + } + if (ctrlPressed && event.key === "'") { + event.preventDefault(); + myFunctionMinusFalse(); + } + }; + const keyUphandler = (event) => { + if (event.key === "Control") { + event.preventDefault(); + myFunctionControlFalse(); + } + }; + document.addEventListener("keydown", keyDownHandler); + document.addEventListener("keyup", keyUphandler); + + return () => { + document.removeEventListener("keydown", keyDownHandler); + }; + }, [ctrlPressed, zoomLeftJuxtalign, left]); + + return ( +
+
+
+
{ + setLeft(true); + }} + onClick={() => { + modifyPLSE(); + setCurrentChuncksId("none"); + }} + style={{ overflowY: "scroll", width: "100%", resize: "horizontal" }} + > +
+ {blocksSentenceId.map((ids) => + sentences[ids].chunks.map((c) => ( +
{ + if (plse.blocks[currentBlockid] && c.checksum != currentChuncksId) { + for (let i = 0; i < plse.blocks[currentBlockid].alignments.length; i++) { + if (c.checksum === plse.blocks[currentBlockid].alignments[i].md5Chunck) { + setHoverNotSelectedWord(plse.blocks[currentBlockid].alignments[i].words); + } + } + } + }} + onMouseLeave={() => { + setHoverNotSelectedWord([]); + }} + data-hasBeenDone={plse.blocks[currentBlockid]?.chunckAlign ? plse.blocks[currentBlockid]?.chunckAlign[c.checksum] : false} + data-isSelected={currentChuncksId === c.checksum} + onClick={(e) => { + e.stopPropagation(); + modifyPLSE(); + setcurrentSentenceId(ids); + setCurrentChuncksId(c.checksum); + }} + > +
+ {c.gloss} +
+
+ )) + )} +
+
+
+ {plse.blocks[currentBlockid] != undefined ? ( { + setIsCurrentSentenceAlign(!isCurrentSentenceAlign); + if (!optionDontShowAlignModal) { + setIsAlignModalOpen(true); + } + }} + />) : <>} +
+
+
{ modifyPLSE(); }} + onMouseOver={() => { setLeft(false); }} + style={{ overflowY: "scroll", flex: 1 }} + > +
+ {plse.blocks[currentBlockid] != undefined ? XRegExp.match(plse.blocks[currentBlockid].tradText, mainRegex, "all") + .map((w) => { + if (XRegExp("([\\p{Letter}\\p{Number}\\p{Mark}\\u2060]{1,127})").test(w)) { + return [w, true]; + } else { + return [w, false]; + } + }) + .map((wt, id) => + wt[1] ? ( +
{ + e.stopPropagation(); + if (currentChuncksId != "none") { + if (idsWord.includes(id)) { + if (!currentWords.includes(id)) { + setCurrentWords((prev) => { + let prev2 = [...prev]; + prev2.push(id); + return prev2; + }); + setIdsWord((prev) => { + let prevIdsWord = [...prev]; + prevIdsWord.splice(prevIdsWord.indexOf(id), 1); + return prevIdsWord; + }); + } else { + } + } else { + if (currentWords.includes(id)) { + setIdsWord((prev) => { + let prev2 = [...prev]; + prev2.push(id); + return prev2; + }); + setCurrentWords((prev) => { + let prevIdsWord = [...prev]; + prevIdsWord.splice(prevIdsWord.indexOf(id), 1); + return prevIdsWord; + }); + } + } + } + }} + onMouseDown={(e) => { + e.stopPropagation(); + if (currentChuncksId != "none") { + setElemSelected([id, [...currentWords]]); + } + }} + onMouseUp={(e) => { + e.stopPropagation(); + if (currentChuncksId != "none") { + setElemSelected("none"); + } + }} + onMouseOver={(e) => { + e.stopPropagation(); + if (currentChuncksId != "none") { + if (elemSelected != "none") { + let p = [...currentWords]; + let t = [...idsWord]; + for (let wid = 0; wid < currentWords.length; wid++) { + if ( + elemSelected[1].indexOf(currentWords[wid]) < 0 && + (currentWords[wid] < elemSelected[0] || + currentWords[wid] > id) + ) { + t.push(currentWords[wid]); + + p.splice(p.indexOf(currentWords[wid]), 1); + } + } + setIdsWord(t); + setCurrentWords(p); + + for (let i = elemSelected[0]; i <= id; i++) { + if (idsWord.includes(i)) { + if (!currentWords.includes(i)) { + setCurrentWords((prev) => { + let prev2 = [...prev]; + prev2.push(i); + return prev2; + }); + setIdsWord((prev) => { + let prevIdsWord = [...prev]; + prevIdsWord.splice(prevIdsWord.indexOf(i), 1); + return prevIdsWord; + }); + } else { + } + } + } + } + } + }} + + className="Word" + id="Word" + style={{ fontSize: zoomRightJuxtalign, cursor: !currentWords.includes(id) && !idsWord.includes(id) ? 'default' : 'pointer' }} + data-selected={currentWords.includes(id)} + data-ctrl={ctrlPressed} + data-notSelectedBuHover={hoverNotSelectedWord.includes(id)} + data-notCLicable={ + !currentWords.includes(id) && !idsWord.includes(id) + } + > + {wt[0]} +
+ ) : ( +
+ {wt[0]} +
+ ) + ) + : + // TODO translation +
No content for this sentence
+ } +
+
+
+
+ {openHelp ? ( + <> +
+
+ +
+ align helper + +
+
+ setOpenHelp(false)} + style={{ position: 'fixed', bottom: 35, right: 35, cursor: 'pointer' }} + width="40" + height="40" + alt="information" + /> +
+ + ) : ( +
+ setOpenHelp(true)} + style={{ position: 'fixed', bottom: 35, right: 35, cursor: 'pointer' }} + width="40" + height="40" + alt="information" + /> +
+ )} +
+ {plse.blocks[currentBlockid] != undefined ? () : <>} +
+ ); +} diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/jxtl.json b/renderer/src/components/EditorPage/JuxtAlignEditor/jxtl.json new file mode 100644 index 000000000..a722aea4f --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/jxtl.json @@ -0,0 +1,1344 @@ +{ + "checksum": "2cdc3a25184f3347992a00ac98b7aa95", + "bookCode": "MRK", + "sentences": [ + { + "chunks": [ + { + "source": [ + { + "content": "ἀρχὴ", + "lemma": [ + "ἀρχή" + ], + "strong": [ + "G07460" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Commencement", + "checksum": "b48752a83d953d013c811885b834f5e6" + }, + { + "source": [ + { + "content": "τοῦ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "εὐαγγελίου", + "lemma": [ + "εὐαγγέλιον" + ], + "strong": [ + "G20980" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἰησοῦ", + "lemma": [ + "Ἰησοῦς" + ], + "strong": [ + "G24240" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "Χριστοῦ", + "lemma": [ + "χριστός" + ], + "strong": [ + "G55470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "de-l' évangile de-Jésus Christ,", + "checksum": "daf8e469de0f24996245a979d3ff277d" + }, + { + "source": [ + { + "content": "Υἱοῦ", + "lemma": [ + "υἱός" + ], + "strong": [ + "G52070" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + }, + { + "content": "Θεοῦ", + "lemma": [ + "θεός" + ], + "strong": [ + "G23160" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:1", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Fils de-Dieu.", + "checksum": "9db9a1844134dcaeda7ba09c6081e72d" + } + ], + "sourceString": "ἀρχὴ τοῦ εὐαγγελίου Ἰησοῦ Χριστοῦ, Υἱοῦ Θεοῦ.", + "checksum": "3857e7520a3fbf499796442d58543d07" + }, + { + "chunks": [ + { + "source": [ + { + "content": "καθὼς", + "lemma": [ + "καθώς" + ], + "strong": [ + "G25310" + ], + "morph": [ + "Gr", + "D", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "γέγραπται", + "lemma": [ + "γράφω" + ], + "strong": [ + "G11250" + ], + "morph": [ + "Gr", + "V", + "IEP3", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Ainsi il-a-été-écrit", + "checksum": "d4b9127bfb5533bfb91982a8168aff5f" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῷ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "Ἠσαΐᾳ", + "lemma": [ + "Ἠσαΐας" + ], + "strong": [ + "G22680" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῷ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:2", + "occurrence": 2, + "index": 1 + }, + { + "content": "προφήτῃ", + "lemma": [ + "προφήτης" + ], + "strong": [ + "G43960" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "DMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "dans Ésaïe le prophète :", + "checksum": "21ad0fe01d418e95349e0bc5c0db7189" + }, + { + "source": [ + { + "content": "ἰδοὺ", + "lemma": [ + "ὁράω" + ], + "strong": [ + "G37080" + ], + "morph": [ + "Gr", + "IDMAA2", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἀποστέλλω", + "lemma": [ + "ἀποστέλλω" + ], + "strong": [ + "G06490" + ], + "morph": [ + "Gr", + "V", + "IPA1", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "« Voici, j'envoie", + "checksum": "ba81c376bb6705961a8cf969493257b8" + }, + { + "source": [ + { + "content": "τὸν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:2", + "occurrence": 3, + "index": 0 + }, + { + "content": "ἄγγελόν", + "lemma": [ + "ἄγγελος" + ], + "strong": [ + "G00320" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "μου", + "lemma": [ + "ἐγώ" + ], + "strong": [ + "G14730" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "1G", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "le messager de-moi", + "checksum": "f2ff75cb1da5c13db076060ab4eaab09" + }, + { + "source": [ + { + "content": "πρὸ", + "lemma": [ + "πρό" + ], + "strong": [ + "G42530" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "G", + "", + "", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "προσώπου", + "lemma": [ + "πρόσωπον" + ], + "strong": [ + "G43830" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GNS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "σου", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "devant le-visage de-toi", + "checksum": "98c4cd0100a523357dfefea54879864c" + }, + { + "source": [ + { + "content": "ὃς", + "lemma": [ + "ὅς" + ], + "strong": [ + "G37390" + ], + "morph": [ + "Gr", + "RR", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "κατασκευάσει", + "lemma": [ + "κατασκευάζω" + ], + "strong": [ + "G26800" + ], + "morph": [ + "Gr", + "V", + "IFA3", + "", + "S", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "qui disposera", + "checksum": "4e0d1abd6264003d944b48a052976f7f" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:2", + "occurrence": 4, + "index": 0 + }, + { + "content": "ὁδόν", + "lemma": [ + "ὁδός" + ], + "strong": [ + "G35980" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:2", + "occurrence": 1, + "index": 0 + }, + { + "content": "σου", + "lemma": [ + "σύ" + ], + "strong": [ + "G47710" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "2G", + "S", + "" + ], + "cv": "1:2", + "occurrence": 2, + "index": 1 + } + ], + "gloss": "le chemin de-toi. ", + "checksum": "634fba193aecae27e562e4f5e7ccdf3d" + } + ], + "sourceString": "καθὼς γέγραπται ἐν τῷ Ἠσαΐᾳ τῷ προφήτῃ: ἰδοὺ, ἀποστέλλω τὸν ἄγγελόν μου πρὸ προσώπου σου, ὃς κατασκευάσει τὴν ὁδόν σου. ", + "checksum": "beb22187e60a1c70fc16aed1b493293a" + }, + { + "chunks": [ + { + "source": [ + { + "content": "φωνὴ", + "lemma": [ + "φωνή" + ], + "strong": [ + "G54560" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "βοῶντος", + "lemma": [ + "βοάω" + ], + "strong": [ + "G09940" + ], + "morph": [ + "Gr", + "V", + "PPA", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Une-voix *de-quelqu'un*-criant", + "checksum": "d7bba3ce7cb063b088a527127d4c64b0" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐρήμῳ", + "lemma": [ + "ἔρημος" + ], + "strong": [ + "G20480" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "dans le désert :", + "checksum": "f4b94e7958a1d1ba0c48f2530b4972ce" + }, + { + "source": [ + { + "content": "ἑτοιμάσατε", + "lemma": [ + "ἑτοιμάζω" + ], + "strong": [ + "G20900" + ], + "morph": [ + "Gr", + "V", + "MAA2", + "", + "P", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "“Préparez", + "checksum": "103befd8457500e77c97c398844820eb" + }, + { + "source": [ + { + "content": "τὴν", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:3", + "occurrence": 2, + "index": 0 + }, + { + "content": "ὁδὸν", + "lemma": [ + "ὁδός" + ], + "strong": [ + "G35980" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "Κυρίου", + "lemma": [ + "κύριος" + ], + "strong": [ + "G29620" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "le chemin de-Seigneur,", + "checksum": "6e2998f06583efbe44878d9e775c16eb" + }, + { + "source": [ + { + "content": "ποιεῖτε", + "lemma": [ + "ποιέω" + ], + "strong": [ + "G41600" + ], + "morph": [ + "Gr", + "V", + "MPA2", + "", + "P", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "faites", + "checksum": "7324ffb4bd6d3c6cfeb8788137e7ae52" + }, + { + "source": [ + { + "content": "τὰς", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "AFP", + "" + ], + "cv": "1:3", + "occurrence": 3, + "index": 0 + }, + { + "content": "τρίβους", + "lemma": [ + "τρίβος" + ], + "strong": [ + "G51470" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + }, + { + "content": "αὐτοῦ", + "lemma": [ + "αὐτός" + ], + "strong": [ + "G08460" + ], + "morph": [ + "Gr", + "RP", + "", + "", + "3GMS", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "les sentiers de-lui", + "checksum": "1d19441d8fe63d9fad191596aa72c039" + }, + { + "source": [ + { + "content": "εὐθείας", + "lemma": [ + "εὐθύς" + ], + "strong": [ + "G21170" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "AFP", + "" + ], + "cv": "1:3", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "droits\". »", + "checksum": "aafa1a1b4df4977d5c020a7da70297b9" + } + ], + "sourceString": "φωνὴ βοῶντος ἐν τῇ ἐρήμῳ, ἑτοιμάσατε τὴν ὁδὸν Κυρίου, εὐθείας ποιεῖτε τὰς τρίβους αὐτοῦ. ", + "checksum": "f1662caa2e83cd47b19bd7139a91a1f5" + }, + { + "chunks": [ + { + "source": [ + { + "content": "Ἰωάννης", + "lemma": [ + "Ἰωάννης" + ], + "strong": [ + "G24910" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "ὁ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "RD", + "", + "", + "", + "NMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "βαπτίζων", + "lemma": [ + "βαπτίζω" + ], + "strong": [ + "G09070" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἐγένετο", + "lemma": [ + "γίνομαι" + ], + "strong": [ + "G10960" + ], + "morph": [ + "Gr", + "V", + "IAM3", + "", + "S", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "Jean le baptisant fut", + "checksum": "a188b4e5d2b015913f88af18315bc935" + }, + { + "source": [ + { + "content": "ἐν", + "lemma": [ + "ἐν" + ], + "strong": [ + "G17220" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "D", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "τῇ", + "lemma": [ + "ὁ" + ], + "strong": [ + "G35880" + ], + "morph": [ + "Gr", + "EA", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:4", + "occurrence": 2, + "index": 0 + }, + { + "content": "ἐρήμῳ", + "lemma": [ + "ἔρημος" + ], + "strong": [ + "G20480" + ], + "morph": [ + "Gr", + "NS", + "", + "", + "", + "DFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "dans le désert,", + "checksum": "9ef78ccdeb5e81d003dfb397d9467479" + }, + { + "source": [ + { + "content": "καὶ", + "lemma": [ + "καί" + ], + "strong": [ + "G25320" + ], + "morph": [ + "Gr", + "CC", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "κηρύσσων", + "lemma": [ + "κηρύσσω" + ], + "strong": [ + "G27840" + ], + "morph": [ + "Gr", + "V", + "PPA", + "NMS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "et proclamant", + "checksum": "14aca1a9d08c23d4cef9dd022d5c7578" + }, + { + "source": [ + { + "content": "βάπτισμα", + "lemma": [ + "βάπτισμα" + ], + "strong": [ + "G09080" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "ANS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "μετανοίας", + "lemma": [ + "μετάνοια" + ], + "strong": [ + "G33410" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "un-baptême de-repentance", + "checksum": "0d1294314df2758d4f05fb8755bb9767" + }, + { + "source": [ + { + "content": "εἰς", + "lemma": [ + "εἰς" + ], + "strong": [ + "G15190" + ], + "morph": [ + "Gr", + "P", + "", + "", + "", + "", + "A", + "", + "", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἄφεσιν", + "lemma": [ + "ἄφεσις" + ], + "strong": [ + "G08590" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "AFS", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + }, + { + "content": "ἁμαρτιῶν", + "lemma": [ + "ἁμαρτία" + ], + "strong": [ + "G02660" + ], + "morph": [ + "Gr", + "N", + "", + "", + "", + "", + "GFP", + "" + ], + "cv": "1:4", + "occurrence": 1, + "index": 0 + } + ], + "gloss": "pour un-pardon des-péchés.", + "checksum": "d92a9eecc6fb6a4a568aec829ddb45c8" + } + ], + "sourceString": "ἐγένετο Ἰωάννης, ὁ βαπτίζων ἐν τῇ ἐρήμῳ, καὶ κηρύσσων βάπτισμα μετανοίας εἰς ἄφεσιν ἁμαρτιῶν. ", + "checksum": "ac95a20f2648533bc9c0859c51b34d68" + } + ] +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/modalSureEverythingAlign.js b/renderer/src/components/EditorPage/JuxtAlignEditor/modalSureEverythingAlign.js new file mode 100644 index 000000000..383f18912 --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/modalSureEverythingAlign.js @@ -0,0 +1,94 @@ +import Modal from "react-modal"; + +export function ModalSureEverythingAlign({shouldOpen,isAlignModalOpen,setIsAlignModalOpen, setOptionDontShowAlignModal, optionDontShowAlignModal}) { + let isEverythingAlign = false + for(const i in shouldOpen) { + isEverythingAlign = isEverythingAlign && shouldOpen[i] + } + return ( + setIsAlignModalOpen(false)} + style={{ + content: { + width: "fit-content", + height: "fit-content", + margin: "auto", // Add margin:auto to center the modal + textAlign: "center", + display:'flex', + background: "#f5f5f5f5", + flexDirection:'column', + }, + }} + > +
+
+ Is everything aligned? +
+
+
+ You validated this sentence as “Aligned” with at least 1 chunk not + aligned to anything. +
+
+ This can be normal, because a translation does not necessarily match + word-for-word it’s source text. +
+
+ Just check this is what you wanted. +
+
+
+ {setOptionDontShowAlignModal(!optionDontShowAlignModal)}} + /> +
+
  Don't show this again
+
+    you will still get a visual warning around un-aligned chunks, this + can be turned off in the settings +
+
+
+ +
+
setIsAlignModalOpen(false)} + style={{ + padding: 6, + margin: 24, + fontSize: 32, + borderWidth: 2, + borderRadius: 12, + borderStyle: "solid", + width: "fit-content", + display: "flex", + alignSelf: "center", // Align content horizontally + alignItems: "center", + cursor: 'pointer', + }} + > + OK +
+
+ ); +} diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/plse.json b/renderer/src/components/EditorPage/JuxtAlignEditor/plse.json new file mode 100644 index 000000000..deccc9dc0 --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/plse.json @@ -0,0 +1,34 @@ +{ + "bookcode": "MRK", + "checksum": "65q4zd6468v6s4f6juyk468bf8t7b98", + "blocks": [ + { + "sentences": [ + 0 + ], + "tradText": "***Ici*** commence la Bonne Nouvelle de **Jésus**-Christ Fils de Dieu.", + "alignments": [] + }, + { + "sentences": [ + 1 + ], + "tradText": "Le prophète **Ésaïe** avait bien dit : « Voici, j'envoie mon messager à toi. Il préparera ton chemin.", + "alignments": [] + }, + { + "sentences": [ + 2 + ], + "tradText": "Il y a une voix qui crie dans le désert : 'Préparez le chemin du Seigneur ! Rendez droits ses sentiers.'»", + "alignments": [] + }, + { + "sentences": [ + 3 + ], + "tradText": "**Alors Jean** est arrivé. Il baptisait dans le désert et appelait ***les gens*** à se faire baptiser ***en signe*** de leur changement de direction, afin d'être pardonnés de leur péchés.", + "alignments": [] + } + ] +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/JuxtAlignEditor/react-app-env.d.js b/renderer/src/components/EditorPage/JuxtAlignEditor/react-app-env.d.js new file mode 100644 index 000000000..6431bc5fc --- /dev/null +++ b/renderer/src/components/EditorPage/JuxtAlignEditor/react-app-env.d.js @@ -0,0 +1 @@ +/// diff --git a/renderer/src/components/EditorPage/JuxtaTextEditor/Editor.jsx b/renderer/src/components/EditorPage/JuxtaTextEditor/Editor.jsx index 8f9080b49..76084baa9 100644 --- a/renderer/src/components/EditorPage/JuxtaTextEditor/Editor.jsx +++ b/renderer/src/components/EditorPage/JuxtaTextEditor/Editor.jsx @@ -19,7 +19,7 @@ import { functionMapping } from './utils/insertFunctionMap'; import { useAutoSaveIndication } from '@/hooks2/useAutoSaveIndication'; import { onIntersection } from './utils/IntersectionObserver'; import JuxtalinearEditor from '@/components/EditorPage/JuxtalinearEditor'; // eslint-disable-line -// import { readUserSettings } from '@/core/projects/userSettings'; +import { readUserSettings } from '@/core/projects/userSettings'; export default function Editor(props) { const { @@ -39,6 +39,8 @@ export default function Editor(props) { setChapterNumber, setVerseNumber, triggerVerseInsert, + juxtaMode, + setJuxtaMode, } = props; const { @@ -51,6 +53,9 @@ export default function Editor(props) { const [jsonFileContent, setJsonFileContent] = useState(null); const [loadingSentencesInProgress, setLoadingSentencesInProgress] = useState(true); + const [zoomLeftJuxtalign, setZoomLeftJuxtalign] = useState(24); + const [zoomRightJuxtalign, setZoomRightJuxtalign] = useState(24); + const { states: { openSideBar, scrollLock }, actions: { setOpenSideBar, setSideBarTab }, @@ -69,8 +74,11 @@ export default function Editor(props) { const style = isSaving ? { cursor: 'progress' } : {}; const [fileName, setFileName] = useState(''); - const [sentences, setGlobalTotalSentences] = useState([]); - const [originText, setOriginText] = useState([]); + const [helpAldearyOpenedOnce, setHelpAldearyOpenedOnce] = useState(false); + const [sentences, setGlobalTotalSentences] = useState( + new Array(), + ); + const [originText, setOriginText] = useState([]) const [itemArrays, setItemArrays] = useState([]); const [curIndex, setCurIndex] = useState(0); @@ -109,6 +117,17 @@ export default function Editor(props) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [triggerVerseInsert]); + useEffect(() => { + async function getUserSettings() { + if (!userSettingsJson) { + let tmpUsrSet = await readUserSettings(); + setHelpAldearyOpenedOnce(true); + setUserSettingsJson(tmpUsrSet); + } + } + getUserSettings(); + }, [helpAldearyOpenedOnce]); + useAutoSaveIndication(isSaving); const remakeSentences = (stcs) => { @@ -167,7 +186,11 @@ export default function Editor(props) { }) .filter(({ chunk }) => chunk.length); } - return sentences[curIndex].chunks + let index = 0; + if (sentences[curIndex]) { + index = curIndex; + } + return sentences[index].chunks .map(({ source, gloss, checksum }, index) => { return { chunk: source @@ -194,7 +217,7 @@ export default function Editor(props) { setCurIndex(curIndex); setGlobalTotalSentences(remakeSentences(resContent.sentences)); setOriginText(resContent.sentences.map((sentence) => sentence.sourceString)); - if (resContent.sentences.length) { + if (resContent.sentences.length && resContent.sentences.length > 0) { setItemArrays([getItems(resContent.sentences)]); } } @@ -245,6 +268,7 @@ export default function Editor(props) { setVerseNumber, bookChange, setBookChange, + juxtaMode, }; return ( @@ -272,6 +296,10 @@ export default function Editor(props) { userSettingsJson, loadingSentencesInProgress, setLoadingSentencesInProgress, + helpAldearyOpenedOnce, + zoomLeftJuxtalign, + zoomRightJuxtalign, + userSettingsJson, setFileName, setGlobalSentences, setOriginText, @@ -282,6 +310,9 @@ export default function Editor(props) { setChapterNumber, setVerseNumber, setJsonFileContent, + setHelpAldearyOpenedOnce, + setZoomLeftJuxtalign, + setZoomRightJuxtalign, setUserSettingsJson, getItems, }} diff --git a/renderer/src/components/EditorPage/JuxtaTextEditor/EditorMenuBar.jsx b/renderer/src/components/EditorPage/JuxtaTextEditor/EditorMenuBar.jsx index ed0045880..fcb6d812f 100644 --- a/renderer/src/components/EditorPage/JuxtaTextEditor/EditorMenuBar.jsx +++ b/renderer/src/components/EditorPage/JuxtaTextEditor/EditorMenuBar.jsx @@ -2,7 +2,9 @@ import React, { useContext } from 'react'; import { ProjectContext } from '@/components/context/ProjectContext'; // import MenuDropdown from '@/components/MenuDropdown/MenuDropdown'; -import { LockClosedIcon, LockOpenIcon } from '@heroicons/react/24/outline'; +import { + LockClosedIcon, BookmarkIcon, EllipsisHorizontalCircleIcon, BookOpenIcon, LockOpenIcon, +} from '@heroicons/react/24/outline'; // import BibleNavigationX from '@/components/EditorPage/JuxtaTextEditor/BibleNavigationX'; import BibleNavigationX from './BibleNavigationX'; // import Buttons from './Buttons'; @@ -15,6 +17,8 @@ export default function EditorMenuBar(props) { setChapterNumber, verseNumber, setVerseNumber, + juxtaMode, + setJuxtaMode, // handleSelectedFont, // setTriggerVerseInsert, } = props; @@ -43,6 +47,35 @@ export default function EditorMenuBar(props) { title="navigation lock/unlock" className="flex items-center mr-auto" > + {/* {juxtaMode !== true ? ( +
+
+ ) : ( +
+
+ )} */}
{scrollLock === true ? ( */}
- {/*
-
- -
-
- - -
-
*/}
); } diff --git a/renderer/src/components/EditorPage/JuxtaTextEditor/index.jsx b/renderer/src/components/EditorPage/JuxtaTextEditor/index.jsx index 41df6b0af..c8bd78763 100644 --- a/renderer/src/components/EditorPage/JuxtaTextEditor/index.jsx +++ b/renderer/src/components/EditorPage/JuxtaTextEditor/index.jsx @@ -21,6 +21,7 @@ export default function JuxtaTextEditor() { const [chapterNumber, setChapterNumber] = useState(1); const [verseNumber, setVerseNumber] = useState(1); const [triggerVerseInsert, setTriggerVerseInsert] = useState(false); + const [juxtaMode, setJuxtaMode] = useState(true); // const [newVerChapNumber, setInsertNumber] = useState(''); // const [insertVerseRChapter, setInsertVerseRChapter] = useState(''); @@ -100,6 +101,8 @@ export default function JuxtaTextEditor() { handleSelectedFont, triggerVerseInsert, setTriggerVerseInsert, + juxtaMode, + setJuxtaMode, }; return ( <> diff --git a/renderer/src/components/EditorPage/JuxtalinearEditor/components/AppHeader/AppHeader.tsx b/renderer/src/components/EditorPage/JuxtalinearEditor/components/AppHeader/AppHeader.tsx index 6f7cc8280..7f9a848f4 100644 --- a/renderer/src/components/EditorPage/JuxtalinearEditor/components/AppHeader/AppHeader.tsx +++ b/renderer/src/components/EditorPage/JuxtalinearEditor/components/AppHeader/AppHeader.tsx @@ -69,8 +69,8 @@ export const AppHeader: React.FC = () => { useEffect(() => { if (sentences.length && sentences[curIndex]) { const [chap, vers] = sentences[curIndex].chunks[0].source[0].cv.split(":").map((digit: string) => parseInt(digit, 10)); - setChapterNumber(chap); - setVerseNumber(vers); + setChapterNumber(chap > chapterList.length ? chapterList.length : chap); + setVerseNumber(vers > verseList.length ? verseList.length : vers); } }, [curIndex, setCurIndex]); @@ -81,12 +81,14 @@ export const AppHeader: React.FC = () => { }, [closeNavigation]); const getSentenceFromCV = () => { - if ( - !sentences.length || - !sentences[curIndex].chunks[0]?.source.length || - sentences[curIndex].chunks[0]?.source[0] === null - ) { - return 0; + if (sentences[curIndex]) { + if ( + !sentences.length || + !sentences[curIndex].chunks[0]?.source.length || + sentences[curIndex].chunks[0]?.source[0] === null + ) { + return 0; + } } let chap: number, vers: number; @@ -110,6 +112,7 @@ export const AppHeader: React.FC = () => { const firstSource = () => { if ( + !sentences[curIndex] || !sentences.length || !sentences[curIndex].chunks[0]?.source.length || sentences[curIndex].chunks[0]?.source[0] === null @@ -121,6 +124,7 @@ export const AppHeader: React.FC = () => { const lastSource = () => { if ( + !sentences[curIndex] || !sentences.length || !sentences[curIndex].chunks.slice(-1)[0]?.source.length || sentences[curIndex].chunks.slice(-1)[0]?.source[0] === null diff --git a/renderer/src/components/EditorPage/JuxtalinearEditor/index.tsx b/renderer/src/components/EditorPage/JuxtalinearEditor/index.tsx index 22316ec28..61d224a29 100644 --- a/renderer/src/components/EditorPage/JuxtalinearEditor/index.tsx +++ b/renderer/src/components/EditorPage/JuxtalinearEditor/index.tsx @@ -1,11 +1,14 @@ import React from 'react'; import Home from './pages/Home'; import { Layout } from './components/Layout'; +// import JuxtAlignEditor from '../JuxtAlignEditor'; -const JuxtalinearEditor: React.FC = () => { +const JuxtalinearEditor: React.FC = ({ juxtaMode }) => { return ( + {/* {juxtaMode === true */} + {/* // : ()} */} ); }; diff --git a/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js b/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js index 40261083e..7b6ca9721 100644 --- a/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js +++ b/renderer/src/components/EditorPage/Navigation/reference/SelectBook.js @@ -20,12 +20,11 @@ export default function SelectBook({ }) { const [openNT, setOpenNT] = useState(true); const [openOT, setOpenOT] = useState(true); - + console.log() function toggleNT() { setOpenNT(true); setOpenOT(false); } - function toggleOT() { setOpenOT(true); setOpenNT(false); @@ -36,8 +35,10 @@ export default function SelectBook({ setOpenOT(true); } + function bookSelect(e, bookId) { e.preventDefault(); + console.log("selected :", bookId); onChangeBook(bookId, selectedBooks[0]); if (multiSelectBook === false) { selectBook(); } } @@ -143,13 +144,11 @@ export default function SelectBook({ key={book.name} role="presentation" aria-label={`nt-${book.name}`} - onClick={(e) => (call === 'audio-project' ? (Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) - ? (multiSelectBook - ? selectMultipleBooks(e, book.key, book.name) - : bookSelect(e, book.key, book.name)) : '') : (multiSelectBook - ? selectMultipleBooks(e, book.key, book.name) - : bookSelect(e, book.key, book.name)))} - className={`${call === 'audio-project' && !Object.prototype.hasOwnProperty.call(disableScope, (book.key).toUpperCase()) ? styles.disabled : (selectedBooks.includes((book.key).toUpperCase()) ? (styles.bookSelect, styles.active) : styles.bookSelect)}`} + onClick={(e) => ( + multiSelectBook + ? selectMultipleBooks(e, book.key, book.name) + : bookSelect(e, book.key, book.name))} + className={`${styles.bookSelect} ${selectedBooks.includes((book.key).toUpperCase()) ? styles.active : ''}`} > {book.name} diff --git a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js index 4d2a2f9f2..d1e1c14e5 100644 --- a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js +++ b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js @@ -193,6 +193,8 @@ export default function AdvancedSettingsDropdown({ call, project, projectType }) }; const selectCanon = (val) => { const value = val; + // console.log(val) + if (call === 'edit' && value.title === 'Other') { if (canonSpecification.title === 'Other') { value.currentScope = canonSpecification.currentScope; diff --git a/renderer/src/components/Resources/ResourceUtils/readResourceMetadata.js b/renderer/src/components/Resources/ResourceUtils/readResourceMetadata.js index da948d111..cadd42e01 100644 --- a/renderer/src/components/Resources/ResourceUtils/readResourceMetadata.js +++ b/renderer/src/components/Resources/ResourceUtils/readResourceMetadata.js @@ -15,7 +15,7 @@ export async function readResourceMetadata(projectsDir, resourcePath, setSubMenu const burrito = {}; burrito.projectDir = ref; burrito.value = JSON.parse(data); - burrito.type = userOrCommon; + burrito.type = userOrCommon; parseData.push(burrito); await localforage.setItem('resources', parseData); setSubMenuItems(parseData); diff --git a/renderer/src/components/ScriptureContentPicker/ScriptureContentPicker.tsx b/renderer/src/components/ScriptureContentPicker/ScriptureContentPicker.tsx new file mode 100644 index 000000000..f5997c6cc --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/ScriptureContentPicker.tsx @@ -0,0 +1,75 @@ +import React, { useContext } from 'react'; + +import { + ScriptureSource, + ScriptureContentGroup, + ScriptureContentPickerCallback, +} from './ScriptureContentPickerInterfaces'; +import { + ScriptureContentTypeMenu, + ScriptureContentList, + ScriptureSourceContext, + ContentContext, + ContentContextProvider, + ComponentTypeContext, +} from './shared/ui'; + +/* eslint-disable-next-line */ +export interface ScriptureContentPickerProps { + source: ScriptureSource; + onSelect: ScriptureContentPickerCallback; +} + +/* eslint-disable-next-line */ +export interface ScriptureContentPickerConfigProps { + source: ScriptureSource; + setSource: React.Dispatch>; +} + +function isScriptureSource( + source: ScriptureSource | undefined +): source is ScriptureSource { + return source !== undefined; +} + +interface PickerComponentProps { } + +// eslint-disable-next-line no-empty-pattern +export function PickerComponent({ }: PickerComponentProps) { + const { source } = useContext(ScriptureSourceContext); + const contentTypes = isScriptureSource(source) ? Object.keys(source) : []; + const { contentType, changeContentType } = useContext(ContentContext); + + const scriptureContentGroup: ScriptureContentGroup = + contentType && isScriptureSource(source) ? source[contentType] : {}; + + return ( +
+ +
+ {contentType && } +
+
+ ); +} + +export function ScriptureContentPicker({ + source, + onSelect, +}: ScriptureContentPickerProps) { + return ( + + + + + + + + ); +} + +export default ScriptureContentPicker; diff --git a/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerConfig.tsx b/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerConfig.tsx new file mode 100644 index 000000000..20fe804f6 --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerConfig.tsx @@ -0,0 +1,179 @@ +import React, { useState, useContext } from 'react'; + +import { + ScriptureSource, + ScriptureContent, + ScriptureContentType, + ScriptureContentGroup, + ScriptureContentMeta, + ScriptureContentLocalLabel, + ScriptureContentMetaExcludeTypeInfo, +} from './ScriptureContentPickerInterfaces'; + +import { + ScriptureContentTypeMenu, + ScriptureContentList, + ScriptureContentEditModal, + ScriptureSourceContext, + ContentContext, + ContentContextProvider, + ComponentTypeContext, +} from './shared/ui'; + +import AddIcon from '@/illustrations/add-button.svg'; + +/* eslint-disable-next-line */ +export interface ScriptureContentPickerConfigProps { + source: ScriptureSource; + setSource: React.Dispatch>; +} + +function isScriptureSource( + source: ScriptureSource | undefined +): source is ScriptureSource { + return source !== undefined; +} + +interface ConfigComponentProps { } + +// eslint-disable-next-line no-empty-pattern +export function ConfigComponent({ }: ConfigComponentProps) { + const { source } = useContext(ScriptureSourceContext); + const contentTypes = isScriptureSource(source) ? Object.keys(source) : []; + const { contentType, changeContentType } = useContext(ContentContext); + + const scriptureContentGroup: ScriptureContentGroup = + contentType && isScriptureSource(source) ? source[contentType] : {}; + + const [modalIsOpen, setIsOpen] = useState(false); + const initialState: ScriptureContentMetaExcludeTypeInfo = { + localLabel: '', + description: '', + language: '', + src: { + type: 'fs', + }, + books: [], + }; + + function openModal() { + setIsOpen(true); + } + + return ( +
+ +
+ {contentType && } + {contentType && ( +
+ { + openModal(); + }} + > + + +
+ )} +
+ {contentType && ( + + )} +
+ ); +} + +export function ScriptureContentPickerConfig({ + source, + setSource, +}: ScriptureContentPickerConfigProps) { + const addContent = ( + content: ScriptureContentMeta, + prevContent: ScriptureContentMetaExcludeTypeInfo + ) => { + setSource((prev) => { + const copy: ScriptureContent & { + localLabel?: string; + contentType?: string; + } = { ...content }; + delete copy.localLabel; + delete copy.contentType; + + const exists = Object.entries(prev[content.contentType]) + .filter(([key]) => key === prevContent.localLabel); + + if (exists.length > 0) { + const newContentGroup = Object.fromEntries( + Object.entries(prev[content.contentType]).map( + (entry) => { + if (entry[0] !== prevContent.localLabel) { + return entry; + } else { + return [content.localLabel, copy as ScriptureContent]; + } + } + ) + ); + + return { + ...prev, + [content.contentType]: { + ...newContentGroup, + }, + }; + } else { + const newContentGroup = Object.fromEntries( + Object.entries(prev[content.contentType]).filter( + ([key]) => key !== prevContent.localLabel + ) + ); + + return { + ...prev, + [content.contentType]: { + ...newContentGroup, + [content.localLabel as ScriptureContentLocalLabel]: + copy as ScriptureContent, + }, + }; + } + }); + }; + + const removeContent = ( + contentType: ScriptureContentType, + localLabel: ScriptureContentLocalLabel + ) => { + setSource((prev) => { + const copy: ScriptureContentGroup = { ...prev[contentType] }; + delete copy[localLabel]; + return { + ...prev, + [contentType]: copy, + }; + }); + }; + + return ( + + + + + + + + ); +} + +export default ScriptureContentPickerConfig; diff --git a/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerInterfaces.ts b/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerInterfaces.ts new file mode 100644 index 000000000..ec512b07d --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/ScriptureContentPickerInterfaces.ts @@ -0,0 +1,55 @@ +export function scriptureContentPickerInterfaces(): string { + return 'scripture-content-picker-interfaces'; +} + +export type ScriptureContentSrcType = 'fs' | 'url'; +export type ScriptureContent = { + description: string; + language: string; + src: { + type: ScriptureContentSrcType; + path?: string; + url?: string; + }; + books: string[]; +}; + +export type ScriptureContentMetaExcludeTypeInfo = ScriptureContent & { + localLabel: ScriptureContentLocalLabel; +}; +export type ScriptureContentMeta = ScriptureContentMetaExcludeTypeInfo & { + contentType: ScriptureContentType; +}; + +export type ScriptureContentDetail = ScriptureContentMeta & { + data: string; +}; + +export type ScriptureContentLocalLabel = string; +export type ScriptureContentGroup = Record< + ScriptureContentLocalLabel, + ScriptureContent +>; + +export type ScriptureContentType = string; +export type ScriptureSource = Record< + ScriptureContentType, + ScriptureContentGroup +>; + +export type ScriptureContentPickerError = unknown; + +export type ScriptureContentPickerCallback = ( + content: ScriptureContentDetail, + error: ScriptureContentPickerError | null +) => unknown; + +export type ScriptureContentSourceGroup = Record< + ScriptureContentLocalLabel, + string +>; + +export type ScriptureSourceContent = Record< + ScriptureContentType, + ScriptureContentSourceGroup +>; diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/filled-delete-icon.tsx b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/filled-delete-icon.tsx new file mode 100644 index 000000000..3c24007bf --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/filled-delete-icon.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +type FilledDeleteIconProps = { + fill: string; +} +export function FilledDeleteIcon({ fill }: FilledDeleteIconProps) { + return ( + + + + ); +} + +export default FilledDeleteIcon; diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.module.css b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.module.css new file mode 100644 index 000000000..efe882e6e --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.module.css @@ -0,0 +1,61 @@ +.state_item_container { + display: flex; + justify-content: center; + align-items: center; + gap: 5px; + line-height: 30px; + border-radius: 15px; + border: 1px solid rgba(0, 0, 0, 0.6); + padding: 0 4px 0 12px; +} + +.state_item_content { + max-width: 200px; + word-wrap: break-word; +} + +.state_item_icon_container { + width: 24px; + height: 24px; + cursor: pointer; +} + +.multiple_input_container { + display: flex; + align-items: flex-start; + flex-wrap: wrap; + gap: 4px; + position: relative; + border: 1px solid rgba(0, 0, 0); + padding: 8px; +} + +.multiple_input_container:focus { + outline: 1px solid black; +} + +.multipe_input { + width: 100%; + height: 32px; + line-height: 32px; + border: none; +} + +.multipe_input:hover, .multipe_input:focus { + outline: none; +} + +.multiple_input_panel { + position: absolute; + bottom: 0; + transform: translateY(100%); + left: 0; + width: 100%; + cursor: pointer; + line-height: 32px; + text-overflow: clip; + background-color: white; + padding: 0 8px; + word-wrap: break-word; + box-shadow: 0px 5px 5px 2px rgba(0, 0, 0, 0.3); +} \ No newline at end of file diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.tsx b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.tsx new file mode 100644 index 000000000..169966a84 --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/multiple-input.tsx @@ -0,0 +1,64 @@ +import React, { useState, useCallback, ChangeEventHandler } from 'react'; + +import styles from './multiple-input.module.css'; + +import StateItem from './state-item'; + +export interface MultipleInputProps { + states: string[]; + onAddState(state: string): void; + onDeleteState(state: string): void; + placeholder?: string; +} + +export function MultipleInput({ + states, + onAddState, + onDeleteState, + placeholder, +}: MultipleInputProps) { + const [newState, setNewState] = useState(''); + + const handleAddNewState = useCallback(() => { + if (newState.trim() === '') { + return; + } + + if (states.find((item) => item === newState)) { + return; + } + + onAddState(newState); + setNewState(''); + }, [newState, onAddState, states]); + + const handleChangeNewState: ChangeEventHandler = + useCallback((e) => { + setNewState(e.target.value); + }, []); + + return ( +
+ {states.map((state) => ( + + ))} + + {newState.trim() !== '' && !states.find((item) => item === newState) ? ( +
+ {newState} +
+ ) : null} +
+ ); +} + +export default MultipleInput; diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/state-item.tsx b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/state-item.tsx new file mode 100644 index 000000000..12b847e3b --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/multiple-input/state-item.tsx @@ -0,0 +1,46 @@ +import React from 'react'; + +import FilledDeleteIcon from './filled-delete-icon'; + +import styles from './multiple-input.module.css'; + +import { useState } from 'react'; + +export interface StateItemProps { + state: string; + onClick(state: string): void; +} + +export function StateItem({ state, onClick }: StateItemProps) { + const [isHover, setIsHover] = useState(false); + + const handleDelete = () => { + onClick(state); + }; + + const handleSetHover = () => { + setIsHover(true); + }; + + const handleUnsetHover = () => { + setIsHover(false); + }; + + const filledColor = isHover ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.4)'; + + return ( +
+
{state}
+
+ +
+
+ ); +} + +export default StateItem; diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.module.css b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.module.css new file mode 100644 index 000000000..754ceafb0 --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.module.css @@ -0,0 +1,32 @@ +.confirm_modal_container { + display: flex; + flex-direction: column; + gap: 20px +} + +.confirm_modal_title { + border-bottom: 1px solid #0d948875; +} + +.confirm_modal_actions { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 16px; +} + +.confirm_modal_actions button { + border: none; + cursor: pointer; + padding: 8px 16px; +} + +.confirm_modal_actions button.cancel { + background-color: #ef4444; + color: white; +} + +.confirm_modal_actions button.confirm { + background-color: #059669; + color: white; +} \ No newline at end of file diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.tsx b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.tsx new file mode 100644 index 000000000..955570e0c --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-confirm-modal/scripture-content-confirm-modal.tsx @@ -0,0 +1,63 @@ +import React from 'react'; + +import Modal from 'react-modal'; + +import styles from './scripture-content-confirm-modal.module.css'; + +/* eslint-disable-next-line */ +export interface ScriptureContentConfirmModalProps { + title: string; + message?: string; + onConfirm(): void; + onCancel(): void; + isOpen: boolean; + setIsOpen: (open: boolean) => void; +} + +const customStyles = { + content: { + top: '50%', + left: '50%', + right: 'auto', + bottom: 'auto', + marginRight: '-50%', + transform: 'translate(-50%, -50%)', + }, +}; + +export function ScriptureContentConfirmModal({ + title, + message, + onConfirm, + onCancel, + isOpen, + setIsOpen, +}: ScriptureContentConfirmModalProps) { + const closeModal = () => { + setIsOpen(false); + }; + + return ( + +
+
+

{title}

+
+ {message ?
{message}
: null} + +
+ + +
+
+
+ ); +} + +export default ScriptureContentConfirmModal; diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.module.css b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.module.css new file mode 100644 index 000000000..417bdccb0 --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.module.css @@ -0,0 +1,32 @@ +.form_content_wrap { + display: flex; +} + +.form_content_inputs>div { + display: flex; + margin: 0.5rem 0.5rem; +} + +.form_content_inputs>div>div:nth-child(1) { + width: 100px; +} + +.form_content_inputs>div>div:nth-child(2) { + width: 400px; +} + +.form_content_inputs>div>div:nth-child(2)>* { + width: 100%; + padding: 0.5rem; + +} + +.form_content_btn-wrap { + display: flex; + align-items: flex-end; + margin: 0.5rem; +} + +.form_content_btn-wrap button { + padding: 0.5rem 1rem; +} \ No newline at end of file diff --git a/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.tsx b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.tsx new file mode 100644 index 000000000..20279dbee --- /dev/null +++ b/renderer/src/components/ScriptureContentPicker/shared/ui/components/scripture-content-edit-modal/scripture-content-edit-modal.tsx @@ -0,0 +1,241 @@ +import React, { useState, useContext, useEffect, useCallback } from 'react'; + +import { + ScriptureContentSrcType, + ScriptureContentMetaExcludeTypeInfo, + ScriptureContentType, +} from '../../../../ScriptureContentPickerInterfaces'; +import styles from './scripture-content-edit-modal.module.css'; +import Modal from 'react-modal'; +import { + ContentContext, + ScriptureSourceContext, +} from '../../contexts/scripture-content-picker-context'; +import { + windowsPathValidation, + linuxPathValidation, +} from '../../../utils'; +import MultipleInput from '../multiple-input/multiple-input'; + +/* eslint-disable-next-line */ +export interface ScriptureContentEditModalProps { + initialState: ScriptureContentMetaExcludeTypeInfo; + isOpen: boolean; + setIsOpen: (open: boolean) => void; +} + +const customStyles = { + content: { + top: '50%', + left: '50%', + right: 'auto', + bottom: 'auto', + marginRight: '-50%', + transform: 'translate(-50%, -50%)', + }, +}; + +export function ScriptureContentEditModal({ + initialState, + isOpen, + setIsOpen, +}: ScriptureContentEditModalProps) { + const contentType = useContext(ContentContext) + .contentType as ScriptureContentType; + const { addContent } = useContext(ScriptureSourceContext); + const [scriptureContent, setScriptureContent] = + useState(initialState); + + const srcRef = React.useRef(null); + + useEffect(() => { + setScriptureContent(initialState); + }, [initialState]); + + const closeModal = () => { + setIsOpen(false); + } + + const handleChange = ( + event: React.ChangeEvent< + HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement + > + ) => { + if (event.target.name === 'type') { + setScriptureContent((prev) => ({ + ...prev, + src: { + type: event.target.value as ScriptureContentSrcType, + }, + })); + } else if (event.target.name === 'source') { + setScriptureContent((prev: ScriptureContentMetaExcludeTypeInfo) => { + return { + ...prev, + src: { + type: prev.src.type as ScriptureContentSrcType, + path: prev.src.type === 'fs' ? event.target.value : undefined, + url: prev.src.type === 'url' ? event.target.value : undefined, + }, + }; + }); + if (scriptureContent.src.type === 'fs') { + const winPathValid = windowsPathValidation(event.target.value); + const linuxPathValid = linuxPathValidation(event.target.value); + if (!winPathValid && !linuxPathValid) + srcRef.current?.setCustomValidity('Please fill correct path!'); + else srcRef.current?.setCustomValidity(''); + } + + if (scriptureContent.src.type === 'url') { + const httpRegex = + // eslint-disable-next-line no-useless-escape + /^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/; + if (!httpRegex.test(event.target.value)) + srcRef.current?.setCustomValidity('Please fill correct url!'); + else srcRef.current?.setCustomValidity(''); + } + + srcRef.current?.reportValidity(); + } else { + setScriptureContent((prev) => ({ + ...prev, + [event.target.name]: event.target.value, + })); + } + } + + const handleAddNewBook = useCallback((book: string) => { + setScriptureContent((prev) => { + return { + ...prev, + books: [...prev.books.filter((item) => item !== book), book], + }; + }); + }, []); + + const handleDeleteBook = useCallback((book: string) => { + setScriptureContent((prev) => { + return { + ...prev, + books: [...prev.books.filter((item) => item !== book)], + }; + }); + }, []); + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault(); + + addContent && + addContent({ ...scriptureContent, contentType }, initialState); + setScriptureContent(initialState); + closeModal(); + } + + return ( + +
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
*/} - {/*
+ {/*
*/} -
+
) ))}
diff --git a/renderer/src/components/AudioRecorder/components/Player.js b/renderer/src/components/AudioRecorder/components/Player.js index ce63fb5b8..42949c077 100644 --- a/renderer/src/components/AudioRecorder/components/Player.js +++ b/renderer/src/components/AudioRecorder/components/Player.js @@ -1,4 +1,4 @@ -/* eslint-disable no-nested-ternary */ +/* eslint-disable */ import { TrashIcon, MicrophoneIcon, @@ -53,7 +53,7 @@ const Player = ({ if (sliding) { setVolume(value); } else if (action === 'inc' && !sliding) { - // if not sliding the value will be the step value + // if not sliding the value will be the step value setVolume((prev) => (prev > 0.9 ? prev : prev + value)); } else if (action === 'dec' && !sliding) { setVolume((prev) => (prev < 0.1 ? prev : prev - value)); @@ -160,7 +160,7 @@ const Player = ({ // setVolume((prev) => (prev > 0.9 ? prev : prev + 0.1)); handleVolumeChange('inc'); break; - case 189: // --> - (left to +) + case 189: // --> - (left to +) handleVolumeChange('dec'); // setVolume((prev) => (prev < 0.1 ? prev : prev - 0.1)); break; @@ -168,7 +168,7 @@ const Player = ({ default: break; } - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line react-hooks/exhaustive-deps }, [trigger]); // ---> change to space for play and pause useEffect(() => { @@ -221,7 +221,7 @@ const Player = ({ > {s} - ))} + ))}
@@ -242,60 +242,60 @@ const Player = ({
{((trigger === 'record' || trigger === 'recResume') && ( - <> -
- {t('label-pause')} -
- - - )) - || (trigger === 'recPause' && ( - <> -
- {t('label-continue')} -
- - - )) || ( - <> -
- {t('label-record')} -
- - - )} + <> +
+ {t('label-pause')} +
+ + + )) + || (trigger === 'recPause' && ( + <> +
+ {t('label-continue')} +
+ + + )) || ( + <> +
+ {t('label-record')} +
+ + + )}
@@ -432,19 +432,16 @@ const Player = ({
+ )} - )} + )}
); }; diff --git a/renderer/src/components/AudioRecorder/core/audioUtils.js b/renderer/src/components/AudioRecorder/core/audioUtils.js index 7e82974ef..7f65dd396 100644 --- a/renderer/src/components/AudioRecorder/core/audioUtils.js +++ b/renderer/src/components/AudioRecorder/core/audioUtils.js @@ -4,102 +4,102 @@ import * as logger from '../../../logger'; const toWav = require('audiobuffer-to-wav'); function sec_to_min_sec_milli_convertor(time) { - logger.debug('audioUtils.js', 'In time conversion function'); - let milliseconds = time.toString().split('.')[1]; - if (milliseconds === undefined) { - milliseconds = '0'; - } - const minutes = Math.floor(time / 60); - const seconds = (time - minutes * 60).toString().split('.')[0].padStart(2, 0); - const formatedStringTime = `${minutes.toString().padStart(2, 0)}:${seconds}:${milliseconds.padStart(2, 0)}`; - return [minutes, seconds, milliseconds, formatedStringTime]; + logger.debug('audioUtils.js', 'In time conversion function'); + let milliseconds = time.toString().split('.')[1]; + if (milliseconds === undefined) { + milliseconds = '0'; + } + const minutes = Math.floor(time / 60); + const seconds = (time - minutes * 60).toString().split('.')[0].padStart(2, 0); + const formatedStringTime = `${minutes.toString().padStart(2, 0)}:${seconds}:${milliseconds.padStart(2, 0)}`; + return [minutes, seconds, milliseconds, formatedStringTime]; } async function generateTimeStampData(buffers, book, chapter) { - logger.debug('audioUtils.js', 'In TimeStamp Generation'); - return new Promise((resolve) => { - let fileString = 'verse_number\tstart_timestamp\tduration\n'; - const seperator = '\t'; - const fileType = 'tsv'; - const file = `${book}_${chapter.toString().padStart(3, 0)}.${fileType}`; - let start = 0; - buffers.forEach((buffer, index) => { - const currentVerse = `Verse_${(index + 1).toString().padStart(2, 0)}`; - const startTimeString = sec_to_min_sec_milli_convertor(start)[3]; - const durationString = sec_to_min_sec_milli_convertor(buffer.duration)[3]; - fileString += `${currentVerse + seperator + startTimeString + seperator + durationString}\n`; - start += buffer.duration; - }); - resolve([file, fileString]); + logger.debug('audioUtils.js', 'In TimeStamp Generation'); + return new Promise((resolve) => { + let fileString = 'verse_number\tstart_timestamp\tduration\n'; + const seperator = '\t'; + const fileType = 'tsv'; + const file = `${book}_${chapter.toString().padStart(3, 0)}.${fileType}`; + let start = 0; + buffers.forEach((buffer, index) => { + const currentVerse = `Verse_${(index + 1).toString().padStart(2, 0)}`; + const startTimeString = sec_to_min_sec_milli_convertor(start)[3]; + const durationString = sec_to_min_sec_milli_convertor(buffer.duration)[3]; + fileString += `${currentVerse + seperator + startTimeString + seperator + durationString}\n`; + start += buffer.duration; }); + resolve([file, fileString]); + }); } async function fetchAndCombineAudio(audioArr, path) { - logger.debug('audioUtils.js', 'In Fetch and merge audio function'); - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { - const context = new window.AudioContext(); + logger.debug('audioUtils.js', 'In Fetch and merge audio function'); + // eslint-disable-next-line no-async-promise-executor + return new Promise(async (resolve) => { + const context = new window.AudioContext(); - // store the decoded buff - const sources = []; + // store the decoded buff + const sources = []; - // eslint-disable-next-line no-restricted-syntax, guard-for-in - for (const url of audioArr) { - try { - const response = await fetch(path.join('file://', url)); - const buffer = await response.arrayBuffer(); - const decodedData = await context.decodeAudioData(buffer); - sources.push(decodedData); - } catch (err) { - logger.error('audioUtils.js', `Error reading audio - ${url} : ${err}`); - } - } + // eslint-disable-next-line no-restricted-syntax, guard-for-in + for (const url of audioArr) { + try { + const response = await fetch(path.join('file://', url)); + const buffer = await response.arrayBuffer(); + const decodedData = await context.decodeAudioData(buffer); + sources.push(decodedData); + } catch (err) { + logger.error('audioUtils.js', `Error reading audio - ${url} : ${err}`); + } + } - logger.debug('audioUtils.js', 'In fetchAndCombineAudio : Fetch audio success '); + logger.debug('audioUtils.js', 'In fetchAndCombineAudio : Fetch audio success '); - const totalLength = sources.reduce((total, source) => total + source.length, 0); - const output = context.createBuffer(1, totalLength, context.sampleRate); + const totalLength = sources.reduce((total, source) => total + source.length, 0); + const output = context.createBuffer(1, totalLength, context.sampleRate); - let offset = 0; + let offset = 0; - // eslint-disable-next-line no-restricted-syntax - for (const source of sources) { - output.copyToChannel(source.getChannelData(0), 0, offset); - offset += source.length; - } - const wavData = toWav(output); - logger.debug('audioUtils.js', 'In fetchAndCombineAudio : generate wav success'); - const blob = new Blob([new DataView(wavData)], { type: 'audio/wav' }); - logger.debug('audioUtils.js', 'In fetchAndCombineAudio : Generate Final merged Audio success '); - resolve({ blob, buffers: sources }); - }); + // eslint-disable-next-line no-restricted-syntax + for (const source of sources) { + output.copyToChannel(source.getChannelData(0), 0, offset); + offset += source.length; + } + const wavData = toWav(output); + logger.debug('audioUtils.js', 'In fetchAndCombineAudio : generate wav success'); + const blob = new Blob([new DataView(wavData)], { type: 'audio/wav' }); + logger.debug('audioUtils.js', 'In fetchAndCombineAudio : Generate Final merged Audio success '); + resolve({ blob, buffers: sources }); + }); } function sortingLogic(a, b) { - // expected format : '1_10_1_default.mp3', - return a.split('_')[1] - b.split('_')[1]; + // expected format : '1_10_1_default.mp3', + return a.split('_')[1] - b.split('_')[1]; } export async function mergeAudio(audioArr, dirPath, path, book, chapter) { - logger.debug('audioUtils.js', 'In Merge Audio fucntion'); - // const audio = new ConcatAudio(window); - return new Promise((resolve) => { - audioArr.sort(sortingLogic); - for (let i = 0; i < audioArr.length; i++) { - audioArr[i] = path.join(dirPath, audioArr[i]); - } - logger.debug('audioUtils.js', 'start merging audios'); + logger.debug('audioUtils.js', 'In Merge Audio fucntion'); + // const audio = new ConcatAudio(window); + return new Promise((resolve) => { + audioArr.sort(sortingLogic); + for (let i = 0; i < audioArr.length; i++) { + audioArr[i] = path.join(dirPath, audioArr[i]); + } + logger.debug('audioUtils.js', 'start merging audios'); - fetchAndCombineAudio(audioArr, path) - .then(async (mergedData) => { - logger.debug('audioUtils.js', `Audio merge success . Started Generate Timestamp : ${book} : ${chapter}`); - generateTimeStampData(mergedData.buffers, book, chapter) - .then((timeStampData) => { - logger.debug('audioUtils.js', `return Merged Audio for chapter : ${book} : ${chapter}`); - resolve([mergedData.blob, timeStampData]); - }); - }); - }); + fetchAndCombineAudio(audioArr, path) + .then(async (mergedData) => { + logger.debug('audioUtils.js', `Audio merge success . Started Generate Timestamp : ${book} : ${chapter}`); + generateTimeStampData(mergedData.buffers, book, chapter) + .then((timeStampData) => { + logger.debug('audioUtils.js', `return Merged Audio for chapter : ${book} : ${chapter}`); + resolve([mergedData.blob, timeStampData]); + }); + }); + }); } // old snippet for reference diff --git a/renderer/src/components/AudioRecorder/core/concatAudio.js b/renderer/src/components/AudioRecorder/core/concatAudio.js index b4f97ecd5..10954c269 100644 --- a/renderer/src/components/AudioRecorder/core/concatAudio.js +++ b/renderer/src/components/AudioRecorder/core/concatAudio.js @@ -1,197 +1,197 @@ export default class concatAudio { - constructor({ sampleRate = 48000, window } = {}) { - this._sampleRate = sampleRate; - this._context = this._createContext(window); - this._window = window; - } - - // eslint-disable-next-line class-methods-use-this - _createContext(window) { - window.AudioContext = window.AudioContext + constructor({ sampleRate = 48000, window } = {}) { + this._sampleRate = sampleRate; + this._context = this._createContext(window); + this._window = window; + } + + // eslint-disable-next-line class-methods-use-this + _createContext(window) { + window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext; - return new window.AudioContext(); - } - - async fetchAudio(...filepaths) { - const files = filepaths.map(async (filepath) => { - const buffer = await fetch(filepath).then((response) => response.arrayBuffer()); - const decodedBuff = await this._context.decodeAudioData(buffer); - return decodedBuff; - }); - const allFiles = await Promise.all(files); - return allFiles; - } - - mergeAudio(buffers) { - const output = this._context.createBuffer( - 1, - this._sampleRate * this._maxDuration(buffers), - this._sampleRate, - ); - // eslint-disable-next-line array-callback-return - buffers.map((buffer) => { - if (buffer.getChannelData(0) !== undefined) { - for (let i = buffer.getChannelData(0).length - 1; i >= 0; i--) { - output.getChannelData(0)[i] += buffer.getChannelData(0)[i]; - } - } - }); - return output; - } - - concatAudio(buffers) { - const output = this._context.createBuffer( - 1, - this._totalLength(buffers), - this._sampleRate, - ); - let offset = 0; - // eslint-disable-next-line array-callback-return - buffers.map((buffer) => { - output.getChannelData(0).set(buffer.getChannelData(0), offset); - offset += buffer.length; - }); - return output; - } - - play(buffer) { - const source = this._context.createBufferSource(); - source.buffer = buffer; - source.connect(this._context.destination); - source.start(); - return source; - } - - exportDataview(buffer) { - const recorded = this._interleave(buffer); - const dataview = this._writeHeaders(recorded); - return dataview; - } - - export(buffer, audioType) { - const type = audioType || 'audio/mp3'; - const recorded = this._interleave(buffer); - const dataview = this._writeHeaders(recorded); - const audioBlob = new Blob([dataview], { type }); - - return { - blob: audioBlob, - url: this._renderURL(audioBlob), - element: this._renderAudioElement(audioBlob, type), - }; - } - - async download(blob, filename) { - const name = filename || 'crunker'; - const a = document.createElement('a'); - a.style = 'display: none'; - a.href = this._renderURL(blob); - a.download = `${name}.${blob.type.split('/')[1]}`; - a.click(); - return a; - } - - notSupported(callback) { - return !this._isSupported() && callback(); - } - - close() { - this._context.close(); - return this; - } - - // eslint-disable-next-line class-methods-use-this - _maxDuration(buffers) { - // eslint-disable-next-line prefer-spread - const maxDuration = Math.max.apply( - Math, - buffers.map((buffer) => buffer.duration), - ); - return maxDuration; - } - - // eslint-disable-next-line class-methods-use-this - _totalLength(buffers) { - return buffers - .map((buffer) => buffer.length) - .reduce((a, b) => a + b, 0); - } - - // eslint-disable-next-line class-methods-use-this - _isSupported() { - return 'AudioContext' in window; - } - - _writeHeaders(buffer) { - const arrayBuffer = new ArrayBuffer(44 + buffer.length * 2); - const view = new DataView(arrayBuffer); - this._writeString(view, 0, 'RIFF'); - view.setUint32(4, 32 + buffer.length * 2, true); - this._writeString(view, 8, 'WAVE'); - this._writeString(view, 12, 'fmt '); - view.setUint32(16, 16, true); - view.setUint16(20, 1, true); - view.setUint16(22, 2, true); - view.setUint32(24, this._sampleRate, true); - view.setUint32(28, this._sampleRate * 4, true); - view.setUint16(32, 4, true); - view.setUint16(34, 16, true); - this._writeString(view, 36, 'data'); - view.setUint32(40, buffer.length * 2, true); - - return this._floatTo16BitPCM(view, buffer, 44); - } - - // eslint-disable-next-line class-methods-use-this - _floatTo16BitPCM(dataview, buffer, offset) { - // eslint-disable-next-line no-param-reassign - for (let i = 0; i < buffer.length; i++, offset += 2) { - const tmp = Math.max(-1, Math.min(1, buffer[i])); - dataview.setInt16( - offset, - tmp < 0 ? tmp * 0x8000 : tmp * 0x7fff, - true, - ); - } - return dataview; - } - - // eslint-disable-next-line class-methods-use-this - _writeString(dataview, offset, header) { - // let output; - for (let i = 0; i < header.length; i++) { - dataview.setUint8(offset + i, header.charCodeAt(i)); - } - } - - // eslint-disable-next-line class-methods-use-this - _interleave(input) { - const buffer = input.getChannelData(0); - const length = buffer.length * 2; - const result = new Float32Array(length); - let index = 0; - let inputIndex = 0; - - while (index < length) { - result[index += 1] = buffer[inputIndex]; - result[index += 1] = buffer[inputIndex]; - inputIndex += 1; + return new window.AudioContext(); + } + + async fetchAudio(...filepaths) { + const files = filepaths.map(async (filepath) => { + const buffer = await fetch(filepath).then((response) => response.arrayBuffer()); + const decodedBuff = await this._context.decodeAudioData(buffer); + return decodedBuff; + }); + const allFiles = await Promise.all(files); + return allFiles; + } + + mergeAudio(buffers) { + const output = this._context.createBuffer( + 1, + this._sampleRate * this._maxDuration(buffers), + this._sampleRate, + ); + // eslint-disable-next-line array-callback-return + buffers.map((buffer) => { + if (buffer.getChannelData(0) !== undefined) { + for (let i = buffer.getChannelData(0).length - 1; i >= 0; i--) { + output.getChannelData(0)[i] += buffer.getChannelData(0)[i]; } - return result; - } - - _renderAudioElement(blob, type) { - const audio = document.createElement('audio'); - audio.controls = 'controls'; - audio.type = type; - audio.src = this._renderURL(blob); - return audio; - } - - // eslint-disable-next-line class-methods-use-this - _renderURL(blob) { - // return (window.URL || window.webkitURL).createObjectURL(blob); - return (this._window.URL || this._window.webkitURL).createObjectURL(blob); - } + } + }); + return output; + } + + concatAudio(buffers) { + const output = this._context.createBuffer( + 1, + this._totalLength(buffers), + this._sampleRate, + ); + let offset = 0; + // eslint-disable-next-line array-callback-return + buffers.map((buffer) => { + output.getChannelData(0).set(buffer.getChannelData(0), offset); + offset += buffer.length; + }); + return output; + } + + play(buffer) { + const source = this._context.createBufferSource(); + source.buffer = buffer; + source.connect(this._context.destination); + source.start(); + return source; + } + + exportDataview(buffer) { + const recorded = this._interleave(buffer); + const dataview = this._writeHeaders(recorded); + return dataview; + } + + export(buffer, audioType) { + const type = audioType || 'audio/mp3'; + const recorded = this._interleave(buffer); + const dataview = this._writeHeaders(recorded); + const audioBlob = new Blob([dataview], { type }); + + return { + blob: audioBlob, + url: this._renderURL(audioBlob), + element: this._renderAudioElement(audioBlob, type), + }; + } + + async download(blob, filename) { + const name = filename || 'crunker'; + const a = document.createElement('a'); + a.style = 'display: none'; + a.href = this._renderURL(blob); + a.download = `${name}.${blob.type.split('/')[1]}`; + a.click(); + return a; + } + + notSupported(callback) { + return !this._isSupported() && callback(); + } + + close() { + this._context.close(); + return this; + } + + // eslint-disable-next-line class-methods-use-this + _maxDuration(buffers) { + // eslint-disable-next-line prefer-spread + const maxDuration = Math.max.apply( + Math, + buffers.map((buffer) => buffer.duration), + ); + return maxDuration; + } + + // eslint-disable-next-line class-methods-use-this + _totalLength(buffers) { + return buffers + .map((buffer) => buffer.length) + .reduce((a, b) => a + b, 0); + } + + // eslint-disable-next-line class-methods-use-this + _isSupported() { + return 'AudioContext' in window; + } + + _writeHeaders(buffer) { + const arrayBuffer = new ArrayBuffer(44 + buffer.length * 2); + const view = new DataView(arrayBuffer); + this._writeString(view, 0, 'RIFF'); + view.setUint32(4, 32 + buffer.length * 2, true); + this._writeString(view, 8, 'WAVE'); + this._writeString(view, 12, 'fmt '); + view.setUint32(16, 16, true); + view.setUint16(20, 1, true); + view.setUint16(22, 2, true); + view.setUint32(24, this._sampleRate, true); + view.setUint32(28, this._sampleRate * 4, true); + view.setUint16(32, 4, true); + view.setUint16(34, 16, true); + this._writeString(view, 36, 'data'); + view.setUint32(40, buffer.length * 2, true); + + return this._floatTo16BitPCM(view, buffer, 44); + } + + // eslint-disable-next-line class-methods-use-this + _floatTo16BitPCM(dataview, buffer, offset) { + // eslint-disable-next-line no-param-reassign + for (let i = 0; i < buffer.length; i++, offset += 2) { + const tmp = Math.max(-1, Math.min(1, buffer[i])); + dataview.setInt16( + offset, + tmp < 0 ? tmp * 0x8000 : tmp * 0x7fff, + true, + ); + } + return dataview; + } + + // eslint-disable-next-line class-methods-use-this + _writeString(dataview, offset, header) { + // let output; + for (let i = 0; i < header.length; i++) { + dataview.setUint8(offset + i, header.charCodeAt(i)); + } + } + + // eslint-disable-next-line class-methods-use-this + _interleave(input) { + const buffer = input.getChannelData(0); + const length = buffer.length * 2; + const result = new Float32Array(length); + let index = 0; + let inputIndex = 0; + + while (index < length) { + result[index += 1] = buffer[inputIndex]; + result[index += 1] = buffer[inputIndex]; + inputIndex += 1; + } + return result; + } + + _renderAudioElement(blob, type) { + const audio = document.createElement('audio'); + audio.controls = 'controls'; + audio.type = type; + audio.src = this._renderURL(blob); + return audio; + } + + // eslint-disable-next-line class-methods-use-this + _renderURL(blob) { + // return (window.URL || window.webkitURL).createObjectURL(blob); + return (this._window.URL || this._window.webkitURL).createObjectURL(blob); + } } diff --git a/renderer/src/components/AutoUpdate.js b/renderer/src/components/AutoUpdate.js index 7664f1d36..e7ba2eedb 100644 --- a/renderer/src/components/AutoUpdate.js +++ b/renderer/src/components/AutoUpdate.js @@ -10,33 +10,33 @@ const AutoUpdate = () => { const [restartButton, setRestartButton] = useState(false); const { t } = useTranslation(); useEffect(() => { - localforage.setItem('font-family', global.fonts); - const electron = window.require('electron'); - const { ipcRenderer } = electron; - ipcRenderer.send('app_version'); - ipcRenderer.on('app_version', (event, arg) => { - ipcRenderer.removeAllListeners('app_version'); - localforage.setItem('userPath', arg.appPath); - localStorage.setItem('userPath', arg.appPath); - }); + localforage.setItem('font-family', global.fonts); + const electron = window.require('electron'); + const { ipcRenderer } = electron; + ipcRenderer.send('app_version'); + ipcRenderer.on('app_version', (event, arg) => { + ipcRenderer.removeAllListeners('app_version'); + localforage.setItem('userPath', arg.appPath); + localStorage.setItem('userPath', arg.appPath); + }); - ipcRenderer.on('update_available', () => { - ipcRenderer.removeAllListeners('update_available'); - setMessage(t('dynamic-msg-auto-update')); - setNotification(true); - }); + ipcRenderer.on('update_available', () => { + ipcRenderer.removeAllListeners('update_available'); + setMessage(t('dynamic-msg-auto-update')); + setNotification(true); + }); - ipcRenderer.on('download-progress', () => { - ipcRenderer.removeAllListeners('download-progress'); - setNotification(true); - }); + ipcRenderer.on('download-progress', () => { + ipcRenderer.removeAllListeners('download-progress'); + setNotification(true); + }); - ipcRenderer.on('update_downloaded', () => { - ipcRenderer.removeAllListeners('update_downloaded'); - setMessage(t('dynamic-msg-auto-update-complete')); - setRestartButton(true); - setNotification(true); - }); + ipcRenderer.on('update_downloaded', () => { + ipcRenderer.removeAllListeners('update_downloaded'); + setMessage(t('dynamic-msg-auto-update-complete')); + setRestartButton(true); + setNotification(true); + }); }); function closeNotification() { @@ -45,23 +45,23 @@ const AutoUpdate = () => { function restartApp() { if (isElectron()) { - const electron = window.require('electron'); - const { ipcRenderer } = electron; - ipcRenderer.send('restart_app'); + const electron = window.require('electron'); + const { ipcRenderer } = electron; + ipcRenderer.send('restart_app'); } } const actionButtons = ( <> {restartButton && ( - - )} + + )} - )} + )}
- ))} + ))}
diff --git a/renderer/src/modules/editorsidebar/EditorSideBar.js b/renderer/src/modules/editorsidebar/EditorSideBar.js index 119689442..34742ca90 100644 --- a/renderer/src/modules/editorsidebar/EditorSideBar.js +++ b/renderer/src/modules/editorsidebar/EditorSideBar.js @@ -33,18 +33,18 @@ const initialTab = { tabIndex: 4 }; function reducer(state, action) { switch (action.type) { - case 'search': - return { tabIndex: 0 }; - case 'xref': - return { tabIndex: 1 }; - case 'footnotes': - return { tabIndex: 2 }; - case 'comments': - return { tabIndex: 3 }; - case 'bookmarks': - return { tabIndex: 4 }; - default: - throw new Error(); + case 'search': + return { tabIndex: 0 }; + case 'xref': + return { tabIndex: 1 }; + case 'footnotes': + return { tabIndex: 2 }; + case 'comments': + return { tabIndex: 3 }; + case 'bookmarks': + return { tabIndex: 4 }; + default: + throw new Error(); } } diff --git a/renderer/src/modules/projects/CustomAutocomplete.js b/renderer/src/modules/projects/CustomAutocomplete.js index 9d43f77f7..1bb092504 100644 --- a/renderer/src/modules/projects/CustomAutocomplete.js +++ b/renderer/src/modules/projects/CustomAutocomplete.js @@ -101,7 +101,7 @@ const Listbox = styled('ul')` `; export default function CustomizedHook({ - list, label, setValue, + list, label, setValue, }) { const { getRootProps, diff --git a/renderer/src/modules/projects/CustomList.js b/renderer/src/modules/projects/CustomList.js index 187f73d4a..e44944bd3 100644 --- a/renderer/src/modules/projects/CustomList.js +++ b/renderer/src/modules/projects/CustomList.js @@ -5,7 +5,7 @@ import { CheckIcon, ChevronUpDownIcon } from '@heroicons/react/24/solid'; import { classNames } from '../../util/classNames'; export default function CustomList({ - selected, setSelected, options, show, width, + selected, setSelected, options, show, width, }) { const dropdownWidth = width ?? 40; return ( diff --git a/renderer/src/modules/projects/Profile.js b/renderer/src/modules/projects/Profile.js index 29c20c71a..ccb04c6fd 100644 --- a/renderer/src/modules/projects/Profile.js +++ b/renderer/src/modules/projects/Profile.js @@ -136,8 +136,8 @@ export default function UserProfile() { async function checkValidationResp(response, field, resultObj) { if (response && response.length > 0) { for (let x = 0; x < response.length; x++) { - resultObj[field] = response[x].message; - if (response[x].message !== '') { return; } + resultObj[field] = response[x].message; + if (response[x].message !== '') { return; } } } else { resultObj[field] = ''; @@ -230,7 +230,7 @@ export default function UserProfile() { autoComplete="given-name" defaultValue={values?.firstname} onChange={(e) => { - setValues({ ...values, firstname: e.target.value }); + setValues({ ...values, firstname: e.target.value }); }} className="w-44 block rounded shadow-sm sm:text-sm focus:ring-gray-500 focus:border-primary border-gray-200 h-10 font-light" /> diff --git a/renderer/src/translations/ar.js b/renderer/src/translations/ar.js index 740f81ea2..a009e2c59 100644 --- a/renderer/src/translations/ar.js +++ b/renderer/src/translations/ar.js @@ -1,283 +1,283 @@ export const Ar = { - 'app-name': 'كاتب الكتاب المقدس', - 'new-project-page': 'مشروع جديد', - 'edit-project': 'تعديل المشروع', - 'label-abbreviation': 'اختصار', - 'label-target-language': 'اللغة المستهدفة', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'الكتب', - 'label-book': 'كتاب', - 'label-import-book': 'استيراد الكتاب', - 'label-saved': 'محفوظ', - 'label-sync': 'المزامنة', - 'label-comments': 'تعليقات', - 'label-cross-ref': 'مرجع متقاطع (مشترك)', - 'label-add-footnote': 'إضافة حاشية سفلية', - 'label-add-comment': 'إضافة تعليق', - 'label-add-ref': 'إضافة مرجع', - 'label-user-menu': 'فتح قائمة المستخدم', - 'label-main-menu': 'فتح القائمة الرئيسية', - 'label-dont-have-account': 'ليس لديك حساب؟', - 'label-already-have-account': 'هل لديك حساب ؟؟', - 'label-new-langauge': 'لغة جديدة', - 'label-edit-langauge': 'تعديل اللغة', - 'label-script-direction': 'اتجاه النص ', - 'label-drop-file-upload': 'ضع الملفات هنا للتحميل', - 'projects-page': 'المشاريع', - 'label-search': 'بحث', - 'label-project': 'مشروع', - 'label-flavour': 'السمة', - 'label-project-type': ' نمط', - 'label-project-name': 'اسم المشروع', - 'label-language': ' اللغة', - 'label-language-code': 'رمز اللغة', - 'label-all': 'جميع الكتب', - 'label-other': 'اخرى', - 'label-Gitea': 'مرشد', - 'label-deactivate-account': 'تعطيل الحساب', - 'label-created-date': 'تاريخ الإنشاء', - 'label-last-viewed': 'آخر مشاهدة', - 'label-description': 'الوصف', - 'label-project-id': 'رمز المشروع', - 'label-sign-in': 'تسجيل الدخول', - 'label-sign-up': 'الاشتراك ', - 'profile-page': 'الملف الشخصي', - 'label-your-profile': 'ملفك الشخصي', - 'label-username': 'اسم المستخدم', - 'label-name': 'الاسم', - 'label-firstname': 'الاسم الأول', - 'label-lastname': 'الاسم الأخير', - 'label-password': 'كلمة المرور', - 'label-confirm-password': 'تأكيد كلمة المرور', - 'label-email': 'البريد الإلكتروني', - 'label-organization': 'المنظمة', - 'label-region': 'المنطقة', - 'label-app-language': 'لغة التطبيق', - 'label-menu-file': 'ملف', - 'label-uploading-files': 'تحميل الملفات', - 'label-menu-edit': 'تعديل ', - 'label-menu-about': 'حول', - 'label-bookmarks': 'إشارات مرجعية', - 'label-custom': 'مخصص', - 'label-show-hidden-file': 'إظهار الملفات المخفية', - 'label-scope': 'النطاق', - 'label-door43': 'الباب ٤٣', - 'label-paratext': 'نص موازي', - 'label-license': 'الترخيص', - 'label-preview': 'معاينة', - 'label-versification-scheme': 'مخطط النسخ', - 'label-old-testament': 'العهد القديم', - 'label-new-testament': 'العهد الجديد', - 'label-chapter': 'الفصل / اصحاح', - 'label-verse': 'آية', - 'label-import-resource': 'استيراد المصدر', - 'label-resource': 'المورد', - 'label-resource-bible': 'الكتاب المقدس ', - 'label-resource-obs-tn': 'ملاحظات ترجمة OBS', - 'label-resource-obs-tq': 'أسئلة ترجمة OBS', - 'label-resource-obs': 'فتح قصص الكتاب المقدس', - 'label-resource-tn': 'ملاحظات الترجمة', - 'label-resource-twlm': 'كلمات الترجمة', - 'label-resource-twl': 'قائمة كلمات الترجمة', - 'label-resource-tq': 'أسئلة الترجمة', - 'label-resource-ta': 'أكاديمية الترجمة', - 'label-resource-name': 'اسم المصدر', - 'label-footnotes': 'هوامش', - 'label-location': 'الموقع', - 'label-audio-bible': 'الصوت', - 'label-resource-obs-twl': 'قائمة كلمات الترجمة OBS', - 'placeholder-resource-name': 'أدخل اسم المصدر', - 'placeholder-license-name': 'اسم الترخيص', - 'placeholder-search': 'البحث…', - 'placeholder-door43-url': 'أدخل عنوان الباب ٤٣', - 'label-burrito-resource-path': 'مسار ملف موارد (بوريتو)', - 'label-burrito-directory': 'دليل (بوريتو) ', - 'label-export-file-path': 'مسار ملف التصدير', - 'label-import-project': 'استيراد المشروع', - 'label-export-project': 'تصدير المشروع', - 'label-notification': 'الإشعارات', - 'label-editor-pane': 'محرر', - 'label-editor-font-char': 'أ', - 'label-upload': 'تحميل', - 'label-no-content-available': 'لا يوجد محتوى متاح!', - 'label-enter-location': 'أدخل الموقع', - 'label-editor-load-module': 'تحميل وحدة', - 'label-import-door43-resources': 'Import Door43 helps resources', - 'tooltip-editor-lock': 'تصفحَ فتح / اقفال ', - 'tooltip-editor-bookmark': 'إشارة مرجعية', - 'tooltip-editor-notification': 'إشعار', - 'tooltip-editor-layout': 'تخطيط', - 'tooltip-editor-font-dec': 'تصغير حجم الخط', - 'tooltip-editor-font-inc': 'تكبير حجم الخط', - 'tooltip-editor-resource-selector': 'منتقي الموارد', - 'tooltip-editor-remove-section': 'إزالة مقطع', - 'tooltip-editor-add-section': 'إضافة مقطع', - 'modal-title-license': 'الترخيص', - 'modal-title-about': 'حول', - 'modal-title-remove-resource': 'إزالة المورد', - 'modal-title-update-burrito': 'تحديث (بوريتو)', - 'modal-title-update-app': 'تحديث الكتاب المقدس', - 'modal-title-replace-resource': 'استبدال المورد', - 'dynamic-msg-burrito-validate-import-project': 'تم تثبيت بوريتو بنجاح', - 'btn-new': 'جديد', - 'btn-close': 'أغلق', - 'btn-ok': 'حسناً', - 'btn-source-code': 'رمز المصدر', - 'btn-save': 'حفظ', - 'btn-signout': 'تسجيل الخروج', - 'btn-signup': 'تسجيل الاشتراك', - 'btn-signin': 'تسجيل الدخول', - 'btn-edit': 'تعديل', - 'btn-export': 'تصدير', - 'btn-import': 'استيراد', - 'btn-add': 'إضافة', - 'btn-create-project': 'إنشاء مشروع', - 'btn-import-books': 'استيراد الكتب', - 'btn-cancel': 'إلغاء', - 'btn-restart': 'إعادة التشغيل', - 'btn-clear': 'مسح', - 'btn-upload': 'تحميل', - 'btn-advance-settings': 'الإعدادات المتقدمة', - 'btn-create': 'إنشاء', - 'btn-all': 'الكل', - 'btn-ot': 'العهد القديم', - 'btn-nt': 'العهد الجديد', - 'btn-update': 'تحديث', - 'btn-replace': 'استبدل', - 'btn-remove': 'إزالة', - 'btn-deactivate': 'تعطيل', - 'btn-load-tn': 'تحميل ملاحظات الترجمة ', - 'tooltip-import-resource-info-circle': 'حدد دليل/مشروع يحتوي على ملف (بوريتو) أي ملف metadata.json', - 'tooltip-import-open-file-location': 'فتح موقع المجلد', - 'dynamic-msg-import-resource-snack': 'تم رفع الموارد بنجاح! الرجاء التحقق من قائمة الموارد', - 'dynamic-msg-unable-find-buritto-snack': 'تعذر العثور على ملف بوريتو (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'ملف بوريتو غير صالح (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'تم العثور على مشروع بنفس الاسم! تحقق من "علامة تبويب المؤرشفة" أو "علامة تبويب المشاريع". اضغط على "تبديل" لإستبدال أي محتوى موجود في الكتب المتداخلة. اضغط على "الدمج" للجمع بين المشروع المسجل والمشروع الحالي. اضغط على "إلغاء" لتجنب التغييرات.', - 'dynamic-msg-resource-added': 'تمت إضافة المورد بنجاح', - 'dynamic-msg-resource-unable-fetch-url': 'غير قادر على جلب المصدر المختار من عنوان URL المحدد', - 'dynamic-msg-load-ref-bible-snack': 'تم بنجاح تحميل ملفات {{refName}}', - 'dynamic-msg-load-ref-bible-snack-fail': 'فشل في تحميل ملفات {{refName}}', - 'dynamic-msg-load-ref-bible-success': 'تم تحميل مرجع بوريتو بنجاح', - 'dynamic-msg-validate-hook-project-name': 'يجب أن يتراوح طول احرف الإدخال بين {{minLen}} و {{maxLen}}', - 'dynamic-msg-update-burrito-version': 'تحديث (بوريتو) من اصدار ١ الى اصدار ٢', - 'dynamic-msg-validate-hook-onlyNum': 'الرجاء إدخال الأرقام فقط.', - 'dynamic-msg-validate-hook-onlyString': 'الرجاء إدخال الأحرف فقط.', - 'dynamic-msg-validate-hook-nonSpecChar': 'الحرف الخاص غير مسموح به', - 'dynamic-msg-validate-hook-alphaNum': 'يسمح فقط بالأحرف والأرقام', - 'dynamic-msg-validate-hook-email': 'البريد الإلكتروني غير صالح!', - 'dynamic-msg-auto-update': 'يتوفر تحديث سكريبت سكريبت جديد. التحميل الآن...', - 'dynamic-msg-auto-update-complete': 'تم تنزيل التحديث. سيتم تثبيته عند إعادة التشغيل. اعد التشغيل الان؟', - 'dynamic-msg-import-burrito-project-success': 'تم استيراد المشروع بنجاح', - 'dynamic-msg-deactivate-account': 'هل أنت متأكد من أنك تريد إلغاء تنشيط حسابك؟ سيتم إزالة جميع بياناتك بشكل دائم. لا يمكن التراجع عن هذا الإجراء.', - 'dynamic-msg-project-updated': 'تم تحديث الملف الشخصي.', - 'dynamic-msg-app-lang-changed': 'تم تغيير لغة التطبيق.', - 'dynamic-msg-data-read-fail': 'فشل في قراءة البيانات من الملف.', - 'dynamic-msg-export-success': 'تم التصدير بنجاح', - 'dynamic-msg-export-fail': 'فشل في التصدير', - 'dynamic-msg-invalid-path': 'مسار غير صالح', - 'dynamic-msg-invalid-usfm-file': 'ملف USFM غير صالح.', - 'dynamic-msg-invalid-md-file': 'ملف MD غير صالح.', - 'dynamic-msg-fill-all-fields': 'ملء جميع الحقول', - 'dynamic-msg-burrito-validation-expected': 'توقع إصدار بوريتو 0.3.0 بدلا من (اصدار)', - 'dynamic-msg-burrito-validation-failed': 'فشل التحقق من صحة البوريتو', - 'text-login-page-desc': 'Scribe Scripture هي طريقة جديدة تمامًا لتحرير النصوص المقدسة والموارد ذات الصلة بميزات قوية وأنيقة لمساعدتك على التركيز على الأشياء المهمة!', - 'text-welcome': 'مرحبا بك', - 'text-sign-up-quote': 'كن جزءا من مجتمع رائع واستمتع معنا', - 'n-0': '٠', - 'n-1': '١', - 'n-2': '٢', - 'n-3': '٣', - 'n-4': '٤', - 'n-5': '٥', - 'n-6': '٦', - 'n-7': '٧', - 'n-8': '٨', - 'n-9': '٩', - 'label-active': 'نشط', - 'label-archived': 'مؤرشف', - 'label-archived-prj': 'المشاريع المؤرشفة', - 'label-bible-translation': 'ترجمة الكتاب المقدس ', - 'msg-lang-code-req': 'مطلوب رمز اللغة', - 'msg-lang-name-req': 'اسم اللغة مطلوب', - 'msg-min-three-letter': 'اكتب 3 أحرف كحد أدنى للبحث', - 'label-prj-on-my-computer': 'مشروع على حاسوبي', - 'label-save-to-cloud': 'حفظ إلى السحابة', - 'label-last-synced': 'آخر مزامنة', - 'label-prj-on-cloud': 'المشاريع على السحابة', - 'label-save-to-computer': 'حفظ على الكمبيوتر', - 'label-view-more': 'عرض المزيد', - 'label-create-new-user': 'إنشاء مستخدم جديد', - 'label-user-name': 'اسم المستخدم', - 'label-privacy': 'الخصوصية', - 'label-terms': 'الشروط', - 'label-collection': 'مجموعة', - 'label-select-folder': 'حدد مجلد', - 'label-resources': 'الموارد', - 'label-lang': 'اللغة', - 'label-type': 'نوع', - 'label-select-language': 'اختيار اللغة', - 'label-pre-release': 'الإصدار السابق', - 'label-save-filter': 'حفظ الفلتر', - 'label-subject': 'الموضوع', - 'label-release': 'الإصدار', - 'label-version': 'إصدار', - 'msg-select-dir-for-SB': 'حدد مجلد/مشروع يحتوي على ملف بوريتو metadata.json', - 'label-online-resources': 'الموارد عبر الإنترنت', - 'tooltip-download': 'تنزيل', - 'msg-no-resource-for-bible-obs-download': '
This content is unavailable for this language
You can Import OwnScripture BurritoResources through Collection tab.
Learn more about creating Scripture Burrito projects with Scribe. Refer Scribe Docs.
', - 'label-back': 'الرجوع', - 'label-speed': 'السرعة', - 'label-record': 'سجل', - 'label-stop': 'توقف', - 'label-continue': 'متابعة', - 'label-rewind': 'الترجيع ', - 'label-play': 'تشغيل', - 'label-pause': 'إيقاف', - 'label-delete': 'حذف', - 'label-volume': 'مقدار', - 'label-takes': 'يأخذ', - 'label-settings': 'إعدادات', - 'label-restore': 'إستعادة', - 'label-archive': 'أرشيف', - 'tooltip-save-cloud-btn': 'سيؤدي هذا الإجراء إلى مزامنة بياناتك مع الباب ٤٣ ', - 'tooltip-save-computer-btn': 'سيقوم هذا الإجراء باستنساخ أو تحديث بياناتك المحلية باستخدام بيانات الباب ٤٣', - 'label-choose-usfm-files': 'اختر ملفات USFM', - 'label-choose-md-files': 'اختر ملفات Markdown', - 'label-merge': 'دمج', - 'label-abort': 'الغاء', - 'tooltip-star-project': 'ابدأ مشروع ', - 'tooltip-un-star-project': 'إلغاء تشغيل المشروع', - 'tooltip-merge-all-orginal-btn': 'قبول النسخة الأصلية لجميع أقسام التعارض التي لم يتم حلها في الملف المفتوح', - 'tooltip-merge-orginal-btn': 'قبول التغييرات الأصلية لحل التعارض', - 'tooltip-merge-all-reset-btn': 'إعادة الملف المفتوح إلى الحالة الأولية', - 'tooltip-merge-all-both-btn': 'قبول كلاهما لجميع أقسام التعارض التي لم يتم حلها في الملف المفتوح', - 'tooltip-merge-both-btn': 'قبول كلا التغييرات لحل التعارض', - 'tooltip-merge-all-new-btn': 'قبول الجديد لجميع أقسام التعارض التي لم يتم حلها في ملف حل النزاع', - 'tooltip-merge-new-btn': 'قبول التغييرات الجديدة لحل النزاع', - 'label-original': 'الأصل', - 'label-new': 'جديد', - 'label-reset': 'إعادة ضبط', - 'label-both': 'كلاهما', - 'label-overwrite': 'إستبدال', - 'modal-title-abort-conflict-resolution': 'إلغاء حل النزاعات', - 'msg-abort-conflict-resolution': 'هل تريد إلغاء عملية حل النزاع. إذا قمت بالإلغاء، سوف تفقد كل تقدمك وتحتاج إلى البدء من جديد.', - 'label-done': 'تم', - 'label-resolved': 'محلولة', - 'label-resolve-conflict': 'حل النزاع', - 'label-comparison': 'مقارنة', - 'label-files': 'الملفات', - 'label-re-record': 'إعادة التسجيل', - 'modal-title-re-record': 'إعادة تسجيل الصوت', - 'msg-re-record-audio': 'هل تريد إعادة تسجيل الصوت', - 'modal-title-delete-audio': 'حذف الصوت', - 'msg-delete-audio': 'هل تريد حذف المقطع المحدد؟', - 'label-accepted': 'مقبول', - 'msg-remove-resource': 'هل أنت متأكد من أنك تريد إزالة المصدر. لا يمكن التراجع عن هذا الإجراء', - 'label-check-updates': 'التحقق من التحديثات', - 'label-documentation': 'Documentation', - 'label-tech-support': 'Tech Support', - 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', - 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', - 'label-upload-help-resources': 'Upload Help Resources', + 'app-name': 'كاتب الكتاب المقدس', + 'new-project-page': 'مشروع جديد', + 'edit-project': 'تعديل المشروع', + 'label-abbreviation': 'اختصار', + 'label-target-language': 'اللغة المستهدفة', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'الكتب', + 'label-book': 'كتاب', + 'label-import-book': 'استيراد الكتاب', + 'label-saved': 'محفوظ', + 'label-sync': 'المزامنة', + 'label-comments': 'تعليقات', + 'label-cross-ref': 'مرجع متقاطع (مشترك)', + 'label-add-footnote': 'إضافة حاشية سفلية', + 'label-add-comment': 'إضافة تعليق', + 'label-add-ref': 'إضافة مرجع', + 'label-user-menu': 'فتح قائمة المستخدم', + 'label-main-menu': 'فتح القائمة الرئيسية', + 'label-dont-have-account': 'ليس لديك حساب؟', + 'label-already-have-account': 'هل لديك حساب ؟؟', + 'label-new-langauge': 'لغة جديدة', + 'label-edit-langauge': 'تعديل اللغة', + 'label-script-direction': 'اتجاه النص ', + 'label-drop-file-upload': 'ضع الملفات هنا للتحميل', + 'projects-page': 'المشاريع', + 'label-search': 'بحث', + 'label-project': 'مشروع', + 'label-flavour': 'السمة', + 'label-project-type': ' نمط', + 'label-project-name': 'اسم المشروع', + 'label-language': ' اللغة', + 'label-language-code': 'رمز اللغة', + 'label-all': 'جميع الكتب', + 'label-other': 'اخرى', + 'label-Gitea': 'مرشد', + 'label-deactivate-account': 'تعطيل الحساب', + 'label-created-date': 'تاريخ الإنشاء', + 'label-last-viewed': 'آخر مشاهدة', + 'label-description': 'الوصف', + 'label-project-id': 'رمز المشروع', + 'label-sign-in': 'تسجيل الدخول', + 'label-sign-up': 'الاشتراك ', + 'profile-page': 'الملف الشخصي', + 'label-your-profile': 'ملفك الشخصي', + 'label-username': 'اسم المستخدم', + 'label-name': 'الاسم', + 'label-firstname': 'الاسم الأول', + 'label-lastname': 'الاسم الأخير', + 'label-password': 'كلمة المرور', + 'label-confirm-password': 'تأكيد كلمة المرور', + 'label-email': 'البريد الإلكتروني', + 'label-organization': 'المنظمة', + 'label-region': 'المنطقة', + 'label-app-language': 'لغة التطبيق', + 'label-menu-file': 'ملف', + 'label-uploading-files': 'تحميل الملفات', + 'label-menu-edit': 'تعديل ', + 'label-menu-about': 'حول', + 'label-bookmarks': 'إشارات مرجعية', + 'label-custom': 'مخصص', + 'label-show-hidden-file': 'إظهار الملفات المخفية', + 'label-scope': 'النطاق', + 'label-door43': 'الباب ٤٣', + 'label-paratext': 'نص موازي', + 'label-license': 'الترخيص', + 'label-preview': 'معاينة', + 'label-versification-scheme': 'مخطط النسخ', + 'label-old-testament': 'العهد القديم', + 'label-new-testament': 'العهد الجديد', + 'label-chapter': 'الفصل / اصحاح', + 'label-verse': 'آية', + 'label-import-resource': 'استيراد المصدر', + 'label-resource': 'المورد', + 'label-resource-bible': 'الكتاب المقدس ', + 'label-resource-obs-tn': 'ملاحظات ترجمة OBS', + 'label-resource-obs-tq': 'أسئلة ترجمة OBS', + 'label-resource-obs': 'فتح قصص الكتاب المقدس', + 'label-resource-tn': 'ملاحظات الترجمة', + 'label-resource-twlm': 'كلمات الترجمة', + 'label-resource-twl': 'قائمة كلمات الترجمة', + 'label-resource-tq': 'أسئلة الترجمة', + 'label-resource-ta': 'أكاديمية الترجمة', + 'label-resource-name': 'اسم المصدر', + 'label-footnotes': 'هوامش', + 'label-location': 'الموقع', + 'label-audio-bible': 'الصوت', + 'label-resource-obs-twl': 'قائمة كلمات الترجمة OBS', + 'placeholder-resource-name': 'أدخل اسم المصدر', + 'placeholder-license-name': 'اسم الترخيص', + 'placeholder-search': 'البحث…', + 'placeholder-door43-url': 'أدخل عنوان الباب ٤٣', + 'label-burrito-resource-path': 'مسار ملف موارد (بوريتو)', + 'label-burrito-directory': 'دليل (بوريتو) ', + 'label-export-file-path': 'مسار ملف التصدير', + 'label-import-project': 'استيراد المشروع', + 'label-export-project': 'تصدير المشروع', + 'label-notification': 'الإشعارات', + 'label-editor-pane': 'محرر', + 'label-editor-font-char': 'أ', + 'label-upload': 'تحميل', + 'label-no-content-available': 'لا يوجد محتوى متاح!', + 'label-enter-location': 'أدخل الموقع', + 'label-editor-load-module': 'تحميل وحدة', + 'label-import-door43-resources': 'Import Door43 helps resources', + 'tooltip-editor-lock': 'تصفحَ فتح / اقفال ', + 'tooltip-editor-bookmark': 'إشارة مرجعية', + 'tooltip-editor-notification': 'إشعار', + 'tooltip-editor-layout': 'تخطيط', + 'tooltip-editor-font-dec': 'تصغير حجم الخط', + 'tooltip-editor-font-inc': 'تكبير حجم الخط', + 'tooltip-editor-resource-selector': 'منتقي الموارد', + 'tooltip-editor-remove-section': 'إزالة مقطع', + 'tooltip-editor-add-section': 'إضافة مقطع', + 'modal-title-license': 'الترخيص', + 'modal-title-about': 'حول', + 'modal-title-remove-resource': 'إزالة المورد', + 'modal-title-update-burrito': 'تحديث (بوريتو)', + 'modal-title-update-app': 'تحديث الكتاب المقدس', + 'modal-title-replace-resource': 'استبدال المورد', + 'dynamic-msg-burrito-validate-import-project': 'تم تثبيت بوريتو بنجاح', + 'btn-new': 'جديد', + 'btn-close': 'أغلق', + 'btn-ok': 'حسناً', + 'btn-source-code': 'رمز المصدر', + 'btn-save': 'حفظ', + 'btn-signout': 'تسجيل الخروج', + 'btn-signup': 'تسجيل الاشتراك', + 'btn-signin': 'تسجيل الدخول', + 'btn-edit': 'تعديل', + 'btn-export': 'تصدير', + 'btn-import': 'استيراد', + 'btn-add': 'إضافة', + 'btn-create-project': 'إنشاء مشروع', + 'btn-import-books': 'استيراد الكتب', + 'btn-cancel': 'إلغاء', + 'btn-restart': 'إعادة التشغيل', + 'btn-clear': 'مسح', + 'btn-upload': 'تحميل', + 'btn-advance-settings': 'الإعدادات المتقدمة', + 'btn-create': 'إنشاء', + 'btn-all': 'الكل', + 'btn-ot': 'العهد القديم', + 'btn-nt': 'العهد الجديد', + 'btn-update': 'تحديث', + 'btn-replace': 'استبدل', + 'btn-remove': 'إزالة', + 'btn-deactivate': 'تعطيل', + 'btn-load-tn': 'تحميل ملاحظات الترجمة ', + 'tooltip-import-resource-info-circle': 'حدد دليل/مشروع يحتوي على ملف (بوريتو) أي ملف metadata.json', + 'tooltip-import-open-file-location': 'فتح موقع المجلد', + 'dynamic-msg-import-resource-snack': 'تم رفع الموارد بنجاح! الرجاء التحقق من قائمة الموارد', + 'dynamic-msg-unable-find-buritto-snack': 'تعذر العثور على ملف بوريتو (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'ملف بوريتو غير صالح (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'تم العثور على مشروع بنفس الاسم! تحقق من "علامة تبويب المؤرشفة" أو "علامة تبويب المشاريع". اضغط على "تبديل" لإستبدال أي محتوى موجود في الكتب المتداخلة. اضغط على "الدمج" للجمع بين المشروع المسجل والمشروع الحالي. اضغط على "إلغاء" لتجنب التغييرات.', + 'dynamic-msg-resource-added': 'تمت إضافة المورد بنجاح', + 'dynamic-msg-resource-unable-fetch-url': 'غير قادر على جلب المصدر المختار من عنوان URL المحدد', + 'dynamic-msg-load-ref-bible-snack': 'تم بنجاح تحميل ملفات {{refName}}', + 'dynamic-msg-load-ref-bible-snack-fail': 'فشل في تحميل ملفات {{refName}}', + 'dynamic-msg-load-ref-bible-success': 'تم تحميل مرجع بوريتو بنجاح', + 'dynamic-msg-validate-hook-project-name': 'يجب أن يتراوح طول احرف الإدخال بين {{minLen}} و {{maxLen}}', + 'dynamic-msg-update-burrito-version': 'تحديث (بوريتو) من اصدار ١ الى اصدار ٢', + 'dynamic-msg-validate-hook-onlyNum': 'الرجاء إدخال الأرقام فقط.', + 'dynamic-msg-validate-hook-onlyString': 'الرجاء إدخال الأحرف فقط.', + 'dynamic-msg-validate-hook-nonSpecChar': 'الحرف الخاص غير مسموح به', + 'dynamic-msg-validate-hook-alphaNum': 'يسمح فقط بالأحرف والأرقام', + 'dynamic-msg-validate-hook-email': 'البريد الإلكتروني غير صالح!', + 'dynamic-msg-auto-update': 'يتوفر تحديث سكريبت سكريبت جديد. التحميل الآن...', + 'dynamic-msg-auto-update-complete': 'تم تنزيل التحديث. سيتم تثبيته عند إعادة التشغيل. اعد التشغيل الان؟', + 'dynamic-msg-import-burrito-project-success': 'تم استيراد المشروع بنجاح', + 'dynamic-msg-deactivate-account': 'هل أنت متأكد من أنك تريد إلغاء تنشيط حسابك؟ سيتم إزالة جميع بياناتك بشكل دائم. لا يمكن التراجع عن هذا الإجراء.', + 'dynamic-msg-project-updated': 'تم تحديث الملف الشخصي.', + 'dynamic-msg-app-lang-changed': 'تم تغيير لغة التطبيق.', + 'dynamic-msg-data-read-fail': 'فشل في قراءة البيانات من الملف.', + 'dynamic-msg-export-success': 'تم التصدير بنجاح', + 'dynamic-msg-export-fail': 'فشل في التصدير', + 'dynamic-msg-invalid-path': 'مسار غير صالح', + 'dynamic-msg-invalid-usfm-file': 'ملف USFM غير صالح.', + 'dynamic-msg-invalid-md-file': 'ملف MD غير صالح.', + 'dynamic-msg-fill-all-fields': 'ملء جميع الحقول', + 'dynamic-msg-burrito-validation-expected': 'توقع إصدار بوريتو 0.3.0 بدلا من (اصدار)', + 'dynamic-msg-burrito-validation-failed': 'فشل التحقق من صحة البوريتو', + 'text-login-page-desc': 'Scribe Scripture هي طريقة جديدة تمامًا لتحرير النصوص المقدسة والموارد ذات الصلة بميزات قوية وأنيقة لمساعدتك على التركيز على الأشياء المهمة!', + 'text-welcome': 'مرحبا بك', + 'text-sign-up-quote': 'كن جزءا من مجتمع رائع واستمتع معنا', + 'n-0': '٠', + 'n-1': '١', + 'n-2': '٢', + 'n-3': '٣', + 'n-4': '٤', + 'n-5': '٥', + 'n-6': '٦', + 'n-7': '٧', + 'n-8': '٨', + 'n-9': '٩', + 'label-active': 'نشط', + 'label-archived': 'مؤرشف', + 'label-archived-prj': 'المشاريع المؤرشفة', + 'label-bible-translation': 'ترجمة الكتاب المقدس ', + 'msg-lang-code-req': 'مطلوب رمز اللغة', + 'msg-lang-name-req': 'اسم اللغة مطلوب', + 'msg-min-three-letter': 'اكتب 3 أحرف كحد أدنى للبحث', + 'label-prj-on-my-computer': 'مشروع على حاسوبي', + 'label-save-to-cloud': 'حفظ إلى السحابة', + 'label-last-synced': 'آخر مزامنة', + 'label-prj-on-cloud': 'المشاريع على السحابة', + 'label-save-to-computer': 'حفظ على الكمبيوتر', + 'label-view-more': 'عرض المزيد', + 'label-create-new-user': 'إنشاء مستخدم جديد', + 'label-user-name': 'اسم المستخدم', + 'label-privacy': 'الخصوصية', + 'label-terms': 'الشروط', + 'label-collection': 'مجموعة', + 'label-select-folder': 'حدد مجلد', + 'label-resources': 'الموارد', + 'label-lang': 'اللغة', + 'label-type': 'نوع', + 'label-select-language': 'اختيار اللغة', + 'label-pre-release': 'الإصدار السابق', + 'label-save-filter': 'حفظ الفلتر', + 'label-subject': 'الموضوع', + 'label-release': 'الإصدار', + 'label-version': 'إصدار', + 'msg-select-dir-for-SB': 'حدد مجلد/مشروع يحتوي على ملف بوريتو metadata.json', + 'label-online-resources': 'الموارد عبر الإنترنت', + 'tooltip-download': 'تنزيل', + 'msg-no-resource-for-bible-obs-download': '
This content is unavailable for this language
You can Import OwnScripture BurritoResources through Collection tab.
Learn more about creating Scripture Burrito projects with Scribe. Refer Scribe Docs.
', + 'label-back': 'الرجوع', + 'label-speed': 'السرعة', + 'label-record': 'سجل', + 'label-stop': 'توقف', + 'label-continue': 'متابعة', + 'label-rewind': 'الترجيع ', + 'label-play': 'تشغيل', + 'label-pause': 'إيقاف', + 'label-delete': 'حذف', + 'label-volume': 'مقدار', + 'label-takes': 'يأخذ', + 'label-settings': 'إعدادات', + 'label-restore': 'إستعادة', + 'label-archive': 'أرشيف', + 'tooltip-save-cloud-btn': 'سيؤدي هذا الإجراء إلى مزامنة بياناتك مع الباب ٤٣ ', + 'tooltip-save-computer-btn': 'سيقوم هذا الإجراء باستنساخ أو تحديث بياناتك المحلية باستخدام بيانات الباب ٤٣', + 'label-choose-usfm-files': 'اختر ملفات USFM', + 'label-choose-md-files': 'اختر ملفات Markdown', + 'label-merge': 'دمج', + 'label-abort': 'الغاء', + 'tooltip-star-project': 'ابدأ مشروع ', + 'tooltip-un-star-project': 'إلغاء تشغيل المشروع', + 'tooltip-merge-all-orginal-btn': 'قبول النسخة الأصلية لجميع أقسام التعارض التي لم يتم حلها في الملف المفتوح', + 'tooltip-merge-orginal-btn': 'قبول التغييرات الأصلية لحل التعارض', + 'tooltip-merge-all-reset-btn': 'إعادة الملف المفتوح إلى الحالة الأولية', + 'tooltip-merge-all-both-btn': 'قبول كلاهما لجميع أقسام التعارض التي لم يتم حلها في الملف المفتوح', + 'tooltip-merge-both-btn': 'قبول كلا التغييرات لحل التعارض', + 'tooltip-merge-all-new-btn': 'قبول الجديد لجميع أقسام التعارض التي لم يتم حلها في ملف حل النزاع', + 'tooltip-merge-new-btn': 'قبول التغييرات الجديدة لحل النزاع', + 'label-original': 'الأصل', + 'label-new': 'جديد', + 'label-reset': 'إعادة ضبط', + 'label-both': 'كلاهما', + 'label-overwrite': 'إستبدال', + 'modal-title-abort-conflict-resolution': 'إلغاء حل النزاعات', + 'msg-abort-conflict-resolution': 'هل تريد إلغاء عملية حل النزاع. إذا قمت بالإلغاء، سوف تفقد كل تقدمك وتحتاج إلى البدء من جديد.', + 'label-done': 'تم', + 'label-resolved': 'محلولة', + 'label-resolve-conflict': 'حل النزاع', + 'label-comparison': 'مقارنة', + 'label-files': 'الملفات', + 'label-re-record': 'إعادة التسجيل', + 'modal-title-re-record': 'إعادة تسجيل الصوت', + 'msg-re-record-audio': 'هل تريد إعادة تسجيل الصوت', + 'modal-title-delete-audio': 'حذف الصوت', + 'msg-delete-audio': 'هل تريد حذف المقطع المحدد؟', + 'label-accepted': 'مقبول', + 'msg-remove-resource': 'هل أنت متأكد من أنك تريد إزالة المصدر. لا يمكن التراجع عن هذا الإجراء', + 'label-check-updates': 'التحقق من التحديثات', + 'label-documentation': 'Documentation', + 'label-tech-support': 'Tech Support', + 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', + 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', + 'label-upload-help-resources': 'Upload Help Resources', }; diff --git a/renderer/src/translations/en.js b/renderer/src/translations/en.js index 00e290fab..bdb5d7f27 100644 --- a/renderer/src/translations/en.js +++ b/renderer/src/translations/en.js @@ -1,294 +1,294 @@ export const En = { - 'app-name': 'Scribe Scripture', - 'new-project-page': 'New Project', - 'edit-project': 'Edit Project', - 'label-abbreviation': 'Abbreviation', - 'label-target-language': 'Target Language', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'Books', - 'label-book': 'Book', - 'label-import-book': 'Import Book', - 'label-saved': 'Saved', - 'label-sync': 'sync', - 'label-comments': 'Comments', - 'label-cross-ref': 'Cross Reference', - 'label-add-footnote': 'Add Footnote', - 'label-add-comment': 'Add Comment', - 'label-add-ref': 'Add Reference', - 'label-user-menu': 'Open user menu', - 'label-main-menu': 'Open main menu', - 'label-dont-have-account': 'Don’t have an account?', - 'label-already-have-account': 'Already have an account??', - 'label-new-langauge': 'New Language', - 'label-edit-langauge': 'Edit Language', - 'label-script-direction': 'Script Direction', - 'label-drop-file-upload': 'Drop files here to upload', - 'projects-page': 'Projects', - 'label-search': 'Search', - 'label-project': 'Project', - 'label-flavor': 'Flavor', - 'label-project-type': 'Project Type', - 'label-project-name': 'Project Name', - 'label-language': 'Language Name', - 'label-language-code': 'Language Code', - 'label-all': 'All Books', - 'label-other': 'Other', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'Deactivate Account', - 'label-created-date': 'Created Date', - 'label-last-viewed': 'Last Viewed', - 'label-description': 'Description', - 'label-project-id': 'Project ID', - 'label-sign-in': 'Sign In', - 'label-sign-up': 'Sign Up', - 'profile-page': 'Profile', - 'label-your-profile': 'Your Profile', - 'label-username': 'Username', - 'label-name': 'Name', - 'label-firstname': 'FirstName', - 'label-lastname': 'LastName', - 'label-password': 'Password', - 'label-confirm-password': 'Confirm Password', - 'label-email': 'Email', - 'label-organization': 'organization', - 'label-region': 'Region', - 'label-app-language': 'App Language', - 'label-menu-file': 'File', - 'label-uploading-files': 'Uploading Files', - 'label-menu-edit': 'Edit', - 'label-menu-about': 'About', - 'label-bookmarks': 'Bookmarks', - 'label-custom': 'Custom', - 'label-show-hidden-file': 'Show Hidden Files', - 'label-scope': 'Scope', - 'label-door43': 'Door 43', - 'label-paratext': 'Paratext', - 'label-license': 'License', - 'label-preview': 'Preview', - 'label-versification-scheme': 'Versification Scheme', - 'label-old-testament': 'Old Testament', - 'label-new-testament': 'New Testament', - 'label-chapter': 'Chapter', - 'label-verse': 'Verse', - 'label-import-resource': 'Import Resource', - 'label-resource': 'Resource', - 'label-resource-bible': 'Bible', - 'label-resource-obs-tn': 'OBS Translation Notes', - 'label-resource-obs-tq': 'OBS Translation Questions', - 'label-resource-obs': 'Open Bible Stories', - 'label-resource-tn': 'Translation Notes', - 'label-resource-twlm': 'Translation Words', - 'label-resource-twl': 'Translation Word Links', - 'label-resource-tq': 'Translation Questions', - 'label-resource-ta': 'Translation Academy', - 'label-resource-name': 'resource name', - 'label-footnotes': 'Foot Notes', - 'label-location': 'location', - 'label-audio-bible': 'Audio', - 'label-resource-obs-twl': 'OBS Translation Word Links', - 'placeholder-resource-name': 'Enter resource name', - 'placeholder-license-name': 'License Name', - 'placeholder-search': 'Search…', - 'placeholder-door43-url': 'Enter door43 url', - 'label-burrito-resource-path': 'Scripture Burrito Resource filepath', - 'label-burrito-directory': 'Scripture burrito directory', - 'label-export-file-path': 'Export File Path', - 'label-import-project': 'Import Project', - 'label-export-project': 'Export Project', - 'label-notification': 'Notifications', - 'label-editor-pane': 'Editor', - 'label-editor-font-char': 'A', - 'label-upload': 'upload', - 'label-no-content-available': 'No content available!', - 'label-enter-location': 'Enter location', - 'label-editor-load-module': 'Load a Module', - 'label-import-door43-resources': 'Import Door43 helps resources', - 'label-scope-not-selected': 'To get started, go to Scope Management select the book and chapters and click Apply button', - 'label-scope-note-audio': 'Choose the book and chapter from the SCOPE MANAGEMENT option on the project listing page', - 'modal-title-scope-management': 'Scope Management', - 'tooltip-editor-lock': 'navigation lock/unlock', - 'tooltip-editor-bookmark': 'bookmark', - 'tooltip-editor-notification': 'notification', - 'tooltip-editor-layout': 'Layout', - 'tooltip-editor-font-dec': 'decrease font size', - 'tooltip-editor-font-inc': 'increase font size', - 'tooltip-editor-resource-selector': 'resources selector', - 'tooltip-editor-remove-section': 'remove section', - 'tooltip-editor-add-section': 'add section', - 'modal-title-license': 'License', - 'modal-title-about': 'About', - 'modal-title-remove-resource': 'Remove Resource', - 'modal-title-update-burrito': 'Update Burrito', - 'modal-title-update-app': 'Scribe Scripture Update!', - 'modal-title-replace-resource': 'Replace Resource', - 'dynamic-msg-burrito-validate-import-project': 'Burrito validated Successfully', - 'btn-new': 'New', - 'btn-close': 'Close', - 'btn-ok': 'Ok', - 'btn-source-code': 'Source Code', - 'btn-save': 'Save', - 'btn-signout': 'Sign out', - 'btn-signup': 'SIGN UP', - 'btn-signin': 'SIGN IN', - 'btn-edit': 'Edit', - 'btn-export': 'Export', - 'btn-import': 'Import', - 'btn-add': 'add', - 'btn-create-project': 'Create Project', - 'btn-import-books': 'Import Books', - 'btn-cancel': 'Cancel', - 'btn-restart': 'Restart', - 'btn-clear': 'Clear', - 'btn-upload': 'Upload', - 'btn-advance-settings': 'Advanced Settings', - 'btn-create': 'Create', - 'btn-all': 'ALL', - 'btn-ot': 'OT', - 'btn-nt': 'NT', - 'btn-update': 'Update', - 'btn-replace': 'Replace', - 'btn-remove': 'Remove', - 'btn-deactivate': 'Deactivate', - 'btn-load-tn': 'load translation note', - 'tooltip-import-resource-info-circle': 'Select a directory/project that has a Scripture Burrito file i.e. metadata.json file.', - 'tooltip-import-open-file-location': 'open folder location', - 'dynamic-msg-import-resource-snack': 'Resource upload successful! Please check the resource list', - 'dynamic-msg-unable-find-buritto-snack': 'Unable to find burrito file (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'Invalid burrito file (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'An existing project with the same name was found! Check "Archived tab" or "Projects tab". Press "Replace" to overwrite any existing content in overlapping books. Press "Merge" to combine the project with the current project. Press "Cancel" to avoid changes.', - 'dynamic-msg-resource-added': 'resource added successfully', - 'dynamic-msg-resource-unable-fetch-url': 'unable to fetch selected resource from the given url', - 'dynamic-msg-load-ref-bible-snack': 'successfully loaded {{refName}} files', - 'dynamic-msg-load-ref-bible-snack-fail': 'failed to loaded {{refName}} files', - 'dynamic-msg-load-ref-bible-success': 'Reference-burrito loaded succesfully', - 'dynamic-msg-validate-hook-project-name': 'The input has to be between {{minLen}} and {{maxLen}} characters long', - 'dynamic-msg-update-burrito-version': 'Update the the burrito from {{version1}} to {{version2}}', - 'dynamic-msg-validate-hook-onlyNum': 'Please enter only numbers.', - 'dynamic-msg-validate-hook-onlyString': 'Please enter only alphabets.', - 'dynamic-msg-validate-hook-nonSpecChar': 'Special character are not allowed', - 'dynamic-msg-validate-hook-alphaNum': 'Only alphabets and numbers are allowed', - 'dynamic-msg-validate-hook-email': 'Email is not valid!', - 'dynamic-msg-auto-update': 'A new Scribe Scripture update is available. Downloading now...', - 'dynamic-msg-auto-update-complete': 'Update Downloaded. It will be installed on restart. Restart now?s', - 'dynamic-msg-import-burrito-project-success': 'Project Imported Successfully', - 'dynamic-msg-deactivate-account': 'Are you sure you want to deactivate your account? All of your data will be permanently removed. This action cannot be undone.', - 'dynamic-msg-project-updated': 'Updated the Profile.', - 'dynamic-msg-app-lang-changed': 'App language changed.', - 'dynamic-msg-data-read-fail': 'Failed to read the data from file.', - 'dynamic-msg-export-success': 'Exported Successfully', - 'dynamic-msg-export-fail': 'Failed to export', - 'dynamic-msg-invalid-path': 'Invalid Path', - 'dynamic-msg-invalid-usfm-file': 'Invalid USFM file.', - 'dynamic-msg-invalid-md-file': 'Invalid MD file.', - 'dynamic-msg-fill-all-fields': 'Fill all the fields', - 'dynamic-msg-burrito-validation-expected': 'Expected burrito version 0.3.0 instead of {{version}}', - 'dynamic-msg-burrito-validation-failed': 'Burrito validation Failed', - 'text-login-page-desc': 'Scribe Scripture is a completely new way for editing scripture and related resources with powerful yet elegant features to help you focus on the important things!', - 'text-welcome': 'Welcome', - 'text-sign-up-quote': 'Be part of a great community & have fun with us', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'Active', - 'label-archived': 'Archived', - 'label-archived-prj': 'Archived projects', - 'label-bible-translation': 'Bible Translation', - 'msg-lang-code-req': 'Language code is required', - 'msg-lang-name-req': 'Language name is required', - 'msg-min-three-letter': 'Type minimum 3 letters for search', - 'label-prj-on-my-computer': 'Project on my computer', - 'label-save-to-cloud': 'Save to cloud', - 'label-last-synced': 'Last synced', - 'label-prj-on-cloud': 'Projects on cloud', - 'label-save-to-computer': 'Save to computer', - 'label-view-more': 'View more', - 'label-create-new-user': 'Create new user', - 'label-user-name': 'User name', - 'label-privacy': 'Privacy', - 'label-terms': 'Terms', - 'label-collection': 'Collection', - 'label-select-folder': 'Select folder', - 'label-resources': 'Resources', - 'label-lang': 'Language', - 'label-type': 'Type', - 'label-select-language': 'Select Language', - 'label-pre-release': 'Pre-release', - 'label-save-filter': 'Save filter', - 'label-subject': 'Subject', - 'label-release': 'Release', - 'label-version': 'Version', - 'msg-select-dir-for-SB': 'Select a directory/project that has a Scripture Burrito file I.e. metadata.json file', - 'label-online-resources': 'Online Resources', - 'tooltip-download': 'Download', - 'msg-no-resource-for-bible-obs-download': '
This content is unavailable for this language
You can Import Own Scripture Burrito Resources through Collection tab.
Learn more about creating Scripture Burrito projects with Scribe. Refer Scribe Docs.
', - 'label-back': 'Back', - 'label-speed': 'Speed', - 'label-record': 'Record', - 'label-stop': 'Stop', - 'label-continue': 'Continue', - 'label-rewind': 'Rewind', - 'label-play': 'Play', - 'label-pause': 'Pause', - 'label-delete': 'Delete', - 'label-volume': 'Volume', - 'label-takes': 'Takes', - 'label-settings': 'Settings', - 'label-restore': 'Restore', - 'label-archive': 'Archive', - 'tooltip-save-cloud-btn': 'This action will sync your data to Door43 ', - 'tooltip-save-computer-btn': 'This action will clone or update your local data with Door43 data', - 'label-choose-usfm-files': 'Choose USFM files', - 'label-choose-md-files': 'Choose Markdown files', - 'label-merge': 'Merge', - 'label-abort': 'Abort', - 'tooltip-star-project': 'Star Project', - 'tooltip-un-star-project': 'Unstar Project', - 'tooltip-merge-all-orginal-btn': 'Accept ORIGINAL for all non resolved conflict sections in the opened file', - 'tooltip-merge-orginal-btn': 'Accept ORIGINAL changes to resolve conflict', - 'tooltip-merge-all-reset-btn': 'RESET the opened file to initial state', - 'tooltip-merge-all-both-btn': 'Accept BOTH for all non resolved conflict sections in the opened file', - 'tooltip-merge-both-btn': 'Accept BOTH changes to resolve conflict', - 'tooltip-merge-all-new-btn': 'Accept NEW for all non resolved conflict sections in the Abort Conflict Resolution file', - 'tooltip-merge-new-btn': 'Accept NEW changes to resolve conflict', - 'label-original': 'Original', - 'label-new': 'New', - 'label-reset': 'Reset', - 'label-both': 'Both', - 'label-overwrite': 'Overwrite', - 'modal-title-abort-conflict-resolution': 'Abort Conflict Resolution', - 'msg-abort-conflict-resolution': 'Do you want to abort conflict Resolution process. If you abort , you will loose all your progress and need to start over.', - 'label-done': 'Done', - 'label-resolved': 'Resolved', - 'label-resolve-conflict': 'Resolve Conflict', - 'label-comparison': 'Comparison', - 'label-files': 'files', - 'label-re-record': 'Re-record', - 'modal-title-re-record': 'Re-record the Audio', - 'msg-re-record-audio': 'Do you want to re-record the audio', - 'modal-title-delete-audio': 'Delete the Audio', - 'msg-delete-audio': 'Do you want to delete the selected take?', - 'label-accepted': 'Accepted', - 'msg-remove-resource': 'Are you sure want to remove the resource. This action can not be reverted', - 'label-check-updates': 'Check updates', - 'label-documentation': 'Documentation', - 'label-tech-support': 'Tech Support', - 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', - 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', - 'label-upload-help-resources': 'Upload Help Resources', - 'label-filter': 'Filter', - 'label-book-selection': 'Book Selection', - 'label-chapter-selection': 'Chapter Selection', - 'label-select': 'Select', - 'label-deselect': 'Deselect', - 'label-start': 'Start', - 'label-end': 'End', - 'label-apply': 'Apply', + 'app-name': 'Scribe Scripture', + 'new-project-page': 'New Project', + 'edit-project': 'Edit Project', + 'label-abbreviation': 'Abbreviation', + 'label-target-language': 'Target Language', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'Books', + 'label-book': 'Book', + 'label-import-book': 'Import Book', + 'label-saved': 'Saved', + 'label-sync': 'sync', + 'label-comments': 'Comments', + 'label-cross-ref': 'Cross Reference', + 'label-add-footnote': 'Add Footnote', + 'label-add-comment': 'Add Comment', + 'label-add-ref': 'Add Reference', + 'label-user-menu': 'Open user menu', + 'label-main-menu': 'Open main menu', + 'label-dont-have-account': 'Don’t have an account?', + 'label-already-have-account': 'Already have an account??', + 'label-new-langauge': 'New Language', + 'label-edit-langauge': 'Edit Language', + 'label-script-direction': 'Script Direction', + 'label-drop-file-upload': 'Drop files here to upload', + 'projects-page': 'Projects', + 'label-search': 'Search', + 'label-project': 'Project', + 'label-flavor': 'Flavor', + 'label-project-type': 'Project Type', + 'label-project-name': 'Project Name', + 'label-language': 'Language Name', + 'label-language-code': 'Language Code', + 'label-all': 'All Books', + 'label-other': 'Other', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'Deactivate Account', + 'label-created-date': 'Created Date', + 'label-last-viewed': 'Last Viewed', + 'label-description': 'Description', + 'label-project-id': 'Project ID', + 'label-sign-in': 'Sign In', + 'label-sign-up': 'Sign Up', + 'profile-page': 'Profile', + 'label-your-profile': 'Your Profile', + 'label-username': 'Username', + 'label-name': 'Name', + 'label-firstname': 'FirstName', + 'label-lastname': 'LastName', + 'label-password': 'Password', + 'label-confirm-password': 'Confirm Password', + 'label-email': 'Email', + 'label-organization': 'organization', + 'label-region': 'Region', + 'label-app-language': 'App Language', + 'label-menu-file': 'File', + 'label-uploading-files': 'Uploading Files', + 'label-menu-edit': 'Edit', + 'label-menu-about': 'About', + 'label-bookmarks': 'Bookmarks', + 'label-custom': 'Custom', + 'label-show-hidden-file': 'Show Hidden Files', + 'label-scope': 'Scope', + 'label-door43': 'Door 43', + 'label-paratext': 'Paratext', + 'label-license': 'License', + 'label-preview': 'Preview', + 'label-versification-scheme': 'Versification Scheme', + 'label-old-testament': 'Old Testament', + 'label-new-testament': 'New Testament', + 'label-chapter': 'Chapter', + 'label-verse': 'Verse', + 'label-import-resource': 'Import Resource', + 'label-resource': 'Resource', + 'label-resource-bible': 'Bible', + 'label-resource-obs-tn': 'OBS Translation Notes', + 'label-resource-obs-tq': 'OBS Translation Questions', + 'label-resource-obs': 'Open Bible Stories', + 'label-resource-tn': 'Translation Notes', + 'label-resource-twlm': 'Translation Words', + 'label-resource-twl': 'Translation Word Links', + 'label-resource-tq': 'Translation Questions', + 'label-resource-ta': 'Translation Academy', + 'label-resource-name': 'resource name', + 'label-footnotes': 'Foot Notes', + 'label-location': 'location', + 'label-audio-bible': 'Audio', + 'label-resource-obs-twl': 'OBS Translation Word Links', + 'placeholder-resource-name': 'Enter resource name', + 'placeholder-license-name': 'License Name', + 'placeholder-search': 'Search…', + 'placeholder-door43-url': 'Enter door43 url', + 'label-burrito-resource-path': 'Scripture Burrito Resource filepath', + 'label-burrito-directory': 'Scripture burrito directory', + 'label-export-file-path': 'Export File Path', + 'label-import-project': 'Import Project', + 'label-export-project': 'Export Project', + 'label-notification': 'Notifications', + 'label-editor-pane': 'Editor', + 'label-editor-font-char': 'A', + 'label-upload': 'upload', + 'label-no-content-available': 'No content available!', + 'label-enter-location': 'Enter location', + 'label-editor-load-module': 'Load a Module', + 'label-import-door43-resources': 'Import Door43 helps resources', + 'label-scope-not-selected': 'To get started, go to Scope Management select the book and chapters and click Apply button', + 'label-scope-note-audio': 'Choose the book and chapter from the SCOPE MANAGEMENT option on the project listing page', + 'modal-title-scope-management': 'Scope Management', + 'tooltip-editor-lock': 'navigation lock/unlock', + 'tooltip-editor-bookmark': 'bookmark', + 'tooltip-editor-notification': 'notification', + 'tooltip-editor-layout': 'Layout', + 'tooltip-editor-font-dec': 'decrease font size', + 'tooltip-editor-font-inc': 'increase font size', + 'tooltip-editor-resource-selector': 'resources selector', + 'tooltip-editor-remove-section': 'remove section', + 'tooltip-editor-add-section': 'add section', + 'modal-title-license': 'License', + 'modal-title-about': 'About', + 'modal-title-remove-resource': 'Remove Resource', + 'modal-title-update-burrito': 'Update Burrito', + 'modal-title-update-app': 'Scribe Scripture Update!', + 'modal-title-replace-resource': 'Replace Resource', + 'dynamic-msg-burrito-validate-import-project': 'Burrito validated Successfully', + 'btn-new': 'New', + 'btn-close': 'Close', + 'btn-ok': 'Ok', + 'btn-source-code': 'Source Code', + 'btn-save': 'Save', + 'btn-signout': 'Sign out', + 'btn-signup': 'SIGN UP', + 'btn-signin': 'SIGN IN', + 'btn-edit': 'Edit', + 'btn-export': 'Export', + 'btn-import': 'Import', + 'btn-add': 'add', + 'btn-create-project': 'Create Project', + 'btn-import-books': 'Import Books', + 'btn-cancel': 'Cancel', + 'btn-restart': 'Restart', + 'btn-clear': 'Clear', + 'btn-upload': 'Upload', + 'btn-advance-settings': 'Advanced Settings', + 'btn-create': 'Create', + 'btn-all': 'ALL', + 'btn-ot': 'OT', + 'btn-nt': 'NT', + 'btn-update': 'Update', + 'btn-replace': 'Replace', + 'btn-remove': 'Remove', + 'btn-deactivate': 'Deactivate', + 'btn-load-tn': 'load translation note', + 'tooltip-import-resource-info-circle': 'Select a directory/project that has a Scripture Burrito file i.e. metadata.json file.', + 'tooltip-import-open-file-location': 'open folder location', + 'dynamic-msg-import-resource-snack': 'Resource upload successful! Please check the resource list', + 'dynamic-msg-unable-find-buritto-snack': 'Unable to find burrito file (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'Invalid burrito file (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'An existing project with the same name was found! Check "Archived tab" or "Projects tab". Press "Replace" to overwrite any existing content in overlapping books. Press "Merge" to combine the project with the current project. Press "Cancel" to avoid changes.', + 'dynamic-msg-resource-added': 'resource added successfully', + 'dynamic-msg-resource-unable-fetch-url': 'unable to fetch selected resource from the given url', + 'dynamic-msg-load-ref-bible-snack': 'successfully loaded {{refName}} files', + 'dynamic-msg-load-ref-bible-snack-fail': 'failed to loaded {{refName}} files', + 'dynamic-msg-load-ref-bible-success': 'Reference-burrito loaded succesfully', + 'dynamic-msg-validate-hook-project-name': 'The input has to be between {{minLen}} and {{maxLen}} characters long', + 'dynamic-msg-update-burrito-version': 'Update the the burrito from {{version1}} to {{version2}}', + 'dynamic-msg-validate-hook-onlyNum': 'Please enter only numbers.', + 'dynamic-msg-validate-hook-onlyString': 'Please enter only alphabets.', + 'dynamic-msg-validate-hook-nonSpecChar': 'Special character are not allowed', + 'dynamic-msg-validate-hook-alphaNum': 'Only alphabets and numbers are allowed', + 'dynamic-msg-validate-hook-email': 'Email is not valid!', + 'dynamic-msg-auto-update': 'A new Scribe Scripture update is available. Downloading now...', + 'dynamic-msg-auto-update-complete': 'Update Downloaded. It will be installed on restart. Restart now?s', + 'dynamic-msg-import-burrito-project-success': 'Project Imported Successfully', + 'dynamic-msg-deactivate-account': 'Are you sure you want to deactivate your account? All of your data will be permanently removed. This action cannot be undone.', + 'dynamic-msg-project-updated': 'Updated the Profile.', + 'dynamic-msg-app-lang-changed': 'App language changed.', + 'dynamic-msg-data-read-fail': 'Failed to read the data from file.', + 'dynamic-msg-export-success': 'Exported Successfully', + 'dynamic-msg-export-fail': 'Failed to export', + 'dynamic-msg-invalid-path': 'Invalid Path', + 'dynamic-msg-invalid-usfm-file': 'Invalid USFM file.', + 'dynamic-msg-invalid-md-file': 'Invalid MD file.', + 'dynamic-msg-fill-all-fields': 'Fill all the fields', + 'dynamic-msg-burrito-validation-expected': 'Expected burrito version 0.3.0 instead of {{version}}', + 'dynamic-msg-burrito-validation-failed': 'Burrito validation Failed', + 'text-login-page-desc': 'Scribe Scripture is a completely new way for editing scripture and related resources with powerful yet elegant features to help you focus on the important things!', + 'text-welcome': 'Welcome', + 'text-sign-up-quote': 'Be part of a great community & have fun with us', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'Active', + 'label-archived': 'Archived', + 'label-archived-prj': 'Archived projects', + 'label-bible-translation': 'Bible Translation', + 'msg-lang-code-req': 'Language code is required', + 'msg-lang-name-req': 'Language name is required', + 'msg-min-three-letter': 'Type minimum 3 letters for search', + 'label-prj-on-my-computer': 'Project on my computer', + 'label-save-to-cloud': 'Save to cloud', + 'label-last-synced': 'Last synced', + 'label-prj-on-cloud': 'Projects on cloud', + 'label-save-to-computer': 'Save to computer', + 'label-view-more': 'View more', + 'label-create-new-user': 'Create new user', + 'label-user-name': 'User name', + 'label-privacy': 'Privacy', + 'label-terms': 'Terms', + 'label-collection': 'Collection', + 'label-select-folder': 'Select folder', + 'label-resources': 'Resources', + 'label-lang': 'Language', + 'label-type': 'Type', + 'label-select-language': 'Select Language', + 'label-pre-release': 'Pre-release', + 'label-save-filter': 'Save filter', + 'label-subject': 'Subject', + 'label-release': 'Release', + 'label-version': 'Version', + 'msg-select-dir-for-SB': 'Select a directory/project that has a Scripture Burrito file I.e. metadata.json file', + 'label-online-resources': 'Online Resources', + 'tooltip-download': 'Download', + 'msg-no-resource-for-bible-obs-download': '
This content is unavailable for this language
You can Import Own Scripture Burrito Resources through Collection tab.
Learn more about creating Scripture Burrito projects with Scribe. Refer Scribe Docs.
', + 'label-back': 'Back', + 'label-speed': 'Speed', + 'label-record': 'Record', + 'label-stop': 'Stop', + 'label-continue': 'Continue', + 'label-rewind': 'Rewind', + 'label-play': 'Play', + 'label-pause': 'Pause', + 'label-delete': 'Delete', + 'label-volume': 'Volume', + 'label-takes': 'Takes', + 'label-settings': 'Settings', + 'label-restore': 'Restore', + 'label-archive': 'Archive', + 'tooltip-save-cloud-btn': 'This action will sync your data to Door43 ', + 'tooltip-save-computer-btn': 'This action will clone or update your local data with Door43 data', + 'label-choose-usfm-files': 'Choose USFM files', + 'label-choose-md-files': 'Choose Markdown files', + 'label-merge': 'Merge', + 'label-abort': 'Abort', + 'tooltip-star-project': 'Star Project', + 'tooltip-un-star-project': 'Unstar Project', + 'tooltip-merge-all-orginal-btn': 'Accept ORIGINAL for all non resolved conflict sections in the opened file', + 'tooltip-merge-orginal-btn': 'Accept ORIGINAL changes to resolve conflict', + 'tooltip-merge-all-reset-btn': 'RESET the opened file to initial state', + 'tooltip-merge-all-both-btn': 'Accept BOTH for all non resolved conflict sections in the opened file', + 'tooltip-merge-both-btn': 'Accept BOTH changes to resolve conflict', + 'tooltip-merge-all-new-btn': 'Accept NEW for all non resolved conflict sections in the Abort Conflict Resolution file', + 'tooltip-merge-new-btn': 'Accept NEW changes to resolve conflict', + 'label-original': 'Original', + 'label-new': 'New', + 'label-reset': 'Reset', + 'label-both': 'Both', + 'label-overwrite': 'Overwrite', + 'modal-title-abort-conflict-resolution': 'Abort Conflict Resolution', + 'msg-abort-conflict-resolution': 'Do you want to abort conflict Resolution process. If you abort , you will loose all your progress and need to start over.', + 'label-done': 'Done', + 'label-resolved': 'Resolved', + 'label-resolve-conflict': 'Resolve Conflict', + 'label-comparison': 'Comparison', + 'label-files': 'files', + 'label-re-record': 'Re-record', + 'modal-title-re-record': 'Re-record the Audio', + 'msg-re-record-audio': 'Do you want to re-record the audio', + 'modal-title-delete-audio': 'Delete the Audio', + 'msg-delete-audio': 'Do you want to delete the selected take?', + 'label-accepted': 'Accepted', + 'msg-remove-resource': 'Are you sure want to remove the resource. This action can not be reverted', + 'label-check-updates': 'Check updates', + 'label-documentation': 'Documentation', + 'label-tech-support': 'Tech Support', + 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', + 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', + 'label-upload-help-resources': 'Upload Help Resources', + 'label-filter': 'Filter', + 'label-book-selection': 'Book Selection', + 'label-chapter-selection': 'Chapter Selection', + 'label-select': 'Select', + 'label-deselect': 'Deselect', + 'label-start': 'Start', + 'label-end': 'End', + 'label-apply': 'Apply', }; diff --git a/renderer/src/translations/es.js b/renderer/src/translations/es.js index 6b6652026..62f5a9c5a 100644 --- a/renderer/src/translations/es.js +++ b/renderer/src/translations/es.js @@ -1,293 +1,293 @@ export const Es = { - 'app-name': 'Scribe Scripture', - 'new-project-page': 'Nuevo proyecto', - 'edit-project': 'Editar proyecto', - 'label-abbreviation': 'Abreviatura', - 'label-target-language': 'Idioma de destino', - 'label-ltr': 'LTR (De izquierda a derecha)', - 'label-rtl': 'RTL (De derecha a izquierda)', - 'label-books': 'Libros', - 'label-book': 'Libro', - 'label-import-book': 'Importar libro', - 'label-saved': 'Guardado', - 'label-sync': 'sincronizar', - 'label-comments': 'Comentarios', - 'label-cross-ref': 'Referencia cruzada', - 'label-add-footnote': 'Añadir nota al pie', - 'label-add-comment': 'Añadir comentario', - 'label-add-ref': 'Añadir referencia', - 'label-user-menu': 'Abrir menú de usuario', - 'label-main-menu': 'Abrir menú principal', - 'label-dont-have-account': '¿No tiene una cuenta?', - 'label-already-have-account': '¿Ya tiene una cuenta??', - 'label-new-langauge': 'Nuevo idioma', - 'label-edit-langauge': 'Editar Idioma', - 'label-script-direction': 'Direccionalidad de escritura', - 'label-drop-file-upload': 'Suelte aquí los archivos para cargarlos', - 'projects-page': 'Proyectos', - 'label-search': 'Buscar', - 'label-project': 'Proyecto', - 'label-flavour': 'Sabor', - 'label-project-type': 'Tipo de proyecto', - 'label-project-name': 'Nombre del proyecto', - 'label-language': 'Nombre del idioma', - 'label-language-code': 'Código de idioma', - 'label-all': 'Todos los libros', - 'label-other': 'Otro', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'Desactivar cuenta', - 'label-created-date': 'Fecha de creación', - 'label-last-viewed': 'Última vista', - 'label-description': 'Descripción', - 'label-project-id': 'ID del proyecto', - 'label-sign-in': 'Iniciar sesión', - 'label-sign-up': 'Registrarse', - 'profile-page': 'Perfil', - 'label-your-profile': 'Su perfil', - 'label-username': 'Nombre de usuario', - 'label-name': 'Nombre', - 'label-firstname': 'Primer nombre', - 'label-lastname': 'Apellido', - 'label-password': 'Contraseña', - 'label-confirm-password': 'Confirmar contraseña', - 'label-email': 'E-mail', - 'label-organization': 'organización', - 'label-region': 'Región', - 'label-app-language': 'Idioma de la aplicación', - 'label-menu-file': 'Archivo', - 'label-uploading-files': 'Subiendo archivos', - 'label-menu-edit': 'Editar', - 'label-menu-about': 'Acerca de', - 'label-bookmarks': 'Marcadores', - 'label-custom': 'Personalizado', - 'label-show-hidden-file': 'Mostrar archivos ocultos', - 'label-scope': 'Alcance', - 'label-door43': 'Door 43', - 'label-paratext': 'Paratext', - 'label-license': 'Licencia', - 'label-preview': 'Vista previa', - 'label-versification-scheme': 'Esquema de verificación', - 'label-old-testament': 'Antiguo Testamento', - 'label-new-testament': 'Nuevo Testamento', - 'label-chapter': 'Capítulo', - 'label-verse': 'Versículo', - 'label-import-resource': 'Importar Recurso', - 'label-resource': 'Recurso', - 'label-resource-bible': 'Biblia', - 'label-resource-obs-tn': 'OBS - Notas de traducción', - 'label-resource-obs-tq': 'OBS - Preguntas de traducción', - 'label-resource-obs': 'Historias Bíblicas Abiertas (OBS)', - 'label-resource-tn': 'Notas de traducción', - 'label-resource-twlm': 'Palabras de traducción', - 'label-resource-twl': 'Lista de palabras de traducción', - 'label-resource-tq': 'Preguntas de traducción', - 'label-resource-ta': 'Academia de traducción', - 'label-resource-name': 'nombre de recurso', - 'label-footnotes': 'Notas al Pie', - 'label-location': 'ubicación', - 'label-audio-bible': 'Audio', - 'label-resource-obs-twl': 'OBS - Lista de palabras de traducción', - 'placeholder-resource-name': 'Introducir nombre de recurso', - 'placeholder-license-name': 'Nombre de licencia', - 'placeholder-search': 'Buscar…', - 'placeholder-door43-url': 'Introducir url de door43', - 'label-burrito-resource-path': 'Ruta del archivo del recurso de Scripture Burrito', - 'label-burrito-directory': 'Directorio del Scripture burrito', - 'label-export-file-path': 'Exportar ruta de archivo', - 'label-import-project': 'Importar Proyecto', - 'label-export-project': 'Exportar proyecto', - 'label-notification': 'Notificaciones', - 'label-editor-pane': 'Editor', - 'label-editor-font-char': 'A', - 'label-upload': 'subir', - 'label-no-content-available': '¡No hay contenido disponible!', - 'label-enter-location': 'Introducir ubicación', - 'label-editor-load-module': 'Cargar un módulo', - 'label-import-door43-resources': 'Importar recursos de ayuda de Door43', - 'tooltip-editor-lock': 'bloqueo/desbloqueo de navegación', - 'tooltip-editor-bookmark': 'marcador', - 'tooltip-editor-notification': 'notificación', - 'tooltip-editor-layout': 'Disposición', - 'tooltip-editor-font-dec': 'disminuir tamaño de fuente', - 'tooltip-editor-font-inc': 'aumentar tamaño de fuente', - 'tooltip-editor-resource-selector': 'selector de recursos', - 'tooltip-editor-remove-section': 'eliminar sección', - 'tooltip-editor-add-section': 'añadir sección', - 'modal-title-license': 'Licencia', - 'modal-title-about': 'Acerca de', - 'modal-title-remove-resource': 'Eliminar Recurso', - 'modal-title-update-burrito': 'Actualizar Burrito', - 'modal-title-update-app': '¡Actualización de Scribe Scripture!', - 'modal-title-replace-resource': 'Reemplazar recurso', - 'dynamic-msg-burrito-validate-import-project': 'Burrito validado con éxito', - 'btn-new': 'Nuevo', - 'btn-close': 'Cerrar', - 'btn-ok': 'Ok', - 'btn-source-code': 'Código fuente', - 'btn-save': 'Guardar', - 'btn-signout': 'Cerrar sesión', - 'btn-signup': 'REGISTRARSE', - 'btn-signin': 'INICIAR SESIÓN', - 'btn-edit': 'Editar', - 'btn-export': 'Exportar', - 'btn-import': 'Importar', - 'btn-add': 'añadir', - 'btn-create-project': 'Crear proyecto', - 'btn-import-books': 'Importar Libros', - 'btn-cancel': 'Cancelar', - 'btn-restart': 'Reiniciar', - 'btn-clear': 'Borrar', - 'btn-upload': 'Cargar', - 'btn-advance-settings': 'Configuración Avanzada', - 'btn-create': 'Crear', - 'btn-all': 'TODO', - 'btn-ot': 'AT', - 'btn-nt': 'NT', - 'btn-update': 'Actualizar', - 'btn-replace': 'Reemplazar', - 'btn-remove': 'Eliminar', - 'btn-deactivate': 'Desactivar', - 'btn-load-tn': 'cargar traducción anotada', - 'tooltip-import-resource-info-circle': 'Seleccione un directorio/proyecto que tenga un archivo del tipo Scripture Burrito, es decir, un archivo metadata.json.', - 'tooltip-import-open-file-location': 'abrir ubicación de carpeta', - 'dynamic-msg-import-resource-snack': '¡Carga de recursos exitosa! Por favor revise la lista de recursos', - 'dynamic-msg-unable-find-buritto-snack': 'No se puede encontrar el archivo burrito (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'Archivo burrito no válido (metadata.json).', - 'dynamic-msg-confirm-replace-resource': '¡Se ha encontrado un proyecto existente con el mismo nombre! Revise la pestaña "archivado" o "proyectos". Pulse "Reemplazar" para sobrescribir cualquier contenido existente en los libros coincidentes. Pulse "Fusionar" para fusionar el proyecto con el proyecto actual. Pulse "Cancelar" para evitar cambios.', - 'dynamic-msg-resource-added': 'recurso añadido correctamente', - 'dynamic-msg-resource-unable-fetch-url': 'no se puede obtener el recurso seleccionado desde la url dada', - 'dynamic-msg-load-ref-bible-snack': 'archivos {{refName}} cargados con éxito', - 'dynamic-msg-load-ref-bible-snack-fail': 'Error al cargar archivos {{refName}}', - 'dynamic-msg-load-ref-bible-success': 'Burrito de referencia cargado con éxito', - 'dynamic-msg-validate-hook-project-name': 'El valor especificado debe tener entre {{minLen}} y {{maxLen}} caracteres', - 'dynamic-msg-update-burrito-version': 'Actualiza el burrito de {{version1}} a {{version2}}', - 'dynamic-msg-validate-hook-onlyNum': 'Por favor, introduzca sólo números.', - 'dynamic-msg-validate-hook-onlyString': 'Por favor, introduzca sólo alfabetos.', - 'dynamic-msg-validate-hook-nonSpecChar': 'Caracter especial no permitido', - 'dynamic-msg-validate-hook-alphaNum': 'Sólo se permiten alfabetos y números', - 'dynamic-msg-validate-hook-email': '¡El correo electrónico no es válido!', - 'dynamic-msg-auto-update': 'Hay disponible una nueva actualización de Scribe Scripture. Descargando ahora...', - 'dynamic-msg-auto-update-complete': 'Actualización descargada. Se instalará al reiniciar. Reiniciar ahora?', - 'dynamic-msg-import-burrito-project-success': 'Proyecto importado con éxito', - 'dynamic-msg-deactivate-account': '¿Está seguro de que desea desactivar su cuenta? Todos sus datos serán eliminados permanentemente. Esta acción no se puede deshacer.', - 'dynamic-msg-project-updated': 'Perfil actualizado.', - 'dynamic-msg-app-lang-changed': 'Idioma de la aplicación cambiado.', - 'dynamic-msg-data-read-fail': 'Error al leer los datos desde el archivo.', - 'dynamic-msg-export-success': 'Exportado con éxito', - 'dynamic-msg-export-fail': 'Error al exportar', - 'dynamic-msg-invalid-path': 'Ruta no válida', - 'dynamic-msg-invalid-usfm-file': 'Archivo USFM inválido.', - 'dynamic-msg-invalid-md-file': 'Archivo MD inválido.', - 'dynamic-msg-fill-all-fields': 'Rellene todos los campos', - 'dynamic-msg-burrito-validation-expected': 'Se esperaba una versión 0.3.0 de burrito en lugar de {{version}}', - 'dynamic-msg-burrito-validation-failed': 'Error de validación de Burrito', - 'text-login-page-desc': 'Scribe Scripture es una forma completamente nueva de editar las Escrituras y los recursos relacionados con las mismas, con potentes y elegantes funcionalidades que le ayudarán a centrarse en las cosas importantes.', - 'text-welcome': 'Le damos la bienvenida', - 'text-sign-up-quote': 'Sea parte de una gran comunidad y diviértase con nosotros', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'Activos', - 'label-archived': 'Archivado', - 'label-archived-prj': 'Proyectos archivados', - 'label-bible-translation': 'Traducción de la Biblia', - 'msg-lang-code-req': 'Se requiere código de idioma', - 'msg-lang-name-req': 'El nombre del idioma es obligatorio', - 'msg-min-three-letter': 'Escriba un mínimo de 3 letras para la búsqueda', - 'label-prj-on-my-computer': 'Proyectar en mi ordenador', - 'label-save-to-cloud': 'Guardar en la nube', - 'label-last-synced': 'Última sincronización', - 'label-prj-on-cloud': 'Proyectos en la nube', - 'label-save-to-computer': 'Guardar en el ordenador', - 'label-view-more': 'Ver más', - 'label-create-new-user': 'Crear nuevo usuario', - 'label-user-name': 'Nombre de usuario', - 'label-privacy': 'Privacidad', - 'label-terms': 'Términos', - 'label-collection': 'Colección', - 'label-select-folder': 'Seleccionar carpeta', - 'label-resources': 'Recursos', - 'label-lang': 'Idioma', - 'label-type': 'Tipo', - 'label-select-language': 'Seleccionar Idioma', - 'label-pre-release': 'Pre-lanzamiento', - 'label-save-filter': 'Guardar filtro', - 'label-subject': 'Asunto', - 'label-release': 'Publicación', - 'label-version': 'Versión', - 'msg-select-dir-for-SB': 'Seleccione un directorio/proyecto que tenga un archivo de tipo Scripture Burrito, es decir, un archivo metadata.json', - 'label-online-resources': 'Recursos en línea', - 'tooltip-download': 'Descargar', - 'msg-no-resource-for-bible-obs-download': '
Este contenido no está disponible para este idioma
Puede importar sus propios Recursos Scripture Burrito a través de la pestaña Colección .
Aprenda más sobre la creación de proyectos de tipo Scripture Burrito con Scribe. Consulte la documentación de Scribe.
', - 'label-back': 'Atrás', - 'label-speed': 'Velocidad', - 'label-record': 'Grabar', - 'label-stop': 'Parar', - 'label-continue': 'Continuar', - 'label-rewind': 'Rebobinar', - 'label-play': 'Jugar', - 'label-pause': 'Pausar', - 'label-delete': 'Eliminar', - 'label-volume': 'Volumen', - 'label-takes': 'Tomas', - 'label-settings': 'Ajustes', - 'label-restore': 'Restaurar', - 'label-archive': 'Archivar', - 'tooltip-save-cloud-btn': 'Esta acción sincronizará sus datos con Door43 ', - 'tooltip-save-computer-btn': 'Esta acción clonará o actualizará sus datos locales con datos de Door43', - 'label-choose-usfm-files': 'Elija archivos USFM', - 'label-choose-md-files': 'Elegir archivos Markdown', - 'label-merge': 'Fusionar', - 'label-abort': 'Abortar', - 'tooltip-star-project': 'Marcar proyecto', - 'tooltip-un-star-project': 'Desmarcar proyecto', - 'tooltip-merge-all-orginal-btn': 'Aceptar ORIGINAL para todas las secciones en conflicto no resueltas en el archivo abierto', - 'tooltip-merge-orginal-btn': 'Aceptar cambios ORIGINAL para resolver conflictos', - 'tooltip-merge-all-reset-btn': 'RESTABLECER el archivo abierto al estado inicial', - 'tooltip-merge-all-both-btn': 'Aceptar AMBOS para todas las secciones de conflicto no resueltas en el archivo abierto', - 'tooltip-merge-both-btn': 'Aceptar cambios AMBOS para resolver conflictos', - 'tooltip-merge-all-new-btn': 'Aceptar NUEVO para todas las secciones en conflicto no resueltas en el archivo Abortar Resolución de Conflicto', - 'tooltip-merge-new-btn': 'Aceptar NUEVOS cambios para resolver conflictos', - 'label-original': 'Original', - 'label-new': 'Nuevo', - 'label-reset': 'Restablecer', - 'label-both': 'Ambos', - 'label-overwrite': 'Sobrescribir', - 'modal-title-abort-conflict-resolution': 'Abortar Resolución de Conflictos', - 'msg-abort-conflict-resolution': '¿Desea abortar el proceso de resolución de conflictos? Si aborta, perderá todo su progreso y tendrá que empezar de nuevo.', - 'label-done': 'Hecho', - 'label-resolved': 'Resuelto', - 'label-resolve-conflict': 'Resolver conflicto', - 'label-comparison': 'Comparación', - 'label-files': 'archivos', - 'label-re-record': 'Regrabar', - 'modal-title-re-record': 'Regrabar el audio', - 'msg-re-record-audio': 'Desea volver a grabar el audio', - 'modal-title-delete-audio': 'Eliminar el audio', - 'msg-delete-audio': '¿Desea eliminar la toma seleccionada?', - 'label-accepted': 'Aceptado', - 'msg-remove-resource': '¿Está seguro que desea eliminar el recurso. Esta acción no puede ser revertida', - 'label-check-updates': 'Comprobar actualizaciones', - 'label-documentation': 'Documentación', - 'label-tech-support': 'Soporte técnico', - 'msg-helps-filepath': 'Ruta al Recurso de Ayuda con manifest.yaml válido', - 'tooltip-supported-resources': 'los recursos soportados son TN, TW, TQ, TA', - 'label-upload-help-resources': 'Cargar Recursos de Ayuda', - 'label-book-selection': 'Selección de libros', - 'label-chapter-selection': 'Selección de capítulos', - 'label-select': 'Seleccionar', - 'label-deselect': 'Deseleccionar', - 'label-start': 'Comenzar', - 'label-end': 'Fin', - 'label-apply': 'Aplicar', - 'label-scope-not-selected': 'Para comenzar, vaya a Gestión de alcance, seleccione el libro y los capítulos y haga clic en el botón Aplicar.', - 'label-scope-note-audio': 'Seleccione el libro y el capítulo de la opción GESTIÓN DEL ALCANCE en la página de listado de proyectos', - 'modal-title-scope-management': 'Gestión del alcance', + 'app-name': 'Scribe Scripture', + 'new-project-page': 'Nuevo proyecto', + 'edit-project': 'Editar proyecto', + 'label-abbreviation': 'Abreviatura', + 'label-target-language': 'Idioma de destino', + 'label-ltr': 'LTR (De izquierda a derecha)', + 'label-rtl': 'RTL (De derecha a izquierda)', + 'label-books': 'Libros', + 'label-book': 'Libro', + 'label-import-book': 'Importar libro', + 'label-saved': 'Guardado', + 'label-sync': 'sincronizar', + 'label-comments': 'Comentarios', + 'label-cross-ref': 'Referencia cruzada', + 'label-add-footnote': 'Añadir nota al pie', + 'label-add-comment': 'Añadir comentario', + 'label-add-ref': 'Añadir referencia', + 'label-user-menu': 'Abrir menú de usuario', + 'label-main-menu': 'Abrir menú principal', + 'label-dont-have-account': '¿No tiene una cuenta?', + 'label-already-have-account': '¿Ya tiene una cuenta??', + 'label-new-langauge': 'Nuevo idioma', + 'label-edit-langauge': 'Editar Idioma', + 'label-script-direction': 'Direccionalidad de escritura', + 'label-drop-file-upload': 'Suelte aquí los archivos para cargarlos', + 'projects-page': 'Proyectos', + 'label-search': 'Buscar', + 'label-project': 'Proyecto', + 'label-flavour': 'Sabor', + 'label-project-type': 'Tipo de proyecto', + 'label-project-name': 'Nombre del proyecto', + 'label-language': 'Nombre del idioma', + 'label-language-code': 'Código de idioma', + 'label-all': 'Todos los libros', + 'label-other': 'Otro', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'Desactivar cuenta', + 'label-created-date': 'Fecha de creación', + 'label-last-viewed': 'Última vista', + 'label-description': 'Descripción', + 'label-project-id': 'ID del proyecto', + 'label-sign-in': 'Iniciar sesión', + 'label-sign-up': 'Registrarse', + 'profile-page': 'Perfil', + 'label-your-profile': 'Su perfil', + 'label-username': 'Nombre de usuario', + 'label-name': 'Nombre', + 'label-firstname': 'Primer nombre', + 'label-lastname': 'Apellido', + 'label-password': 'Contraseña', + 'label-confirm-password': 'Confirmar contraseña', + 'label-email': 'E-mail', + 'label-organization': 'organización', + 'label-region': 'Región', + 'label-app-language': 'Idioma de la aplicación', + 'label-menu-file': 'Archivo', + 'label-uploading-files': 'Subiendo archivos', + 'label-menu-edit': 'Editar', + 'label-menu-about': 'Acerca de', + 'label-bookmarks': 'Marcadores', + 'label-custom': 'Personalizado', + 'label-show-hidden-file': 'Mostrar archivos ocultos', + 'label-scope': 'Alcance', + 'label-door43': 'Door 43', + 'label-paratext': 'Paratext', + 'label-license': 'Licencia', + 'label-preview': 'Vista previa', + 'label-versification-scheme': 'Esquema de verificación', + 'label-old-testament': 'Antiguo Testamento', + 'label-new-testament': 'Nuevo Testamento', + 'label-chapter': 'Capítulo', + 'label-verse': 'Versículo', + 'label-import-resource': 'Importar Recurso', + 'label-resource': 'Recurso', + 'label-resource-bible': 'Biblia', + 'label-resource-obs-tn': 'OBS - Notas de traducción', + 'label-resource-obs-tq': 'OBS - Preguntas de traducción', + 'label-resource-obs': 'Historias Bíblicas Abiertas (OBS)', + 'label-resource-tn': 'Notas de traducción', + 'label-resource-twlm': 'Palabras de traducción', + 'label-resource-twl': 'Lista de palabras de traducción', + 'label-resource-tq': 'Preguntas de traducción', + 'label-resource-ta': 'Academia de traducción', + 'label-resource-name': 'nombre de recurso', + 'label-footnotes': 'Notas al Pie', + 'label-location': 'ubicación', + 'label-audio-bible': 'Audio', + 'label-resource-obs-twl': 'OBS - Lista de palabras de traducción', + 'placeholder-resource-name': 'Introducir nombre de recurso', + 'placeholder-license-name': 'Nombre de licencia', + 'placeholder-search': 'Buscar…', + 'placeholder-door43-url': 'Introducir url de door43', + 'label-burrito-resource-path': 'Ruta del archivo del recurso de Scripture Burrito', + 'label-burrito-directory': 'Directorio del Scripture burrito', + 'label-export-file-path': 'Exportar ruta de archivo', + 'label-import-project': 'Importar Proyecto', + 'label-export-project': 'Exportar proyecto', + 'label-notification': 'Notificaciones', + 'label-editor-pane': 'Editor', + 'label-editor-font-char': 'A', + 'label-upload': 'subir', + 'label-no-content-available': '¡No hay contenido disponible!', + 'label-enter-location': 'Introducir ubicación', + 'label-editor-load-module': 'Cargar un módulo', + 'label-import-door43-resources': 'Importar recursos de ayuda de Door43', + 'tooltip-editor-lock': 'bloqueo/desbloqueo de navegación', + 'tooltip-editor-bookmark': 'marcador', + 'tooltip-editor-notification': 'notificación', + 'tooltip-editor-layout': 'Disposición', + 'tooltip-editor-font-dec': 'disminuir tamaño de fuente', + 'tooltip-editor-font-inc': 'aumentar tamaño de fuente', + 'tooltip-editor-resource-selector': 'selector de recursos', + 'tooltip-editor-remove-section': 'eliminar sección', + 'tooltip-editor-add-section': 'añadir sección', + 'modal-title-license': 'Licencia', + 'modal-title-about': 'Acerca de', + 'modal-title-remove-resource': 'Eliminar Recurso', + 'modal-title-update-burrito': 'Actualizar Burrito', + 'modal-title-update-app': '¡Actualización de Scribe Scripture!', + 'modal-title-replace-resource': 'Reemplazar recurso', + 'dynamic-msg-burrito-validate-import-project': 'Burrito validado con éxito', + 'btn-new': 'Nuevo', + 'btn-close': 'Cerrar', + 'btn-ok': 'Ok', + 'btn-source-code': 'Código fuente', + 'btn-save': 'Guardar', + 'btn-signout': 'Cerrar sesión', + 'btn-signup': 'REGISTRARSE', + 'btn-signin': 'INICIAR SESIÓN', + 'btn-edit': 'Editar', + 'btn-export': 'Exportar', + 'btn-import': 'Importar', + 'btn-add': 'añadir', + 'btn-create-project': 'Crear proyecto', + 'btn-import-books': 'Importar Libros', + 'btn-cancel': 'Cancelar', + 'btn-restart': 'Reiniciar', + 'btn-clear': 'Borrar', + 'btn-upload': 'Cargar', + 'btn-advance-settings': 'Configuración Avanzada', + 'btn-create': 'Crear', + 'btn-all': 'TODO', + 'btn-ot': 'AT', + 'btn-nt': 'NT', + 'btn-update': 'Actualizar', + 'btn-replace': 'Reemplazar', + 'btn-remove': 'Eliminar', + 'btn-deactivate': 'Desactivar', + 'btn-load-tn': 'cargar traducción anotada', + 'tooltip-import-resource-info-circle': 'Seleccione un directorio/proyecto que tenga un archivo del tipo Scripture Burrito, es decir, un archivo metadata.json.', + 'tooltip-import-open-file-location': 'abrir ubicación de carpeta', + 'dynamic-msg-import-resource-snack': '¡Carga de recursos exitosa! Por favor revise la lista de recursos', + 'dynamic-msg-unable-find-buritto-snack': 'No se puede encontrar el archivo burrito (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'Archivo burrito no válido (metadata.json).', + 'dynamic-msg-confirm-replace-resource': '¡Se ha encontrado un proyecto existente con el mismo nombre! Revise la pestaña "archivado" o "proyectos". Pulse "Reemplazar" para sobrescribir cualquier contenido existente en los libros coincidentes. Pulse "Fusionar" para fusionar el proyecto con el proyecto actual. Pulse "Cancelar" para evitar cambios.', + 'dynamic-msg-resource-added': 'recurso añadido correctamente', + 'dynamic-msg-resource-unable-fetch-url': 'no se puede obtener el recurso seleccionado desde la url dada', + 'dynamic-msg-load-ref-bible-snack': 'archivos {{refName}} cargados con éxito', + 'dynamic-msg-load-ref-bible-snack-fail': 'Error al cargar archivos {{refName}}', + 'dynamic-msg-load-ref-bible-success': 'Burrito de referencia cargado con éxito', + 'dynamic-msg-validate-hook-project-name': 'El valor especificado debe tener entre {{minLen}} y {{maxLen}} caracteres', + 'dynamic-msg-update-burrito-version': 'Actualiza el burrito de {{version1}} a {{version2}}', + 'dynamic-msg-validate-hook-onlyNum': 'Por favor, introduzca sólo números.', + 'dynamic-msg-validate-hook-onlyString': 'Por favor, introduzca sólo alfabetos.', + 'dynamic-msg-validate-hook-nonSpecChar': 'Caracter especial no permitido', + 'dynamic-msg-validate-hook-alphaNum': 'Sólo se permiten alfabetos y números', + 'dynamic-msg-validate-hook-email': '¡El correo electrónico no es válido!', + 'dynamic-msg-auto-update': 'Hay disponible una nueva actualización de Scribe Scripture. Descargando ahora...', + 'dynamic-msg-auto-update-complete': 'Actualización descargada. Se instalará al reiniciar. Reiniciar ahora?', + 'dynamic-msg-import-burrito-project-success': 'Proyecto importado con éxito', + 'dynamic-msg-deactivate-account': '¿Está seguro de que desea desactivar su cuenta? Todos sus datos serán eliminados permanentemente. Esta acción no se puede deshacer.', + 'dynamic-msg-project-updated': 'Perfil actualizado.', + 'dynamic-msg-app-lang-changed': 'Idioma de la aplicación cambiado.', + 'dynamic-msg-data-read-fail': 'Error al leer los datos desde el archivo.', + 'dynamic-msg-export-success': 'Exportado con éxito', + 'dynamic-msg-export-fail': 'Error al exportar', + 'dynamic-msg-invalid-path': 'Ruta no válida', + 'dynamic-msg-invalid-usfm-file': 'Archivo USFM inválido.', + 'dynamic-msg-invalid-md-file': 'Archivo MD inválido.', + 'dynamic-msg-fill-all-fields': 'Rellene todos los campos', + 'dynamic-msg-burrito-validation-expected': 'Se esperaba una versión 0.3.0 de burrito en lugar de {{version}}', + 'dynamic-msg-burrito-validation-failed': 'Error de validación de Burrito', + 'text-login-page-desc': 'Scribe Scripture es una forma completamente nueva de editar las Escrituras y los recursos relacionados con las mismas, con potentes y elegantes funcionalidades que le ayudarán a centrarse en las cosas importantes.', + 'text-welcome': 'Le damos la bienvenida', + 'text-sign-up-quote': 'Sea parte de una gran comunidad y diviértase con nosotros', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'Activos', + 'label-archived': 'Archivado', + 'label-archived-prj': 'Proyectos archivados', + 'label-bible-translation': 'Traducción de la Biblia', + 'msg-lang-code-req': 'Se requiere código de idioma', + 'msg-lang-name-req': 'El nombre del idioma es obligatorio', + 'msg-min-three-letter': 'Escriba un mínimo de 3 letras para la búsqueda', + 'label-prj-on-my-computer': 'Proyectar en mi ordenador', + 'label-save-to-cloud': 'Guardar en la nube', + 'label-last-synced': 'Última sincronización', + 'label-prj-on-cloud': 'Proyectos en la nube', + 'label-save-to-computer': 'Guardar en el ordenador', + 'label-view-more': 'Ver más', + 'label-create-new-user': 'Crear nuevo usuario', + 'label-user-name': 'Nombre de usuario', + 'label-privacy': 'Privacidad', + 'label-terms': 'Términos', + 'label-collection': 'Colección', + 'label-select-folder': 'Seleccionar carpeta', + 'label-resources': 'Recursos', + 'label-lang': 'Idioma', + 'label-type': 'Tipo', + 'label-select-language': 'Seleccionar Idioma', + 'label-pre-release': 'Pre-lanzamiento', + 'label-save-filter': 'Guardar filtro', + 'label-subject': 'Asunto', + 'label-release': 'Publicación', + 'label-version': 'Versión', + 'msg-select-dir-for-SB': 'Seleccione un directorio/proyecto que tenga un archivo de tipo Scripture Burrito, es decir, un archivo metadata.json', + 'label-online-resources': 'Recursos en línea', + 'tooltip-download': 'Descargar', + 'msg-no-resource-for-bible-obs-download': '
Este contenido no está disponible para este idioma
Puede importar sus propios Recursos Scripture Burrito a través de la pestaña Colección .
Aprenda más sobre la creación de proyectos de tipo Scripture Burrito con Scribe. Consulte la documentación de Scribe.
', + 'label-back': 'Atrás', + 'label-speed': 'Velocidad', + 'label-record': 'Grabar', + 'label-stop': 'Parar', + 'label-continue': 'Continuar', + 'label-rewind': 'Rebobinar', + 'label-play': 'Jugar', + 'label-pause': 'Pausar', + 'label-delete': 'Eliminar', + 'label-volume': 'Volumen', + 'label-takes': 'Tomas', + 'label-settings': 'Ajustes', + 'label-restore': 'Restaurar', + 'label-archive': 'Archivar', + 'tooltip-save-cloud-btn': 'Esta acción sincronizará sus datos con Door43 ', + 'tooltip-save-computer-btn': 'Esta acción clonará o actualizará sus datos locales con datos de Door43', + 'label-choose-usfm-files': 'Elija archivos USFM', + 'label-choose-md-files': 'Elegir archivos Markdown', + 'label-merge': 'Fusionar', + 'label-abort': 'Abortar', + 'tooltip-star-project': 'Marcar proyecto', + 'tooltip-un-star-project': 'Desmarcar proyecto', + 'tooltip-merge-all-orginal-btn': 'Aceptar ORIGINAL para todas las secciones en conflicto no resueltas en el archivo abierto', + 'tooltip-merge-orginal-btn': 'Aceptar cambios ORIGINAL para resolver conflictos', + 'tooltip-merge-all-reset-btn': 'RESTABLECER el archivo abierto al estado inicial', + 'tooltip-merge-all-both-btn': 'Aceptar AMBOS para todas las secciones de conflicto no resueltas en el archivo abierto', + 'tooltip-merge-both-btn': 'Aceptar cambios AMBOS para resolver conflictos', + 'tooltip-merge-all-new-btn': 'Aceptar NUEVO para todas las secciones en conflicto no resueltas en el archivo Abortar Resolución de Conflicto', + 'tooltip-merge-new-btn': 'Aceptar NUEVOS cambios para resolver conflictos', + 'label-original': 'Original', + 'label-new': 'Nuevo', + 'label-reset': 'Restablecer', + 'label-both': 'Ambos', + 'label-overwrite': 'Sobrescribir', + 'modal-title-abort-conflict-resolution': 'Abortar Resolución de Conflictos', + 'msg-abort-conflict-resolution': '¿Desea abortar el proceso de resolución de conflictos? Si aborta, perderá todo su progreso y tendrá que empezar de nuevo.', + 'label-done': 'Hecho', + 'label-resolved': 'Resuelto', + 'label-resolve-conflict': 'Resolver conflicto', + 'label-comparison': 'Comparación', + 'label-files': 'archivos', + 'label-re-record': 'Regrabar', + 'modal-title-re-record': 'Regrabar el audio', + 'msg-re-record-audio': 'Desea volver a grabar el audio', + 'modal-title-delete-audio': 'Eliminar el audio', + 'msg-delete-audio': '¿Desea eliminar la toma seleccionada?', + 'label-accepted': 'Aceptado', + 'msg-remove-resource': '¿Está seguro que desea eliminar el recurso. Esta acción no puede ser revertida', + 'label-check-updates': 'Comprobar actualizaciones', + 'label-documentation': 'Documentación', + 'label-tech-support': 'Soporte técnico', + 'msg-helps-filepath': 'Ruta al Recurso de Ayuda con manifest.yaml válido', + 'tooltip-supported-resources': 'los recursos soportados son TN, TW, TQ, TA', + 'label-upload-help-resources': 'Cargar Recursos de Ayuda', + 'label-book-selection': 'Selección de libros', + 'label-chapter-selection': 'Selección de capítulos', + 'label-select': 'Seleccionar', + 'label-deselect': 'Deseleccionar', + 'label-start': 'Comenzar', + 'label-end': 'Fin', + 'label-apply': 'Aplicar', + 'label-scope-not-selected': 'Para comenzar, vaya a Gestión de alcance, seleccione el libro y los capítulos y haga clic en el botón Aplicar.', + 'label-scope-note-audio': 'Seleccione el libro y el capítulo de la opción GESTIÓN DEL ALCANCE en la página de listado de proyectos', + 'modal-title-scope-management': 'Gestión del alcance', }; diff --git a/renderer/src/translations/fa.js b/renderer/src/translations/fa.js index 30bce2101..3dc701510 100644 --- a/renderer/src/translations/fa.js +++ b/renderer/src/translations/fa.js @@ -1,284 +1,284 @@ export const Fa = { - 'app-name': 'کاتب کتاب مقدس', - 'new-project-page': 'پروژه جدید', - 'edit-project': 'ویرایش پروژه', - 'label-abbreviation': 'نام اختصاری', - 'label-target-language': 'زبان مقصد', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'کتاب‌ها', - 'label-book': 'کتاب', - 'label-import-book': 'وارد کردن کتاب', - 'label-saved': 'ذخیره شد', - 'label-sync': 'همگام‌سازی', - 'label-comments': 'نظرات', - 'label-cross-ref': 'مرجع متقابل', - 'label-add-footnote': 'اضافه کردن پاورقی', - 'label-add-comment': 'اضافه کردن نظر', - 'label-add-ref': 'افزودن مرجع', - 'label-user-menu': 'بازکردن منوی کاربر', - 'label-main-menu': 'باز کردن منوی اصلی', - 'label-dont-have-account': 'حساب کاربری ندارید؟', - 'label-already-have-account': 'پیشتر حساب کاربری داشته اید؟', - 'label-new-langauge': 'زبان جدید', - 'label-edit-langauge': 'ویرایش زبان', - 'label-script-direction': 'جهت نوشتاری', - 'label-drop-file-upload': 'فایل را برای آپلود در اینجا رها کنید', - 'projects-page': 'پروژه ها', - 'label-search': 'جستجو', - 'label-project': 'پروژه', - 'label-flavour': 'مورد علاقه', - 'label-project-type': 'نوع', - 'label-project-name': 'نام پروژه', - 'label-language': 'نام زبان', - 'label-language-code': 'کد زبان', - 'label-all': 'همه کتاب‌ها', - 'label-other': 'بقیه', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'غیر فعال سازی حساب کاربری', - 'label-created-date': 'تاریخ ایجاد', - 'label-last-viewed': 'آخرین بازدید', - 'label-description': 'توضیحات', - 'label-project-id': 'کد پروژه', - 'label-sign-in': 'ورود', - 'label-sign-up': 'ثبت نام', - 'profile-page': 'پروفایل', - 'label-your-profile': 'پروفایل شما', - 'label-username': 'نام‌ کاربری', - 'label-name': 'نام', - 'label-firstname': 'نام', - 'label-lastname': 'نام خانوادگی', - 'label-password': 'رمز عبور', - 'label-confirm-password': 'تأیید رمز عبور', - 'label-email': 'پست الکترونیکی', - 'label-organization': 'شرکت', - 'label-region': 'شهر', - 'label-app-language': 'زبان برنامه', - 'label-menu-file': 'فایل', - 'label-uploading-files': 'بارگذاری فایل ها', - 'label-menu-edit': 'ویرایش', - 'label-menu-about': 'درباره', - 'label-bookmarks': 'نشانک ها', - 'label-custom': 'سفارشی', - 'label-show-hidden-file': 'نمایش فایل های مخفی', - 'label-scope': 'محدوده', - 'label-door43': 'Door 43', - 'label-paratext': 'پیرامتن', - 'label-license': 'مجوز', - 'label-preview': 'پيش نمايش', - 'label-versification-scheme': 'طرح تایید', - 'label-old-testament': 'عهد عتیق', - 'label-new-testament': 'عهد جدید', - 'label-chapter': 'فصل', - 'label-verse': 'آیه', - 'label-import-resource': 'وارد کردن منبع', - 'label-resource': 'منبع', - 'label-resource-bible': 'کتاب مقدس', - 'label-resource-obs-tn': 'یادداشت های ترجمه OBS', - 'label-resource-obs-tq': 'سوالات ترجمه OBS', - 'label-resource-obs': 'باز کردن داستان‌های کتاب مقدس', - 'label-resource-tn': 'یادداشت های ترجمه', - 'label-resource-twlm': 'کلمات ترجمه', - 'label-resource-twl': 'فهرست کلمات ترجمه', - 'label-resource-tq': 'سوالات ترجمه', - 'label-resource-ta': 'فرهنگستان ترجمه', - 'label-resource-name': 'نام منبع', - 'label-footnotes': 'پاورقی ها', - 'label-location': 'موقعیت مکانی', - 'label-audio-bible': 'صدا', - 'label-resource-obs-twl': 'فهرست کلمات ترجمه OBS', - 'placeholder-resource-name': 'نام منبع را وارد کنید', - 'placeholder-license-name': 'نام مجوز', - 'placeholder-search': 'جستجو کردن', - 'placeholder-door43-url': 'آدرس door43 را وارد کنید', - 'label-burrito-resource-path': 'مسیر فایل منبع Burrito Scripture', - 'label-burrito-directory': 'فهرست کتاب مقدس burrito', - 'label-export-file-path': 'مسیر خروجی فایل', - 'label-import-project': 'وارد کردن پروژه', - 'label-export-project': 'خروجی گرفتن از پروژه', - 'label-notification': 'اعلانات', - 'label-editor-pane': 'ویرایشگر', - 'label-editor-font-char': 'آ', - 'label-upload': 'بارگذاری', - 'label-no-content-available': 'هیچ محتوایی در دسترس نیست!', - 'label-enter-location': 'موقعیت مکانی را وارد کنید', - 'label-editor-load-module': 'یک ماژول را بارگیری کنید', - 'label-import-door43-resources': 'Import Door43 helps resources', - 'tooltip-editor-lock': 'قفل / باز کردن مکان یاب', - 'tooltip-editor-bookmark': 'نشانه گذاری', - 'tooltip-editor-notification': 'اعلانات', - 'tooltip-editor-layout': 'چیدمان', - 'tooltip-editor-font-dec': 'کاهش اندازه فونت', - 'tooltip-editor-font-inc': 'افزایش اندازه فونت', - 'tooltip-editor-resource-selector': 'انتخابگر منابع', - 'tooltip-editor-remove-section': 'حذف بخش', - 'tooltip-editor-add-section': 'افزودن بخش', - 'modal-title-license': 'مجوز', - 'modal-title-about': 'درباره', - 'modal-title-remove-resource': 'حذف منبع', - 'modal-title-update-burrito': 'Burrito را به روز کنید', - 'modal-title-update-app': 'به روز رسانی Scribe Scripture!', - 'modal-title-replace-resource': 'جایگزینی منبع', - 'dynamic-msg-burrito-validate-import-project': 'Burrito با موفقیت تایید شد', - 'btn-new': 'جدید', - 'btn-close': 'بستن', - 'btn-ok': 'تایید', - 'btn-source-code': 'کد منبع', - 'btn-save': 'ذخیره', - 'btn-signout': 'خروج', - 'btn-signup': 'ثبت نام', - 'btn-signin': 'ورود', - 'btn-edit': 'ویرایش', - 'btn-export': 'خروجی گرفتن', - 'btn-import': 'وارد کردن', - 'btn-add': 'اضافه کردن', - 'btn-create-project': 'ایجاد پروژه', - 'btn-import-books': 'وارد کردن کتاب‌ ها', - 'btn-cancel': 'لغو', - 'btn-restart': 'راه اندازی مجدد', - 'btn-clear': 'پاک سازی', - 'btn-upload': 'بارگذاری', - 'btn-advance-settings': 'تنظیمات پیشرفته', - 'btn-create': 'ساختن', - 'btn-all': 'همه', - 'btn-ot': 'OT', - 'btn-nt': 'NT', - 'btn-update': 'به روز رسانی', - 'btn-replace': 'جایگزین', - 'btn-remove': 'حذف', - 'btn-deactivate': 'غیرفعال کردن', - 'btn-load-tn': 'بارگذاری یادداشت ترجمه', - 'tooltip-import-resource-info-circle': 'انتخاب فایل و یا مکان پروژه ای که شامل متن و کد burrito هست. برای مثال: metadata.json', - 'tooltip-import-open-file-location': 'باز کردن محل پوشه', - 'dynamic-msg-import-resource-snack': 'بارگذاری منبع با موفقیت انجام شد! لطفا فهرست منابع را بررسی کنید', - 'dynamic-msg-unable-find-buritto-snack': 'فایل burrito (metadata.json) یافت نشد.', - 'dynamic-msg-unable-invalid-buritto-snack': 'فایل burrito (metadata.json) نامعتبر است.', - 'dynamic-msg-confirm-replace-resource': 'یک پروژه موجود با همین نام پیدا شد! " بخش آرشیو و فایلها را بررسی کنید. روی گزینه جایگزینی کلیک کنید تا محتوای جدید بر روی محتوای قبلی که تداخل و تشابه اسم دارد، جایگزین شود. برای ترکیب پروژه با پروژه فعلی، روی گزینه "ادغام" کلیک کنید. برای جلوگیری از تغییرات، روی گزینه "لغو" کلیک کنید.', - 'dynamic-msg-resource-added': 'منبع با موفقیت اضافه شد', - 'dynamic-msg-resource-unable-fetch-url': 'منبع انتخابی از طریق نشانی اینترنتی موردنظر قابل دریافت نمی باشد', - 'dynamic-msg-load-ref-bible-snack': 'فایل {{refName}} با موفقیت بارگیری شد', - 'dynamic-msg-load-ref-bible-snack-fail': 'فایل های {{refName}} بارگیری نشد', - 'dynamic-msg-load-ref-bible-success': 'مرجع-burrito با موفقیت بارگیری شد', - 'dynamic-msg-validate-hook-project-name': 'مقدار حروف باید بین {{minLen}} و {{maxLen}} کاراکتر باشد', - 'dynamic-msg-update-burrito-version': 'بوریتو را از {{version1}} به {{version2}} به روز رسانی کنید', - 'dynamic-msg-validate-hook-onlyNum': 'لطفا فقط اعداد را وارد کنید', - 'dynamic-msg-validate-hook-onlyString': 'لطفا فقط حروف الفبا را وارد کنید', - 'dynamic-msg-validate-hook-nonSpecChar': 'کاراکترهای خاص مجاز نیستند', - 'dynamic-msg-validate-hook-alphaNum': 'فقط حروف و اعداد مجاز هستند', - 'dynamic-msg-validate-hook-email': 'آدرس ایمیل معتبر نیست!', - 'dynamic-msg-auto-update': 'یک به‌روزرسانی جدید Scribe Scripture در دسترس است. در حال دانلود...', - 'dynamic-msg-auto-update-complete': 'به روز رسانی دانلود شد. با راه اندازی مجدد نصب خواهد شد. اکنون دوباره راه اندازی شود؟', - 'dynamic-msg-import-burrito-project-success': 'پروژه با موفقیت وارد شد', - 'dynamic-msg-deactivate-account': 'مطمئن هستید که می خواهید حساب کاربری خود را غیرفعال کنید؟ تمام داده‌ ها و اطلاعات شما برای همیشه حذف خواهند شد و قابل بازگرداندن نخواهد بود.', - 'dynamic-msg-project-updated': 'پروفایل به روز رسانی شد.', - 'dynamic-msg-app-lang-changed': 'زبان برنامه تغییر کرد.', - 'dynamic-msg-data-read-fail': 'خواندن داده ها از فایل انجام نشد.', - 'dynamic-msg-export-success': 'با موفقیت اکسپورت شد', - 'dynamic-msg-export-fail': 'اکسپورت با موفقیت انجام نشد', - 'dynamic-msg-invalid-path': 'مسیر نامعتبر', - 'dynamic-msg-invalid-usfm-file': 'فایل USFM نامعتبر است.', - 'dynamic-msg-invalid-md-file': 'فایل MDنامعتبر است.', - 'dynamic-msg-fill-all-fields': 'تمام گزینه ها را پُر کنید', - 'dynamic-msg-burrito-validation-expected': 'نسخه 0.3.0 بوریتو به جای {{نسخه}} مورد انتظار بود', - 'dynamic-msg-burrito-validation-failed': 'تائیدیه Burrito ناموفق بود', - 'text-login-page-desc': 'روشی کاملا جدید برای Scribe Scripture ویرایش متون مقدس و منابع مرتبط همراه با ویژگی‌های قدرتمند و در عین حال جذاب است که به شما کمک می‌کند تا روی مسائل مهم تمرکز کنید!', - 'text-welcome': 'خوش آمدید', - 'text-sign-up-quote': 'به ما بپیوندید و از مجموعه عالی ما لذت ببرید', - 'n-0': '۰', - 'n-1': '۱', - 'n-2': '۲', - 'n-3': '۳', - 'n-4': '۴', - 'n-5': '۵', - 'n-6': '۶', - 'n-7': '۷', - 'n-8': '۸', - 'n-9': '۹', - 'label-active': 'فعال', - 'label-archived': 'بایگانی شده', - 'label-archived-prj': 'پروژه های بایگانی شده', - 'label-bible-translation': 'ترجمه کتاب مقدس', - 'msg-lang-code-req': 'کُد زبان مورد نیاز است', - 'msg-lang-name-req': 'اسم زبان مورد نیاز است', - 'msg-min-three-letter': 'حداقل ۳ حرف برای جستجو تایپ کنید', - 'label-prj-on-my-computer': 'پروژه در این رایانه', - 'label-save-to-cloud': 'ذخیره در فضای ابری', - 'label-last-synced': 'آخرین همگام سازی', - 'label-prj-on-cloud': 'پروژه ها در فضای ابری', - 'label-save-to-computer': 'ذخیره سازی در رایانه', - 'label-view-more': 'مشاهده بیشتر', - 'label-create-new-user': 'ساخت حساب کاربری جدید', - 'label-user-name': 'نام کاربری', - 'label-privacy': 'حریم خصوصی', - 'label-terms': 'مقررات', - 'label-collection': 'مجموعه', - 'label-select-folder': 'پوشه را انتخاب کنید', - 'label-resources': 'منابع', - 'label-lang': 'زبان', - 'label-type': 'نوع', - 'label-select-language': 'زبان را انتخاب کنید', - 'label-pre-release': 'نسخه پیشین', - 'label-save-filter': 'ذخیره فیلتر', - 'label-subject': 'موضوع', - 'label-release': 'عرضه شده', - 'label-version': 'نسخه', - 'msg-select-dir-for-SB': 'مکان/پروژه ای را انتخاب کنید که دارای فایل Burrito باشد. برای مثال: metadata.json', - 'label-online-resources': 'منابع آنلاین', - 'tooltip-download': 'بارگیری', - 'msg-no-resource-for-bible-obs-download': '
این محتوا برای این زبان در دسترس نیست
می توانید منابعScripture Burritoخود را ازطریقمجموعهبرگه وارد کنید.
یادگیری کنید. بیشتر در مورد ایجاد پروژه های Scripture Burrito با Scribe. به اسناد Scribe مراجعه کنید.
', - 'label-back': 'برگشت', - 'label-speed': 'سرعت', - 'label-record': 'ضبط', - 'label-stop': 'توقف', - 'label-continue': 'ادامه', - 'label-rewind': 'عقب گرد', - 'label-play': 'پخش', - 'label-pause': 'مکث', - 'label-delete': 'پاک کردن', - 'label-volume': 'درجه صدا', - 'label-takes': 'زمانبر', - 'label-settings': 'تنظیمات', - 'label-restore': 'بازیابی', - 'label-archive': 'بایگانی', - 'tooltip-save-cloud-btn': 'این اقدام، داده های شما را با Door43 همگام می‌کند', - 'tooltip-save-computer-btn': 'این اقدام داده های محلی شما را با داده های Door43 شبیه سازی یا به روز رسانی می کند', - 'label-choose-usfm-files': 'فایل های USFM را انتخاب کنید', - 'label-choose-md-files': 'فایل های Markdown را انتخاب کنید', - 'label-merge': 'ادغام', - 'label-abort': 'انصراف', - 'tooltip-star-project': 'نشان گذاری پروژه', - 'tooltip-un-star-project': 'حذف نشان پروژه', - 'tooltip-merge-all-orginal-btn': 'پذیرش نسخه اصلی برای حل تعارض و مشکلات فنی در فایلهای باز شده', - 'tooltip-merge-orginal-btn': 'تغییرات اصلی را برای حل تعارض بپذیرید', - 'tooltip-merge-all-reset-btn': 'بازگرداندن فایل باز شده به حالت اولیه ', - 'tooltip-merge-all-both-btn': 'هر دو را برای تمام بخش‌های تضاد حل نشده در فایل باز شده بپذیرید', - 'tooltip-merge-both-btn': 'برای حل تعارض، هر دو تغییر را بپذیرید', - 'tooltip-merge-all-new-btn': 'برای تمام بخش‌های تضاد حل نشده در فایل باز شده، تغییرات جدید را بپذیرید', - 'tooltip-merge-new-btn': 'تغییرات جدید را برای حل تعارض بپذیرید', - 'label-original': 'اصلی', - 'label-new': 'جدید', - 'label-reset': 'باز راه اندازی', - 'label-both': 'هر دو', - 'label-overwrite': 'بازنویسی', - 'modal-title-abort-conflict-resolution': 'لغو حل مشکل تعارض', - 'msg-abort-conflict-resolution': 'آیا می خواهید فرآیند حل مشکل تعارض را متوقف کنید؟ اگر لغو کنید، تمام تغییرات انجام شده را از دست خواهید داد و باید از نو شروع کنید.', - 'label-done': 'انجام شد', - 'label-resolved': 'حل شد', - 'label-resolve-conflict': 'حل تعارض‌ها', - 'label-comparison': 'مقایسه', - 'label-files': 'فایل ها', - 'label-re-record': 'ضبط مجدد', - 'modal-title-re-record': 'ضبط مجدد صدا', - 'msg-re-record-audio': 'آیا می خواهید صدا را دوباره ضبط کنید؟', - 'modal-title-delete-audio': 'صدا را حذف کنید', - 'msg-delete-audio': 'آیا می‌خواهید داده‌های انتخاب شده را حذف کنید؟', - 'label-accepted': 'پذیرفته شده', - 'msg-remove-resource': 'آیا مطمئن هستید که می خواهید منبع را حذف کنید؟ این عمل قابل برگشت نیست', - 'label-check-updates': 'بررسی بروز رسانی ها', - 'label-documentation': 'Documentation', - 'label-tech-support': 'Tech Support', - 'label-filter': 'Filter', - 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', - 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', - 'label-upload-help-resources': 'Upload Help Resources', + 'app-name': 'کاتب کتاب مقدس', + 'new-project-page': 'پروژه جدید', + 'edit-project': 'ویرایش پروژه', + 'label-abbreviation': 'نام اختصاری', + 'label-target-language': 'زبان مقصد', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'کتاب‌ها', + 'label-book': 'کتاب', + 'label-import-book': 'وارد کردن کتاب', + 'label-saved': 'ذخیره شد', + 'label-sync': 'همگام‌سازی', + 'label-comments': 'نظرات', + 'label-cross-ref': 'مرجع متقابل', + 'label-add-footnote': 'اضافه کردن پاورقی', + 'label-add-comment': 'اضافه کردن نظر', + 'label-add-ref': 'افزودن مرجع', + 'label-user-menu': 'بازکردن منوی کاربر', + 'label-main-menu': 'باز کردن منوی اصلی', + 'label-dont-have-account': 'حساب کاربری ندارید؟', + 'label-already-have-account': 'پیشتر حساب کاربری داشته اید؟', + 'label-new-langauge': 'زبان جدید', + 'label-edit-langauge': 'ویرایش زبان', + 'label-script-direction': 'جهت نوشتاری', + 'label-drop-file-upload': 'فایل را برای آپلود در اینجا رها کنید', + 'projects-page': 'پروژه ها', + 'label-search': 'جستجو', + 'label-project': 'پروژه', + 'label-flavour': 'مورد علاقه', + 'label-project-type': 'نوع', + 'label-project-name': 'نام پروژه', + 'label-language': 'نام زبان', + 'label-language-code': 'کد زبان', + 'label-all': 'همه کتاب‌ها', + 'label-other': 'بقیه', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'غیر فعال سازی حساب کاربری', + 'label-created-date': 'تاریخ ایجاد', + 'label-last-viewed': 'آخرین بازدید', + 'label-description': 'توضیحات', + 'label-project-id': 'کد پروژه', + 'label-sign-in': 'ورود', + 'label-sign-up': 'ثبت نام', + 'profile-page': 'پروفایل', + 'label-your-profile': 'پروفایل شما', + 'label-username': 'نام‌ کاربری', + 'label-name': 'نام', + 'label-firstname': 'نام', + 'label-lastname': 'نام خانوادگی', + 'label-password': 'رمز عبور', + 'label-confirm-password': 'تأیید رمز عبور', + 'label-email': 'پست الکترونیکی', + 'label-organization': 'شرکت', + 'label-region': 'شهر', + 'label-app-language': 'زبان برنامه', + 'label-menu-file': 'فایل', + 'label-uploading-files': 'بارگذاری فایل ها', + 'label-menu-edit': 'ویرایش', + 'label-menu-about': 'درباره', + 'label-bookmarks': 'نشانک ها', + 'label-custom': 'سفارشی', + 'label-show-hidden-file': 'نمایش فایل های مخفی', + 'label-scope': 'محدوده', + 'label-door43': 'Door 43', + 'label-paratext': 'پیرامتن', + 'label-license': 'مجوز', + 'label-preview': 'پيش نمايش', + 'label-versification-scheme': 'طرح تایید', + 'label-old-testament': 'عهد عتیق', + 'label-new-testament': 'عهد جدید', + 'label-chapter': 'فصل', + 'label-verse': 'آیه', + 'label-import-resource': 'وارد کردن منبع', + 'label-resource': 'منبع', + 'label-resource-bible': 'کتاب مقدس', + 'label-resource-obs-tn': 'یادداشت های ترجمه OBS', + 'label-resource-obs-tq': 'سوالات ترجمه OBS', + 'label-resource-obs': 'باز کردن داستان‌های کتاب مقدس', + 'label-resource-tn': 'یادداشت های ترجمه', + 'label-resource-twlm': 'کلمات ترجمه', + 'label-resource-twl': 'فهرست کلمات ترجمه', + 'label-resource-tq': 'سوالات ترجمه', + 'label-resource-ta': 'فرهنگستان ترجمه', + 'label-resource-name': 'نام منبع', + 'label-footnotes': 'پاورقی ها', + 'label-location': 'موقعیت مکانی', + 'label-audio-bible': 'صدا', + 'label-resource-obs-twl': 'فهرست کلمات ترجمه OBS', + 'placeholder-resource-name': 'نام منبع را وارد کنید', + 'placeholder-license-name': 'نام مجوز', + 'placeholder-search': 'جستجو کردن', + 'placeholder-door43-url': 'آدرس door43 را وارد کنید', + 'label-burrito-resource-path': 'مسیر فایل منبع Burrito Scripture', + 'label-burrito-directory': 'فهرست کتاب مقدس burrito', + 'label-export-file-path': 'مسیر خروجی فایل', + 'label-import-project': 'وارد کردن پروژه', + 'label-export-project': 'خروجی گرفتن از پروژه', + 'label-notification': 'اعلانات', + 'label-editor-pane': 'ویرایشگر', + 'label-editor-font-char': 'آ', + 'label-upload': 'بارگذاری', + 'label-no-content-available': 'هیچ محتوایی در دسترس نیست!', + 'label-enter-location': 'موقعیت مکانی را وارد کنید', + 'label-editor-load-module': 'یک ماژول را بارگیری کنید', + 'label-import-door43-resources': 'Import Door43 helps resources', + 'tooltip-editor-lock': 'قفل / باز کردن مکان یاب', + 'tooltip-editor-bookmark': 'نشانه گذاری', + 'tooltip-editor-notification': 'اعلانات', + 'tooltip-editor-layout': 'چیدمان', + 'tooltip-editor-font-dec': 'کاهش اندازه فونت', + 'tooltip-editor-font-inc': 'افزایش اندازه فونت', + 'tooltip-editor-resource-selector': 'انتخابگر منابع', + 'tooltip-editor-remove-section': 'حذف بخش', + 'tooltip-editor-add-section': 'افزودن بخش', + 'modal-title-license': 'مجوز', + 'modal-title-about': 'درباره', + 'modal-title-remove-resource': 'حذف منبع', + 'modal-title-update-burrito': 'Burrito را به روز کنید', + 'modal-title-update-app': 'به روز رسانی Scribe Scripture!', + 'modal-title-replace-resource': 'جایگزینی منبع', + 'dynamic-msg-burrito-validate-import-project': 'Burrito با موفقیت تایید شد', + 'btn-new': 'جدید', + 'btn-close': 'بستن', + 'btn-ok': 'تایید', + 'btn-source-code': 'کد منبع', + 'btn-save': 'ذخیره', + 'btn-signout': 'خروج', + 'btn-signup': 'ثبت نام', + 'btn-signin': 'ورود', + 'btn-edit': 'ویرایش', + 'btn-export': 'خروجی گرفتن', + 'btn-import': 'وارد کردن', + 'btn-add': 'اضافه کردن', + 'btn-create-project': 'ایجاد پروژه', + 'btn-import-books': 'وارد کردن کتاب‌ ها', + 'btn-cancel': 'لغو', + 'btn-restart': 'راه اندازی مجدد', + 'btn-clear': 'پاک سازی', + 'btn-upload': 'بارگذاری', + 'btn-advance-settings': 'تنظیمات پیشرفته', + 'btn-create': 'ساختن', + 'btn-all': 'همه', + 'btn-ot': 'OT', + 'btn-nt': 'NT', + 'btn-update': 'به روز رسانی', + 'btn-replace': 'جایگزین', + 'btn-remove': 'حذف', + 'btn-deactivate': 'غیرفعال کردن', + 'btn-load-tn': 'بارگذاری یادداشت ترجمه', + 'tooltip-import-resource-info-circle': 'انتخاب فایل و یا مکان پروژه ای که شامل متن و کد burrito هست. برای مثال: metadata.json', + 'tooltip-import-open-file-location': 'باز کردن محل پوشه', + 'dynamic-msg-import-resource-snack': 'بارگذاری منبع با موفقیت انجام شد! لطفا فهرست منابع را بررسی کنید', + 'dynamic-msg-unable-find-buritto-snack': 'فایل burrito (metadata.json) یافت نشد.', + 'dynamic-msg-unable-invalid-buritto-snack': 'فایل burrito (metadata.json) نامعتبر است.', + 'dynamic-msg-confirm-replace-resource': 'یک پروژه موجود با همین نام پیدا شد! " بخش آرشیو و فایلها را بررسی کنید. روی گزینه جایگزینی کلیک کنید تا محتوای جدید بر روی محتوای قبلی که تداخل و تشابه اسم دارد، جایگزین شود. برای ترکیب پروژه با پروژه فعلی، روی گزینه "ادغام" کلیک کنید. برای جلوگیری از تغییرات، روی گزینه "لغو" کلیک کنید.', + 'dynamic-msg-resource-added': 'منبع با موفقیت اضافه شد', + 'dynamic-msg-resource-unable-fetch-url': 'منبع انتخابی از طریق نشانی اینترنتی موردنظر قابل دریافت نمی باشد', + 'dynamic-msg-load-ref-bible-snack': 'فایل {{refName}} با موفقیت بارگیری شد', + 'dynamic-msg-load-ref-bible-snack-fail': 'فایل های {{refName}} بارگیری نشد', + 'dynamic-msg-load-ref-bible-success': 'مرجع-burrito با موفقیت بارگیری شد', + 'dynamic-msg-validate-hook-project-name': 'مقدار حروف باید بین {{minLen}} و {{maxLen}} کاراکتر باشد', + 'dynamic-msg-update-burrito-version': 'بوریتو را از {{version1}} به {{version2}} به روز رسانی کنید', + 'dynamic-msg-validate-hook-onlyNum': 'لطفا فقط اعداد را وارد کنید', + 'dynamic-msg-validate-hook-onlyString': 'لطفا فقط حروف الفبا را وارد کنید', + 'dynamic-msg-validate-hook-nonSpecChar': 'کاراکترهای خاص مجاز نیستند', + 'dynamic-msg-validate-hook-alphaNum': 'فقط حروف و اعداد مجاز هستند', + 'dynamic-msg-validate-hook-email': 'آدرس ایمیل معتبر نیست!', + 'dynamic-msg-auto-update': 'یک به‌روزرسانی جدید Scribe Scripture در دسترس است. در حال دانلود...', + 'dynamic-msg-auto-update-complete': 'به روز رسانی دانلود شد. با راه اندازی مجدد نصب خواهد شد. اکنون دوباره راه اندازی شود؟', + 'dynamic-msg-import-burrito-project-success': 'پروژه با موفقیت وارد شد', + 'dynamic-msg-deactivate-account': 'مطمئن هستید که می خواهید حساب کاربری خود را غیرفعال کنید؟ تمام داده‌ ها و اطلاعات شما برای همیشه حذف خواهند شد و قابل بازگرداندن نخواهد بود.', + 'dynamic-msg-project-updated': 'پروفایل به روز رسانی شد.', + 'dynamic-msg-app-lang-changed': 'زبان برنامه تغییر کرد.', + 'dynamic-msg-data-read-fail': 'خواندن داده ها از فایل انجام نشد.', + 'dynamic-msg-export-success': 'با موفقیت اکسپورت شد', + 'dynamic-msg-export-fail': 'اکسپورت با موفقیت انجام نشد', + 'dynamic-msg-invalid-path': 'مسیر نامعتبر', + 'dynamic-msg-invalid-usfm-file': 'فایل USFM نامعتبر است.', + 'dynamic-msg-invalid-md-file': 'فایل MDنامعتبر است.', + 'dynamic-msg-fill-all-fields': 'تمام گزینه ها را پُر کنید', + 'dynamic-msg-burrito-validation-expected': 'نسخه 0.3.0 بوریتو به جای {{نسخه}} مورد انتظار بود', + 'dynamic-msg-burrito-validation-failed': 'تائیدیه Burrito ناموفق بود', + 'text-login-page-desc': 'روشی کاملا جدید برای Scribe Scripture ویرایش متون مقدس و منابع مرتبط همراه با ویژگی‌های قدرتمند و در عین حال جذاب است که به شما کمک می‌کند تا روی مسائل مهم تمرکز کنید!', + 'text-welcome': 'خوش آمدید', + 'text-sign-up-quote': 'به ما بپیوندید و از مجموعه عالی ما لذت ببرید', + 'n-0': '۰', + 'n-1': '۱', + 'n-2': '۲', + 'n-3': '۳', + 'n-4': '۴', + 'n-5': '۵', + 'n-6': '۶', + 'n-7': '۷', + 'n-8': '۸', + 'n-9': '۹', + 'label-active': 'فعال', + 'label-archived': 'بایگانی شده', + 'label-archived-prj': 'پروژه های بایگانی شده', + 'label-bible-translation': 'ترجمه کتاب مقدس', + 'msg-lang-code-req': 'کُد زبان مورد نیاز است', + 'msg-lang-name-req': 'اسم زبان مورد نیاز است', + 'msg-min-three-letter': 'حداقل ۳ حرف برای جستجو تایپ کنید', + 'label-prj-on-my-computer': 'پروژه در این رایانه', + 'label-save-to-cloud': 'ذخیره در فضای ابری', + 'label-last-synced': 'آخرین همگام سازی', + 'label-prj-on-cloud': 'پروژه ها در فضای ابری', + 'label-save-to-computer': 'ذخیره سازی در رایانه', + 'label-view-more': 'مشاهده بیشتر', + 'label-create-new-user': 'ساخت حساب کاربری جدید', + 'label-user-name': 'نام کاربری', + 'label-privacy': 'حریم خصوصی', + 'label-terms': 'مقررات', + 'label-collection': 'مجموعه', + 'label-select-folder': 'پوشه را انتخاب کنید', + 'label-resources': 'منابع', + 'label-lang': 'زبان', + 'label-type': 'نوع', + 'label-select-language': 'زبان را انتخاب کنید', + 'label-pre-release': 'نسخه پیشین', + 'label-save-filter': 'ذخیره فیلتر', + 'label-subject': 'موضوع', + 'label-release': 'عرضه شده', + 'label-version': 'نسخه', + 'msg-select-dir-for-SB': 'مکان/پروژه ای را انتخاب کنید که دارای فایل Burrito باشد. برای مثال: metadata.json', + 'label-online-resources': 'منابع آنلاین', + 'tooltip-download': 'بارگیری', + 'msg-no-resource-for-bible-obs-download': '
این محتوا برای این زبان در دسترس نیست
می توانید منابعScripture Burritoخود را ازطریقمجموعهبرگه وارد کنید.
یادگیری کنید. بیشتر در مورد ایجاد پروژه های Scripture Burrito با Scribe. به اسناد Scribe مراجعه کنید.
', + 'label-back': 'برگشت', + 'label-speed': 'سرعت', + 'label-record': 'ضبط', + 'label-stop': 'توقف', + 'label-continue': 'ادامه', + 'label-rewind': 'عقب گرد', + 'label-play': 'پخش', + 'label-pause': 'مکث', + 'label-delete': 'پاک کردن', + 'label-volume': 'درجه صدا', + 'label-takes': 'زمانبر', + 'label-settings': 'تنظیمات', + 'label-restore': 'بازیابی', + 'label-archive': 'بایگانی', + 'tooltip-save-cloud-btn': 'این اقدام، داده های شما را با Door43 همگام می‌کند', + 'tooltip-save-computer-btn': 'این اقدام داده های محلی شما را با داده های Door43 شبیه سازی یا به روز رسانی می کند', + 'label-choose-usfm-files': 'فایل های USFM را انتخاب کنید', + 'label-choose-md-files': 'فایل های Markdown را انتخاب کنید', + 'label-merge': 'ادغام', + 'label-abort': 'انصراف', + 'tooltip-star-project': 'نشان گذاری پروژه', + 'tooltip-un-star-project': 'حذف نشان پروژه', + 'tooltip-merge-all-orginal-btn': 'پذیرش نسخه اصلی برای حل تعارض و مشکلات فنی در فایلهای باز شده', + 'tooltip-merge-orginal-btn': 'تغییرات اصلی را برای حل تعارض بپذیرید', + 'tooltip-merge-all-reset-btn': 'بازگرداندن فایل باز شده به حالت اولیه ', + 'tooltip-merge-all-both-btn': 'هر دو را برای تمام بخش‌های تضاد حل نشده در فایل باز شده بپذیرید', + 'tooltip-merge-both-btn': 'برای حل تعارض، هر دو تغییر را بپذیرید', + 'tooltip-merge-all-new-btn': 'برای تمام بخش‌های تضاد حل نشده در فایل باز شده، تغییرات جدید را بپذیرید', + 'tooltip-merge-new-btn': 'تغییرات جدید را برای حل تعارض بپذیرید', + 'label-original': 'اصلی', + 'label-new': 'جدید', + 'label-reset': 'باز راه اندازی', + 'label-both': 'هر دو', + 'label-overwrite': 'بازنویسی', + 'modal-title-abort-conflict-resolution': 'لغو حل مشکل تعارض', + 'msg-abort-conflict-resolution': 'آیا می خواهید فرآیند حل مشکل تعارض را متوقف کنید؟ اگر لغو کنید، تمام تغییرات انجام شده را از دست خواهید داد و باید از نو شروع کنید.', + 'label-done': 'انجام شد', + 'label-resolved': 'حل شد', + 'label-resolve-conflict': 'حل تعارض‌ها', + 'label-comparison': 'مقایسه', + 'label-files': 'فایل ها', + 'label-re-record': 'ضبط مجدد', + 'modal-title-re-record': 'ضبط مجدد صدا', + 'msg-re-record-audio': 'آیا می خواهید صدا را دوباره ضبط کنید؟', + 'modal-title-delete-audio': 'صدا را حذف کنید', + 'msg-delete-audio': 'آیا می‌خواهید داده‌های انتخاب شده را حذف کنید؟', + 'label-accepted': 'پذیرفته شده', + 'msg-remove-resource': 'آیا مطمئن هستید که می خواهید منبع را حذف کنید؟ این عمل قابل برگشت نیست', + 'label-check-updates': 'بررسی بروز رسانی ها', + 'label-documentation': 'Documentation', + 'label-tech-support': 'Tech Support', + 'label-filter': 'Filter', + 'msg-helps-filepath': 'Helps Resource filepath with valid manifest.yaml', + 'tooltip-supported-resources': 'supported resources are TN, TW, TQ, TA', + 'label-upload-help-resources': 'Upload Help Resources', }; diff --git a/renderer/src/translations/fr.js b/renderer/src/translations/fr.js index b7f61738f..b21564f8a 100644 --- a/renderer/src/translations/fr.js +++ b/renderer/src/translations/fr.js @@ -1,294 +1,294 @@ export const Fr = { - 'app-name': 'Scribe Scripture', - 'new-project-page': 'Nouveau projet', - 'edit-project': 'Modifier le projet', - 'label-abbreviation': 'Abréviation', - 'label-target-language': 'Langue cible', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'Livres', - 'label-book': 'Livre', - 'label-import-book': 'Importer un livre', - 'label-saved': 'Enregistré', - 'label-sync': 'synchroniser', - 'label-comments': 'commentaires', - 'label-cross-ref': 'Références croisées', - 'label-add-footnote': 'Ajouter une note de bas de page', - 'label-add-comment': 'Ajouter un commentaire', - 'label-add-ref': 'Ajouter une référence', - 'label-user-menu': 'Ouvrir le menu utilisateur', - 'label-main-menu': 'Ouvrir le menu principal', - 'label-dont-have-account': 'Vous n\'avez pas de compte ?', - 'label-already-have-account': 'Vous avez déjà un compte ?', - 'label-new-langauge': 'Nouveau langage', - 'label-edit-langauge': 'Modifier la langue', - 'label-script-direction': 'Direction du scénario', - 'label-drop-file-upload': 'Déposer des fichiers ici pour télécharger', - 'projects-page': 'Projets', - 'label-search': 'Recherche', - 'label-project': 'Projets', - 'label-flavor': 'Saveur', - 'label-project-type': 'Type de projet', - 'label-project-name': 'nom du projet', - 'label-language': 'Langue', - 'label-language-code': 'Language Code', - 'label-all': 'Tous les livres', - 'label-other': 'Autre', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'Désactiver le compte', - 'label-created-date': 'Date de création', - 'label-last-viewed': 'Dernière consultation', - 'label-description': 'Description', - 'label-project-id': 'ID de projet', - 'label-sign-in': 'S\'identifier', - 'label-sign-up': 'S\'inscrire', - 'profile-page': 'Profil', - 'label-your-profile': 'Votre profil', - 'label-username': 'Nom d\'utilisateur', - 'label-name': 'Nom', - 'label-firstname': 'Prénom', - 'label-lastname': 'Nom de famille', - 'label-password': 'Mot de passe', - 'label-confirm-password': 'Confirmez le mot de passe', - 'label-email': 'Email', - 'label-organization': 'organisation', - 'label-region': 'Région', - 'label-app-language': 'Langue de l\'application', - 'label-menu-file': 'Déposer', - 'label-uploading-files': 'Télécharger des fichiers', - 'label-menu-edit': 'Modifier', - 'label-menu-about': 'À propos', - 'label-bookmarks': 'Signets', - 'label-custom': 'Personnalisé', - 'label-show-hidden-file': 'Montrer les fichiers cachés', - 'label-scope': 'Contexte', - 'label-door43': 'Door 43', - 'label-paratext': 'Paratexte', - 'label-license': 'Licence', - 'label-preview': 'Aperçu', - 'label-versification-scheme': 'Schéma de versification', - 'label-old-testament': 'Ancien Testament', - 'label-new-testament': 'Nouveau Testament', - 'label-chapter': 'Chapitre', - 'label-verse': 'Verset', - 'label-import-resource': 'Importer une ressource', - 'label-resource': 'Ressources', - 'label-resource-bible': 'Bible', - 'label-resource-obs-tn': 'Notes de traduction OBS', - 'label-resource-obs-tq': 'OBS Translation Questions', - 'label-resource-obs': 'Questions de traduction OBS', - 'label-resource-tn': 'Notes de traduction', - 'label-resource-twlm': 'Mots de traduction', - 'label-resource-twl': 'Liste des mots de traduction', - 'label-resource-tq': 'Questions de traduction', - 'label-resource-ta': 'Académie de traduction', - 'label-resource-name': 'nom de la ressource', - 'label-footnotes': 'Notes de bas de page', - 'label-location': 'emplacement', - 'label-audio-bible': 'audio', - 'label-resource-obs-twl': 'Liste des mots de traduction OBS', - 'placeholder-resource-name': 'Entrez le nom de la ressource', - 'placeholder-license-name': 'Nom de la licence', - 'placeholder-search': 'Recherche…', - 'placeholder-door43-url': 'Entrez l\'URL de door43', - 'label-burrito-resource-path': 'Scripture Burrito Chemin du fichier de ressource', - 'label-burrito-directory': 'Scripture burrito répertoire', - 'label-export-file-path': 'Exporter le chemin du fichier', - 'label-import-project': 'Importer un projet', - 'label-export-project': 'Projet d\'exportation', - 'label-notification': 'Notifications', - 'label-editor-pane': 'Éditeur', - 'label-editor-font-char': 'A', - 'label-upload': 'téléverser', - 'label-no-content-available': 'Aucun contenu disponible !', - 'label-enter-location': 'Entrez l\'emplacement', - 'label-editor-load-module': 'Charger un module', - 'label-import-door43-resources': 'Importer DOOR43 aide les ressources', - 'tooltip-editor-lock': 'verrouillage/déverrouillage de la navigation', - 'tooltip-editor-bookmark': 'Marque page', - 'tooltip-editor-notification': 'notification', - 'tooltip-editor-layout': 'Mise en page', - 'tooltip-editor-font-dec': 'diminuer la taille de police', - 'tooltip-editor-font-inc': 'augmenter la taille de police', - 'tooltip-editor-resource-selector': 'sélecteur de ressources', - 'tooltip-editor-remove-section': 'supprimer la rubrique', - 'tooltip-editor-add-section': 'ajouter une section', - 'modal-title-license': 'Licence', - 'modal-title-about': 'À propos de', - 'modal-title-remove-resource': 'Retirer la ressource', - 'modal-title-update-burrito': 'Mettre à jour Burrito', - 'modal-title-update-app': 'Mise à jour des écritures Scribe!', - 'modal-title-replace-resource': 'Remplacer la ressource', - 'dynamic-msg-burrito-validate-import-project': 'Burrito validé avec succès', - 'btn-new': 'Nouveau', - 'btn-close': 'Fermer', - 'btn-ok': 'Ok', - 'btn-source-code': 'Code source', - 'btn-save': 'Sauvegarder', - 'btn-signout': 'se déconnecter', - 'btn-signup': 'S\'INSCRIRE', - 'btn-signin': 'SE CONNECTER', - 'btn-edit': 'Modifier', - 'btn-export': 'Exporter', - 'btn-import': 'Importer', - 'btn-add': 'ajouter', - 'btn-create-project': 'Créer un projet', - 'btn-import-books': 'Importer des livres', - 'btn-cancel': 'Annuler', - 'btn-restart': 'Redémarrage', - 'btn-clear': 'clair', - 'btn-upload': 'téléverser', - 'btn-advance-settings': 'Réglages avancés', - 'btn-create': 'Créer', - 'btn-all': 'TOUT', - 'btn-ot': 'OT', - 'btn-nt': 'NT', - 'btn-update': 'Mise à jour', - 'btn-replace': 'Remplacer', - 'btn-remove': 'Enlever', - 'btn-deactivate': 'Désactiver', - 'btn-load-tn': 'chargement des notes de traductions', - 'tooltip-import-resource-info-circle': 'Sélectionnez un répertoire/projet contenant un fichier Scripture Burrito, c\'est-à-dire un fichier metadata.json.', - 'tooltip-import-open-file-location': 'ouvrir l\'emplacement du dossier', - 'dynamic-msg-import-resource-snack': 'Téléchargement de la ressource réussi ! Veuillezd vérifier la liste des ressources', - 'dynamic-msg-unable-find-buritto-snack': 'Impossible de trouver le fichier burrito (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'Fichier burrito invalide (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'Un projet existant portant le même nom a été trouvé ! Cochez "Onglet Archivé" ou "Onglet Projets". Appuyez sur "Remplacer" pour écraser tout contenu existant dans les livres qui se chevauchent. Appuyez sur "Fusionner" pour combiner le projet avec le projet en cours. Appuyez sur "Annuler" pour éviter les modifications.', - 'dynamic-msg-resource-added': 'ressource ajoutée avec succès', - 'dynamic-msg-resource-unable-fetch-url': 'impossible d\'extraire la ressource sélectionnée à partir de l\'url donnée', - 'dynamic-msg-load-ref-bible-snack': 'Dossiers {{refName}} chargés avec succès', - 'dynamic-msg-load-ref-bible-snack-fail': 'échec du chargement des dossiers {{refName}}', - 'dynamic-msg-load-ref-bible-success': 'Reference-burrito chargé avec succès', - 'dynamic-msg-validate-hook-project-name': 'La valeur doit être comprise entre {{minLen}} et {{maxLen}}', - 'dynamic-msg-update-burrito-version': 'Mettez à jour le burrito à partir de {{version1}} à {{version2}}', - 'dynamic-msg-validate-hook-onlyNum': 'Veuillez n\'entrer que des chiffres.', - 'dynamic-msg-validate-hook-onlyString': 'Veuillez n\'entrer que des alphabets.', - 'dynamic-msg-validate-hook-nonSpecChar': 'Les caractères spéciaux ne sont pas autorisés', - 'dynamic-msg-validate-hook-alphaNum': 'Seuls les alphabets et les chiffres sont autorisés', - 'dynamic-msg-validate-hook-email': 'L\'email n\'est pas valide!', - 'dynamic-msg-auto-update': 'Une nouvelle mise à jour Scribe Scripture est disponible. Téléchargement en cours.....', - 'dynamic-msg-auto-update-complete': 'Mise à jour téléchargée. Il sera installé au redémarrage. Redémarrer maintenant ?', - 'dynamic-msg-import-burrito-project-success': 'Projet importé avec succès', - 'dynamic-msg-deactivate-account': 'Êtes-vous sûr de vouloir désactiver votre compte ? Toutes vos données seront définitivement supprimées. Cette action ne peut pas être annulée.', - 'dynamic-msg-project-updated': 'Mis à jour le Profil.', - 'dynamic-msg-app-lang-changed': 'La langue de l\'application a changé.', - 'dynamic-msg-data-read-fail': 'Échec de la lecture des données à partir du fichier.', - 'dynamic-msg-export-success': 'Exporté avec succès', - 'dynamic-msg-export-fail': 'Échec de l\'exportation', - 'dynamic-msg-invalid-path': 'Chemin invalide', - 'dynamic-msg-invalid-usfm-file': 'Fichier USFM invalide.', - 'dynamic-msg-invalid-md-file': 'Fichier MD invalide.', - 'dynamic-msg-fill-all-fields': 'Remplissez tous les champs', - 'dynamic-msg-burrito-validation-expected': 'Version burrito attendue 0.3.0 au lieu de {{version}}', - 'dynamic-msg-burrito-validation-failed': 'Échec de la validation du burrito', - 'text-login-page-desc': 'Scribe Scripture est une toute nouvelle façon d\'éditer les écritures et les ressources associées avec des fonctionnalités puissantes mais élégantes pour vous aider à vous concentrer sur les choses importantes! ', - 'text-welcome': 'Bienvenu', - 'text-sign-up-quote': 'Faites partie d\'une grande communauté et amusez-vous avec nous', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'Actif', - 'label-archived': 'Archivé', - 'label-archived-prj': 'Projets archivés', - 'label-bible-translation': 'Traduction biblique', - 'msg-lang-code-req': 'Le code de langue est requis', - 'msg-lang-name-req': 'Le nom de la langue est obligatoire', - 'msg-min-three-letter': 'Tapez au minimum 3 caractères pour rechercher', - 'label-prj-on-my-computer': 'Projeter sur mon ordinateur', - 'label-save-to-cloud': 'Enregistrer dans le cloud', - 'label-last-synced': 'Dernière synchronisation', - 'label-prj-on-cloud': 'Projets sur le cloud', - 'label-save-to-computer': 'Enregistrer sur l\'ordinateur', - 'label-view-more': 'Voir plus', - 'label-create-new-user': 'Créer un nouvel utilisateur', - 'label-user-name': 'Nom d\'utilisateur', - 'label-privacy': 'Confidentialité', - 'label-terms': 'Termes', - 'label-collection': 'Collecte', - 'label-select-folder': 'Sélectionner le dossier', - 'label-resources': 'Ressources', - 'label-lang': 'Langue', - 'label-type': 'Taper', - 'label-select-language': 'Choisir la langue', - 'label-pre-release': 'Avant-première', - 'label-save-filter': 'Enregistrer le filtre', - 'label-subject': 'Sujette', - 'label-release': 'Libérer', - 'label-version': 'Version', - 'msg-select-dir-for-SB': 'Sélectionnez un répertoire/projet contenant un fichier Scripture Burrito, par exemple. Fichier métadonnées.json', - 'label-online-resources': 'Ressources en ligne', - 'tooltip-download': 'Ressources en ligne', - 'msg-no-resource-for-bible-obs-download': '
Ce contenu n\'est pas disponible pour cette langue
Vous pouvez importer vos propres ressources de burrito bibliques via l\'onglet Collection.
Apprenez-en davantage sur la création de projets Scripture Burrito avec Scribe. Reportez-vous aux documents Scribe.
', - 'label-back': 'dos', - 'label-speed': 'Speed', - 'label-record': 'Record', - 'label-stop': 'Stop', - 'label-continue': 'Continue', - 'label-rewind': 'Rewind', - 'label-play': 'Play', - 'label-pause': 'Pause', - 'label-delete': 'Delete', - 'label-volume': 'Volume', - 'label-takes': 'Takes', - 'label-settings': 'Settings', - 'label-restore': 'Restaurer', - 'label-archive': 'Archives', - 'tooltip-save-cloud-btn': 'Cette action synchronisera vos données avec Door43', - 'tooltip-save-computer-btn': 'Cette action clonera ou mettra à jour vos données locales avec les données Door43', - 'label-choose-usfm-files': 'Choisissez les fichiers USFM', - 'label-choose-md-files': 'Choisissez les fichiers Markdown', - 'label-merge': 'Fusionner', - 'label-abort': 'Annuler', - 'tooltip-star-project': 'Ajouter aux favoris', - 'tooltip-un-star-project': 'Retirer des favoris', - 'tooltip-merge-all-orginal-btn': 'Acceptez ORIGINAL pour toutes les sections de conflit non résolues dans le fichier ouvert', - 'tooltip-merge-orginal-btn': 'Acceptez les modifications ORIGINALES pour résoudre le conflit', - 'tooltip-merge-all-reset-btn': 'RÉINITIALISER le fichier ouvert à son état initial', - 'tooltip-merge-all-both-btn': 'Acceptez les DEUX modifications pour résoudre le conflit', - 'tooltip-merge-both-btn': 'Acceptez les DEUX pour toutes les sections de conflit non résolues dans le fichier ouvert', - 'tooltip-merge-all-new-btn': 'Acceptez NEW pour toutes les sections de conflit non résolues dans le fichier ouvert', - 'tooltip-merge-new-btn': 'Acceptez les NOUVELLES modifications pour résoudre les conflits', - 'label-original': 'Originale', - 'label-new': 'Nouvelle', - 'label-reset': 'Réinitialiser', - 'label-both': 'Les deux', - 'label-overwrite': 'Écraser', - 'modal-title-abort-conflict-resolution': 'Abandonner la résolution des conflits', - 'msg-abort-conflict-resolution': 'Voulez-vous abandonner le processus de résolution des conflits. Si vous abandonnez, vous perdrez toute votre progression et devrez recommencer.', - 'label-done': 'fait', - 'label-resolved': 'résolu', - 'label-resolve-conflict': 'résoudre un conflit', - 'label-comparison': 'comparaison', - 'label-files': 'des dossiers', - 'label-re-record': 'Réenregistrer', - 'modal-title-re-record': 'Réenregistrer l\'audio', - 'msg-re-record-audio': 'Voulez-vous réenregistrer l\'audio ?', - 'modal-title-delete-audio': 'Supprimer l\'audio', - 'msg-delete-audio': 'Voulez-vous supprimer la prise sélectionnée ?', - 'label-accepted': 'Accepter', - 'msg-remove-resource': 'Êtes-vous sûr de vouloir supprimer la ressource. Cette action ne peut pas être annulée', - 'label-check-updates': 'Vérifier les mises à jour', - 'label-documentation': 'Documentation', - 'label-tech-support': 'support technique', - 'msg-helps-filepath': 'Vous pouvez mettre en place une ressource rapide pour le serveur manifest.yaml.', - 'tooltip-supported-resources': 'les ressources prises en charge sont TN, TW, TQ, TA', - 'label-upload-help-resources': 'Télécharger des ressources d\'aide', - 'label-filter': 'Filtre', - 'label-book-selection': 'Sélection de livres', - 'label-chapter-selection': 'Sélection de chapitre', - 'label-select': 'Sélectionner', - 'label-deselect': 'Désélectionner', - 'label-start': 'Commencer', - 'label-end': 'Fin', - 'label-apply': 'Appliquer', - 'label-scope-not-selected': 'Pour commencer, accédez à Gestion de la portée, sélectionnez le livre et les chapitres et cliquez sur le bouton Appliquer', - 'label-scope-note-audio': 'Choisissez le livre et le chapitre à partir de l\'option GESTION DE LA PORTÉE sur la page de liste des projets', - 'modal-title-scope-management': 'Gestion de la portée', + 'app-name': 'Scribe Scripture', + 'new-project-page': 'Nouveau projet', + 'edit-project': 'Modifier le projet', + 'label-abbreviation': 'Abréviation', + 'label-target-language': 'Langue cible', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'Livres', + 'label-book': 'Livre', + 'label-import-book': 'Importer un livre', + 'label-saved': 'Enregistré', + 'label-sync': 'synchroniser', + 'label-comments': 'commentaires', + 'label-cross-ref': 'Références croisées', + 'label-add-footnote': 'Ajouter une note de bas de page', + 'label-add-comment': 'Ajouter un commentaire', + 'label-add-ref': 'Ajouter une référence', + 'label-user-menu': 'Ouvrir le menu utilisateur', + 'label-main-menu': 'Ouvrir le menu principal', + 'label-dont-have-account': 'Vous n\'avez pas de compte ?', + 'label-already-have-account': 'Vous avez déjà un compte ?', + 'label-new-langauge': 'Nouveau langage', + 'label-edit-langauge': 'Modifier la langue', + 'label-script-direction': 'Direction du scénario', + 'label-drop-file-upload': 'Déposer des fichiers ici pour télécharger', + 'projects-page': 'Projets', + 'label-search': 'Recherche', + 'label-project': 'Projets', + 'label-flavor': 'Saveur', + 'label-project-type': 'Type de projet', + 'label-project-name': 'nom du projet', + 'label-language': 'Langue', + 'label-language-code': 'Language Code', + 'label-all': 'Tous les livres', + 'label-other': 'Autre', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'Désactiver le compte', + 'label-created-date': 'Date de création', + 'label-last-viewed': 'Dernière consultation', + 'label-description': 'Description', + 'label-project-id': 'ID de projet', + 'label-sign-in': 'S\'identifier', + 'label-sign-up': 'S\'inscrire', + 'profile-page': 'Profil', + 'label-your-profile': 'Votre profil', + 'label-username': 'Nom d\'utilisateur', + 'label-name': 'Nom', + 'label-firstname': 'Prénom', + 'label-lastname': 'Nom de famille', + 'label-password': 'Mot de passe', + 'label-confirm-password': 'Confirmez le mot de passe', + 'label-email': 'Email', + 'label-organization': 'organisation', + 'label-region': 'Région', + 'label-app-language': 'Langue de l\'application', + 'label-menu-file': 'Déposer', + 'label-uploading-files': 'Télécharger des fichiers', + 'label-menu-edit': 'Modifier', + 'label-menu-about': 'À propos', + 'label-bookmarks': 'Signets', + 'label-custom': 'Personnalisé', + 'label-show-hidden-file': 'Montrer les fichiers cachés', + 'label-scope': 'Contexte', + 'label-door43': 'Door 43', + 'label-paratext': 'Paratexte', + 'label-license': 'Licence', + 'label-preview': 'Aperçu', + 'label-versification-scheme': 'Schéma de versification', + 'label-old-testament': 'Ancien Testament', + 'label-new-testament': 'Nouveau Testament', + 'label-chapter': 'Chapitre', + 'label-verse': 'Verset', + 'label-import-resource': 'Importer une ressource', + 'label-resource': 'Ressources', + 'label-resource-bible': 'Bible', + 'label-resource-obs-tn': 'Notes de traduction OBS', + 'label-resource-obs-tq': 'OBS Translation Questions', + 'label-resource-obs': 'Questions de traduction OBS', + 'label-resource-tn': 'Notes de traduction', + 'label-resource-twlm': 'Mots de traduction', + 'label-resource-twl': 'Liste des mots de traduction', + 'label-resource-tq': 'Questions de traduction', + 'label-resource-ta': 'Académie de traduction', + 'label-resource-name': 'nom de la ressource', + 'label-footnotes': 'Notes de bas de page', + 'label-location': 'emplacement', + 'label-audio-bible': 'audio', + 'label-resource-obs-twl': 'Liste des mots de traduction OBS', + 'placeholder-resource-name': 'Entrez le nom de la ressource', + 'placeholder-license-name': 'Nom de la licence', + 'placeholder-search': 'Recherche…', + 'placeholder-door43-url': 'Entrez l\'URL de door43', + 'label-burrito-resource-path': 'Scripture Burrito Chemin du fichier de ressource', + 'label-burrito-directory': 'Scripture burrito répertoire', + 'label-export-file-path': 'Exporter le chemin du fichier', + 'label-import-project': 'Importer un projet', + 'label-export-project': 'Projet d\'exportation', + 'label-notification': 'Notifications', + 'label-editor-pane': 'Éditeur', + 'label-editor-font-char': 'A', + 'label-upload': 'téléverser', + 'label-no-content-available': 'Aucun contenu disponible !', + 'label-enter-location': 'Entrez l\'emplacement', + 'label-editor-load-module': 'Charger un module', + 'label-import-door43-resources': 'Importer DOOR43 aide les ressources', + 'tooltip-editor-lock': 'verrouillage/déverrouillage de la navigation', + 'tooltip-editor-bookmark': 'Marque page', + 'tooltip-editor-notification': 'notification', + 'tooltip-editor-layout': 'Mise en page', + 'tooltip-editor-font-dec': 'diminuer la taille de police', + 'tooltip-editor-font-inc': 'augmenter la taille de police', + 'tooltip-editor-resource-selector': 'sélecteur de ressources', + 'tooltip-editor-remove-section': 'supprimer la rubrique', + 'tooltip-editor-add-section': 'ajouter une section', + 'modal-title-license': 'Licence', + 'modal-title-about': 'À propos de', + 'modal-title-remove-resource': 'Retirer la ressource', + 'modal-title-update-burrito': 'Mettre à jour Burrito', + 'modal-title-update-app': 'Mise à jour des écritures Scribe!', + 'modal-title-replace-resource': 'Remplacer la ressource', + 'dynamic-msg-burrito-validate-import-project': 'Burrito validé avec succès', + 'btn-new': 'Nouveau', + 'btn-close': 'Fermer', + 'btn-ok': 'Ok', + 'btn-source-code': 'Code source', + 'btn-save': 'Sauvegarder', + 'btn-signout': 'se déconnecter', + 'btn-signup': 'S\'INSCRIRE', + 'btn-signin': 'SE CONNECTER', + 'btn-edit': 'Modifier', + 'btn-export': 'Exporter', + 'btn-import': 'Importer', + 'btn-add': 'ajouter', + 'btn-create-project': 'Créer un projet', + 'btn-import-books': 'Importer des livres', + 'btn-cancel': 'Annuler', + 'btn-restart': 'Redémarrage', + 'btn-clear': 'clair', + 'btn-upload': 'téléverser', + 'btn-advance-settings': 'Réglages avancés', + 'btn-create': 'Créer', + 'btn-all': 'TOUT', + 'btn-ot': 'OT', + 'btn-nt': 'NT', + 'btn-update': 'Mise à jour', + 'btn-replace': 'Remplacer', + 'btn-remove': 'Enlever', + 'btn-deactivate': 'Désactiver', + 'btn-load-tn': 'chargement des notes de traductions', + 'tooltip-import-resource-info-circle': 'Sélectionnez un répertoire/projet contenant un fichier Scripture Burrito, c\'est-à-dire un fichier metadata.json.', + 'tooltip-import-open-file-location': 'ouvrir l\'emplacement du dossier', + 'dynamic-msg-import-resource-snack': 'Téléchargement de la ressource réussi ! Veuillezd vérifier la liste des ressources', + 'dynamic-msg-unable-find-buritto-snack': 'Impossible de trouver le fichier burrito (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'Fichier burrito invalide (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'Un projet existant portant le même nom a été trouvé ! Cochez "Onglet Archivé" ou "Onglet Projets". Appuyez sur "Remplacer" pour écraser tout contenu existant dans les livres qui se chevauchent. Appuyez sur "Fusionner" pour combiner le projet avec le projet en cours. Appuyez sur "Annuler" pour éviter les modifications.', + 'dynamic-msg-resource-added': 'ressource ajoutée avec succès', + 'dynamic-msg-resource-unable-fetch-url': 'impossible d\'extraire la ressource sélectionnée à partir de l\'url donnée', + 'dynamic-msg-load-ref-bible-snack': 'Dossiers {{refName}} chargés avec succès', + 'dynamic-msg-load-ref-bible-snack-fail': 'échec du chargement des dossiers {{refName}}', + 'dynamic-msg-load-ref-bible-success': 'Reference-burrito chargé avec succès', + 'dynamic-msg-validate-hook-project-name': 'La valeur doit être comprise entre {{minLen}} et {{maxLen}}', + 'dynamic-msg-update-burrito-version': 'Mettez à jour le burrito à partir de {{version1}} à {{version2}}', + 'dynamic-msg-validate-hook-onlyNum': 'Veuillez n\'entrer que des chiffres.', + 'dynamic-msg-validate-hook-onlyString': 'Veuillez n\'entrer que des alphabets.', + 'dynamic-msg-validate-hook-nonSpecChar': 'Les caractères spéciaux ne sont pas autorisés', + 'dynamic-msg-validate-hook-alphaNum': 'Seuls les alphabets et les chiffres sont autorisés', + 'dynamic-msg-validate-hook-email': 'L\'email n\'est pas valide!', + 'dynamic-msg-auto-update': 'Une nouvelle mise à jour Scribe Scripture est disponible. Téléchargement en cours.....', + 'dynamic-msg-auto-update-complete': 'Mise à jour téléchargée. Il sera installé au redémarrage. Redémarrer maintenant ?', + 'dynamic-msg-import-burrito-project-success': 'Projet importé avec succès', + 'dynamic-msg-deactivate-account': 'Êtes-vous sûr de vouloir désactiver votre compte ? Toutes vos données seront définitivement supprimées. Cette action ne peut pas être annulée.', + 'dynamic-msg-project-updated': 'Mis à jour le Profil.', + 'dynamic-msg-app-lang-changed': 'La langue de l\'application a changé.', + 'dynamic-msg-data-read-fail': 'Échec de la lecture des données à partir du fichier.', + 'dynamic-msg-export-success': 'Exporté avec succès', + 'dynamic-msg-export-fail': 'Échec de l\'exportation', + 'dynamic-msg-invalid-path': 'Chemin invalide', + 'dynamic-msg-invalid-usfm-file': 'Fichier USFM invalide.', + 'dynamic-msg-invalid-md-file': 'Fichier MD invalide.', + 'dynamic-msg-fill-all-fields': 'Remplissez tous les champs', + 'dynamic-msg-burrito-validation-expected': 'Version burrito attendue 0.3.0 au lieu de {{version}}', + 'dynamic-msg-burrito-validation-failed': 'Échec de la validation du burrito', + 'text-login-page-desc': 'Scribe Scripture est une toute nouvelle façon d\'éditer les écritures et les ressources associées avec des fonctionnalités puissantes mais élégantes pour vous aider à vous concentrer sur les choses importantes! ', + 'text-welcome': 'Bienvenu', + 'text-sign-up-quote': 'Faites partie d\'une grande communauté et amusez-vous avec nous', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'Actif', + 'label-archived': 'Archivé', + 'label-archived-prj': 'Projets archivés', + 'label-bible-translation': 'Traduction biblique', + 'msg-lang-code-req': 'Le code de langue est requis', + 'msg-lang-name-req': 'Le nom de la langue est obligatoire', + 'msg-min-three-letter': 'Tapez au minimum 3 caractères pour rechercher', + 'label-prj-on-my-computer': 'Projeter sur mon ordinateur', + 'label-save-to-cloud': 'Enregistrer dans le cloud', + 'label-last-synced': 'Dernière synchronisation', + 'label-prj-on-cloud': 'Projets sur le cloud', + 'label-save-to-computer': 'Enregistrer sur l\'ordinateur', + 'label-view-more': 'Voir plus', + 'label-create-new-user': 'Créer un nouvel utilisateur', + 'label-user-name': 'Nom d\'utilisateur', + 'label-privacy': 'Confidentialité', + 'label-terms': 'Termes', + 'label-collection': 'Collecte', + 'label-select-folder': 'Sélectionner le dossier', + 'label-resources': 'Ressources', + 'label-lang': 'Langue', + 'label-type': 'Taper', + 'label-select-language': 'Choisir la langue', + 'label-pre-release': 'Avant-première', + 'label-save-filter': 'Enregistrer le filtre', + 'label-subject': 'Sujette', + 'label-release': 'Libérer', + 'label-version': 'Version', + 'msg-select-dir-for-SB': 'Sélectionnez un répertoire/projet contenant un fichier Scripture Burrito, par exemple. Fichier métadonnées.json', + 'label-online-resources': 'Ressources en ligne', + 'tooltip-download': 'Ressources en ligne', + 'msg-no-resource-for-bible-obs-download': '
Ce contenu n\'est pas disponible pour cette langue
Vous pouvez importer vos propres ressources de burrito bibliques via l\'onglet Collection.
Apprenez-en davantage sur la création de projets Scripture Burrito avec Scribe. Reportez-vous aux documents Scribe.
', + 'label-back': 'dos', + 'label-speed': 'Speed', + 'label-record': 'Record', + 'label-stop': 'Stop', + 'label-continue': 'Continue', + 'label-rewind': 'Rewind', + 'label-play': 'Play', + 'label-pause': 'Pause', + 'label-delete': 'Delete', + 'label-volume': 'Volume', + 'label-takes': 'Takes', + 'label-settings': 'Settings', + 'label-restore': 'Restaurer', + 'label-archive': 'Archives', + 'tooltip-save-cloud-btn': 'Cette action synchronisera vos données avec Door43', + 'tooltip-save-computer-btn': 'Cette action clonera ou mettra à jour vos données locales avec les données Door43', + 'label-choose-usfm-files': 'Choisissez les fichiers USFM', + 'label-choose-md-files': 'Choisissez les fichiers Markdown', + 'label-merge': 'Fusionner', + 'label-abort': 'Annuler', + 'tooltip-star-project': 'Ajouter aux favoris', + 'tooltip-un-star-project': 'Retirer des favoris', + 'tooltip-merge-all-orginal-btn': 'Acceptez ORIGINAL pour toutes les sections de conflit non résolues dans le fichier ouvert', + 'tooltip-merge-orginal-btn': 'Acceptez les modifications ORIGINALES pour résoudre le conflit', + 'tooltip-merge-all-reset-btn': 'RÉINITIALISER le fichier ouvert à son état initial', + 'tooltip-merge-all-both-btn': 'Acceptez les DEUX modifications pour résoudre le conflit', + 'tooltip-merge-both-btn': 'Acceptez les DEUX pour toutes les sections de conflit non résolues dans le fichier ouvert', + 'tooltip-merge-all-new-btn': 'Acceptez NEW pour toutes les sections de conflit non résolues dans le fichier ouvert', + 'tooltip-merge-new-btn': 'Acceptez les NOUVELLES modifications pour résoudre les conflits', + 'label-original': 'Originale', + 'label-new': 'Nouvelle', + 'label-reset': 'Réinitialiser', + 'label-both': 'Les deux', + 'label-overwrite': 'Écraser', + 'modal-title-abort-conflict-resolution': 'Abandonner la résolution des conflits', + 'msg-abort-conflict-resolution': 'Voulez-vous abandonner le processus de résolution des conflits. Si vous abandonnez, vous perdrez toute votre progression et devrez recommencer.', + 'label-done': 'fait', + 'label-resolved': 'résolu', + 'label-resolve-conflict': 'résoudre un conflit', + 'label-comparison': 'comparaison', + 'label-files': 'des dossiers', + 'label-re-record': 'Réenregistrer', + 'modal-title-re-record': 'Réenregistrer l\'audio', + 'msg-re-record-audio': 'Voulez-vous réenregistrer l\'audio ?', + 'modal-title-delete-audio': 'Supprimer l\'audio', + 'msg-delete-audio': 'Voulez-vous supprimer la prise sélectionnée ?', + 'label-accepted': 'Accepter', + 'msg-remove-resource': 'Êtes-vous sûr de vouloir supprimer la ressource. Cette action ne peut pas être annulée', + 'label-check-updates': 'Vérifier les mises à jour', + 'label-documentation': 'Documentation', + 'label-tech-support': 'support technique', + 'msg-helps-filepath': 'Vous pouvez mettre en place une ressource rapide pour le serveur manifest.yaml.', + 'tooltip-supported-resources': 'les ressources prises en charge sont TN, TW, TQ, TA', + 'label-upload-help-resources': 'Télécharger des ressources d\'aide', + 'label-filter': 'Filtre', + 'label-book-selection': 'Sélection de livres', + 'label-chapter-selection': 'Sélection de chapitre', + 'label-select': 'Sélectionner', + 'label-deselect': 'Désélectionner', + 'label-start': 'Commencer', + 'label-end': 'Fin', + 'label-apply': 'Appliquer', + 'label-scope-not-selected': 'Pour commencer, accédez à Gestiong du champs d\'application, sélectionnez le livre et les chapitres et cliquez sur le bouton Appliquer', + 'label-scope-note-audio': 'Choisissez le livre et le chapitre à partir de l\'option Gestiong du champs d\'application sur la page de liste des projets', + 'modal-title-scope-management': 'Gestiong du champs d\'application', }; diff --git a/renderer/src/translations/hi.js b/renderer/src/translations/hi.js index 18acafa44..c20c61f0e 100644 --- a/renderer/src/translations/hi.js +++ b/renderer/src/translations/hi.js @@ -1,294 +1,294 @@ export const Hi = { - 'app-name': 'स्क्राइब स्क्रिप्चर', - 'new-project-page': 'नया प्रोजेक्ट', - 'edit-project': 'प्रोजेक्ट संपादित करें', - 'label-abbreviation': 'संक्षेपाक्षर', - 'label-target-language': 'लक्ष्य भाषा', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'पुस्तकें', - 'label-book': 'पुस्तक', - 'label-import-book': 'पुस्तक आयात करें', - 'label-saved': 'सहेजा गया है', - 'label-sync': 'सिंक', - 'label-comments': 'टिप्पणियाँ', - 'label-cross-ref': 'क्रॉस रेफरेंस', - 'label-add-footnote': 'फुटनोट जोड़ें', - 'label-add-comment': 'टिप्पणी जोड़ें', - 'label-add-ref': 'संदर्भ जोड़ें', - 'label-user-menu': 'उपयोगकर्ता मेन्यू खोलें', - 'label-main-menu': 'मुख्य मेन्यू खोलें', - 'label-dont-have-account': 'खाता नहीं है?', - 'label-already-have-account': 'पहले से ही एक खाता है?', - 'label-new-langauge': 'नई भाषा', - 'label-edit-langauge': 'भाषा संपादित करें', - 'label-script-direction': 'स्क्रिप्ट दिशा', - 'label-drop-file-upload': 'अपलोड करने के लिए फ़ाइलें यहाँ डालें', - 'projects-page': 'प्रोजेक्ट्स', - 'label-search': 'खोजें', - 'label-project': 'प्रोजेक्ट', - 'label-flavor': 'स्वाद', - 'label-project-type': 'परियोजना प्रकार', - 'label-project-name': 'प्रोजेक्ट का नाम', - 'label-language': 'भाषा', - 'label-language-code': 'भाषा कोड', - 'label-all': 'सभी पुस्तकें', - 'label-other': 'अन्य', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'खाता निष्क्रिय करें', - 'label-created-date': 'सृजित दिनांक', - 'label-last-viewed': 'अंतिम बार देखा गया', - 'label-description': 'विवरण', - 'label-project-id': 'प्रोजैक्ट ID', - 'label-sign-in': 'साइन इन करें', - 'label-sign-up': 'साइन अप करें', - 'profile-page': 'प्रोफ़ाइल', - 'label-your-profile': 'आपकी प्रोफ़ाइल', - 'label-username': 'उपयोगकर्ता नाम', - 'label-name': 'नाम', - 'label-firstname': 'पहला नाम', - 'label-lastname': 'उपनाम', - 'label-password': 'पासवर्ड', - 'label-confirm-password': 'पासवर्ड की पुष्टि करें', - 'label-email': 'ईमेल', - 'label-organization': 'संगठन', - 'label-region': 'क्षेत्र', - 'label-app-language': 'App की भाषा', - 'label-menu-file': 'फ़ाइल', - 'label-uploading-files': 'फ़ाइलें अपलोड करें / फ़ाइलें डालें', - 'label-menu-edit': 'संपादन करें', - 'label-menu-about': 'के बारे में', - 'label-bookmarks': 'बुकमार्क/पृष्ठ स्मर्तियाँ', - 'label-custom': 'कस्टम', - 'label-show-hidden-file': 'छिपी फ़ाइलें देखें', - 'label-scope': 'स्कोप/दायरा /व्यापकता', - 'label-door43': 'Door 43', - 'label-paratext': 'पैराटेक्स्ट', - 'label-license': 'लाइसेंस', - 'label-preview': 'पूर्वावलोकन', - 'label-versification-scheme': 'वचनबद्ध पद्धति ', - 'label-old-testament': 'पुराना नियम', - 'label-new-testament': 'नया नियम', - 'label-chapter': 'अध्याय', - 'label-verse': 'आयत', - 'label-import-resource': 'संसाधन आयात करें', - 'label-resource': 'संसाधन', - 'label-resource-bible': 'बाइबल', - 'label-resource-obs-tn': 'OBS रांसलेशन नोट्स', - 'label-resource-obs-tq': 'OBS ट्रांसलेशन प्रश्नों', - 'label-resource-obs': 'ओपन बाइबल स्टोरी', - 'label-resource-tn': 'ट्रांसलेशन नोट्स', - 'label-resource-twlm': 'ट्रांसलेशन शब्द', - 'label-resource-twl': 'ट्रांसलेशन शब्दों की सूची', - 'label-resource-tq': 'ट्रांसलेशन प्रश्नों', - 'label-resource-ta': 'ट्रांसलेशन अकादमी', - 'label-resource-name': 'संसाधन का नाम', - 'label-footnotes': 'फुट नोट्स', - 'label-location': 'स्थान', - 'label-audio-bible': 'अडियो', - 'label-resource-obs-twl': 'OBS अनुवाद शब्द सूची', - 'placeholder-resource-name': 'संसाधन का नाम दर्ज करें', - 'placeholder-license-name': 'लाइसेंस का नाम', - 'placeholder-search': 'खोजें…', - 'placeholder-door43-url': 'Door 43 का URL दर्ज करें', - 'label-burrito-resource-path': 'स्क्रिप्चर बरिटो रिसोर्स फाइलपथ', - 'label-burrito-directory': 'स्क्रिप्चर बरिटो निर्देशिका', - 'label-export-file-path': 'फ़ाइल पाथ निर्यात करें', - 'label-import-project': 'प्रोजेक्ट आयात करें', - 'label-export-project': 'प्रोजेक्ट निर्यात करें', - 'label-notification': 'सूचनाएँ', - 'label-editor-pane': 'संपादक', - 'label-editor-font-char': 'अ', - 'label-upload': 'अपलोड करें', - 'label-no-content-available': 'कोई सामग्री उपलब्ध नहीं है!', - 'label-enter-location': 'स्थान दर्ज करें', - 'label-editor-load-module': 'मॉड्यूल लोड करें', - 'label-import-door43-resources': 'आयात DOOR43 संसाधनों की सहायता करता है', - 'tooltip-editor-lock': 'नेविगेशन लॉक/अनलॉक', - 'tooltip-editor-bookmark': 'बुकमार्क', - 'tooltip-editor-notification': 'सूचना', - 'tooltip-editor-layout': 'लेआउट', - 'tooltip-editor-font-dec': 'फ़ॉन्ट आकार घटाएँ', - 'tooltip-editor-font-inc': 'फ़ॉन्ट आकार बढ़ाएँ', - 'tooltip-editor-resource-selector': 'संसाधन चयनकर्ता', - 'tooltip-editor-remove-section': 'सेक्शन हटाएँ', - 'tooltip-editor-add-section': 'खंड जोड़ें', - 'modal-title-license': 'लाइसेंस', - 'modal-title-about': 'के बारे में', - 'modal-title-remove-resource': 'संसाधन हटाएँ', - 'modal-title-update-burrito': 'बरिटो को अपडेट करें', - 'modal-title-update-app': 'ऑटोग्राफ अपडेट!', - 'modal-title-replace-resource': 'संसाधन बदलें', - 'dynamic-msg-burrito-validate-import-project': 'बरिटो को सफलतापूर्वक सत्यापित किया गया', - 'btn-new': 'नया', - 'btn-close': 'बंद करें', - 'btn-ok': 'ठीक', - 'btn-source-code': 'सोर्स कोड', - 'btn-save': 'सहेजें', - 'btn-signout': 'साइन आउट', - 'btn-signup': 'साइन अप', - 'btn-signin': 'साइन इन', - 'btn-edit': 'संपादन करें', - 'btn-export': 'निर्यात करें', - 'btn-import': 'आयात करें', - 'btn-add': 'जोड़ें', - 'btn-create-project': 'प्रोजेक्ट बनाएँ', - 'btn-import-books': 'पुस्तकें आयात करें', - 'btn-cancel': 'रद्द करें', - 'btn-restart': 'पुनर्प्रारंभ करें', - 'btn-clear': 'खाली करें', - 'btn-upload': 'अपलोड करें', - 'btn-advance-settings': 'एडवांस सेटिंग', - 'btn-create': 'बनाएँ', - 'btn-all': 'सब', - 'btn-ot': 'पुराना नियम', - 'btn-nt': 'नया नियम', - 'btn-update': 'अपडेट करें', - 'btn-replace': 'बदलें', - 'btn-remove': 'हटाएँ', - 'btn-deactivate': 'निष्क्रिय करें', - 'btn-load-tn': 'लोड अनुवाद नोट किया गया है', - 'tooltip-import-resource-info-circle': 'एक निर्देशिका/प्रोजेक्ट का चयन करें जिसमें एक स्क्रिप्चर बरिटो फ़ाइल है यानी मेटाडेटा.json फ़ाइल।', - 'tooltip-import-open-file-location': 'फ़ोल्डर का स्थान खोलें', - 'dynamic-msg-import-resource-snack': 'संसाधन अपलोड सफल रहा! कृपया संसाधन सूची देखें', - 'dynamic-msg-unable-find-buritto-snack': 'बरिटो फ़ाइल को ढूंढने में असमर्थ (metadata.json )', - 'dynamic-msg-unable-invalid-buritto-snack': 'अमान्य बरिटो फ़ाइल (metadata.json) ', - 'dynamic-msg-confirm-replace-resource': 'इसी नाम से एक मौजूदा प्रोजेक्ट मिला! "संग्रहीत टैब" या "प्रोजेक्ट टैब" जांचें। ओवरलैपिंग पुस्तकों में किसी भी मौजूदा सामग्री को अधिलेखित करने के लिए "बदलें" दबाएँ। प्रोजेक्ट को वर्तमान प्रोजेक्ट के साथ संयोजित करने के लिए "मर्ज" दबाएँ। परिवर्तनों से बचने के लिए "रद्द करें" दबाएँ।', - 'dynamic-msg-resource-added': 'संसाधन को सफलतापूर्वक जोड़ा गया है', - 'dynamic-msg-resource-unable-fetch-url': 'दिए गए यू आर एल(URL) से चयनित संसाधन लाने में असमर्थ', - 'dynamic-msg-load-ref-bible-snack': 'सफलतापूर्वक {{refName}} फ़ाइल लोड की गई', - 'dynamic-msg-load-ref-bible-snack-fail': '{{refName}} फ़ाइल लोड करने में विफल', - 'dynamic-msg-load-ref-bible-success': 'संदर्भ-बरिटो सफलतापूर्वक लोड किया गया', - 'dynamic-msg-validate-hook-project-name': 'इनपुट {{minLen}} और {{maxLen}} वर्णों के बीच होना चाहिए', - 'dynamic-msg-update-burrito-version': 'बरिटो को {{version1}} से {{version2}} में अपडेट करें', - 'dynamic-msg-validate-hook-onlyNum': 'कृपया केवल संख्या दर्ज करें।', - 'dynamic-msg-validate-hook-onlyString': 'कृपया केवल अक्षर दर्ज करें।', - 'dynamic-msg-validate-hook-nonSpecChar': 'विशेष वर्ण की अनुमति नहीं है', - 'dynamic-msg-validate-hook-alphaNum': 'केवल अक्षर और संख्या की अनुमति है', - 'dynamic-msg-validate-hook-email': 'ईमेल वैध नहीं है!', - 'dynamic-msg-auto-update': 'ऑटोग्राफा का एक नया अपडेट उपलब्ध है। अभी डाउनलोड हो रहा है...', - 'dynamic-msg-auto-update-complete': 'अपडेट डाउनलोड किया गया। इसे पुनरारंभ करने पर इंस्टॉल किया जाएगा। अभी पुनः प्रारंभ करें?', - 'dynamic-msg-import-burrito-project-success': 'प्रोजेक्ट सफलतापूर्वक आयात किया गया है', - 'dynamic-msg-deactivate-account': 'क्या आप वाकई अपना खाता निष्क्रिय करना चाहते हैं? आपका सारा डेटा स्थायी रूप से हटा दिया जाएगा। इस क्रिया को पूर्ववत नहीं किया जा सकता है।', - 'dynamic-msg-project-updated': 'प्रोफ़ाइल को अपडेट किया गया है।', - 'dynamic-msg-app-lang-changed': 'ऐप की भाषा बदली गई है।', - 'dynamic-msg-data-read-fail': 'फ़ाइल से डेटा पढ़ने में विफल।', - 'dynamic-msg-export-success': 'सफलतापूर्वक निर्यात किया गया', - 'dynamic-msg-export-fail': 'निर्यात करने में विफल', - 'dynamic-msg-invalid-path': 'अवैध पथ', - 'dynamic-msg-invalid-usfm-file': 'अवैध USFM फ़ाइल।', - 'dynamic-msg-invalid-md-file': 'अवैध MD फ़ाइल।', - 'dynamic-msg-fill-all-fields': 'सभी फ़ील्ड भरें', - 'dynamic-msg-burrito-validation-expected': '{{version}} के स्थान पर अपेक्षित बरिटो संस्करण 0.3.0', - 'dynamic-msg-burrito-validation-failed': 'बरिटो मान्यकरण विफल', - 'text-login-page-desc': 'ऑटोग्राफा 2.0 एक नया तरीके से आपको पवित्रशास्त्र और सम्बन्धित संसाधन संपादित करने और सशक्त सहज विशेषताओं के साथ और भी महत्वपूर्ण चीजों पर ध्यान केंद्रित करने में आपकी सहायता करेंगा! ', - 'text-welcome': 'स्वागत है', - 'text-sign-up-quote': 'एक महान समुदाय का हिस्सा बनें और हमारे साथ आनंद लें', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'सक्रिय', - 'label-archived': 'संग्रहीत', - 'label-archived-prj': 'संग्रहीत परियोजनाएँ', - 'label-bible-translation': 'बाइबल अनुवाद', - 'msg-lang-code-req': 'भाषा कोड आवश्यक है', - 'msg-lang-name-req': 'भाषा का नाम आवश्यक है', - 'msg-min-three-letter': 'न्यूनतम 3 अक्षर टाइप करने के लिए खोजें', - 'label-prj-on-my-computer': '', - 'label-save-to-cloud': 'क्लाउड में सहेजें', - 'label-last-synced': 'अंतिम बार समन्वयित किया गया', - 'label-prj-on-cloud': 'क्लाउड पर प्रोजेक्ट', - 'label-save-to-computer': 'कंप्यूटर में सहेजें', - 'label-view-more': 'और देखें', - 'label-create-new-user': 'नया उपयोगकर्ता बनाएं', - 'label-user-name': 'उपयोगकर्ता नाम', - 'label-privacy': 'गोपनीयता', - 'label-terms': 'शर्तें', - 'label-collection': 'संग्रह', - 'label-select-folder': 'फोल्डर का चयन करें', - 'label-resources': 'संसाधन', - 'label-lang': 'भाषा', - 'label-type': 'प्रकार', - 'label-select-language': 'भाषा चुने', - 'label-pre-release': 'प्री-रिलीज़', - 'label-save-filter': 'फ़िल्टर सहेजें', - 'label-subject': 'विषय', - 'label-release': 'मुक्त करना', - 'label-version': 'संस्करण', - 'msg-select-dir-for-SB': 'एक निर्देशिका/प्रोजेक्ट का चयन करें जिसमें एक स्क्रिप्चर बरिटो फ़ाइल हो यानी। मेटाडेटा.json फ़ाइल', - 'label-online-resources': 'ऑनलाइन संसाधन', - 'tooltip-download': 'डाउनलोड', - 'msg-no-resource-for-bible-obs-download': '
यह सामग्री इस भाषा के लिए उपलब्ध नहीं है|
आप संग्रह टैब के माध्यम से स्वयं के स्क्रिप्चर बरिटो संसाधनों को आयात कर सकते हैं।
स्क्राइब के साथ स्क्रिप्चर बरिटो प्रोजेक्ट बनाने के बारे में और जानें। स्क्राइब दस्तावेज़ देखें।
', - 'label-back': 'पीछे', - 'label-speed': 'स्पीड', - 'label-record': 'रिकॉर्ड', - 'label-stop': 'स्टॉप', - 'label-continue': 'कंटिन्यू', - 'label-rewind': 'रिवाइंड', - 'label-play': 'प्ले', - 'label-pause': 'पॉज', - 'label-delete': 'डिलीट', - 'label-volume': 'वॉल्यूम', - 'label-takes': 'टैक्स', - 'label-settings': 'सेटिंग्स', - 'label-restore': 'पुनर्स्थापित करना', - 'label-archive': 'पुरालेख', - 'tooltip-save-cloud-btn': 'यह क्रिया आपके डेटा को डोर43 से सिंक कर देगी', - 'tooltip-save-computer-btn': 'यह क्रिया आपके स्थानीय डेटा को डोर43 डेटा के साथ क्लोन या अपडेट कर देगी', - 'label-choose-usfm-files': 'यूएसएफएम फ़ाइलें चुनें', - 'label-choose-md-files': 'Markdown फ़ाइलें चुनें', - 'label-merge': 'मर्ज', - 'label-abort': 'बीच में बंद करें', - 'tooltip-star-project': 'स्टार परियोजना', - 'tooltip-un-star-project': 'अनस्टार प्रोजेक्ट', - 'tooltip-merge-all-orginal-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए मूल स्वीकार करें', - 'tooltip-merge-orginal-btn': 'संघर्ष को हल करने के लिए मूल परिवर्तन स्वीकार करें', - 'tooltip-merge-all-reset-btn': 'खुली हुई फ़ाइल को आरंभिक स्थिति में रीसेट करें', - 'tooltip-merge-all-both-btn': 'संघर्ष को सुलझाने के लिए दोनों परिवर्तन स्वीकार करें', - 'tooltip-merge-both-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए दोनों को स्वीकार करें', - 'tooltip-merge-all-new-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए नया स्वीकार करें', - 'tooltip-merge-new-btn': 'संघर्ष को सुलझाने के लिए नए परिवर्तन स्वीकार करें', - 'label-original': 'मूल', - 'label-new': 'नया', - 'label-reset': 'रीसेट', - 'label-both': 'दोनों', - 'label-overwrite': 'ओवरराइट', - 'modal-title-abort-conflict-resolution': 'संघर्ष समाधान निरस्त करें', - 'msg-abort-conflict-resolution': 'क्या आप संघर्ष समाधान प्रक्रिया को निरस्त करना चाहते हैं? यदि आप गर्भपात करते हैं, तो आप अपनी सारी प्रगति और दोबारा शुरू करने की आवश्यकता खो देंगे।', - 'label-done': 'हो गया', - 'label-resolved': 'हल किया', - 'label-resolve-conflict': 'विवाद हल करो', - 'label-comparison': 'तुलना', - 'label-files': 'फ़ाइलें', - 'label-re-record': 'पुन: रिकॉर्ड', - 'modal-title-re-record': 'ऑडियो पुनः रिकॉर्ड करें', - 'msg-re-record-audio': 'क्या आप ऑडियो दोबारा रिकॉर्ड करना चाहते हैं?', - 'modal-title-delete-audio': 'ऑडियो हटाएँ', - 'msg-delete-audio': 'क्या आप चयनित टेक को हटाना चाहते हैं?', - 'label-accepted': 'स्वीकृत', - 'msg-remove-resource': 'क्या आप वाकई संसाधन को हटाना चाहते हैं? इस क्रिया को पूर्ववत नहीं किया जा सकता', - 'label-check-updates': 'अपडेट जांचें', - 'label-documentation': 'प्रलेखन', - 'label-tech-support': 'तकनीकी समर्थन', - 'msg-helps-filepath': 'आप manifest.yaml सर्वर के लिए एक त्वरित संसाधन सेट कर सकते हैं।', - 'tooltip-supported-resources': 'समर्थित संसाधन TN, TW, TQ, TA हैं।', - 'label-upload-help-resources': 'सहायता संसाधन अपलोड करें', - 'label-filter': 'फ़िल्टर', - 'label-book-selection': 'पुस्तक चयन', - 'label-chapter-selection': 'अध्याय चयन', - 'label-select': 'चयन्', - 'label-deselect': 'चयन रद्द करें', - 'label-start': 'सुरु्', - 'label-end': 'अंत', - 'label-apply': 'आवेदन करना', - 'label-scope-not-selected': 'आरंभ करने के लिए, स्कोप प्रबंधन पर जाएं, पुस्तक और अध्यायों का चयन करें और लागू करें बटन पर क्लिक करें', - 'label-scope-note-audio': 'प्रोजेक्ट लिस्टिंग पेज पर SCOPE MANAGEMENT विकल्प से पुस्तक और अध्याय चुनें', - 'modal-title-scope-management': 'स्कोप प्रबंधन', + 'app-name': 'स्क्राइब स्क्रिप्चर', + 'new-project-page': 'नया प्रोजेक्ट', + 'edit-project': 'प्रोजेक्ट संपादित करें', + 'label-abbreviation': 'संक्षेपाक्षर', + 'label-target-language': 'लक्ष्य भाषा', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'पुस्तकें', + 'label-book': 'पुस्तक', + 'label-import-book': 'पुस्तक आयात करें', + 'label-saved': 'सहेजा गया है', + 'label-sync': 'सिंक', + 'label-comments': 'टिप्पणियाँ', + 'label-cross-ref': 'क्रॉस रेफरेंस', + 'label-add-footnote': 'फुटनोट जोड़ें', + 'label-add-comment': 'टिप्पणी जोड़ें', + 'label-add-ref': 'संदर्भ जोड़ें', + 'label-user-menu': 'उपयोगकर्ता मेन्यू खोलें', + 'label-main-menu': 'मुख्य मेन्यू खोलें', + 'label-dont-have-account': 'खाता नहीं है?', + 'label-already-have-account': 'पहले से ही एक खाता है?', + 'label-new-langauge': 'नई भाषा', + 'label-edit-langauge': 'भाषा संपादित करें', + 'label-script-direction': 'स्क्रिप्ट दिशा', + 'label-drop-file-upload': 'अपलोड करने के लिए फ़ाइलें यहाँ डालें', + 'projects-page': 'प्रोजेक्ट्स', + 'label-search': 'खोजें', + 'label-project': 'प्रोजेक्ट', + 'label-flavor': 'स्वाद', + 'label-project-type': 'परियोजना प्रकार', + 'label-project-name': 'प्रोजेक्ट का नाम', + 'label-language': 'भाषा', + 'label-language-code': 'भाषा कोड', + 'label-all': 'सभी पुस्तकें', + 'label-other': 'अन्य', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'खाता निष्क्रिय करें', + 'label-created-date': 'सृजित दिनांक', + 'label-last-viewed': 'अंतिम बार देखा गया', + 'label-description': 'विवरण', + 'label-project-id': 'प्रोजैक्ट ID', + 'label-sign-in': 'साइन इन करें', + 'label-sign-up': 'साइन अप करें', + 'profile-page': 'प्रोफ़ाइल', + 'label-your-profile': 'आपकी प्रोफ़ाइल', + 'label-username': 'उपयोगकर्ता नाम', + 'label-name': 'नाम', + 'label-firstname': 'पहला नाम', + 'label-lastname': 'उपनाम', + 'label-password': 'पासवर्ड', + 'label-confirm-password': 'पासवर्ड की पुष्टि करें', + 'label-email': 'ईमेल', + 'label-organization': 'संगठन', + 'label-region': 'क्षेत्र', + 'label-app-language': 'App की भाषा', + 'label-menu-file': 'फ़ाइल', + 'label-uploading-files': 'फ़ाइलें अपलोड करें / फ़ाइलें डालें', + 'label-menu-edit': 'संपादन करें', + 'label-menu-about': 'के बारे में', + 'label-bookmarks': 'बुकमार्क/पृष्ठ स्मर्तियाँ', + 'label-custom': 'कस्टम', + 'label-show-hidden-file': 'छिपी फ़ाइलें देखें', + 'label-scope': 'स्कोप/दायरा /व्यापकता', + 'label-door43': 'Door 43', + 'label-paratext': 'पैराटेक्स्ट', + 'label-license': 'लाइसेंस', + 'label-preview': 'पूर्वावलोकन', + 'label-versification-scheme': 'वचनबद्ध पद्धति ', + 'label-old-testament': 'पुराना नियम', + 'label-new-testament': 'नया नियम', + 'label-chapter': 'अध्याय', + 'label-verse': 'आयत', + 'label-import-resource': 'संसाधन आयात करें', + 'label-resource': 'संसाधन', + 'label-resource-bible': 'बाइबल', + 'label-resource-obs-tn': 'OBS रांसलेशन नोट्स', + 'label-resource-obs-tq': 'OBS ट्रांसलेशन प्रश्नों', + 'label-resource-obs': 'ओपन बाइबल स्टोरी', + 'label-resource-tn': 'ट्रांसलेशन नोट्स', + 'label-resource-twlm': 'ट्रांसलेशन शब्द', + 'label-resource-twl': 'ट्रांसलेशन शब्दों की सूची', + 'label-resource-tq': 'ट्रांसलेशन प्रश्नों', + 'label-resource-ta': 'ट्रांसलेशन अकादमी', + 'label-resource-name': 'संसाधन का नाम', + 'label-footnotes': 'फुट नोट्स', + 'label-location': 'स्थान', + 'label-audio-bible': 'अडियो', + 'label-resource-obs-twl': 'OBS अनुवाद शब्द सूची', + 'placeholder-resource-name': 'संसाधन का नाम दर्ज करें', + 'placeholder-license-name': 'लाइसेंस का नाम', + 'placeholder-search': 'खोजें…', + 'placeholder-door43-url': 'Door 43 का URL दर्ज करें', + 'label-burrito-resource-path': 'स्क्रिप्चर बरिटो रिसोर्स फाइलपथ', + 'label-burrito-directory': 'स्क्रिप्चर बरिटो निर्देशिका', + 'label-export-file-path': 'फ़ाइल पाथ निर्यात करें', + 'label-import-project': 'प्रोजेक्ट आयात करें', + 'label-export-project': 'प्रोजेक्ट निर्यात करें', + 'label-notification': 'सूचनाएँ', + 'label-editor-pane': 'संपादक', + 'label-editor-font-char': 'अ', + 'label-upload': 'अपलोड करें', + 'label-no-content-available': 'कोई सामग्री उपलब्ध नहीं है!', + 'label-enter-location': 'स्थान दर्ज करें', + 'label-editor-load-module': 'मॉड्यूल लोड करें', + 'label-import-door43-resources': 'आयात DOOR43 संसाधनों की सहायता करता है', + 'tooltip-editor-lock': 'नेविगेशन लॉक/अनलॉक', + 'tooltip-editor-bookmark': 'बुकमार्क', + 'tooltip-editor-notification': 'सूचना', + 'tooltip-editor-layout': 'लेआउट', + 'tooltip-editor-font-dec': 'फ़ॉन्ट आकार घटाएँ', + 'tooltip-editor-font-inc': 'फ़ॉन्ट आकार बढ़ाएँ', + 'tooltip-editor-resource-selector': 'संसाधन चयनकर्ता', + 'tooltip-editor-remove-section': 'सेक्शन हटाएँ', + 'tooltip-editor-add-section': 'खंड जोड़ें', + 'modal-title-license': 'लाइसेंस', + 'modal-title-about': 'के बारे में', + 'modal-title-remove-resource': 'संसाधन हटाएँ', + 'modal-title-update-burrito': 'बरिटो को अपडेट करें', + 'modal-title-update-app': 'ऑटोग्राफ अपडेट!', + 'modal-title-replace-resource': 'संसाधन बदलें', + 'dynamic-msg-burrito-validate-import-project': 'बरिटो को सफलतापूर्वक सत्यापित किया गया', + 'btn-new': 'नया', + 'btn-close': 'बंद करें', + 'btn-ok': 'ठीक', + 'btn-source-code': 'सोर्स कोड', + 'btn-save': 'सहेजें', + 'btn-signout': 'साइन आउट', + 'btn-signup': 'साइन अप', + 'btn-signin': 'साइन इन', + 'btn-edit': 'संपादन करें', + 'btn-export': 'निर्यात करें', + 'btn-import': 'आयात करें', + 'btn-add': 'जोड़ें', + 'btn-create-project': 'प्रोजेक्ट बनाएँ', + 'btn-import-books': 'पुस्तकें आयात करें', + 'btn-cancel': 'रद्द करें', + 'btn-restart': 'पुनर्प्रारंभ करें', + 'btn-clear': 'खाली करें', + 'btn-upload': 'अपलोड करें', + 'btn-advance-settings': 'एडवांस सेटिंग', + 'btn-create': 'बनाएँ', + 'btn-all': 'सब', + 'btn-ot': 'पुराना नियम', + 'btn-nt': 'नया नियम', + 'btn-update': 'अपडेट करें', + 'btn-replace': 'बदलें', + 'btn-remove': 'हटाएँ', + 'btn-deactivate': 'निष्क्रिय करें', + 'btn-load-tn': 'लोड अनुवाद नोट किया गया है', + 'tooltip-import-resource-info-circle': 'एक निर्देशिका/प्रोजेक्ट का चयन करें जिसमें एक स्क्रिप्चर बरिटो फ़ाइल है यानी मेटाडेटा.json फ़ाइल।', + 'tooltip-import-open-file-location': 'फ़ोल्डर का स्थान खोलें', + 'dynamic-msg-import-resource-snack': 'संसाधन अपलोड सफल रहा! कृपया संसाधन सूची देखें', + 'dynamic-msg-unable-find-buritto-snack': 'बरिटो फ़ाइल को ढूंढने में असमर्थ (metadata.json )', + 'dynamic-msg-unable-invalid-buritto-snack': 'अमान्य बरिटो फ़ाइल (metadata.json) ', + 'dynamic-msg-confirm-replace-resource': 'इसी नाम से एक मौजूदा प्रोजेक्ट मिला! "संग्रहीत टैब" या "प्रोजेक्ट टैब" जांचें। ओवरलैपिंग पुस्तकों में किसी भी मौजूदा सामग्री को अधिलेखित करने के लिए "बदलें" दबाएँ। प्रोजेक्ट को वर्तमान प्रोजेक्ट के साथ संयोजित करने के लिए "मर्ज" दबाएँ। परिवर्तनों से बचने के लिए "रद्द करें" दबाएँ।', + 'dynamic-msg-resource-added': 'संसाधन को सफलतापूर्वक जोड़ा गया है', + 'dynamic-msg-resource-unable-fetch-url': 'दिए गए यू आर एल(URL) से चयनित संसाधन लाने में असमर्थ', + 'dynamic-msg-load-ref-bible-snack': 'सफलतापूर्वक {{refName}} फ़ाइल लोड की गई', + 'dynamic-msg-load-ref-bible-snack-fail': '{{refName}} फ़ाइल लोड करने में विफल', + 'dynamic-msg-load-ref-bible-success': 'संदर्भ-बरिटो सफलतापूर्वक लोड किया गया', + 'dynamic-msg-validate-hook-project-name': 'इनपुट {{minLen}} और {{maxLen}} वर्णों के बीच होना चाहिए', + 'dynamic-msg-update-burrito-version': 'बरिटो को {{version1}} से {{version2}} में अपडेट करें', + 'dynamic-msg-validate-hook-onlyNum': 'कृपया केवल संख्या दर्ज करें।', + 'dynamic-msg-validate-hook-onlyString': 'कृपया केवल अक्षर दर्ज करें।', + 'dynamic-msg-validate-hook-nonSpecChar': 'विशेष वर्ण की अनुमति नहीं है', + 'dynamic-msg-validate-hook-alphaNum': 'केवल अक्षर और संख्या की अनुमति है', + 'dynamic-msg-validate-hook-email': 'ईमेल वैध नहीं है!', + 'dynamic-msg-auto-update': 'ऑटोग्राफा का एक नया अपडेट उपलब्ध है। अभी डाउनलोड हो रहा है...', + 'dynamic-msg-auto-update-complete': 'अपडेट डाउनलोड किया गया। इसे पुनरारंभ करने पर इंस्टॉल किया जाएगा। अभी पुनः प्रारंभ करें?', + 'dynamic-msg-import-burrito-project-success': 'प्रोजेक्ट सफलतापूर्वक आयात किया गया है', + 'dynamic-msg-deactivate-account': 'क्या आप वाकई अपना खाता निष्क्रिय करना चाहते हैं? आपका सारा डेटा स्थायी रूप से हटा दिया जाएगा। इस क्रिया को पूर्ववत नहीं किया जा सकता है।', + 'dynamic-msg-project-updated': 'प्रोफ़ाइल को अपडेट किया गया है।', + 'dynamic-msg-app-lang-changed': 'ऐप की भाषा बदली गई है।', + 'dynamic-msg-data-read-fail': 'फ़ाइल से डेटा पढ़ने में विफल।', + 'dynamic-msg-export-success': 'सफलतापूर्वक निर्यात किया गया', + 'dynamic-msg-export-fail': 'निर्यात करने में विफल', + 'dynamic-msg-invalid-path': 'अवैध पथ', + 'dynamic-msg-invalid-usfm-file': 'अवैध USFM फ़ाइल।', + 'dynamic-msg-invalid-md-file': 'अवैध MD फ़ाइल।', + 'dynamic-msg-fill-all-fields': 'सभी फ़ील्ड भरें', + 'dynamic-msg-burrito-validation-expected': '{{version}} के स्थान पर अपेक्षित बरिटो संस्करण 0.3.0', + 'dynamic-msg-burrito-validation-failed': 'बरिटो मान्यकरण विफल', + 'text-login-page-desc': 'ऑटोग्राफा 2.0 एक नया तरीके से आपको पवित्रशास्त्र और सम्बन्धित संसाधन संपादित करने और सशक्त सहज विशेषताओं के साथ और भी महत्वपूर्ण चीजों पर ध्यान केंद्रित करने में आपकी सहायता करेंगा! ', + 'text-welcome': 'स्वागत है', + 'text-sign-up-quote': 'एक महान समुदाय का हिस्सा बनें और हमारे साथ आनंद लें', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'सक्रिय', + 'label-archived': 'संग्रहीत', + 'label-archived-prj': 'संग्रहीत परियोजनाएँ', + 'label-bible-translation': 'बाइबल अनुवाद', + 'msg-lang-code-req': 'भाषा कोड आवश्यक है', + 'msg-lang-name-req': 'भाषा का नाम आवश्यक है', + 'msg-min-three-letter': 'न्यूनतम 3 अक्षर टाइप करने के लिए खोजें', + 'label-prj-on-my-computer': '', + 'label-save-to-cloud': 'क्लाउड में सहेजें', + 'label-last-synced': 'अंतिम बार समन्वयित किया गया', + 'label-prj-on-cloud': 'क्लाउड पर प्रोजेक्ट', + 'label-save-to-computer': 'कंप्यूटर में सहेजें', + 'label-view-more': 'और देखें', + 'label-create-new-user': 'नया उपयोगकर्ता बनाएं', + 'label-user-name': 'उपयोगकर्ता नाम', + 'label-privacy': 'गोपनीयता', + 'label-terms': 'शर्तें', + 'label-collection': 'संग्रह', + 'label-select-folder': 'फोल्डर का चयन करें', + 'label-resources': 'संसाधन', + 'label-lang': 'भाषा', + 'label-type': 'प्रकार', + 'label-select-language': 'भाषा चुने', + 'label-pre-release': 'प्री-रिलीज़', + 'label-save-filter': 'फ़िल्टर सहेजें', + 'label-subject': 'विषय', + 'label-release': 'मुक्त करना', + 'label-version': 'संस्करण', + 'msg-select-dir-for-SB': 'एक निर्देशिका/प्रोजेक्ट का चयन करें जिसमें एक स्क्रिप्चर बरिटो फ़ाइल हो यानी। मेटाडेटा.json फ़ाइल', + 'label-online-resources': 'ऑनलाइन संसाधन', + 'tooltip-download': 'डाउनलोड', + 'msg-no-resource-for-bible-obs-download': '
यह सामग्री इस भाषा के लिए उपलब्ध नहीं है|
आप संग्रह टैब के माध्यम से स्वयं के स्क्रिप्चर बरिटो संसाधनों को आयात कर सकते हैं।
स्क्राइब के साथ स्क्रिप्चर बरिटो प्रोजेक्ट बनाने के बारे में और जानें। स्क्राइब दस्तावेज़ देखें।
', + 'label-back': 'पीछे', + 'label-speed': 'स्पीड', + 'label-record': 'रिकॉर्ड', + 'label-stop': 'स्टॉप', + 'label-continue': 'कंटिन्यू', + 'label-rewind': 'रिवाइंड', + 'label-play': 'प्ले', + 'label-pause': 'पॉज', + 'label-delete': 'डिलीट', + 'label-volume': 'वॉल्यूम', + 'label-takes': 'टैक्स', + 'label-settings': 'सेटिंग्स', + 'label-restore': 'पुनर्स्थापित करना', + 'label-archive': 'पुरालेख', + 'tooltip-save-cloud-btn': 'यह क्रिया आपके डेटा को डोर43 से सिंक कर देगी', + 'tooltip-save-computer-btn': 'यह क्रिया आपके स्थानीय डेटा को डोर43 डेटा के साथ क्लोन या अपडेट कर देगी', + 'label-choose-usfm-files': 'यूएसएफएम फ़ाइलें चुनें', + 'label-choose-md-files': 'Markdown फ़ाइलें चुनें', + 'label-merge': 'मर्ज', + 'label-abort': 'बीच में बंद करें', + 'tooltip-star-project': 'स्टार परियोजना', + 'tooltip-un-star-project': 'अनस्टार प्रोजेक्ट', + 'tooltip-merge-all-orginal-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए मूल स्वीकार करें', + 'tooltip-merge-orginal-btn': 'संघर्ष को हल करने के लिए मूल परिवर्तन स्वीकार करें', + 'tooltip-merge-all-reset-btn': 'खुली हुई फ़ाइल को आरंभिक स्थिति में रीसेट करें', + 'tooltip-merge-all-both-btn': 'संघर्ष को सुलझाने के लिए दोनों परिवर्तन स्वीकार करें', + 'tooltip-merge-both-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए दोनों को स्वीकार करें', + 'tooltip-merge-all-new-btn': 'खोली गई फ़ाइल में सभी गैर-समाधानित संघर्ष अनुभागों के लिए नया स्वीकार करें', + 'tooltip-merge-new-btn': 'संघर्ष को सुलझाने के लिए नए परिवर्तन स्वीकार करें', + 'label-original': 'मूल', + 'label-new': 'नया', + 'label-reset': 'रीसेट', + 'label-both': 'दोनों', + 'label-overwrite': 'ओवरराइट', + 'modal-title-abort-conflict-resolution': 'संघर्ष समाधान निरस्त करें', + 'msg-abort-conflict-resolution': 'क्या आप संघर्ष समाधान प्रक्रिया को निरस्त करना चाहते हैं? यदि आप गर्भपात करते हैं, तो आप अपनी सारी प्रगति और दोबारा शुरू करने की आवश्यकता खो देंगे।', + 'label-done': 'हो गया', + 'label-resolved': 'हल किया', + 'label-resolve-conflict': 'विवाद हल करो', + 'label-comparison': 'तुलना', + 'label-files': 'फ़ाइलें', + 'label-re-record': 'पुन: रिकॉर्ड', + 'modal-title-re-record': 'ऑडियो पुनः रिकॉर्ड करें', + 'msg-re-record-audio': 'क्या आप ऑडियो दोबारा रिकॉर्ड करना चाहते हैं?', + 'modal-title-delete-audio': 'ऑडियो हटाएँ', + 'msg-delete-audio': 'क्या आप चयनित टेक को हटाना चाहते हैं?', + 'label-accepted': 'स्वीकृत', + 'msg-remove-resource': 'क्या आप वाकई संसाधन को हटाना चाहते हैं? इस क्रिया को पूर्ववत नहीं किया जा सकता', + 'label-check-updates': 'अपडेट जांचें', + 'label-documentation': 'प्रलेखन', + 'label-tech-support': 'तकनीकी समर्थन', + 'msg-helps-filepath': 'आप manifest.yaml सर्वर के लिए एक त्वरित संसाधन सेट कर सकते हैं।', + 'tooltip-supported-resources': 'समर्थित संसाधन TN, TW, TQ, TA हैं।', + 'label-upload-help-resources': 'सहायता संसाधन अपलोड करें', + 'label-filter': 'फ़िल्टर', + 'label-book-selection': 'पुस्तक चयन', + 'label-chapter-selection': 'अध्याय चयन', + 'label-select': 'चयन्', + 'label-deselect': 'चयन रद्द करें', + 'label-start': 'सुरु्', + 'label-end': 'अंत', + 'label-apply': 'आवेदन करना', + 'label-scope-not-selected': 'आरंभ करने के लिए, स्कोप प्रबंधन पर जाएं, पुस्तक और अध्यायों का चयन करें और लागू करें बटन पर क्लिक करें', + 'label-scope-note-audio': 'प्रोजेक्ट लिस्टिंग पेज पर SCOPE MANAGEMENT विकल्प से पुस्तक और अध्याय चुनें', + 'modal-title-scope-management': 'स्कोप प्रबंधन', }; diff --git a/renderer/src/translations/i18n.js b/renderer/src/translations/i18n.js index ee245ddcc..bdd079326 100644 --- a/renderer/src/translations/i18n.js +++ b/renderer/src/translations/i18n.js @@ -52,7 +52,7 @@ i18n translation: Te, }, }, -}); + }); // i18n.changeLanguage('en'); export default i18n; diff --git a/renderer/src/translations/id.js b/renderer/src/translations/id.js index c2667d83a..c104f1b51 100644 --- a/renderer/src/translations/id.js +++ b/renderer/src/translations/id.js @@ -1,293 +1,293 @@ export const Id = { - 'app-name': 'Scribe Kitab Suci', - 'new-project-page': 'Proyek Baru', - 'edit-project': 'Edit Proyek', - 'label-abbreviation': 'Singkatan', - 'label-target-language': 'Target Bahasa', - 'label-ltr': 'Kiri Ke Kanan', - 'label-rtl': 'Kanan Ke Kiri', - 'label-books': 'Kitab-Kitab', - 'label-book': 'Kitab', - 'label-import-book': 'Impor Kitab', - 'label-saved': 'Simpan', - 'label-sync': 'sink', - 'label-comments': 'Komentar', - 'label-cross-ref': 'Referensi Silang', - 'label-add-footnote': 'Tambahkan Catatan Kaki', - 'label-add-comment': 'Tambahkan Komentar', - 'label-add-ref': 'Tambahkan Referensi', - 'label-user-menu': 'Buka Menu Pengguna', - 'label-main-menu': 'Buka Menu Utama', - 'label-dont-have-account': 'Tidak Memiliki Akun?', - 'label-already-have-account': 'Sudah Memiliki Akun??', - 'label-new-langauge': 'Bahasa Baru', - 'label-edit-langauge': 'Edit Bahasa', - 'label-script-direction': 'Arah Penulisan', - 'label-drop-file-upload': 'Letakan File Disini Untuk Unggah', - 'projects-page': 'Proyek', - 'label-search': 'Cari', - 'label-project': 'Proyek', - 'label-flavour': 'Flavour', - 'label-project-type': 'Jenis Proyek', - 'label-project-name': 'Nama Proyek', - 'label-language': 'Nama Bahasa', - 'label-language-code': 'Kode Bahasa', - 'label-all': 'Semua Kitab', - 'label-other': 'Lainnya', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'Nonaktifkan-akun', - 'label-created-date': 'Tanggal Dibuat', - 'label-last-viewed': 'Terakhir dilihat', - 'label-description': 'Deskripsi', - 'label-project-id': 'ID Proyek', - 'label-sign-in': 'Masuk', - 'label-sign-up': 'Keluar', - 'profile-page': 'Profil', - 'label-your-profile': 'Profil Anda', - 'label-username': 'Nama Pengguna', - 'label-name': 'Nama', - 'label-firstname': 'Nama Depan', - 'label-lastname': 'Nama Belakang', - 'label-password': 'Password', - 'label-confirm-password': 'Konfirmasi Password', - 'label-email': 'Email', - 'label-organization': 'organisasi', - 'label-region': 'Wilayah', - 'label-app-language': 'Bahasa Aplikasi', - 'label-menu-file': 'File', - 'label-uploading-files': 'Mengunggah File', - 'label-menu-edit': 'Sunting', - 'label-menu-about': 'Tentang', - 'label-bookmarks': 'Bookmarks', - 'label-custom': 'Custom', - 'label-show-hidden-file': 'Tampilkan File Tersembunyi', - 'label-scope': 'Lingkup', - 'label-door43': 'Door 43', - 'label-paratext': 'Paratext', - 'label-license': 'Lisensi', - 'label-preview': 'Pratinjau', - 'label-versification-scheme': 'Skema Versifikasi', - 'label-old-testament': 'Perjanjian Lama', - 'label-new-testament': 'Perjanjian Baru', - 'label-chapter': 'Pasal', - 'label-verse': 'Ayat', - 'label-import-resource': 'Impor Sumber Daya', - 'label-resource': 'Sumber Daya', - 'label-resource-bible': 'Alkitab', - 'label-resource-obs-tn': 'OBS Translation Notes', - 'label-resource-obs-tq': 'OBS Translation Questions', - 'label-resource-obs': 'Open Bible Stories', - 'label-resource-tn': 'Translation Notes', - 'label-resource-twlm': 'Translation Words', - 'label-resource-twl': 'Translation Word Links', - 'label-resource-tq': 'Translation Questions', - 'label-resource-ta': 'Translation Academy', - 'label-resource-name': 'nama sumber daya', - 'label-footnotes': 'Catatan Kaki', - 'label-location': 'lokasi', - 'label-audio-bible': 'Audio', - 'label-resource-obs-twl': 'OBS Translation Word Links', - 'placeholder-resource-name': 'Masukan nama sumber daya', - 'placeholder-license-name': 'Nama Lisensi', - 'placeholder-search': 'Cari…', - 'placeholder-door43-url': 'Masukan url door43', - 'label-burrito-resource-path': 'Jalur File Sumber Daya Scripture Burrito', - 'label-burrito-directory': 'Derektori Scripture burrito', - 'label-export-file-path': 'Ekspor Jalu File', - 'label-import-project': 'Impor Proyek', - 'label-export-project': 'Expor Proyek', - 'label-notification': 'Notififikasi', - 'label-editor-pane': 'Penyunting', - 'label-editor-font-char': 'A', - 'label-upload': 'Unggah', - 'label-no-content-available': 'Konten Tidak Tersedia!', - 'label-enter-location': 'Masukan Lokasi', - 'label-editor-load-module': 'Muat Modul', - 'label-import-door43-resources': 'Impor sumber Daya Bantuan Door43', - 'tooltip-editor-lock': 'kunci/buka navigasi', - 'tooltip-editor-bookmark': 'bookmark', - 'tooltip-editor-notification': 'notifikasi', - 'tooltip-editor-layout': 'Tata Letak', - 'tooltip-editor-font-dec': 'kurangi ukuran huruf', - 'tooltip-editor-font-inc': 'tambah ukuran huruf', - 'tooltip-editor-resource-selector': 'pemilih sumber daya', - 'tooltip-editor-remove-section': 'hapus bagian', - 'tooltip-editor-add-section': 'tambahkan bagian', - 'modal-title-license': 'Lisensi', - 'modal-title-about': 'Tentang', - 'modal-title-remove-resource': 'Hapus Sumber Daya', - 'modal-title-update-burrito': 'Perbarui Burrito', - 'modal-title-update-app': 'Pembaruan Scribe Kitab Suci!', - 'modal-title-replace-resource': 'Ganti Sumber Daya', - 'dynamic-msg-burrito-validate-import-project': 'Validasi Burrito Berhasil', - 'btn-new': 'Baru', - 'btn-close': 'Tutup', - 'btn-ok': 'Oke', - 'btn-source-code': 'Kode Sumber', - 'btn-save': 'Simpan', - 'btn-signout': 'Keluar', - 'btn-signup': 'Daftar', - 'btn-signin': 'Masuk', - 'btn-edit': 'Sunting', - 'btn-export': 'Expor', - 'btn-import': 'Impor', - 'btn-add': 'tambahkan', - 'btn-create-project': 'membuat proyek', - 'btn-import-books': 'Impor Kitab', - 'btn-cancel': 'Batal', - 'btn-restart': 'Mulai Ulang', - 'btn-clear': 'Bersihkan', - 'btn-upload': 'Unggah', - 'btn-advance-settings': 'Pengaturan Lanjutan', - 'btn-create': 'Buat', - 'btn-all': 'SEMUA', - 'btn-ot': 'PL', - 'btn-nt': 'PB', - 'btn-update': 'Perbarui', - 'btn-replace': 'Ganti', - 'btn-remove': 'Hapus', - 'btn-deactivate': 'Nonaktifkan', - 'btn-load-tn': 'memuat terjemahan dicatat', - 'tooltip-import-resource-info-circle': 'Pilih direktori/proyek yang memiliki file Burrito Kitab Suci misalnya metadata.json file.', - 'tooltip-import-open-file-location': 'buka lokasi folder', - 'dynamic-msg-import-resource-snack': 'Pengunggahan sumber daya berhasil! Silakan periksa daftar sumber daya', - 'dynamic-msg-unable-find-buritto-snack': 'Tidak dapat menemukan file burrito (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'File burrito tidak valid (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'Proyek yang sudah ada dengan nama yang sama ditemukan! Periksa "Tab Arsip" atau "Tab Proyek". Tekan "Ganti" untuk menimpa konten yang ada di buku yang tumpang tindih. Tekan "Gabungkan" untuk menggabungkan proyek dengan proyek saat ini. Tekan "Batal" untuk menghindari perubahan.', - 'dynamic-msg-resource-added': 'sumber daya berhasil ditambahkan', - 'dynamic-msg-resource-unable-fetch-url': 'tidak dapat mengambil sumber daya yang dipilih dari url yang diberikan', - 'dynamic-msg-load-ref-bible-snack': 'berhasil memuat file {{refName}}', - 'dynamic-msg-load-ref-bible-snack-fail': 'gagal memuat file {{refName}}', - 'dynamic-msg-load-ref-bible-success': 'Referensi-burrito berhasil dimuat', - 'dynamic-msg-validate-hook-project-name': 'Masukan harus memiliki panjang antara {{minLen}} dan {{maxLen}} karakter', - 'dynamic-msg-update-burrito-version': 'Perbatrui burrito dari {{version1}} ke {{version2}}', - 'dynamic-msg-validate-hook-onlyNum': 'Harap masukkan hanya angka.', - 'dynamic-msg-validate-hook-onlyString': 'Harap masukan hanya huruf.', - 'dynamic-msg-validate-hook-nonSpecChar': 'Karakter Khusus Tidak Diperbolehkan', - 'dynamic-msg-validate-hook-alphaNum': 'Hanya Huruf dan Angka yang diperbolehkan', - 'dynamic-msg-validate-hook-email': 'Email tidak valid!', - 'dynamic-msg-auto-update': 'Pembaruan Scribe Kitab Suci yang baru telah tersedia. Unduh sekarang...', - 'dynamic-msg-auto-update-complete': 'Pembaruan Scribe Kitab Suci yang baru telah tersedia. Unduh sekarang', - 'dynamic-msg-import-burrito-project-success': 'Impor Proyek Berhasil', - 'dynamic-msg-deactivate-account': 'Apakah Anda yakin ingin menonaktifkan akun Anda? Semua data Anda akan dihapus secara permanen. Tindakan ini tidak dapat dibatalkan.', - 'dynamic-msg-project-updated': 'memperbarui Profil.', - 'dynamic-msg-app-lang-changed': 'Bahasa Aplikasi telah diganti.', - 'dynamic-msg-data-read-fail': 'Gagal untuk membaca data dari file.', - 'dynamic-msg-export-success': 'Ekspor Berhasil', - 'dynamic-msg-export-fail': 'Gagal untuk mengekspor', - 'dynamic-msg-invalid-path': 'Jalur Invalid', - 'dynamic-msg-invalid-usfm-file': 'File USFM Invalid.', - 'dynamic-msg-invalid-md-file': 'File MD Invalid', - 'dynamic-msg-fill-all-fields': 'Isi semua bidang', - 'dynamic-msg-burrito-validation-expected': 'Versi burrito yang diharapkan 0.3.0 bukan {{version}}', - 'dynamic-msg-burrito-validation-failed': 'Validasi Burrito Gagal', - 'text-login-page-desc': 'Scribe Kitab Suci adalah cara yang benar-benar baru untuk mengedit kitab suci dan sumber daya terkait dengan fitur-fitur yang kuat namun elegan untuk membantu Anda fokus pada hal-hal yang penting!', - 'text-sign-up-quote': 'Jadilah bagian dari komunitas yang hebat & bergembiralah bersama kami', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'Aktif', - 'label-archived': 'Arsip', - 'label-archived-prj': 'Proyek yang diarsipakn', - 'label-bible-translation': 'Penerjemahan Alkitab', - 'msg-lang-code-req': 'Kode Bahasa Diperlukan', - 'msg-lang-name-req': 'Nama Bahasa Diperlukan', - 'msg-min-three-letter': 'Ketik minimal 3 huruf untuk mencari', - 'label-prj-on-my-computer': 'proyek di komputer saya', - 'label-save-to-cloud': 'Simpan di Cloud', - 'label-last-synced': 'sinkronasi terakhir', - 'label-prj-on-cloud': 'Proyek di Cloud', - 'label-save-to-computer': 'Simpan di komputer', - 'label-view-more': 'Lihat Lebih Banyak', - 'label-create-new-user': 'Buat Pengguna Baru', - 'label-user-name': 'Nama Pengguna', - 'label-privacy': 'privasi', - 'label-terms': 'persyaratan', - 'label-collection': 'koleksi', - 'label-select-folder': 'Pilih folder', - 'label-resources': 'Sumber Daya', - 'label-lang': 'Bahasa', - 'label-type': 'Tipe', - 'label-select-language': 'Pilih Bahasa', - 'label-pre-release': 'Pra-Rilis', - 'label-save-filter': 'Simpan Filter', - 'label-subject': 'Subjek', - 'label-release': 'Rilis', - 'label-version': 'Versi', - 'msg-select-dir-for-SB': 'Pilih direktori/proyek yang memiliki file Scripture Burrito, yaitu file metadata.json', - 'label-online-resources': 'Sumber Day Daring', - 'tooltip-download': 'Unduh', - 'msg-no-resource-for-bible-obs-download': '
Konten tidak tersedia untuk bahasa ini
Anda dapat mengimpor sendiriKitab Suci Burrito melalui sumber dayaKoleksitab.
Pelajari lebih lanjut tentang membuat proyek Kitab Suci Burrito dengan Scribe. Dokumen Rujukan Scribe.
', - 'label-back': 'Kembali', - 'label-speed': 'Kecepatan', - 'label-record': 'Rekam', - 'label-stop': 'Berhenti', - 'label-continue': 'Lanjutkan', - 'label-rewind': 'Mundur', - 'label-play': 'Putar', - 'label-pause': 'Jeda', - 'label-delete': 'Hapus', - 'label-volume': 'Volume', - 'label-takes': 'Pengambilan', - 'label-settings': 'Pengaturan', - 'label-restore': 'Mengembalikan', - 'label-archive': 'Arsip', - 'tooltip-save-cloud-btn': 'Tindakan ini akan menyinkronkan data Anda ke Door43', - 'tooltip-save-computer-btn': 'Tindakan ini akan mengkloning atau memperbarui data lokal Anda dengan data Door43', - 'label-choose-usfm-files': 'Pilih File USFM', - 'label-choose-md-files': 'Pilih File Markdown', - 'label-merge': 'gabungkan', - 'label-abort': 'Batalkan', - 'tooltip-star-project': 'Proyek Berbintang', - 'tooltip-un-star-project': 'proyek Tidak Berbintang', - 'tooltip-merge-all-orginal-btn': 'Terima ORIGINAL untuk semua bagian konflik yang tidak terselesaikan dalam file yang dibuka', - 'tooltip-merge-orginal-btn': 'Menerima perubahan ORIGINAL untuk menyelesaikan konflik', - 'tooltip-merge-all-reset-btn': 'ATUR ULANG file yang dibuka ke kondisi awal', - 'tooltip-merge-all-both-btn': 'Terima KEDUANYA untuk semua bagian konflik yang tidak terselesaikan dalam file yang dibuka', - 'tooltip-merge-both-btn': 'Terima KEDUANYA perubahan untuk menyelesaikan konflik', - 'tooltip-merge-all-new-btn': 'Terima BARU untuk semua bagian konflik yang belum terselesaikan di file Batalkan Penyelesaian Konflik', - 'tooltip-merge-new-btn': 'Terima BARU untuk mneyelesaikan konflik', - 'label-original': 'Original', - 'label-new': 'Baru', - 'label-reset': 'Atur Ulang', - 'label-both': 'Keduanya', - 'label-overwrite': 'Timpa', - 'modal-title-abort-conflict-resolution': 'Batalkan Resolusi Konflik', - 'msg-abort-conflict-resolution': 'Apakah Anda ingin membatalkan proses penyelesaian konflik. Jika Anda membatalkan, Anda akan kehilangan semua kemajuan Anda dan harus memulai dari awal.', - 'label-done': 'Selesai', - 'label-resolved': 'Terselesaiakn', - 'label-resolve-conflict': 'Menyelesaikan Konflik', - 'label-comparison': 'Perbandingan', - 'label-files': 'file', - 'label-re-record': 'Rekam ulang', - 'modal-title-re-record': 'Rekam Ulang Audio', - 'msg-re-record-audio': 'Apa Anada Ingin Merekam Ulang Audio', - 'modal-title-delete-audio': 'Hapus Audio', - 'msg-delete-audio': 'Apakah Anda ingin menghapus pengambilan yang dipilih?', - 'label-accepted': 'Diterima', - 'msg-remove-resource': 'Apakah Anda yakin ingin menghapus sumber daya. Tindakan ini tidak dapat dikembalikan ', - 'label-check-updates': 'Periksa Pembaruan', - 'label-documentation': 'Dokumentasi', - 'label-tech-support': 'Dukungan Teknis', - 'msg-helps-filepath': 'Membantu Sumber daya filepath dengan valid manifest.yaml', - 'tooltip-supported-resources': 'Sumber Daya Pendukung Lainnya Adalah TN, TW, TQ, TA', - 'label-upload-help-resources': 'Unggah Sumber Daya Bantuan', - 'label-filter': 'Filter', - 'label-book-selection': 'Pemilihan Buku', - 'label-chapter-selection': 'Pemilihan Bab', - 'label-select': 'Memilih', - 'label-deselect': 'Batalkan pilihan', - 'label-start': 'Awal', - 'label-end': 'Akhir', - 'label-apply': 'Menerapkan', - 'label-scope-not-selected': 'Untuk memulai, masuk ke Manajemen Lingkup pilih buku dan bab dan klik tombol Terapkan', - 'label-scope-note-audio': 'Pilih buku dan bab dari opsi MANAJEMEN RUANG LINGKUP pada halaman daftar proyek', - 'modal-title-scope-management': 'Manajemen Ruang Lingkup', + 'app-name': 'Scribe Kitab Suci', + 'new-project-page': 'Proyek Baru', + 'edit-project': 'Edit Proyek', + 'label-abbreviation': 'Singkatan', + 'label-target-language': 'Target Bahasa', + 'label-ltr': 'Kiri Ke Kanan', + 'label-rtl': 'Kanan Ke Kiri', + 'label-books': 'Kitab-Kitab', + 'label-book': 'Kitab', + 'label-import-book': 'Impor Kitab', + 'label-saved': 'Simpan', + 'label-sync': 'sink', + 'label-comments': 'Komentar', + 'label-cross-ref': 'Referensi Silang', + 'label-add-footnote': 'Tambahkan Catatan Kaki', + 'label-add-comment': 'Tambahkan Komentar', + 'label-add-ref': 'Tambahkan Referensi', + 'label-user-menu': 'Buka Menu Pengguna', + 'label-main-menu': 'Buka Menu Utama', + 'label-dont-have-account': 'Tidak Memiliki Akun?', + 'label-already-have-account': 'Sudah Memiliki Akun??', + 'label-new-langauge': 'Bahasa Baru', + 'label-edit-langauge': 'Edit Bahasa', + 'label-script-direction': 'Arah Penulisan', + 'label-drop-file-upload': 'Letakan File Disini Untuk Unggah', + 'projects-page': 'Proyek', + 'label-search': 'Cari', + 'label-project': 'Proyek', + 'label-flavour': 'Flavour', + 'label-project-type': 'Jenis Proyek', + 'label-project-name': 'Nama Proyek', + 'label-language': 'Nama Bahasa', + 'label-language-code': 'Kode Bahasa', + 'label-all': 'Semua Kitab', + 'label-other': 'Lainnya', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'Nonaktifkan-akun', + 'label-created-date': 'Tanggal Dibuat', + 'label-last-viewed': 'Terakhir dilihat', + 'label-description': 'Deskripsi', + 'label-project-id': 'ID Proyek', + 'label-sign-in': 'Masuk', + 'label-sign-up': 'Keluar', + 'profile-page': 'Profil', + 'label-your-profile': 'Profil Anda', + 'label-username': 'Nama Pengguna', + 'label-name': 'Nama', + 'label-firstname': 'Nama Depan', + 'label-lastname': 'Nama Belakang', + 'label-password': 'Password', + 'label-confirm-password': 'Konfirmasi Password', + 'label-email': 'Email', + 'label-organization': 'organisasi', + 'label-region': 'Wilayah', + 'label-app-language': 'Bahasa Aplikasi', + 'label-menu-file': 'File', + 'label-uploading-files': 'Mengunggah File', + 'label-menu-edit': 'Sunting', + 'label-menu-about': 'Tentang', + 'label-bookmarks': 'Bookmarks', + 'label-custom': 'Custom', + 'label-show-hidden-file': 'Tampilkan File Tersembunyi', + 'label-scope': 'Lingkup', + 'label-door43': 'Door 43', + 'label-paratext': 'Paratext', + 'label-license': 'Lisensi', + 'label-preview': 'Pratinjau', + 'label-versification-scheme': 'Skema Versifikasi', + 'label-old-testament': 'Perjanjian Lama', + 'label-new-testament': 'Perjanjian Baru', + 'label-chapter': 'Pasal', + 'label-verse': 'Ayat', + 'label-import-resource': 'Impor Sumber Daya', + 'label-resource': 'Sumber Daya', + 'label-resource-bible': 'Alkitab', + 'label-resource-obs-tn': 'OBS Translation Notes', + 'label-resource-obs-tq': 'OBS Translation Questions', + 'label-resource-obs': 'Open Bible Stories', + 'label-resource-tn': 'Translation Notes', + 'label-resource-twlm': 'Translation Words', + 'label-resource-twl': 'Translation Word Links', + 'label-resource-tq': 'Translation Questions', + 'label-resource-ta': 'Translation Academy', + 'label-resource-name': 'nama sumber daya', + 'label-footnotes': 'Catatan Kaki', + 'label-location': 'lokasi', + 'label-audio-bible': 'Audio', + 'label-resource-obs-twl': 'OBS Translation Word Links', + 'placeholder-resource-name': 'Masukan nama sumber daya', + 'placeholder-license-name': 'Nama Lisensi', + 'placeholder-search': 'Cari…', + 'placeholder-door43-url': 'Masukan url door43', + 'label-burrito-resource-path': 'Jalur File Sumber Daya Scripture Burrito', + 'label-burrito-directory': 'Derektori Scripture burrito', + 'label-export-file-path': 'Ekspor Jalu File', + 'label-import-project': 'Impor Proyek', + 'label-export-project': 'Expor Proyek', + 'label-notification': 'Notififikasi', + 'label-editor-pane': 'Penyunting', + 'label-editor-font-char': 'A', + 'label-upload': 'Unggah', + 'label-no-content-available': 'Konten Tidak Tersedia!', + 'label-enter-location': 'Masukan Lokasi', + 'label-editor-load-module': 'Muat Modul', + 'label-import-door43-resources': 'Impor sumber Daya Bantuan Door43', + 'tooltip-editor-lock': 'kunci/buka navigasi', + 'tooltip-editor-bookmark': 'bookmark', + 'tooltip-editor-notification': 'notifikasi', + 'tooltip-editor-layout': 'Tata Letak', + 'tooltip-editor-font-dec': 'kurangi ukuran huruf', + 'tooltip-editor-font-inc': 'tambah ukuran huruf', + 'tooltip-editor-resource-selector': 'pemilih sumber daya', + 'tooltip-editor-remove-section': 'hapus bagian', + 'tooltip-editor-add-section': 'tambahkan bagian', + 'modal-title-license': 'Lisensi', + 'modal-title-about': 'Tentang', + 'modal-title-remove-resource': 'Hapus Sumber Daya', + 'modal-title-update-burrito': 'Perbarui Burrito', + 'modal-title-update-app': 'Pembaruan Scribe Kitab Suci!', + 'modal-title-replace-resource': 'Ganti Sumber Daya', + 'dynamic-msg-burrito-validate-import-project': 'Validasi Burrito Berhasil', + 'btn-new': 'Baru', + 'btn-close': 'Tutup', + 'btn-ok': 'Oke', + 'btn-source-code': 'Kode Sumber', + 'btn-save': 'Simpan', + 'btn-signout': 'Keluar', + 'btn-signup': 'Daftar', + 'btn-signin': 'Masuk', + 'btn-edit': 'Sunting', + 'btn-export': 'Expor', + 'btn-import': 'Impor', + 'btn-add': 'tambahkan', + 'btn-create-project': 'membuat proyek', + 'btn-import-books': 'Impor Kitab', + 'btn-cancel': 'Batal', + 'btn-restart': 'Mulai Ulang', + 'btn-clear': 'Bersihkan', + 'btn-upload': 'Unggah', + 'btn-advance-settings': 'Pengaturan Lanjutan', + 'btn-create': 'Buat', + 'btn-all': 'SEMUA', + 'btn-ot': 'PL', + 'btn-nt': 'PB', + 'btn-update': 'Perbarui', + 'btn-replace': 'Ganti', + 'btn-remove': 'Hapus', + 'btn-deactivate': 'Nonaktifkan', + 'btn-load-tn': 'memuat terjemahan dicatat', + 'tooltip-import-resource-info-circle': 'Pilih direktori/proyek yang memiliki file Burrito Kitab Suci misalnya metadata.json file.', + 'tooltip-import-open-file-location': 'buka lokasi folder', + 'dynamic-msg-import-resource-snack': 'Pengunggahan sumber daya berhasil! Silakan periksa daftar sumber daya', + 'dynamic-msg-unable-find-buritto-snack': 'Tidak dapat menemukan file burrito (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'File burrito tidak valid (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'Proyek yang sudah ada dengan nama yang sama ditemukan! Periksa "Tab Arsip" atau "Tab Proyek". Tekan "Ganti" untuk menimpa konten yang ada di buku yang tumpang tindih. Tekan "Gabungkan" untuk menggabungkan proyek dengan proyek saat ini. Tekan "Batal" untuk menghindari perubahan.', + 'dynamic-msg-resource-added': 'sumber daya berhasil ditambahkan', + 'dynamic-msg-resource-unable-fetch-url': 'tidak dapat mengambil sumber daya yang dipilih dari url yang diberikan', + 'dynamic-msg-load-ref-bible-snack': 'berhasil memuat file {{refName}}', + 'dynamic-msg-load-ref-bible-snack-fail': 'gagal memuat file {{refName}}', + 'dynamic-msg-load-ref-bible-success': 'Referensi-burrito berhasil dimuat', + 'dynamic-msg-validate-hook-project-name': 'Masukan harus memiliki panjang antara {{minLen}} dan {{maxLen}} karakter', + 'dynamic-msg-update-burrito-version': 'Perbatrui burrito dari {{version1}} ke {{version2}}', + 'dynamic-msg-validate-hook-onlyNum': 'Harap masukkan hanya angka.', + 'dynamic-msg-validate-hook-onlyString': 'Harap masukan hanya huruf.', + 'dynamic-msg-validate-hook-nonSpecChar': 'Karakter Khusus Tidak Diperbolehkan', + 'dynamic-msg-validate-hook-alphaNum': 'Hanya Huruf dan Angka yang diperbolehkan', + 'dynamic-msg-validate-hook-email': 'Email tidak valid!', + 'dynamic-msg-auto-update': 'Pembaruan Scribe Kitab Suci yang baru telah tersedia. Unduh sekarang...', + 'dynamic-msg-auto-update-complete': 'Pembaruan Scribe Kitab Suci yang baru telah tersedia. Unduh sekarang', + 'dynamic-msg-import-burrito-project-success': 'Impor Proyek Berhasil', + 'dynamic-msg-deactivate-account': 'Apakah Anda yakin ingin menonaktifkan akun Anda? Semua data Anda akan dihapus secara permanen. Tindakan ini tidak dapat dibatalkan.', + 'dynamic-msg-project-updated': 'memperbarui Profil.', + 'dynamic-msg-app-lang-changed': 'Bahasa Aplikasi telah diganti.', + 'dynamic-msg-data-read-fail': 'Gagal untuk membaca data dari file.', + 'dynamic-msg-export-success': 'Ekspor Berhasil', + 'dynamic-msg-export-fail': 'Gagal untuk mengekspor', + 'dynamic-msg-invalid-path': 'Jalur Invalid', + 'dynamic-msg-invalid-usfm-file': 'File USFM Invalid.', + 'dynamic-msg-invalid-md-file': 'File MD Invalid', + 'dynamic-msg-fill-all-fields': 'Isi semua bidang', + 'dynamic-msg-burrito-validation-expected': 'Versi burrito yang diharapkan 0.3.0 bukan {{version}}', + 'dynamic-msg-burrito-validation-failed': 'Validasi Burrito Gagal', + 'text-login-page-desc': 'Scribe Kitab Suci adalah cara yang benar-benar baru untuk mengedit kitab suci dan sumber daya terkait dengan fitur-fitur yang kuat namun elegan untuk membantu Anda fokus pada hal-hal yang penting!', + 'text-sign-up-quote': 'Jadilah bagian dari komunitas yang hebat & bergembiralah bersama kami', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'Aktif', + 'label-archived': 'Arsip', + 'label-archived-prj': 'Proyek yang diarsipakn', + 'label-bible-translation': 'Penerjemahan Alkitab', + 'msg-lang-code-req': 'Kode Bahasa Diperlukan', + 'msg-lang-name-req': 'Nama Bahasa Diperlukan', + 'msg-min-three-letter': 'Ketik minimal 3 huruf untuk mencari', + 'label-prj-on-my-computer': 'proyek di komputer saya', + 'label-save-to-cloud': 'Simpan di Cloud', + 'label-last-synced': 'sinkronasi terakhir', + 'label-prj-on-cloud': 'Proyek di Cloud', + 'label-save-to-computer': 'Simpan di komputer', + 'label-view-more': 'Lihat Lebih Banyak', + 'label-create-new-user': 'Buat Pengguna Baru', + 'label-user-name': 'Nama Pengguna', + 'label-privacy': 'privasi', + 'label-terms': 'persyaratan', + 'label-collection': 'koleksi', + 'label-select-folder': 'Pilih folder', + 'label-resources': 'Sumber Daya', + 'label-lang': 'Bahasa', + 'label-type': 'Tipe', + 'label-select-language': 'Pilih Bahasa', + 'label-pre-release': 'Pra-Rilis', + 'label-save-filter': 'Simpan Filter', + 'label-subject': 'Subjek', + 'label-release': 'Rilis', + 'label-version': 'Versi', + 'msg-select-dir-for-SB': 'Pilih direktori/proyek yang memiliki file Scripture Burrito, yaitu file metadata.json', + 'label-online-resources': 'Sumber Day Daring', + 'tooltip-download': 'Unduh', + 'msg-no-resource-for-bible-obs-download': '
Konten tidak tersedia untuk bahasa ini
Anda dapat mengimpor sendiriKitab Suci Burrito melalui sumber dayaKoleksitab.
Pelajari lebih lanjut tentang membuat proyek Kitab Suci Burrito dengan Scribe. Dokumen Rujukan Scribe.
', + 'label-back': 'Kembali', + 'label-speed': 'Kecepatan', + 'label-record': 'Rekam', + 'label-stop': 'Berhenti', + 'label-continue': 'Lanjutkan', + 'label-rewind': 'Mundur', + 'label-play': 'Putar', + 'label-pause': 'Jeda', + 'label-delete': 'Hapus', + 'label-volume': 'Volume', + 'label-takes': 'Pengambilan', + 'label-settings': 'Pengaturan', + 'label-restore': 'Mengembalikan', + 'label-archive': 'Arsip', + 'tooltip-save-cloud-btn': 'Tindakan ini akan menyinkronkan data Anda ke Door43', + 'tooltip-save-computer-btn': 'Tindakan ini akan mengkloning atau memperbarui data lokal Anda dengan data Door43', + 'label-choose-usfm-files': 'Pilih File USFM', + 'label-choose-md-files': 'Pilih File Markdown', + 'label-merge': 'gabungkan', + 'label-abort': 'Batalkan', + 'tooltip-star-project': 'Proyek Berbintang', + 'tooltip-un-star-project': 'proyek Tidak Berbintang', + 'tooltip-merge-all-orginal-btn': 'Terima ORIGINAL untuk semua bagian konflik yang tidak terselesaikan dalam file yang dibuka', + 'tooltip-merge-orginal-btn': 'Menerima perubahan ORIGINAL untuk menyelesaikan konflik', + 'tooltip-merge-all-reset-btn': 'ATUR ULANG file yang dibuka ke kondisi awal', + 'tooltip-merge-all-both-btn': 'Terima KEDUANYA untuk semua bagian konflik yang tidak terselesaikan dalam file yang dibuka', + 'tooltip-merge-both-btn': 'Terima KEDUANYA perubahan untuk menyelesaikan konflik', + 'tooltip-merge-all-new-btn': 'Terima BARU untuk semua bagian konflik yang belum terselesaikan di file Batalkan Penyelesaian Konflik', + 'tooltip-merge-new-btn': 'Terima BARU untuk mneyelesaikan konflik', + 'label-original': 'Original', + 'label-new': 'Baru', + 'label-reset': 'Atur Ulang', + 'label-both': 'Keduanya', + 'label-overwrite': 'Timpa', + 'modal-title-abort-conflict-resolution': 'Batalkan Resolusi Konflik', + 'msg-abort-conflict-resolution': 'Apakah Anda ingin membatalkan proses penyelesaian konflik. Jika Anda membatalkan, Anda akan kehilangan semua kemajuan Anda dan harus memulai dari awal.', + 'label-done': 'Selesai', + 'label-resolved': 'Terselesaiakn', + 'label-resolve-conflict': 'Menyelesaikan Konflik', + 'label-comparison': 'Perbandingan', + 'label-files': 'file', + 'label-re-record': 'Rekam ulang', + 'modal-title-re-record': 'Rekam Ulang Audio', + 'msg-re-record-audio': 'Apa Anada Ingin Merekam Ulang Audio', + 'modal-title-delete-audio': 'Hapus Audio', + 'msg-delete-audio': 'Apakah Anda ingin menghapus pengambilan yang dipilih?', + 'label-accepted': 'Diterima', + 'msg-remove-resource': 'Apakah Anda yakin ingin menghapus sumber daya. Tindakan ini tidak dapat dikembalikan ', + 'label-check-updates': 'Periksa Pembaruan', + 'label-documentation': 'Dokumentasi', + 'label-tech-support': 'Dukungan Teknis', + 'msg-helps-filepath': 'Membantu Sumber daya filepath dengan valid manifest.yaml', + 'tooltip-supported-resources': 'Sumber Daya Pendukung Lainnya Adalah TN, TW, TQ, TA', + 'label-upload-help-resources': 'Unggah Sumber Daya Bantuan', + 'label-filter': 'Filter', + 'label-book-selection': 'Pemilihan Buku', + 'label-chapter-selection': 'Pemilihan Bab', + 'label-select': 'Memilih', + 'label-deselect': 'Batalkan pilihan', + 'label-start': 'Awal', + 'label-end': 'Akhir', + 'label-apply': 'Menerapkan', + 'label-scope-not-selected': 'Untuk memulai, masuk ke Manajemen Lingkup pilih buku dan bab dan klik tombol Terapkan', + 'label-scope-note-audio': 'Pilih buku dan bab dari opsi MANAJEMEN RUANG LINGKUP pada halaman daftar proyek', + 'modal-title-scope-management': 'Manajemen Ruang Lingkup', }; diff --git a/renderer/src/translations/kn.js b/renderer/src/translations/kn.js index 6cb5115c7..f8fd2354f 100644 --- a/renderer/src/translations/kn.js +++ b/renderer/src/translations/kn.js @@ -1,294 +1,294 @@ export const Kn = { - 'app-name': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್', - 'new-project-page': 'ಹೊಸ ಯೋಜನೆ ಪುಟ', - 'edit-project': 'ಯೋಜನೆಯನ್ನು ಸಂಪಾದಿಸಿ', - 'label-abbreviation': 'ಸಂಕ್ಷೇಪಣ', - 'label-target-language': 'ಉದ್ದೇಶಿತ ಭಾಷೆ', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'ಪುಸ್ತಕಗಳು', - 'label-book': 'ಪುಸ್ತಕ', - 'label-import-book': 'ಪುಸ್ತಕವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ', - 'label-saved': 'ಉಳಿಸಲಾಗಿದೆ', - 'label-sync': 'ಸಿಂಕ್', - 'label-comments': 'ಕಾಮೆಂಟ್‌ಗಳು', - 'label-cross-ref': 'ಕ್ರಾಸ್ ರೆಫರೆನ್ಸ್', - 'label-add-footnote': 'ಅಡಿಟಿಪ್ಪಣಿ ಸೇರಿಸಿ', - 'label-add-comment': 'ಕಾಮೆಂಟ್ ಸೇರಿಸಿ', - 'label-add-ref': 'ಉಲ್ಲೇಖವನ್ನು ಸೇರಿಸಿ', - 'label-user-menu': 'ಬಳಕೆದಾರರ ಮೆನುವನ್ನು ತೆರೆಯಿರಿ', - 'label-main-menu': 'ಮುಖ್ಯ ಮೆನು ತೆರೆಯಿರಿ', - 'label-dont-have-account': 'ಖಾತೆ ಇಲ್ಲವೇ?', - 'label-already-have-account': 'ಈಗಾಗಲೇ ಖಾತೆ ಇದೆಯೇ???', - 'label-new-langauge': 'ಹೊಸ ಭಾಷೆ', - 'label-edit-langauge': 'ಭಾಷೆ ಸಂಪಾದಿಸಿ', - 'label-script-direction': 'ಲಿಪಿ ದಿಕ್ಕು', - 'label-drop-file-upload': 'ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಫೈಲ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಡ್ರಾಪ್ ಮಾಡಿ', - 'projects-page': 'ಯೋಜನೆಗಳು', - 'label-search': 'ಹುಡುಕಿ', - 'label-project': 'ಯೋಜನೆ', - 'label-flavour': 'ಫ್ಲೇವರ್', - 'label-project-type': 'ಯೋಜನೆಯ ಪ್ರಕಾರ', - 'label-project-name': 'ಯೋಜನೆಯ ಹೆಸರು', - 'label-language': 'ಭಾಷೆಯ ಹೆಸರು', - 'label-language-code': 'ಭಾಷಾ ಕೋಡ್', - 'label-all': 'ಎಲ್ಲಾ ಪುಸ್ತಕಗಳು', - 'label-other': 'ಇತರೆ', - 'label-Gitea': 'ಗೀಟಿಯಾ', - 'label-deactivate-account': 'ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು', - 'label-created-date': 'ರಚಿಸಿದ ದಿನಾಂಕ', - 'label-last-viewed': 'ಕೊನೆಯದಾಗಿ ವೀಕ್ಷಿಸಲಾಗಿದೆ', - 'label-description': 'ವಿವರಣೆ', - 'label-project-id': 'ಪ್ರಾಜೆಕ್ಟ್ ಐಡಿ', - 'label-sign-in': 'ಸೈನ್ ಇನ್ ಮಾಡಿ', - 'label-sign-up': 'ಸೈನ್ ಅಪ್ ಮಾಡಿ', - 'profile-page': 'ಪ್ರೊಫೈಲ್', - 'label-your-profile': 'ನಿಮ್ಮ ಪ್ರೊಫೈಲ್', - 'label-username': 'ಬಳಕೆದಾರರ ಹೆಸರು', - 'label-name': 'ಹೆಸರು', - 'label-firstname': 'ಮೊದಲ ಹೆಸರು', - 'label-lastname': 'ಕೊನೆಯ ಹೆಸರು', - 'label-password': 'ಪಾಸ್ವರ್ಡ್', - 'label-confirm-password': 'ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಿಸಿ', - 'label-email': 'ಇಮೇಲ್', - 'label-organization': 'ಸಂಸ್ಥೆ', - 'label-region': 'ವಲಯ', - 'label-app-language': 'ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ', - 'label-menu-file': 'ಫೈಲ್', - 'label-uploading-files': 'ಫೈಲ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ', - 'label-menu-edit': 'ಸಂಪಾದಿಸಿ', - 'label-menu-about': 'ಅಬೌಟ್', - 'label-bookmarks': 'ಬುಕ್ಮಾರ್ಕ್ಸ್', - 'label-custom': 'ಕಸ್ಟಮ್', - 'label-show-hidden-file': 'ಮರೆಮಾಡಿದ ಫೈಲ್‌ಗಳನ್ನು ತೋರಿಸಿ', - 'label-scope': 'ವ್ಯಾಪ್ತಿ', - 'label-door43': 'Door 43', - 'label-paratext': 'ಪ್ಯಾರಾಟೆಕ್ಸ್ಟ್ ', - 'label-license': 'ಪರವಾನಗಿ', - 'label-preview': 'ಮುನ್ನೋಟ', - 'label-versification-scheme': 'ವರ್ಸಿಫಿಕೇಶನ್ ಸ್ಕೀಮ್', - 'label-old-testament': 'ಹಳೆಯ ಒಡಂಬಡಿಕೆ', - 'label-new-testament': 'ಹೊಸ ಒಡಂಬಡಿಕೆ', - 'label-chapter': 'ಅಧ್ಯಾಯ', - 'label-verse': 'ವಚನ', - 'label-import-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ', - 'label-resource': 'ಸಂಪನ್ಮೂಲ', - 'label-resource-bible': 'ಬೈಬಲ್', - 'label-resource-obs-tn': 'OBS ಅನುವಾದ ಟಿಪ್ಪಣಿಗಳು', - 'label-resource-obs-tq': 'OBS ಅನುವಾದ ಪ್ರಶ್ನೆಗಳು', - 'label-resource-obs': 'ಓಪನ್ ಬೈಬಲ್ ಸ್ಟೋರೀಸ್', - 'label-resource-tn': 'ಅನುವಾದ ಟಿಪ್ಪಣಿಗಳು', - 'label-resource-twlm': 'ಅನುವಾದ ಪದಗಳು', - 'label-resource-twl': 'ಅನುವಾದ ಪದಗಳ ಪಟ್ಟಿ', - 'label-resource-tq': 'ಅನುವಾದ ಪ್ರಶ್ನೆಗಳು', - 'label-resource-ta': 'ಅನುವಾದ ಅಕಾಡೆಮಿ', - 'label-resource-name': 'ಸಂಪನ್ಮೂಲ ಹೆಸರು', - 'label-footnotes': 'ಅಡಿ ಟಿಪ್ಪಣಿಗಳು', - 'label-location': 'ಸ್ಥಳ', - 'label-audio-bible': 'ಆಡಿಯೋ', - 'label-resource-obs-twl': 'OBS ಅನುವಾದ ಪದಗಳ ಪಟ್ಟಿ', - 'placeholder-resource-name': 'ಸಂಪನ್ಮೂಲ ಹೆಸರನ್ನು ನಮೂದಿಸಿ', - 'placeholder-license-name': 'ಪರವಾನಗಿ ಹೆಸರು', - 'placeholder-search': 'ಹುಡುಕಿ…', - 'placeholder-door43-url': 'Door43 url ನಮೂದಿಸಿ', - 'label-burrito-resource-path': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಸಂಪನ್ಮೂಲ ಫೈಲ್ ಪಾಥ್', - 'label-burrito-directory': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಡೈರೆಕ್ಟರಿ', - 'label-export-file-path': 'ಫೈಲ್-ಪಾತ್-ರಫ್ತು', - 'label-import-project': 'ಯೋಜನೆ-ಆಮದು', - 'label-export-project': 'ಯೋಜನೆ-ರಫ್ತು', - 'label-notification': 'ಅಧಿಸೂಚನೆ', - 'label-editor-pane': 'ಸಂಪಾದಕ', - 'label-editor-font-char': 'A', - 'label-upload': 'ಅಪ್ಲೋಡ್', - 'label-no-content-available': 'ವಿಷಯ-ಲಭ್ಯವಿಲ್ಲ!', - 'label-enter-location': 'ಸ್ಥಳವನ್ನು ನಮೂದಿಸಿ', - 'label-editor-load-module': 'ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ', - 'label-import-door43-resources': 'Door43 ಸಹಾಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಮದು ಮಾಡಿ', - 'tooltip-editor-lock': 'ನ್ಯಾವಿಗೇಷನ್ ಲಾಕ್/ಅನ್‌ಲಾಕ್', - 'tooltip-editor-bookmark': 'ಬುಕ್ಮಾರ್ಕ್', - 'tooltip-editor-notification': 'ಅಧಿಸೂಚನೆ', - 'tooltip-editor-layout': 'ಲೇಔಟ್', - 'tooltip-editor-font-dec': 'ಫಾಂಟ್ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಿ', - 'tooltip-editor-font-inc': 'ಫಾಂಟ್ ಗಾತ್ರವನ್ನು ಹೆಚ್ಚಿಸಿ', - 'tooltip-editor-resource-selector': 'ಸಂಪನ್ಮೂಲಗಳ ಸೆಲೆಕ್ಟರ್', - 'tooltip-editor-remove-section': 'ವಿಭಾಗವನ್ನು ತೆಗೆದುಹಾಕಿ', - 'tooltip-editor-add-section': 'ವಿಭಾಗವನ್ನು ಸೇರಿಸಿ', - 'modal-title-license': 'ಪರವಾನಗಿ', - 'modal-title-about': 'ಅಬೌಟ್', - 'modal-title-remove-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ತೆಗೆದುಹಾಕಿ', - 'modal-title-update-burrito': 'ಬುರ್ರಿಟೋವನ್ನು ನವೀಕರಿಸಿ', - 'modal-title-update-app': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಅಪ್‌ಡೇಟ್!', - 'modal-title-replace-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ಬದಲಾಯಿಸಿ', - 'dynamic-msg-burrito-validate-import-project': 'ಬರಿಟೋ ಯಶಸ್ವಿಯಾಗಿ ಧೃಢೀಕರಿಸಲಾಗಿದೆ', - 'btn-new': 'ಹೊಸ', - 'btn-close': 'ಮುಚ್ಚಿ', - 'btn-ok': 'ಓಕೆ', - 'btn-source-code': 'ಮೂಲ-ಕೋಡ್', - 'btn-save': 'ಉಳಿಸಿ', - 'btn-signout': 'ಸೈನ್ ಔಟ್', - 'btn-signup': 'ಸೈನ್ ಅಪ್', - 'btn-signin': 'ಸೈನ್ ಇನ್', - 'btn-edit': 'ಸಂಪಾದಿಸಿ', - 'btn-export': 'ರಫ್ತು', - 'btn-import': 'ಆಮದು', - 'btn-add': 'ಸೇರಿಸಿ', - 'btn-create-project': 'ಯೋಜನೆ-ರಚಿಸಿ', - 'btn-import-books': 'ಪುಸ್ತಕಗಳನ್ನು ಆಮದು ಮಾಡಿ', - 'btn-cancel': 'ರದ್ದುಗೊಳಿಸಿ', - 'btn-restart': 'ಪುನರಾರಂಭಿಸಿ', - 'btn-clear': 'ತೆರವುಗೊಳಿಸಿ ', - 'btn-upload': 'ಅಪ್ಲೋಡ್', - 'btn-advance-settings': 'ಅಡ್ವಾನ್ಸ್ ಸೆಟ್ಟಿಂಗ್ಸ್ ', - 'btn-create': 'ರಚಿಸಿ', - 'btn-all': 'ಎಲ್ಲಾ', - 'btn-ot': 'ಹಳೆಯ ಒಡಂಬಡಿಕೆ', - 'btn-nt': 'ಹೊಸ ಒಡಂಬಡಿಕೆ', - 'btn-update': 'ಅಪ್ಡೇಟ್', - 'btn-replace': 'ಬದಲಾಯಿಸಿ', - 'btn-remove': 'ತೆಗೆದುಹಾಕಿ', - 'btn-deactivate': 'ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ', - 'btn-load-tn': 'ಲೋಡ್ ಅನುವಾದವನ್ನು ಗಮನಿಸಲಾಗಿದೆ', - 'tooltip-import-resource-info-circle': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬರ್ರಿಟೋ ಫೈಲ್ ಅಂದರೆ metadata.json ಫೈಲ್ ಹೊಂದಿರುವ ಡೈರೆಕ್ಟರಿ/ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ.', - 'tooltip-import-open-file-location': 'ಓಪನ್ ಫೋಲ್ಡರ್ ಸ್ಥಳ', - 'dynamic-msg-import-resource-snack': 'ಸಂಪನ್ಮೂಲ ಅಪ್‌ಲೋಡ್ ಯಶಸ್ವಿಯಾಗಿದೆ! ದಯವಿಟ್ಟು ಸಂಪನ್ಮೂಲ ಪಟ್ಟಿಯನ್ನು ಪರಿಶೀಲಿಸಿ', - 'dynamic-msg-unable-find-buritto-snack': 'ಬುರ್ರಿಟೋ ಫೈಲ್ (metadata.json) ಅನ್ನು ಹುಡುಕಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.', - 'dynamic-msg-unable-invalid-buritto-snack': 'ಅಮಾನ್ಯವಾದ ಬುರ್ರಿಟೋ ಫೈಲ್ (metadata.json)..', - 'dynamic-msg-confirm-replace-resource': 'ಅದೇ ಹೆಸರಿನೊಂದಿಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯೋಜನೆಯು ಕಂಡುಬಂದಿದೆ! "ಆರ್ಕೈವ್ ಮಾಡಿದ ಟ್ಯಾಬ್" ಅಥವಾ "ಪ್ರಾಜೆಕ್ಟ್ಸ್ ಟ್ಯಾಬ್" ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಅತಿಕ್ರಮಿಸುವ ಪುಸ್ತಕಗಳಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯಾವುದೇ ವಿಷಯವನ್ನು ತಿದ್ದಿ ಬರೆಯಲು "ಬದಲಿಸು" ಒತ್ತಿರಿ. ಪ್ರಸ್ತುತ ಯೋಜನೆಯೊಂದಿಗೆ ಯೋಜನೆಯನ್ನು ಸಂಯೋಜಿಸಲು "ವಿಲೀನಗೊಳಿಸಿ" ಒತ್ತಿರಿ. ಬದಲಾವಣೆಗಳನ್ನು ತಪ್ಪಿಸಲು "ರದ್ದುಮಾಡು" ಒತ್ತಿರಿ.', - 'dynamic-msg-resource-added': 'ಸಂಪನ್ಮೂಲವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಗಿದೆ', - 'dynamic-msg-resource-unable-fetch-url': 'ನೀಡಿರುವ url ನಿಂದ ಆಯ್ದ ಸಂಪನ್ಮೂಲವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ', - 'dynamic-msg-load-ref-bible-snack': '{{refName}} ಫೈಲ್‌ಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ', - 'dynamic-msg-load-ref-bible-snack-fail': '{{refName}} ಫೈಲ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ', - 'dynamic-msg-load-ref-bible-success': 'ಉಲ್ಲೇಖ-ಬುರ್ರಿಟೋ ಯಶಸ್ವಿಯಾಗಿ ಲೋಡ್ ಆಗಿದೆ', - 'dynamic-msg-validate-hook-project-name': 'ಇನ್‌ಪುಟ್ {{minLen}} ಮತ್ತು {{maxLen}} ಅಕ್ಷರಗಳ ನಡುವೆ ಇರಬೇಕು', - 'dynamic-msg-update-burrito-version': 'ಬುರ್ರಿಟೋವನ್ನು {{version v1}} ನಿಂದ {{version 2} ಗೆ ನವೀಕರಿಸಿ', - 'dynamic-msg-validate-hook-onlyNum': 'ದಯವಿಟ್ಟು ಸಂಖ್ಯೆಗಳನ್ನು ಮಾತ್ರ ನಮೂದಿಸಿ.', - 'dynamic-msg-validate-hook-onlyString': 'ದಯವಿಟ್ಟು ವರ್ಣಮಾಲೆಗಳನ್ನು ಮಾತ್ರ ನಮೂದಿಸಿ.', - 'dynamic-msg-validate-hook-nonSpecChar': 'ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ', - 'dynamic-msg-validate-hook-alphaNum': 'ಕೇವಲ ವರ್ಣಮಾಲೆಗಳು ಮತ್ತು ಸಂಖ್ಯೆಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ', - 'dynamic-msg-validate-hook-email': 'ಇಮೇಲ್ ಮಾನ್ಯವಲ್ಲ!', - 'dynamic-msg-auto-update': 'ಹೊಸ ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ. ಇದೀಗ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ....', - 'dynamic-msg-auto-update-complete': 'ನವೀಕರಣವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ. ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಅದನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತದೆ. ಈಗ ಪುನರಾರಂಭಿಸಿ?', - 'dynamic-msg-import-burrito-project-success': 'ಯೋಜನೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಆಮದು ಮಾಡಲಾಗಿದೆ', - 'dynamic-msg-deactivate-account': 'ನಿಮ್ಮ ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ನಿಮ್ಮ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ.', - 'dynamic-msg-project-updated': 'ಪ್ರೊಫೈಲ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ.', - 'dynamic-msg-app-lang-changed': 'ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ ಬದಲಾಗಿದೆ.', - 'dynamic-msg-data-read-fail': 'ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಓದಲು ವಿಫಲವಾಗಿದೆ.', - 'dynamic-msg-export-success': 'ಯಶಸ್ವಿಯಾಗಿ ರಫ್ತು ಮಾಡಲಾಗಿದೆ', - 'dynamic-msg-export-fail': 'ರಫ್ತು ಮಾಡಲು ವಿಫಲವಾಗಿದೆ', - 'dynamic-msg-invalid-path': 'ಅಮಾನ್ಯ ಮಾರ್ಗ', - 'dynamic-msg-invalid-usfm-file': 'ಅಮಾನ್ಯವಾದ USFM ಫೈಲ್.', - 'dynamic-msg-invalid-md-file': 'ಅಮಾನ್ಯವಾದ MD ಫೈಲ್.', - 'dynamic-msg-fill-all-fields': 'ಎಲ್ಲಾ ಕ್ಷೇತ್ರಗಳನ್ನು ಭರ್ತಿ ಮಾಡಿ', - 'dynamic-msg-burrito-validation-expected': '{{version} ಬದಲಿಗೆ ನಿರೀಕ್ಷಿತ ಬುರ್ರಿಟೋ ಆವೃತ್ತಿ 0.3.0', - 'dynamic-msg-burrito-validation-failed': 'ಬುರ್ರಿಟೋ ಮೌಲ್ಯೀಕರಣ ವಿಫಲವಾಗಿದೆ', - 'text-login-page-desc': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಎನ್ನುವುದು ನಿಮಗೆ ಪ್ರಮುಖ ವಿಷಯಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಸಹಾಯ ಮಾಡಲು ಶಕ್ತಿಯುತ ಮತ್ತು ಸೊಗಸಾದ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಚರ್ ಮತ್ತು ಸಂಬಂಧಿತ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸಂಪಾದಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಮಾರ್ಗವಾಗಿದೆ!', - 'text-welcome': 'ಸ್ವಾಗತ', - 'text-sign-up-quote': 'ಉತ್ತಮ ಸಮುದಾಯದ ಭಾಗವಾಗಿ ನಮ್ಮೊಂದಿಗೆ ಆನಂದಿಸಿ', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'ಸಕ್ರಿಯ', - 'label-archived': 'ಆರ್ಕೈವ್ ಮಾಡಲಾಗಿದೆ', - 'label-archived-prj': 'ಆರ್ಕೈವ್ ಮಾಡಲಾದ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು', - 'label-bible-translation': 'ಬೈಬಲ್ ಅನುವಾದ', - 'msg-lang-code-req': 'ಭಾಷಾ ಕೋಡ್ ಅಗತ್ಯವಿದೆ', - 'msg-lang-name-req': 'ಭಾಷೆಯ ಹೆಸರು ಅಗತ್ಯವಿದೆ', - 'msg-min-three-letter': 'ಹುಡುಕಲು ಕನಿಷ್ಠ 3 ಅಕ್ಷರಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ', - 'label-prj-on-my-computer': 'ನನ್ನ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಯೋಜನೆ', - 'label-save-to-cloud': 'ಕ್ಲೌಡ್‌ಗೆ ಉಳಿಸಿ', - 'label-last-synced': 'ಕೊನೆಯದಾಗಿ ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ', - 'label-prj-on-cloud': 'ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಯೋಜನೆಗಳು', - 'label-save-to-computer': 'ಕಂಪ್ಯೂಟರ್‌ಗೆ ಉಳಿಸಿ', - 'label-view-more': 'ಇನ್ನಷ್ಟು ವೀಕ್ಷಿಸಿ', - 'label-create-new-user': 'ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ', - 'label-user-name': 'ಬಳಕೆದಾರರ ಹೆಸರು', - 'label-privacy': 'ಖಾಸಗಿತನ', - 'label-terms': 'ನಿಯಮಗಳು', - 'label-collection': 'ಸಂಗ್ರಹ', - 'label-select-folder': 'ಫೋಲ್ಡರ್ ಆಯ್ಕೆಮಾಡಿ', - 'label-resources': 'ಸಂಪನ್ಮೂಲಗಳು', - 'label-lang': 'ಭಾಷೆ', - 'label-type': 'ಮಾದರಿ', - 'label-select-language': 'ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ', - 'label-pre-release': 'ಪ್ರೀ-ರಿಲೀಸ್', - 'label-save-filter': 'ಫಿಲ್ಟರ್ ಉಳಿಸಿ', - 'label-subject': 'ವಿಷಯ', - 'label-release': 'ಬಿಡುಗಡೆ', - 'label-version': 'ವರ್ಷನ್', - 'msg-select-dir-for-SB': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬರ್ರಿಟೋ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿರುವ ಡೈರೆಕ್ಟರಿ/ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ I.e. metadata.json ಫೈಲ್', - 'label-online-resources': 'ಆನ್‌ಲೈನ್ ಸಂಪನ್ಮೂಲಗಳು', - 'tooltip-download': 'ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ', - 'msg-no-resource-for-bible-obs-download': '
ಈ ವಿಷಯವು ಈ ಭಾಷೆಗೆ ಲಭ್ಯವಿಲ್ಲ
ನೀವು ಸ್ವಂತವಾಗಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬಹುದು ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಸಂಪನ್ಮೂಲಗಳ ಮೂಲಕ ಸಂಗ್ರಹ tab.
ಸ್ಕ್ರೈಬ್‌ನೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸುವ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ. ಸ್ಕ್ರೈಬ್ ಡಾಕ್ಸ್ ಅನ್ನು ಉಲ್ಲೇಖಿಸಿ..
', - 'label-back': 'ಹಿಂದೆ', - 'label-speed': 'ಸ್ಪೀಡ್', - 'label-record': 'ರೆಕಾರ್ಡ್', - 'label-stop': 'ಸ್ಟಾಪ್ ', - 'label-continue': 'ಮುಂದುವರಿಸಿ', - 'label-rewind': 'ರಿವೈಂಡ್', - 'label-play': 'ಪ್ಲೇ', - 'label-pause': 'ಪೌಜ್ ', - 'label-delete': 'ಅಳಿಸಿ', - 'label-volume': 'ವಾಲ್ಯೂಮ್', - 'label-takes': 'ಟೇಕ್ಸ್ ', - 'label-settings': 'ಸೆಟ್ಟಿಂಗ್ಸ್', - 'label-restore': 'ಮರುಸ್ಥಾಪಿಸಿ', - 'label-archive': 'ಆರ್ಕೈವ್', - 'tooltip-save-cloud-btn': 'ಈ ಕ್ರಿಯೆಯು ನಿಮ್ಮ ಡೇಟಾವನ್ನು Door43 ಗೆ ಸಿಂಕ್ ಮಾಡುತ್ತದೆ ', - 'tooltip-save-computer-btn': 'ಈ ಕ್ರಿಯೆಯು ನಿಮ್ಮ ಸ್ಥಳೀಯ ಡೇಟಾವನ್ನು Door43 ಡೇಟಾದೊಂದಿಗೆ ಕ್ಲೋನ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ನವೀಕರಿಸುತ್ತದೆ', - 'label-choose-usfm-files': 'USFM ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ', - 'label-choose-md-files': 'ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ', - 'label-merge': 'ವಿಲೀನಗೊಳಿಸಿ', - 'label-abort': 'ಸ್ಥಗಿತಗೊಳಿಸಿ', - 'tooltip-star-project': 'ಸ್ಟಾರ್ ಪ್ರಾಜೆಕ್ಟ್', - 'tooltip-un-star-project': 'ಅನ್‌ಸ್ಟಾರ್ ಪ್ರಾಜೆಕ್ಟ್', - 'tooltip-merge-all-orginal-btn': 'ತೆರೆದ ಫೈಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಪರಿಹರಿಸಲಾಗದ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಮೂಲವನ್ನು ಸ್ವೀಕರಿಸಿ', - 'tooltip-merge-orginal-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಮೂಲ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', - 'tooltip-merge-all-reset-btn': 'ತೆರೆದ ಫೈಲ್ ಅನ್ನು ಆರಂಭಿಕ ಸ್ಥಿತಿಗೆ ಮರುಹೊಂದಿಸಿ', - 'tooltip-merge-all-both-btn': 'ತೆರೆದ ಫೈಲ್‌ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗದ ಎಲ್ಲಾ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಎರಡನ್ನೂ ಸ್ವೀಕರಿಸಿ', - 'tooltip-merge-both-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಎರಡೂ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', - 'tooltip-merge-all-new-btn': 'ಅಬೋರ್ಟ್ ಕಾನ್ಫ್ಲಿಕ್ಟ್ ರೆಸಲ್ಯೂಶನ್ ಫೈಲ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಪರಿಹರಿಸದ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಹೊಸದನ್ನು ಸ್ವೀಕರಿಸಿ', - 'tooltip-merge-new-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಹೊಸ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', - 'label-original': 'ಮೂಲ', - 'label-new': 'ಹೊಸ', - 'label-reset': 'ರೀಸೆಟ್ ಮಾಡಿ', - 'label-both': 'ಎರಡೂ', - 'label-overwrite': 'ಓವರ್ರೈಟ್', - 'modal-title-abort-conflict-resolution': 'ಸಂಘರ್ಷದ ಪರಿಹಾರವನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿ', - 'msg-abort-conflict-resolution': 'ನೀವು ಸಂಘರ್ಷ ಪರಿಹಾರ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲು ಬಯಸುವಿರಾ. ನೀವು ಸ್ಥಗಿತಗೊಳಿಸಿದರೆ, ನಿಮ್ಮ ಎಲ್ಲಾ ಪ್ರಗತಿಯನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ.', - 'label-done': 'ಮುಗಿದಿದೆ', - 'label-resolved': 'ಪರಿಹರಿಸಲಾಗಿದೆ', - 'label-resolve-conflict': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಿ', - 'label-comparison': 'ಹೋಲಿಕೆ', - 'label-files': 'ಫೈಲ್‌ಗಳು', - 'label-re-record': 'ಮರು-ರೆಕಾರ್ಡ್', - 'modal-title-re-record': 'ಆಡಿಯೊವನ್ನು ಮರು-ರೆಕಾರ್ಡ್ ಮಾಡಿ', - 'msg-re-record-audio': 'ನೀವು ಆಡಿಯೊವನ್ನು ಮರು-ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುವಿರಾ', - 'modal-title-delete-audio': 'ಆಡಿಯೋ ಅಳಿಸಿ', - 'msg-delete-audio': 'ನೀವು ಆಯ್ಕೆಮಾಡಿದ ಟೇಕ್ ಅನ್ನು ಅಳಿಸಲು ಬಯಸುವಿರಾ?', - 'label-accepted': 'ಸ್ವೀಕರಿಸಲಾಗಿದೆ', - 'msg-remove-resource': 'ನೀವು ಸಂಪನ್ಮೂಲವನ್ನು ತೆಗೆದುಹಾಕಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ. ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ', - 'label-check-updates': 'ನವೀಕರಣಗಳನ್ನು ಪರಿಶೀಲಿಸಿ', - 'label-documentation': 'ಡಾಕ್ಯುಮೆಂಟೇಶನ್', - 'label-tech-support': 'ತಾಂತ್ರಿಕ ಬೆಂಬಲ', - 'msg-helps-filepath': 'ಮಾನ್ಯ ಮ್ಯಾನಿಫೆಸ್ಟ್.yaml ನೊಂದಿಗೆ ಸಂಪನ್ಮೂಲ ಫೈಲ್‌ಪಾತ್‌ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ', - 'tooltip-supported-resources': 'TN, TW, TQ, TA ಬೆಂಬಲಿತ ಸಂಪನ್ಮೂಲಗಳು', - 'label-upload-help-resources': 'ಸಹಾಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ', - 'label-filter': 'ಫಿಲ್ಟರ್', - 'label-book-selection': 'ಪುಸ್ತಕ ಆಯ್ಕೆ', - 'label-chapter-selection': 'ಅಧ್ಯಾಯ ಆಯ್ಕೆ', - 'label-select': 'ಆಯ್ಕೆ ಮಾಡಿ', - 'label-deselect': 'ಆಯ್ಕೆ ರದ್ದುಮಾಡಿ', - 'label-start': 'ಆರಂಭ', - 'label-end': 'ಅಂತ್ಯ', - 'label-apply': 'ಅನ್ವಯಿಸಿ', - 'label-scope-not-selected': 'ಪ್ರಾರಂಭಿಸಲು, ಸ್ಕೋಪ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್‌ಗೆ ಹೋಗಿ ಪುಸ್ತಕ ಮತ್ತು ಅಧ್ಯಾಯಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅನ್ವಯಿಸು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ', - 'label-scope-note-audio': 'ಪ್ರಾಜೆಕ್ಟ್ ಪಟ್ಟಿಯ ಪುಟದಲ್ಲಿನ SCOPE MANAGEMENT ಆಯ್ಕೆಯಿಂದ ಪುಸ್ತಕ ಮತ್ತು ಅಧ್ಯಾಯವನ್ನು ಆರಿಸಿ', - 'modal-title-scope-management': 'ವ್ಯಾಪ್ತಿ ನಿರ್ವಹಣೆ', + 'app-name': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್', + 'new-project-page': 'ಹೊಸ ಯೋಜನೆ ಪುಟ', + 'edit-project': 'ಯೋಜನೆಯನ್ನು ಸಂಪಾದಿಸಿ', + 'label-abbreviation': 'ಸಂಕ್ಷೇಪಣ', + 'label-target-language': 'ಉದ್ದೇಶಿತ ಭಾಷೆ', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'ಪುಸ್ತಕಗಳು', + 'label-book': 'ಪುಸ್ತಕ', + 'label-import-book': 'ಪುಸ್ತಕವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ', + 'label-saved': 'ಉಳಿಸಲಾಗಿದೆ', + 'label-sync': 'ಸಿಂಕ್', + 'label-comments': 'ಕಾಮೆಂಟ್‌ಗಳು', + 'label-cross-ref': 'ಕ್ರಾಸ್ ರೆಫರೆನ್ಸ್', + 'label-add-footnote': 'ಅಡಿಟಿಪ್ಪಣಿ ಸೇರಿಸಿ', + 'label-add-comment': 'ಕಾಮೆಂಟ್ ಸೇರಿಸಿ', + 'label-add-ref': 'ಉಲ್ಲೇಖವನ್ನು ಸೇರಿಸಿ', + 'label-user-menu': 'ಬಳಕೆದಾರರ ಮೆನುವನ್ನು ತೆರೆಯಿರಿ', + 'label-main-menu': 'ಮುಖ್ಯ ಮೆನು ತೆರೆಯಿರಿ', + 'label-dont-have-account': 'ಖಾತೆ ಇಲ್ಲವೇ?', + 'label-already-have-account': 'ಈಗಾಗಲೇ ಖಾತೆ ಇದೆಯೇ???', + 'label-new-langauge': 'ಹೊಸ ಭಾಷೆ', + 'label-edit-langauge': 'ಭಾಷೆ ಸಂಪಾದಿಸಿ', + 'label-script-direction': 'ಲಿಪಿ ದಿಕ್ಕು', + 'label-drop-file-upload': 'ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಫೈಲ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಡ್ರಾಪ್ ಮಾಡಿ', + 'projects-page': 'ಯೋಜನೆಗಳು', + 'label-search': 'ಹುಡುಕಿ', + 'label-project': 'ಯೋಜನೆ', + 'label-flavour': 'ಫ್ಲೇವರ್', + 'label-project-type': 'ಯೋಜನೆಯ ಪ್ರಕಾರ', + 'label-project-name': 'ಯೋಜನೆಯ ಹೆಸರು', + 'label-language': 'ಭಾಷೆಯ ಹೆಸರು', + 'label-language-code': 'ಭಾಷಾ ಕೋಡ್', + 'label-all': 'ಎಲ್ಲಾ ಪುಸ್ತಕಗಳು', + 'label-other': 'ಇತರೆ', + 'label-Gitea': 'ಗೀಟಿಯಾ', + 'label-deactivate-account': 'ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು', + 'label-created-date': 'ರಚಿಸಿದ ದಿನಾಂಕ', + 'label-last-viewed': 'ಕೊನೆಯದಾಗಿ ವೀಕ್ಷಿಸಲಾಗಿದೆ', + 'label-description': 'ವಿವರಣೆ', + 'label-project-id': 'ಪ್ರಾಜೆಕ್ಟ್ ಐಡಿ', + 'label-sign-in': 'ಸೈನ್ ಇನ್ ಮಾಡಿ', + 'label-sign-up': 'ಸೈನ್ ಅಪ್ ಮಾಡಿ', + 'profile-page': 'ಪ್ರೊಫೈಲ್', + 'label-your-profile': 'ನಿಮ್ಮ ಪ್ರೊಫೈಲ್', + 'label-username': 'ಬಳಕೆದಾರರ ಹೆಸರು', + 'label-name': 'ಹೆಸರು', + 'label-firstname': 'ಮೊದಲ ಹೆಸರು', + 'label-lastname': 'ಕೊನೆಯ ಹೆಸರು', + 'label-password': 'ಪಾಸ್ವರ್ಡ್', + 'label-confirm-password': 'ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಿಸಿ', + 'label-email': 'ಇಮೇಲ್', + 'label-organization': 'ಸಂಸ್ಥೆ', + 'label-region': 'ವಲಯ', + 'label-app-language': 'ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ', + 'label-menu-file': 'ಫೈಲ್', + 'label-uploading-files': 'ಫೈಲ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ', + 'label-menu-edit': 'ಸಂಪಾದಿಸಿ', + 'label-menu-about': 'ಅಬೌಟ್', + 'label-bookmarks': 'ಬುಕ್ಮಾರ್ಕ್ಸ್', + 'label-custom': 'ಕಸ್ಟಮ್', + 'label-show-hidden-file': 'ಮರೆಮಾಡಿದ ಫೈಲ್‌ಗಳನ್ನು ತೋರಿಸಿ', + 'label-scope': 'ವ್ಯಾಪ್ತಿ', + 'label-door43': 'Door 43', + 'label-paratext': 'ಪ್ಯಾರಾಟೆಕ್ಸ್ಟ್ ', + 'label-license': 'ಪರವಾನಗಿ', + 'label-preview': 'ಮುನ್ನೋಟ', + 'label-versification-scheme': 'ವರ್ಸಿಫಿಕೇಶನ್ ಸ್ಕೀಮ್', + 'label-old-testament': 'ಹಳೆಯ ಒಡಂಬಡಿಕೆ', + 'label-new-testament': 'ಹೊಸ ಒಡಂಬಡಿಕೆ', + 'label-chapter': 'ಅಧ್ಯಾಯ', + 'label-verse': 'ವಚನ', + 'label-import-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ', + 'label-resource': 'ಸಂಪನ್ಮೂಲ', + 'label-resource-bible': 'ಬೈಬಲ್', + 'label-resource-obs-tn': 'OBS ಅನುವಾದ ಟಿಪ್ಪಣಿಗಳು', + 'label-resource-obs-tq': 'OBS ಅನುವಾದ ಪ್ರಶ್ನೆಗಳು', + 'label-resource-obs': 'ಓಪನ್ ಬೈಬಲ್ ಸ್ಟೋರೀಸ್', + 'label-resource-tn': 'ಅನುವಾದ ಟಿಪ್ಪಣಿಗಳು', + 'label-resource-twlm': 'ಅನುವಾದ ಪದಗಳು', + 'label-resource-twl': 'ಅನುವಾದ ಪದಗಳ ಪಟ್ಟಿ', + 'label-resource-tq': 'ಅನುವಾದ ಪ್ರಶ್ನೆಗಳು', + 'label-resource-ta': 'ಅನುವಾದ ಅಕಾಡೆಮಿ', + 'label-resource-name': 'ಸಂಪನ್ಮೂಲ ಹೆಸರು', + 'label-footnotes': 'ಅಡಿ ಟಿಪ್ಪಣಿಗಳು', + 'label-location': 'ಸ್ಥಳ', + 'label-audio-bible': 'ಆಡಿಯೋ', + 'label-resource-obs-twl': 'OBS ಅನುವಾದ ಪದಗಳ ಪಟ್ಟಿ', + 'placeholder-resource-name': 'ಸಂಪನ್ಮೂಲ ಹೆಸರನ್ನು ನಮೂದಿಸಿ', + 'placeholder-license-name': 'ಪರವಾನಗಿ ಹೆಸರು', + 'placeholder-search': 'ಹುಡುಕಿ…', + 'placeholder-door43-url': 'Door43 url ನಮೂದಿಸಿ', + 'label-burrito-resource-path': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಸಂಪನ್ಮೂಲ ಫೈಲ್ ಪಾಥ್', + 'label-burrito-directory': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಡೈರೆಕ್ಟರಿ', + 'label-export-file-path': 'ಫೈಲ್-ಪಾತ್-ರಫ್ತು', + 'label-import-project': 'ಯೋಜನೆ-ಆಮದು', + 'label-export-project': 'ಯೋಜನೆ-ರಫ್ತು', + 'label-notification': 'ಅಧಿಸೂಚನೆ', + 'label-editor-pane': 'ಸಂಪಾದಕ', + 'label-editor-font-char': 'A', + 'label-upload': 'ಅಪ್ಲೋಡ್', + 'label-no-content-available': 'ವಿಷಯ-ಲಭ್ಯವಿಲ್ಲ!', + 'label-enter-location': 'ಸ್ಥಳವನ್ನು ನಮೂದಿಸಿ', + 'label-editor-load-module': 'ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ', + 'label-import-door43-resources': 'Door43 ಸಹಾಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಮದು ಮಾಡಿ', + 'tooltip-editor-lock': 'ನ್ಯಾವಿಗೇಷನ್ ಲಾಕ್/ಅನ್‌ಲಾಕ್', + 'tooltip-editor-bookmark': 'ಬುಕ್ಮಾರ್ಕ್', + 'tooltip-editor-notification': 'ಅಧಿಸೂಚನೆ', + 'tooltip-editor-layout': 'ಲೇಔಟ್', + 'tooltip-editor-font-dec': 'ಫಾಂಟ್ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಿ', + 'tooltip-editor-font-inc': 'ಫಾಂಟ್ ಗಾತ್ರವನ್ನು ಹೆಚ್ಚಿಸಿ', + 'tooltip-editor-resource-selector': 'ಸಂಪನ್ಮೂಲಗಳ ಸೆಲೆಕ್ಟರ್', + 'tooltip-editor-remove-section': 'ವಿಭಾಗವನ್ನು ತೆಗೆದುಹಾಕಿ', + 'tooltip-editor-add-section': 'ವಿಭಾಗವನ್ನು ಸೇರಿಸಿ', + 'modal-title-license': 'ಪರವಾನಗಿ', + 'modal-title-about': 'ಅಬೌಟ್', + 'modal-title-remove-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ತೆಗೆದುಹಾಕಿ', + 'modal-title-update-burrito': 'ಬುರ್ರಿಟೋವನ್ನು ನವೀಕರಿಸಿ', + 'modal-title-update-app': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಅಪ್‌ಡೇಟ್!', + 'modal-title-replace-resource': 'ಸಂಪನ್ಮೂಲವನ್ನು ಬದಲಾಯಿಸಿ', + 'dynamic-msg-burrito-validate-import-project': 'ಬರಿಟೋ ಯಶಸ್ವಿಯಾಗಿ ಧೃಢೀಕರಿಸಲಾಗಿದೆ', + 'btn-new': 'ಹೊಸ', + 'btn-close': 'ಮುಚ್ಚಿ', + 'btn-ok': 'ಓಕೆ', + 'btn-source-code': 'ಮೂಲ-ಕೋಡ್', + 'btn-save': 'ಉಳಿಸಿ', + 'btn-signout': 'ಸೈನ್ ಔಟ್', + 'btn-signup': 'ಸೈನ್ ಅಪ್', + 'btn-signin': 'ಸೈನ್ ಇನ್', + 'btn-edit': 'ಸಂಪಾದಿಸಿ', + 'btn-export': 'ರಫ್ತು', + 'btn-import': 'ಆಮದು', + 'btn-add': 'ಸೇರಿಸಿ', + 'btn-create-project': 'ಯೋಜನೆ-ರಚಿಸಿ', + 'btn-import-books': 'ಪುಸ್ತಕಗಳನ್ನು ಆಮದು ಮಾಡಿ', + 'btn-cancel': 'ರದ್ದುಗೊಳಿಸಿ', + 'btn-restart': 'ಪುನರಾರಂಭಿಸಿ', + 'btn-clear': 'ತೆರವುಗೊಳಿಸಿ ', + 'btn-upload': 'ಅಪ್ಲೋಡ್', + 'btn-advance-settings': 'ಅಡ್ವಾನ್ಸ್ ಸೆಟ್ಟಿಂಗ್ಸ್ ', + 'btn-create': 'ರಚಿಸಿ', + 'btn-all': 'ಎಲ್ಲಾ', + 'btn-ot': 'ಹಳೆಯ ಒಡಂಬಡಿಕೆ', + 'btn-nt': 'ಹೊಸ ಒಡಂಬಡಿಕೆ', + 'btn-update': 'ಅಪ್ಡೇಟ್', + 'btn-replace': 'ಬದಲಾಯಿಸಿ', + 'btn-remove': 'ತೆಗೆದುಹಾಕಿ', + 'btn-deactivate': 'ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ', + 'btn-load-tn': 'ಲೋಡ್ ಅನುವಾದವನ್ನು ಗಮನಿಸಲಾಗಿದೆ', + 'tooltip-import-resource-info-circle': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬರ್ರಿಟೋ ಫೈಲ್ ಅಂದರೆ metadata.json ಫೈಲ್ ಹೊಂದಿರುವ ಡೈರೆಕ್ಟರಿ/ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ.', + 'tooltip-import-open-file-location': 'ಓಪನ್ ಫೋಲ್ಡರ್ ಸ್ಥಳ', + 'dynamic-msg-import-resource-snack': 'ಸಂಪನ್ಮೂಲ ಅಪ್‌ಲೋಡ್ ಯಶಸ್ವಿಯಾಗಿದೆ! ದಯವಿಟ್ಟು ಸಂಪನ್ಮೂಲ ಪಟ್ಟಿಯನ್ನು ಪರಿಶೀಲಿಸಿ', + 'dynamic-msg-unable-find-buritto-snack': 'ಬುರ್ರಿಟೋ ಫೈಲ್ (metadata.json) ಅನ್ನು ಹುಡುಕಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.', + 'dynamic-msg-unable-invalid-buritto-snack': 'ಅಮಾನ್ಯವಾದ ಬುರ್ರಿಟೋ ಫೈಲ್ (metadata.json)..', + 'dynamic-msg-confirm-replace-resource': 'ಅದೇ ಹೆಸರಿನೊಂದಿಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯೋಜನೆಯು ಕಂಡುಬಂದಿದೆ! "ಆರ್ಕೈವ್ ಮಾಡಿದ ಟ್ಯಾಬ್" ಅಥವಾ "ಪ್ರಾಜೆಕ್ಟ್ಸ್ ಟ್ಯಾಬ್" ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಅತಿಕ್ರಮಿಸುವ ಪುಸ್ತಕಗಳಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯಾವುದೇ ವಿಷಯವನ್ನು ತಿದ್ದಿ ಬರೆಯಲು "ಬದಲಿಸು" ಒತ್ತಿರಿ. ಪ್ರಸ್ತುತ ಯೋಜನೆಯೊಂದಿಗೆ ಯೋಜನೆಯನ್ನು ಸಂಯೋಜಿಸಲು "ವಿಲೀನಗೊಳಿಸಿ" ಒತ್ತಿರಿ. ಬದಲಾವಣೆಗಳನ್ನು ತಪ್ಪಿಸಲು "ರದ್ದುಮಾಡು" ಒತ್ತಿರಿ.', + 'dynamic-msg-resource-added': 'ಸಂಪನ್ಮೂಲವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಗಿದೆ', + 'dynamic-msg-resource-unable-fetch-url': 'ನೀಡಿರುವ url ನಿಂದ ಆಯ್ದ ಸಂಪನ್ಮೂಲವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ', + 'dynamic-msg-load-ref-bible-snack': '{{refName}} ಫೈಲ್‌ಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ', + 'dynamic-msg-load-ref-bible-snack-fail': '{{refName}} ಫೈಲ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ', + 'dynamic-msg-load-ref-bible-success': 'ಉಲ್ಲೇಖ-ಬುರ್ರಿಟೋ ಯಶಸ್ವಿಯಾಗಿ ಲೋಡ್ ಆಗಿದೆ', + 'dynamic-msg-validate-hook-project-name': 'ಇನ್‌ಪುಟ್ {{minLen}} ಮತ್ತು {{maxLen}} ಅಕ್ಷರಗಳ ನಡುವೆ ಇರಬೇಕು', + 'dynamic-msg-update-burrito-version': 'ಬುರ್ರಿಟೋವನ್ನು {{version v1}} ನಿಂದ {{version 2} ಗೆ ನವೀಕರಿಸಿ', + 'dynamic-msg-validate-hook-onlyNum': 'ದಯವಿಟ್ಟು ಸಂಖ್ಯೆಗಳನ್ನು ಮಾತ್ರ ನಮೂದಿಸಿ.', + 'dynamic-msg-validate-hook-onlyString': 'ದಯವಿಟ್ಟು ವರ್ಣಮಾಲೆಗಳನ್ನು ಮಾತ್ರ ನಮೂದಿಸಿ.', + 'dynamic-msg-validate-hook-nonSpecChar': 'ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ', + 'dynamic-msg-validate-hook-alphaNum': 'ಕೇವಲ ವರ್ಣಮಾಲೆಗಳು ಮತ್ತು ಸಂಖ್ಯೆಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ', + 'dynamic-msg-validate-hook-email': 'ಇಮೇಲ್ ಮಾನ್ಯವಲ್ಲ!', + 'dynamic-msg-auto-update': 'ಹೊಸ ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಅಪ್‌ಡೇಟ್ ಲಭ್ಯವಿದೆ. ಇದೀಗ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ....', + 'dynamic-msg-auto-update-complete': 'ನವೀಕರಣವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ. ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಅದನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತದೆ. ಈಗ ಪುನರಾರಂಭಿಸಿ?', + 'dynamic-msg-import-burrito-project-success': 'ಯೋಜನೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಆಮದು ಮಾಡಲಾಗಿದೆ', + 'dynamic-msg-deactivate-account': 'ನಿಮ್ಮ ಖಾತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ನಿಮ್ಮ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ.', + 'dynamic-msg-project-updated': 'ಪ್ರೊಫೈಲ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ.', + 'dynamic-msg-app-lang-changed': 'ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ ಬದಲಾಗಿದೆ.', + 'dynamic-msg-data-read-fail': 'ಫೈಲ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಓದಲು ವಿಫಲವಾಗಿದೆ.', + 'dynamic-msg-export-success': 'ಯಶಸ್ವಿಯಾಗಿ ರಫ್ತು ಮಾಡಲಾಗಿದೆ', + 'dynamic-msg-export-fail': 'ರಫ್ತು ಮಾಡಲು ವಿಫಲವಾಗಿದೆ', + 'dynamic-msg-invalid-path': 'ಅಮಾನ್ಯ ಮಾರ್ಗ', + 'dynamic-msg-invalid-usfm-file': 'ಅಮಾನ್ಯವಾದ USFM ಫೈಲ್.', + 'dynamic-msg-invalid-md-file': 'ಅಮಾನ್ಯವಾದ MD ಫೈಲ್.', + 'dynamic-msg-fill-all-fields': 'ಎಲ್ಲಾ ಕ್ಷೇತ್ರಗಳನ್ನು ಭರ್ತಿ ಮಾಡಿ', + 'dynamic-msg-burrito-validation-expected': '{{version} ಬದಲಿಗೆ ನಿರೀಕ್ಷಿತ ಬುರ್ರಿಟೋ ಆವೃತ್ತಿ 0.3.0', + 'dynamic-msg-burrito-validation-failed': 'ಬುರ್ರಿಟೋ ಮೌಲ್ಯೀಕರಣ ವಿಫಲವಾಗಿದೆ', + 'text-login-page-desc': 'ಸ್ಕ್ರೈಬ್ ಸ್ಕ್ರಿಪ್ಚರ್ ಎನ್ನುವುದು ನಿಮಗೆ ಪ್ರಮುಖ ವಿಷಯಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಸಹಾಯ ಮಾಡಲು ಶಕ್ತಿಯುತ ಮತ್ತು ಸೊಗಸಾದ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಚರ್ ಮತ್ತು ಸಂಬಂಧಿತ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸಂಪಾದಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸ ಮಾರ್ಗವಾಗಿದೆ!', + 'text-welcome': 'ಸ್ವಾಗತ', + 'text-sign-up-quote': 'ಉತ್ತಮ ಸಮುದಾಯದ ಭಾಗವಾಗಿ ನಮ್ಮೊಂದಿಗೆ ಆನಂದಿಸಿ', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'ಸಕ್ರಿಯ', + 'label-archived': 'ಆರ್ಕೈವ್ ಮಾಡಲಾಗಿದೆ', + 'label-archived-prj': 'ಆರ್ಕೈವ್ ಮಾಡಲಾದ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು', + 'label-bible-translation': 'ಬೈಬಲ್ ಅನುವಾದ', + 'msg-lang-code-req': 'ಭಾಷಾ ಕೋಡ್ ಅಗತ್ಯವಿದೆ', + 'msg-lang-name-req': 'ಭಾಷೆಯ ಹೆಸರು ಅಗತ್ಯವಿದೆ', + 'msg-min-three-letter': 'ಹುಡುಕಲು ಕನಿಷ್ಠ 3 ಅಕ್ಷರಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ', + 'label-prj-on-my-computer': 'ನನ್ನ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಯೋಜನೆ', + 'label-save-to-cloud': 'ಕ್ಲೌಡ್‌ಗೆ ಉಳಿಸಿ', + 'label-last-synced': 'ಕೊನೆಯದಾಗಿ ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ', + 'label-prj-on-cloud': 'ಕ್ಲೌಡ್‌ನಲ್ಲಿ ಯೋಜನೆಗಳು', + 'label-save-to-computer': 'ಕಂಪ್ಯೂಟರ್‌ಗೆ ಉಳಿಸಿ', + 'label-view-more': 'ಇನ್ನಷ್ಟು ವೀಕ್ಷಿಸಿ', + 'label-create-new-user': 'ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ', + 'label-user-name': 'ಬಳಕೆದಾರರ ಹೆಸರು', + 'label-privacy': 'ಖಾಸಗಿತನ', + 'label-terms': 'ನಿಯಮಗಳು', + 'label-collection': 'ಸಂಗ್ರಹ', + 'label-select-folder': 'ಫೋಲ್ಡರ್ ಆಯ್ಕೆಮಾಡಿ', + 'label-resources': 'ಸಂಪನ್ಮೂಲಗಳು', + 'label-lang': 'ಭಾಷೆ', + 'label-type': 'ಮಾದರಿ', + 'label-select-language': 'ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ', + 'label-pre-release': 'ಪ್ರೀ-ರಿಲೀಸ್', + 'label-save-filter': 'ಫಿಲ್ಟರ್ ಉಳಿಸಿ', + 'label-subject': 'ವಿಷಯ', + 'label-release': 'ಬಿಡುಗಡೆ', + 'label-version': 'ವರ್ಷನ್', + 'msg-select-dir-for-SB': 'ಸ್ಕ್ರಿಪ್ಚರ್ ಬರ್ರಿಟೋ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿರುವ ಡೈರೆಕ್ಟರಿ/ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ I.e. metadata.json ಫೈಲ್', + 'label-online-resources': 'ಆನ್‌ಲೈನ್ ಸಂಪನ್ಮೂಲಗಳು', + 'tooltip-download': 'ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ', + 'msg-no-resource-for-bible-obs-download': '
ಈ ವಿಷಯವು ಈ ಭಾಷೆಗೆ ಲಭ್ಯವಿಲ್ಲ
ನೀವು ಸ್ವಂತವಾಗಿ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬಹುದು ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಸಂಪನ್ಮೂಲಗಳ ಮೂಲಕ ಸಂಗ್ರಹ tab.
ಸ್ಕ್ರೈಬ್‌ನೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಚರ್ ಬುರ್ರಿಟೋ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸುವ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ. ಸ್ಕ್ರೈಬ್ ಡಾಕ್ಸ್ ಅನ್ನು ಉಲ್ಲೇಖಿಸಿ..
', + 'label-back': 'ಹಿಂದೆ', + 'label-speed': 'ಸ್ಪೀಡ್', + 'label-record': 'ರೆಕಾರ್ಡ್', + 'label-stop': 'ಸ್ಟಾಪ್ ', + 'label-continue': 'ಮುಂದುವರಿಸಿ', + 'label-rewind': 'ರಿವೈಂಡ್', + 'label-play': 'ಪ್ಲೇ', + 'label-pause': 'ಪೌಜ್ ', + 'label-delete': 'ಅಳಿಸಿ', + 'label-volume': 'ವಾಲ್ಯೂಮ್', + 'label-takes': 'ಟೇಕ್ಸ್ ', + 'label-settings': 'ಸೆಟ್ಟಿಂಗ್ಸ್', + 'label-restore': 'ಮರುಸ್ಥಾಪಿಸಿ', + 'label-archive': 'ಆರ್ಕೈವ್', + 'tooltip-save-cloud-btn': 'ಈ ಕ್ರಿಯೆಯು ನಿಮ್ಮ ಡೇಟಾವನ್ನು Door43 ಗೆ ಸಿಂಕ್ ಮಾಡುತ್ತದೆ ', + 'tooltip-save-computer-btn': 'ಈ ಕ್ರಿಯೆಯು ನಿಮ್ಮ ಸ್ಥಳೀಯ ಡೇಟಾವನ್ನು Door43 ಡೇಟಾದೊಂದಿಗೆ ಕ್ಲೋನ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ನವೀಕರಿಸುತ್ತದೆ', + 'label-choose-usfm-files': 'USFM ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ', + 'label-choose-md-files': 'ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ', + 'label-merge': 'ವಿಲೀನಗೊಳಿಸಿ', + 'label-abort': 'ಸ್ಥಗಿತಗೊಳಿಸಿ', + 'tooltip-star-project': 'ಸ್ಟಾರ್ ಪ್ರಾಜೆಕ್ಟ್', + 'tooltip-un-star-project': 'ಅನ್‌ಸ್ಟಾರ್ ಪ್ರಾಜೆಕ್ಟ್', + 'tooltip-merge-all-orginal-btn': 'ತೆರೆದ ಫೈಲ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಪರಿಹರಿಸಲಾಗದ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಮೂಲವನ್ನು ಸ್ವೀಕರಿಸಿ', + 'tooltip-merge-orginal-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಮೂಲ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', + 'tooltip-merge-all-reset-btn': 'ತೆರೆದ ಫೈಲ್ ಅನ್ನು ಆರಂಭಿಕ ಸ್ಥಿತಿಗೆ ಮರುಹೊಂದಿಸಿ', + 'tooltip-merge-all-both-btn': 'ತೆರೆದ ಫೈಲ್‌ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗದ ಎಲ್ಲಾ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಎರಡನ್ನೂ ಸ್ವೀಕರಿಸಿ', + 'tooltip-merge-both-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಎರಡೂ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', + 'tooltip-merge-all-new-btn': 'ಅಬೋರ್ಟ್ ಕಾನ್ಫ್ಲಿಕ್ಟ್ ರೆಸಲ್ಯೂಶನ್ ಫೈಲ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಪರಿಹರಿಸದ ಸಂಘರ್ಷ ವಿಭಾಗಗಳಿಗೆ ಹೊಸದನ್ನು ಸ್ವೀಕರಿಸಿ', + 'tooltip-merge-new-btn': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಲು ಹೊಸ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ', + 'label-original': 'ಮೂಲ', + 'label-new': 'ಹೊಸ', + 'label-reset': 'ರೀಸೆಟ್ ಮಾಡಿ', + 'label-both': 'ಎರಡೂ', + 'label-overwrite': 'ಓವರ್ರೈಟ್', + 'modal-title-abort-conflict-resolution': 'ಸಂಘರ್ಷದ ಪರಿಹಾರವನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿ', + 'msg-abort-conflict-resolution': 'ನೀವು ಸಂಘರ್ಷ ಪರಿಹಾರ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲು ಬಯಸುವಿರಾ. ನೀವು ಸ್ಥಗಿತಗೊಳಿಸಿದರೆ, ನಿಮ್ಮ ಎಲ್ಲಾ ಪ್ರಗತಿಯನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ.', + 'label-done': 'ಮುಗಿದಿದೆ', + 'label-resolved': 'ಪರಿಹರಿಸಲಾಗಿದೆ', + 'label-resolve-conflict': 'ಸಂಘರ್ಷವನ್ನು ಪರಿಹರಿಸಿ', + 'label-comparison': 'ಹೋಲಿಕೆ', + 'label-files': 'ಫೈಲ್‌ಗಳು', + 'label-re-record': 'ಮರು-ರೆಕಾರ್ಡ್', + 'modal-title-re-record': 'ಆಡಿಯೊವನ್ನು ಮರು-ರೆಕಾರ್ಡ್ ಮಾಡಿ', + 'msg-re-record-audio': 'ನೀವು ಆಡಿಯೊವನ್ನು ಮರು-ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುವಿರಾ', + 'modal-title-delete-audio': 'ಆಡಿಯೋ ಅಳಿಸಿ', + 'msg-delete-audio': 'ನೀವು ಆಯ್ಕೆಮಾಡಿದ ಟೇಕ್ ಅನ್ನು ಅಳಿಸಲು ಬಯಸುವಿರಾ?', + 'label-accepted': 'ಸ್ವೀಕರಿಸಲಾಗಿದೆ', + 'msg-remove-resource': 'ನೀವು ಸಂಪನ್ಮೂಲವನ್ನು ತೆಗೆದುಹಾಕಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ. ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ', + 'label-check-updates': 'ನವೀಕರಣಗಳನ್ನು ಪರಿಶೀಲಿಸಿ', + 'label-documentation': 'ಡಾಕ್ಯುಮೆಂಟೇಶನ್', + 'label-tech-support': 'ತಾಂತ್ರಿಕ ಬೆಂಬಲ', + 'msg-helps-filepath': 'ಮಾನ್ಯ ಮ್ಯಾನಿಫೆಸ್ಟ್.yaml ನೊಂದಿಗೆ ಸಂಪನ್ಮೂಲ ಫೈಲ್‌ಪಾತ್‌ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ', + 'tooltip-supported-resources': 'TN, TW, TQ, TA ಬೆಂಬಲಿತ ಸಂಪನ್ಮೂಲಗಳು', + 'label-upload-help-resources': 'ಸಹಾಯ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ', + 'label-filter': 'ಫಿಲ್ಟರ್', + 'label-book-selection': 'ಪುಸ್ತಕ ಆಯ್ಕೆ', + 'label-chapter-selection': 'ಅಧ್ಯಾಯ ಆಯ್ಕೆ', + 'label-select': 'ಆಯ್ಕೆ ಮಾಡಿ', + 'label-deselect': 'ಆಯ್ಕೆ ರದ್ದುಮಾಡಿ', + 'label-start': 'ಆರಂಭ', + 'label-end': 'ಅಂತ್ಯ', + 'label-apply': 'ಅನ್ವಯಿಸಿ', + 'label-scope-not-selected': 'ಪ್ರಾರಂಭಿಸಲು, ಸ್ಕೋಪ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್‌ಗೆ ಹೋಗಿ ಪುಸ್ತಕ ಮತ್ತು ಅಧ್ಯಾಯಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅನ್ವಯಿಸು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ', + 'label-scope-note-audio': 'ಪ್ರಾಜೆಕ್ಟ್ ಪಟ್ಟಿಯ ಪುಟದಲ್ಲಿನ SCOPE MANAGEMENT ಆಯ್ಕೆಯಿಂದ ಪುಸ್ತಕ ಮತ್ತು ಅಧ್ಯಾಯವನ್ನು ಆರಿಸಿ', + 'modal-title-scope-management': 'ವ್ಯಾಪ್ತಿ ನಿರ್ವಹಣೆ', }; diff --git a/renderer/src/translations/ne.js b/renderer/src/translations/ne.js index c7253b333..fe15211ff 100644 --- a/renderer/src/translations/ne.js +++ b/renderer/src/translations/ne.js @@ -1,294 +1,294 @@ export const Ne = { - 'app-name': 'Scribe Scripture', - 'new-project-page': 'नया प्रोजेक्‍ट', - 'edit-project': 'प्रोजेक्ट संपादित गर्नुहोस', - 'label-abbreviation': 'संक्षिप्त नामहरू', - 'label-target-language': 'लक्ष्य भाषा', - 'label-ltr': 'LTR', - 'label-rtl': 'RTL', - 'label-books': 'पुस्तकहरु', - 'label-book': 'पुस्तक', - 'label-import-book': 'पुस्तक आयात गर्नुहोस्', - 'label-saved': 'सुरक्षित गरियो', - 'label-sync': 'सिंक', - 'label-comments': 'टिप्‍पणि', - 'label-cross-ref': 'क्राँस सन्दर्भ', - 'label-add-footnote': 'फुटनोट थप्नुहोस्', - 'label-add-comment': 'फुटनोट थप्नुहोस्', - 'label-add-ref': 'सन्दर्भ थप्नुहोस्', - 'label-user-menu': 'उपयोगकर्ता व्‍यंजन सुची खोल्नुहोस्', - 'label-main-menu': 'मुख्य व्‍यंजन सुची खोल्नुहोस्', - 'label-dont-have-account': 'खाता छैन', - 'label-already-have-account': 'पहिलेबाट एउटा खाता छ', - 'label-new-langauge': 'नया भाषा', - 'label-edit-langauge': 'भाषा संपादित गर्नुहोस्', - 'label-script-direction': 'लिपि निर्देशन', - 'label-drop-file-upload': 'अपलोड गर्नको लागि फाइल यहाँ हाल्नुहोस्', - 'projects-page': 'पृष्‍ठ प्रोजेक्ट', - 'label-search': 'खोज्नुहोस्', - 'label-project': 'रोजेक्‍ट', - 'label-flavor': 'स्वाद', - 'label-project-type': 'प्रोजेक्टको प्रकार', - 'label-project-name': 'प्रोजेक्टको नाम', - 'label-language': 'भाषा', - 'label-language-code': 'भाषा कोड', - 'label-all': 'सबै पुस्तक', - 'label-other': 'अन्य', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'खाता निष्क्रिय गर्नुहोस्', - 'label-created-date': 'सिर्जना गरेको मिति', - 'label-last-viewed': 'अंतिम पल्ट हेरिएको', - 'label-description': 'विवरण', - 'label-project-id': 'प्रोजेक्‍ट ID', - 'label-sign-in': 'साइन इन गर्नुहोस्', - 'label-sign-up': 'साइन अप गर्नहोस्', - 'profile-page': 'प्रोफ़ाइल', - 'label-your-profile': 'तपाइको प्रोफाइल', - 'label-username': 'उपयोगकर्ताको नाम', - 'label-name': 'नाम', - 'label-firstname': 'पहिलो नाम', - 'label-lastname': 'थर', - 'label-password': 'पासवर्ड', - 'label-confirm-password': 'पासवर्ड पुष्टि गर्नुहोस्', - 'label-email': 'ईमेल', - 'label-organization': 'संगठन', - 'label-region': 'क्षेत्र', - 'label-app-language': 'App को भासा', - 'label-menu-file': 'फाइल', - 'label-uploading-files': 'फाइल अपलोड गर्नुहोस्', - 'label-menu-edit': 'संपादन गर्नुहोस्', - 'label-menu-about': 'व्‍यंजन सुची बारेमा', - 'label-bookmarks': 'पृष्ठसङ्केत', - 'label-custom': 'अनुकूलन', - 'label-show-hidden-file': 'लुकेको फाइल हेर्नुहोस्', - 'label-scope': 'दायरा', - 'label-door43': 'Door 43', - 'label-paratext': 'पैराटेक्स्ट', - 'label-license': 'लाइसेंस', - 'label-preview': 'पूर्वावलोकन', - 'label-versification-scheme': 'वचनबद्ध योजना', - 'label-old-testament': 'पुरानो करार', - 'label-new-testament': 'नया करार ', - 'label-chapter': 'अध्याय', - 'label-verse': 'पद', - 'label-import-resource': 'स्रोत आयात गर्नुहोस्', - 'label-resource': 'स्रोत', - 'label-resource-bible': 'बाइबल', - 'label-resource-obs-tn': 'OBS ट्रांसलेशन नोट्स', - 'label-resource-obs-tq': 'OBS ट्रांसलेशन प्रश्‍नहरु', - 'label-resource-obs': 'ओपन बाइबल स्टोरी', - 'label-resource-tn': 'ट्रांसलेशन नोट्स', - 'label-resource-twlm': 'ट्रांसलेशन शब्द', - 'label-resource-twl': 'ट्रांसलेशन शब्दहरुको सूची', - 'label-resource-tq': 'ट्रांसलेशन प्रश्‍नहरु', - 'label-resource-ta': 'ट्रांसलेशन अकादमी', - 'label-resource-name': 'स्रोतको नाम', - 'label-footnotes': 'फुट नोट्स', - 'label-location': 'स्थान', - 'label-audio-bible': 'अडियो', - 'label-resource-obs-twl': 'OBS अनुवाद शब्द सूची', - 'placeholder-resource-name': 'स्रोतको नाम दर्ता गर्नुहोस', - 'placeholder-license-name': 'लाइसेन्सको नाम', - 'placeholder-search': 'खोज्नुहोस', - 'placeholder-door43-url': 'Door 43 को URL दर्ता गर्नुहोस्', - 'label-burrito-resource-path': 'स्क्रिप्चर बरिटो स्रोत फाइलपथ', - 'label-burrito-directory': 'स्क्रिप्चर बरिटो निर्देशिका', - 'label-export-file-path': 'फाइल पाथ निर्यात गर्नुहोस्', - 'label-import-project': 'प्रोजेक्ट आयात गर्नुहोस्', - 'label-export-project': 'प्रोजेक्ट निर्यात गर्नुहोस्', - 'label-notification': 'सूचना', - 'label-editor-pane': 'संपादक', - 'label-editor-font-char': 'अ', - 'label-upload': 'अपलोड गर्नुहोस्', - 'label-no-content-available': 'कुनै सामाग्री उपलब्ध छैन', - 'label-enter-location': 'स्थान दर्ता गर्नुहोस्', - 'label-editor-load-module': 'मोड्‍युल लोड गर्नुहोस्', - 'label-import-door43-resources': 'आयात DOOR43 संसाधनहरूको सहायता गर्छ', - 'tooltip-editor-lock': 'नेविगेशन लॉक/अनलॉक', - 'tooltip-editor-bookmark': 'पृष्ठसङ्केत', - 'tooltip-editor-notification': 'सूचना', - 'tooltip-editor-layout': 'नक्सा', - 'tooltip-editor-font-dec': 'फांन्ट आकार घटाउनुहोस्', - 'tooltip-editor-font-inc': 'फांन्ट आकार बढाउनुहोस्', - 'tooltip-editor-resource-selector': 'स्रोत चयनकर्ता', - 'tooltip-editor-remove-section': 'खण्ड हटाउनुहोस्', - 'tooltip-editor-add-section': 'खण्ड जोड्नुहोस्', - 'modal-title-license': 'लाइसेन्स', - 'modal-title-about': 'कस्को बारेमा', - 'modal-title-remove-resource': 'स्रोत हटाउनुहोस्', - 'modal-title-update-burrito': 'बरिटो लाइ अपडेट गर्नुहोस्', - 'modal-title-update-app': 'ऑटोग्राफ अपडेट!', - 'modal-title-replace-resource': 'स्रोत बदल्नुहोस्', - 'dynamic-msg-burrito-validate-import-project': 'बरिटो लाइ सफलतापूर्वक प्रमाणित गरियो', - 'btn-new': 'नया', - 'btn-close': 'बंद गर्नुहोस्', - 'btn-ok': 'ठीक', - 'btn-source-code': 'स्रोत कोड', - 'btn-save': 'संरछण', - 'btn-signout': 'साइन आउट', - 'btn-signup': 'साइन अप', - 'btn-signin': 'साइन इन', - 'btn-edit': 'संपादन गर्नुहोस्', - 'btn-export': 'निर्यात गर्नुहोस्', - 'btn-import': 'आयात गर्नुहोस्', - 'btn-add': 'जोड्नुहोस', - 'btn-create-project': 'प्रोजेक्ट बनाउनुहोस्', - 'btn-import-books': 'पुस्तहरु आयात गर्नुहोस्', - 'btn-cancel': 'रद्ध गर्नुहोस्', - 'btn-restart': 'फेरि सुरु गर्नुहोस्', - 'btn-clear': 'खाली गर्नुहोस्', - 'btn-upload': 'अपलोड गर्नुहोस्', - 'btn-advance-settings': 'अग्रिम सेटिङ', - 'btn-create': 'बनाउनुहोस्', - 'btn-all': 'सबै', - 'btn-ot': 'पुरानो करार', - 'btn-nt': 'नया करार', - 'btn-update': 'अपडेट गर्नुहोस्', - 'btn-replace': 'बदल्नुहोस्', - 'btn-remove': 'हटाउनुहोस्', - 'btn-deactivate': 'निष्क्रिय गर्नुहोस्', - 'btn-load-tn': 'लोड अनुवाद नोट गरिएको छ', - 'tooltip-import-resource-info-circle': 'एक निर्देशिका/प्रोजेक्टलाई छन्नुहोस् जसमा एक स्क्रिप्चर बरिटो फ़ाइल छ यानी metadata.json फाइल ।', - 'tooltip-import-open-file-location': 'फ़ोल्डर को स्थान खोल्नुहोस्', - 'dynamic-msg-import-resource-snack': 'स्रोत अपलोड सफल भयो! कृपया स्रोत सुचि हेर्नुहोस्', - 'dynamic-msg-unable-find-buritto-snack': 'बरिटो फाइल खोज्नमा असफल', - 'dynamic-msg-unable-invalid-buritto-snack': 'अमान्य बरिटो फाइल (metadata.json)', - 'dynamic-msg-confirm-replace-resource': 'उही नामको अवस्थित परियोजना फेला पर्यो! "संग्रहित ट्याब" वा "परियोजना ट्याब" जाँच गर्नुहोस्। ओभरल्यापिङ पुस्तकहरूमा कुनै पनि अवस्थित सामग्री अधिलेखन गर्न "बदल्नुहोस्" थिच्नुहोस्। हालको परियोजनासँग परियोजना संयोजन गर्न "मर्ज" थिच्नुहोस्। परिवर्तनहरूबाट बच्न "रद्द गर्नुहोस्" थिच्नुहोस्।', - 'dynamic-msg-resource-added': 'स्रोत लाई सफलतापूर्वक जोडिएको छ', - 'dynamic-msg-resource-unable-fetch-url': 'प्रस्तुत गरिएको यू आर एल(URL) बाट दिएको स्रोत लैजानमा असमर्थ भएको छ', - 'dynamic-msg-load-ref-bible-snack': 'सफलतापूर्वक {{refName}} फ़ाइल लोड गरिएको छ', - 'dynamic-msg-load-ref-bible-snack-fail': 'फ़ाइल लोड गर्न मा असफल भएको छ', - 'dynamic-msg-load-ref-bible-success': 'संदर्भ-बरिटो सफलतापूर्वक लोड गरिएको छ', - 'dynamic-msg-validate-hook-project-name': 'इनपुट {{minLen}} र {{maxLen}} वर्णहरु को बीच मा हुनुपर्छ', - 'dynamic-msg-update-burrito-version': 'बरिटो को {{version1}} बाट {{version2}} मा अपडेट गर्नुहोस्', - 'dynamic-msg-validate-hook-onlyNum': 'कृपया केवल संख्या दर्ता गर्नुहोस् ।', - 'dynamic-msg-validate-hook-onlyString': 'कृपया केवल अक्षर दर्ता गर्नुहोस् ।', - 'dynamic-msg-validate-hook-nonSpecChar': 'विशेष वर्णको अनुमति छैन ।', - 'dynamic-msg-validate-hook-alphaNum': 'केवल अक्षर र संख्या को अनुमति छ।', - 'dynamic-msg-validate-hook-email': 'ईमेल प्रमाणित छैन। ', - 'dynamic-msg-auto-update': 'ऑटोग्राफा को एउटा नया अपडेट उपलब्ध छ। अहिले डाउनलोड हुदैछ।', - 'dynamic-msg-auto-update-complete': 'अपडेट डाउनलोड गरिएको छ। यसलाई पुनरारंभ गरेपछि इन्सटाँल हुनेछ। अहिले पुनः प्रारंभ गर्ने ?', - 'dynamic-msg-import-burrito-project-success': 'प्रोजेक्ट सफलतापूर्वक आयात गरिएको छ।', - 'dynamic-msg-deactivate-account': 'के तपाइ साच्चिकै आफ्नो खाता निष्क्रिय गर्न चाहानु हुन्छ? तपाइको सबै डाटा स्थयी रुपमा हटाइने छ। यस क्रिया लाइ पूर्ववत गर्न सकिदैन।', - 'dynamic-msg-project-updated': 'प्रोफ़ाइल लाई अपडेट गरिएको छ।', - 'dynamic-msg-app-lang-changed': 'ऐप को भाषा बदलीएको छ।', - 'dynamic-msg-data-read-fail': 'फ़ाइल बाट डेटा पढ़न मा विफल भएको छ।', - 'dynamic-msg-export-success': 'सफलतापूर्वक निर्यात गरिएको छ।', - 'dynamic-msg-export-fail': 'निर्यात गर्न मा विफल।', - 'dynamic-msg-invalid-path': 'अवैध पथ।', - 'dynamic-msg-invalid-usfm-file': 'अवैध USFM फ़ाइल।', - 'dynamic-msg-invalid-md-file': 'अवैध MD फ़ाइल।', - 'dynamic-msg-fill-all-fields': 'सबै फ़ील्ड भर्नुहोस।', - 'dynamic-msg-burrito-validation-expected': '{{version}} को स्थान मा अपेक्षित बरिटो संस्करण 0.3.0।', - 'dynamic-msg-burrito-validation-failed': 'बरिटो मान्यकरण विफल।', - 'text-login-page-desc': 'ऑटोग्राफा 2.0 एउटा नया तरीका बाट तपाइलाइ पवित्रशास्त्र र सम्बन्धित स्रोत संपादित गर्न र सशक्त सहज विशेषहरु को साथ अरु पनि महत्वपूर्ण कुरा माथि ध्यान केंद्रित गर्न मा तपाइलाइ सहायता गर्नेछ।', - 'text-welcome': 'स्वागत छ।', - 'text-sign-up-quote': 'एउटा महान समुदायको हिस्सा बनी हामी संग आनन्द लिनुहोस।', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'सक्रिय', - 'label-archived': 'अभिलेख राखिएको', - 'label-archived-prj': 'संग्रहित परियोजनाहरू', - 'label-bible-translation': 'बाइबल अनुवाद', - 'msg-lang-code-req': 'भाषा कोड आवश्यक छ', - 'msg-lang-name-req': 'भाषाको नाम आवश्यक छ', - 'msg-min-three-letter': 'खोजको लागि न्यूनतम 3 अक्षरहरू टाइप गर्नुहोस्', - 'label-prj-on-my-computer': 'मेरो कम्प्युटरमा परियोजना', - 'label-save-to-cloud': 'क्लाउडमा बचत गर्नुहोस्', - 'label-last-synced': 'पछिल्लो पटक सिंक गरियो', - 'label-prj-on-cloud': 'क्लाउडमा परियोजनाहरू', - 'label-save-to-computer': 'कम्प्युटरमा बचत गर्नुहोस्', - 'label-view-more': 'अझ धेरै हेर्नुहोस्', - 'label-create-new-user': 'नयाँ प्रयोगकर्ता सिर्जना गर्नुहोस्', - 'label-user-name': 'प्रयोगकर्ता नाम', - 'label-privacy': 'गोपनीयता', - 'label-terms': 'सर्तहरू', - 'label-collection': 'सङ्कलन', - 'label-select-folder': 'फोल्डर चयन गर्नुहोस्', - 'label-resources': 'स्रोतहरू', - 'label-lang': 'भाषा', - 'label-type': 'टाइप गर्नुहोस्', - 'label-select-language': 'भाषा छनोट गर्नुस', - 'label-pre-release': 'पूर्व रिलीज', - 'label-save-filter': 'फिल्टर बचत गर्नुहोस्', - 'label-subject': 'विषय', - 'label-release': 'रिलीज', - 'label-version': 'संस्करण', - 'msg-select-dir-for-SB': 'एउटा डाइरेक्टरी/प्रोजेक्ट छान्नुहोस् जसमा धर्मशास्त्र बुरिटो फाइल छ। metadata.json फाइल', - 'label-online-resources': 'अनलाइन स्रोतहरू', - 'tooltip-download': 'डाउनलोड', - 'msg-no-resource-for-bible-obs-download': '
यो सामग्री यस भाषाको लागि अनुपलब्ध छ
तपाईं संग्रह ट्याब मार्फत आफ्नै धर्मशास्त्र Burrito स्रोतहरू आयात गर्न सक्नुहुन्छ।
Scribe सँग स्क्रिप्चर बुरिटो परियोजनाहरू सिर्जना गर्ने बारे थप जान्नुहोस्। स्क्राइब कागजातहरू सन्दर्भ गर्नुहोस्।
', - 'label-back': 'फिर्ता', - 'label-speed': 'स्पीड', - 'label-record': 'रिकॉर्ड', - 'label-stop': 'स्टॉप', - 'label-continue': 'कंटिन्यू', - 'label-rewind': 'रिवाइंड', - 'label-play': 'प्ले', - 'label-pause': 'पॉज', - 'label-delete': 'डिलीट', - 'label-volume': 'वॉल्यूम', - 'label-takes': 'टैक्स', - 'label-settings': 'सेटिंग्स', - 'label-restore': 'पुनर्स्थापना गर्नुहोस्', - 'label-archive': 'अभिलेख', - 'tooltip-save-cloud-btn': 'यो कार्यले तपाईंको डाटालाई Door43 मा सिंक गर्नेछ', - 'tooltip-save-computer-btn': 'यो कार्यले Door43 डाटाको साथ तपाईंको स्थानीय डाटा क्लोन वा अपडेट गर्नेछ', - 'label-choose-usfm-files': 'USFM फाइलहरू छान्नुहोस्', - 'label-choose-md-files': 'Markdown फाइलहरू छान्नुहोस्', - 'label-merge': 'मर्ज गर्नुहोस्', - 'label-abort': 'रद्द गर्नुहोस्', - 'tooltip-star-project': 'स्टार प्रोजेक्ट', - 'tooltip-un-star-project': 'अनस्टार परियोजना', - 'tooltip-merge-all-orginal-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि ORIGINAL स्वीकार गर्नुहोस्', - 'tooltip-merge-orginal-btn': 'विवाद समाधान गर्न मूल परिवर्तनहरू स्वीकार गर्नुहोस्', - 'tooltip-merge-all-reset-btn': 'खोलिएको फाइललाई प्रारम्भिक अवस्थामा रिसेट गर्नुहोस्', - 'tooltip-merge-all-both-btn': 'द्वन्द्व समाधान गर्न दुवै परिवर्तनहरू स्वीकार गर्नुहोस्', - 'tooltip-merge-both-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि दुवै स्वीकार गर्नुहोस्', - 'tooltip-merge-all-new-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि नयाँ स्वीकार गर्नुहोस्', - 'tooltip-merge-new-btn': 'विवाद समाधान गर्न नयाँ परिवर्तनहरू स्वीकार गर्नुहोस्', - 'label-original': 'मौलिक', - 'label-new': 'नयाँ', - 'label-reset': 'रिसेट गर्नुहोस्', - 'label-both': 'दुबै', - 'label-overwrite': 'अधिलेखन गर्नुहोस्', - 'modal-title-abort-conflict-resolution': 'द्वन्द्व समाधान रद्द गर्नुहोस्', - 'msg-abort-conflict-resolution': 'तपाईं द्वन्द्व समाधान प्रक्रिया रद्द गर्न चाहनुहुन्छ। यदि तपाईंले रद्द गर्नुभयो भने, तपाईंले आफ्नो सबै प्रगति गुमाउनुहुनेछ र फेरि सुरु गर्न आवश्यक छ।', - 'label-done': 'सकियो', - 'label-resolved': 'समाधान गरियो', - 'label-resolve-conflict': 'विवाद समाधान', - 'label-comparison': 'तुलना', - 'label-files': 'फाइलहरू', - 'label-re-record': 'पुन: रेकर्ड गर्नुहोस्', - 'modal-title-re-record': 'अडियो पुन: रेकर्ड गर्नुहोस्', - 'msg-re-record-audio': 'के तपाइँ अडियो पुन: रेकर्ड गर्न चाहनुहुन्छ?', - 'modal-title-delete-audio': 'अडियो मेटाउनुहोस्', - 'msg-delete-audio': 'के तपाइँ चयन गरिएको टेक मेटाउन चाहनुहुन्छ?', - 'label-accepted': 'स्वीकार गरियो', - 'msg-remove-resource': 'के तपाईं निश्चित रूपमा स्रोत हटाउन चाहनुहुन्छ। यो कार्य उल्टाउन सकिँदैन', - 'label-check-updates': 'अपडेटहरू जाँच गर्नुहोस्', - 'label-documentation': 'कागजात', - 'label-tech-support': 'प्राविधिक समर्थन', - 'msg-helps-filepath': 'वैध manifest.yaml सँग संसाधन फाइलपाथलाई मद्दत गर्दछ', - 'tooltip-supported-resources': 'समर्थित स्रोतहरू TN, TW, TQ, TA हुन्', - 'label-upload-help-resources': 'मद्दत स्रोतहरू अपलोड गर्नुहोस्', - 'label-filter': 'फिल्टर', - 'label-book-selection': 'पुस्तक चयन', - 'label-chapter-selection': 'अध्याय चयन', - 'label-select': 'चयन्', - 'label-deselect': 'चयन रद्द करें', - 'label-start': 'सुरु्', - 'label-end': 'अन्त्य', - 'label-apply': 'आवेदन दिनुहोस्', - 'label-scope-not-selected': 'सुरु गर्न, स्कोप व्यवस्थापनमा जानुहोस् पुस्तक र अध्यायहरू चयन गर्नुहोस् र लागू गर्नुहोस् बटन क्लिक गर्नुहोस्', - 'label-scope-note-audio': 'परियोजना सूची पृष्ठमा स्कोप म्यानेजमेन्ट विकल्पबाट पुस्तक र अध्याय छान्नुहोस्', - 'modal-title-scope-management': 'स्कोप व्यवस्थापन', + 'app-name': 'Scribe Scripture', + 'new-project-page': 'नया प्रोजेक्‍ट', + 'edit-project': 'प्रोजेक्ट संपादित गर्नुहोस', + 'label-abbreviation': 'संक्षिप्त नामहरू', + 'label-target-language': 'लक्ष्य भाषा', + 'label-ltr': 'LTR', + 'label-rtl': 'RTL', + 'label-books': 'पुस्तकहरु', + 'label-book': 'पुस्तक', + 'label-import-book': 'पुस्तक आयात गर्नुहोस्', + 'label-saved': 'सुरक्षित गरियो', + 'label-sync': 'सिंक', + 'label-comments': 'टिप्‍पणि', + 'label-cross-ref': 'क्राँस सन्दर्भ', + 'label-add-footnote': 'फुटनोट थप्नुहोस्', + 'label-add-comment': 'फुटनोट थप्नुहोस्', + 'label-add-ref': 'सन्दर्भ थप्नुहोस्', + 'label-user-menu': 'उपयोगकर्ता व्‍यंजन सुची खोल्नुहोस्', + 'label-main-menu': 'मुख्य व्‍यंजन सुची खोल्नुहोस्', + 'label-dont-have-account': 'खाता छैन', + 'label-already-have-account': 'पहिलेबाट एउटा खाता छ', + 'label-new-langauge': 'नया भाषा', + 'label-edit-langauge': 'भाषा संपादित गर्नुहोस्', + 'label-script-direction': 'लिपि निर्देशन', + 'label-drop-file-upload': 'अपलोड गर्नको लागि फाइल यहाँ हाल्नुहोस्', + 'projects-page': 'पृष्‍ठ प्रोजेक्ट', + 'label-search': 'खोज्नुहोस्', + 'label-project': 'रोजेक्‍ट', + 'label-flavor': 'स्वाद', + 'label-project-type': 'प्रोजेक्टको प्रकार', + 'label-project-name': 'प्रोजेक्टको नाम', + 'label-language': 'भाषा', + 'label-language-code': 'भाषा कोड', + 'label-all': 'सबै पुस्तक', + 'label-other': 'अन्य', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'खाता निष्क्रिय गर्नुहोस्', + 'label-created-date': 'सिर्जना गरेको मिति', + 'label-last-viewed': 'अंतिम पल्ट हेरिएको', + 'label-description': 'विवरण', + 'label-project-id': 'प्रोजेक्‍ट ID', + 'label-sign-in': 'साइन इन गर्नुहोस्', + 'label-sign-up': 'साइन अप गर्नहोस्', + 'profile-page': 'प्रोफ़ाइल', + 'label-your-profile': 'तपाइको प्रोफाइल', + 'label-username': 'उपयोगकर्ताको नाम', + 'label-name': 'नाम', + 'label-firstname': 'पहिलो नाम', + 'label-lastname': 'थर', + 'label-password': 'पासवर्ड', + 'label-confirm-password': 'पासवर्ड पुष्टि गर्नुहोस्', + 'label-email': 'ईमेल', + 'label-organization': 'संगठन', + 'label-region': 'क्षेत्र', + 'label-app-language': 'App को भासा', + 'label-menu-file': 'फाइल', + 'label-uploading-files': 'फाइल अपलोड गर्नुहोस्', + 'label-menu-edit': 'संपादन गर्नुहोस्', + 'label-menu-about': 'व्‍यंजन सुची बारेमा', + 'label-bookmarks': 'पृष्ठसङ्केत', + 'label-custom': 'अनुकूलन', + 'label-show-hidden-file': 'लुकेको फाइल हेर्नुहोस्', + 'label-scope': 'दायरा', + 'label-door43': 'Door 43', + 'label-paratext': 'पैराटेक्स्ट', + 'label-license': 'लाइसेंस', + 'label-preview': 'पूर्वावलोकन', + 'label-versification-scheme': 'वचनबद्ध योजना', + 'label-old-testament': 'पुरानो करार', + 'label-new-testament': 'नया करार ', + 'label-chapter': 'अध्याय', + 'label-verse': 'पद', + 'label-import-resource': 'स्रोत आयात गर्नुहोस्', + 'label-resource': 'स्रोत', + 'label-resource-bible': 'बाइबल', + 'label-resource-obs-tn': 'OBS ट्रांसलेशन नोट्स', + 'label-resource-obs-tq': 'OBS ट्रांसलेशन प्रश्‍नहरु', + 'label-resource-obs': 'ओपन बाइबल स्टोरी', + 'label-resource-tn': 'ट्रांसलेशन नोट्स', + 'label-resource-twlm': 'ट्रांसलेशन शब्द', + 'label-resource-twl': 'ट्रांसलेशन शब्दहरुको सूची', + 'label-resource-tq': 'ट्रांसलेशन प्रश्‍नहरु', + 'label-resource-ta': 'ट्रांसलेशन अकादमी', + 'label-resource-name': 'स्रोतको नाम', + 'label-footnotes': 'फुट नोट्स', + 'label-location': 'स्थान', + 'label-audio-bible': 'अडियो', + 'label-resource-obs-twl': 'OBS अनुवाद शब्द सूची', + 'placeholder-resource-name': 'स्रोतको नाम दर्ता गर्नुहोस', + 'placeholder-license-name': 'लाइसेन्सको नाम', + 'placeholder-search': 'खोज्नुहोस', + 'placeholder-door43-url': 'Door 43 को URL दर्ता गर्नुहोस्', + 'label-burrito-resource-path': 'स्क्रिप्चर बरिटो स्रोत फाइलपथ', + 'label-burrito-directory': 'स्क्रिप्चर बरिटो निर्देशिका', + 'label-export-file-path': 'फाइल पाथ निर्यात गर्नुहोस्', + 'label-import-project': 'प्रोजेक्ट आयात गर्नुहोस्', + 'label-export-project': 'प्रोजेक्ट निर्यात गर्नुहोस्', + 'label-notification': 'सूचना', + 'label-editor-pane': 'संपादक', + 'label-editor-font-char': 'अ', + 'label-upload': 'अपलोड गर्नुहोस्', + 'label-no-content-available': 'कुनै सामाग्री उपलब्ध छैन', + 'label-enter-location': 'स्थान दर्ता गर्नुहोस्', + 'label-editor-load-module': 'मोड्‍युल लोड गर्नुहोस्', + 'label-import-door43-resources': 'आयात DOOR43 संसाधनहरूको सहायता गर्छ', + 'tooltip-editor-lock': 'नेविगेशन लॉक/अनलॉक', + 'tooltip-editor-bookmark': 'पृष्ठसङ्केत', + 'tooltip-editor-notification': 'सूचना', + 'tooltip-editor-layout': 'नक्सा', + 'tooltip-editor-font-dec': 'फांन्ट आकार घटाउनुहोस्', + 'tooltip-editor-font-inc': 'फांन्ट आकार बढाउनुहोस्', + 'tooltip-editor-resource-selector': 'स्रोत चयनकर्ता', + 'tooltip-editor-remove-section': 'खण्ड हटाउनुहोस्', + 'tooltip-editor-add-section': 'खण्ड जोड्नुहोस्', + 'modal-title-license': 'लाइसेन्स', + 'modal-title-about': 'कस्को बारेमा', + 'modal-title-remove-resource': 'स्रोत हटाउनुहोस्', + 'modal-title-update-burrito': 'बरिटो लाइ अपडेट गर्नुहोस्', + 'modal-title-update-app': 'ऑटोग्राफ अपडेट!', + 'modal-title-replace-resource': 'स्रोत बदल्नुहोस्', + 'dynamic-msg-burrito-validate-import-project': 'बरिटो लाइ सफलतापूर्वक प्रमाणित गरियो', + 'btn-new': 'नया', + 'btn-close': 'बंद गर्नुहोस्', + 'btn-ok': 'ठीक', + 'btn-source-code': 'स्रोत कोड', + 'btn-save': 'संरछण', + 'btn-signout': 'साइन आउट', + 'btn-signup': 'साइन अप', + 'btn-signin': 'साइन इन', + 'btn-edit': 'संपादन गर्नुहोस्', + 'btn-export': 'निर्यात गर्नुहोस्', + 'btn-import': 'आयात गर्नुहोस्', + 'btn-add': 'जोड्नुहोस', + 'btn-create-project': 'प्रोजेक्ट बनाउनुहोस्', + 'btn-import-books': 'पुस्तहरु आयात गर्नुहोस्', + 'btn-cancel': 'रद्ध गर्नुहोस्', + 'btn-restart': 'फेरि सुरु गर्नुहोस्', + 'btn-clear': 'खाली गर्नुहोस्', + 'btn-upload': 'अपलोड गर्नुहोस्', + 'btn-advance-settings': 'अग्रिम सेटिङ', + 'btn-create': 'बनाउनुहोस्', + 'btn-all': 'सबै', + 'btn-ot': 'पुरानो करार', + 'btn-nt': 'नया करार', + 'btn-update': 'अपडेट गर्नुहोस्', + 'btn-replace': 'बदल्नुहोस्', + 'btn-remove': 'हटाउनुहोस्', + 'btn-deactivate': 'निष्क्रिय गर्नुहोस्', + 'btn-load-tn': 'लोड अनुवाद नोट गरिएको छ', + 'tooltip-import-resource-info-circle': 'एक निर्देशिका/प्रोजेक्टलाई छन्नुहोस् जसमा एक स्क्रिप्चर बरिटो फ़ाइल छ यानी metadata.json फाइल ।', + 'tooltip-import-open-file-location': 'फ़ोल्डर को स्थान खोल्नुहोस्', + 'dynamic-msg-import-resource-snack': 'स्रोत अपलोड सफल भयो! कृपया स्रोत सुचि हेर्नुहोस्', + 'dynamic-msg-unable-find-buritto-snack': 'बरिटो फाइल खोज्नमा असफल', + 'dynamic-msg-unable-invalid-buritto-snack': 'अमान्य बरिटो फाइल (metadata.json)', + 'dynamic-msg-confirm-replace-resource': 'उही नामको अवस्थित परियोजना फेला पर्यो! "संग्रहित ट्याब" वा "परियोजना ट्याब" जाँच गर्नुहोस्। ओभरल्यापिङ पुस्तकहरूमा कुनै पनि अवस्थित सामग्री अधिलेखन गर्न "बदल्नुहोस्" थिच्नुहोस्। हालको परियोजनासँग परियोजना संयोजन गर्न "मर्ज" थिच्नुहोस्। परिवर्तनहरूबाट बच्न "रद्द गर्नुहोस्" थिच्नुहोस्।', + 'dynamic-msg-resource-added': 'स्रोत लाई सफलतापूर्वक जोडिएको छ', + 'dynamic-msg-resource-unable-fetch-url': 'प्रस्तुत गरिएको यू आर एल(URL) बाट दिएको स्रोत लैजानमा असमर्थ भएको छ', + 'dynamic-msg-load-ref-bible-snack': 'सफलतापूर्वक {{refName}} फ़ाइल लोड गरिएको छ', + 'dynamic-msg-load-ref-bible-snack-fail': 'फ़ाइल लोड गर्न मा असफल भएको छ', + 'dynamic-msg-load-ref-bible-success': 'संदर्भ-बरिटो सफलतापूर्वक लोड गरिएको छ', + 'dynamic-msg-validate-hook-project-name': 'इनपुट {{minLen}} र {{maxLen}} वर्णहरु को बीच मा हुनुपर्छ', + 'dynamic-msg-update-burrito-version': 'बरिटो को {{version1}} बाट {{version2}} मा अपडेट गर्नुहोस्', + 'dynamic-msg-validate-hook-onlyNum': 'कृपया केवल संख्या दर्ता गर्नुहोस् ।', + 'dynamic-msg-validate-hook-onlyString': 'कृपया केवल अक्षर दर्ता गर्नुहोस् ।', + 'dynamic-msg-validate-hook-nonSpecChar': 'विशेष वर्णको अनुमति छैन ।', + 'dynamic-msg-validate-hook-alphaNum': 'केवल अक्षर र संख्या को अनुमति छ।', + 'dynamic-msg-validate-hook-email': 'ईमेल प्रमाणित छैन। ', + 'dynamic-msg-auto-update': 'ऑटोग्राफा को एउटा नया अपडेट उपलब्ध छ। अहिले डाउनलोड हुदैछ।', + 'dynamic-msg-auto-update-complete': 'अपडेट डाउनलोड गरिएको छ। यसलाई पुनरारंभ गरेपछि इन्सटाँल हुनेछ। अहिले पुनः प्रारंभ गर्ने ?', + 'dynamic-msg-import-burrito-project-success': 'प्रोजेक्ट सफलतापूर्वक आयात गरिएको छ।', + 'dynamic-msg-deactivate-account': 'के तपाइ साच्चिकै आफ्नो खाता निष्क्रिय गर्न चाहानु हुन्छ? तपाइको सबै डाटा स्थयी रुपमा हटाइने छ। यस क्रिया लाइ पूर्ववत गर्न सकिदैन।', + 'dynamic-msg-project-updated': 'प्रोफ़ाइल लाई अपडेट गरिएको छ।', + 'dynamic-msg-app-lang-changed': 'ऐप को भाषा बदलीएको छ।', + 'dynamic-msg-data-read-fail': 'फ़ाइल बाट डेटा पढ़न मा विफल भएको छ।', + 'dynamic-msg-export-success': 'सफलतापूर्वक निर्यात गरिएको छ।', + 'dynamic-msg-export-fail': 'निर्यात गर्न मा विफल।', + 'dynamic-msg-invalid-path': 'अवैध पथ।', + 'dynamic-msg-invalid-usfm-file': 'अवैध USFM फ़ाइल।', + 'dynamic-msg-invalid-md-file': 'अवैध MD फ़ाइल।', + 'dynamic-msg-fill-all-fields': 'सबै फ़ील्ड भर्नुहोस।', + 'dynamic-msg-burrito-validation-expected': '{{version}} को स्थान मा अपेक्षित बरिटो संस्करण 0.3.0।', + 'dynamic-msg-burrito-validation-failed': 'बरिटो मान्यकरण विफल।', + 'text-login-page-desc': 'ऑटोग्राफा 2.0 एउटा नया तरीका बाट तपाइलाइ पवित्रशास्त्र र सम्बन्धित स्रोत संपादित गर्न र सशक्त सहज विशेषहरु को साथ अरु पनि महत्वपूर्ण कुरा माथि ध्यान केंद्रित गर्न मा तपाइलाइ सहायता गर्नेछ।', + 'text-welcome': 'स्वागत छ।', + 'text-sign-up-quote': 'एउटा महान समुदायको हिस्सा बनी हामी संग आनन्द लिनुहोस।', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'सक्रिय', + 'label-archived': 'अभिलेख राखिएको', + 'label-archived-prj': 'संग्रहित परियोजनाहरू', + 'label-bible-translation': 'बाइबल अनुवाद', + 'msg-lang-code-req': 'भाषा कोड आवश्यक छ', + 'msg-lang-name-req': 'भाषाको नाम आवश्यक छ', + 'msg-min-three-letter': 'खोजको लागि न्यूनतम 3 अक्षरहरू टाइप गर्नुहोस्', + 'label-prj-on-my-computer': 'मेरो कम्प्युटरमा परियोजना', + 'label-save-to-cloud': 'क्लाउडमा बचत गर्नुहोस्', + 'label-last-synced': 'पछिल्लो पटक सिंक गरियो', + 'label-prj-on-cloud': 'क्लाउडमा परियोजनाहरू', + 'label-save-to-computer': 'कम्प्युटरमा बचत गर्नुहोस्', + 'label-view-more': 'अझ धेरै हेर्नुहोस्', + 'label-create-new-user': 'नयाँ प्रयोगकर्ता सिर्जना गर्नुहोस्', + 'label-user-name': 'प्रयोगकर्ता नाम', + 'label-privacy': 'गोपनीयता', + 'label-terms': 'सर्तहरू', + 'label-collection': 'सङ्कलन', + 'label-select-folder': 'फोल्डर चयन गर्नुहोस्', + 'label-resources': 'स्रोतहरू', + 'label-lang': 'भाषा', + 'label-type': 'टाइप गर्नुहोस्', + 'label-select-language': 'भाषा छनोट गर्नुस', + 'label-pre-release': 'पूर्व रिलीज', + 'label-save-filter': 'फिल्टर बचत गर्नुहोस्', + 'label-subject': 'विषय', + 'label-release': 'रिलीज', + 'label-version': 'संस्करण', + 'msg-select-dir-for-SB': 'एउटा डाइरेक्टरी/प्रोजेक्ट छान्नुहोस् जसमा धर्मशास्त्र बुरिटो फाइल छ। metadata.json फाइल', + 'label-online-resources': 'अनलाइन स्रोतहरू', + 'tooltip-download': 'डाउनलोड', + 'msg-no-resource-for-bible-obs-download': '
यो सामग्री यस भाषाको लागि अनुपलब्ध छ
तपाईं संग्रह ट्याब मार्फत आफ्नै धर्मशास्त्र Burrito स्रोतहरू आयात गर्न सक्नुहुन्छ।
Scribe सँग स्क्रिप्चर बुरिटो परियोजनाहरू सिर्जना गर्ने बारे थप जान्नुहोस्। स्क्राइब कागजातहरू सन्दर्भ गर्नुहोस्।
', + 'label-back': 'फिर्ता', + 'label-speed': 'स्पीड', + 'label-record': 'रिकॉर्ड', + 'label-stop': 'स्टॉप', + 'label-continue': 'कंटिन्यू', + 'label-rewind': 'रिवाइंड', + 'label-play': 'प्ले', + 'label-pause': 'पॉज', + 'label-delete': 'डिलीट', + 'label-volume': 'वॉल्यूम', + 'label-takes': 'टैक्स', + 'label-settings': 'सेटिंग्स', + 'label-restore': 'पुनर्स्थापना गर्नुहोस्', + 'label-archive': 'अभिलेख', + 'tooltip-save-cloud-btn': 'यो कार्यले तपाईंको डाटालाई Door43 मा सिंक गर्नेछ', + 'tooltip-save-computer-btn': 'यो कार्यले Door43 डाटाको साथ तपाईंको स्थानीय डाटा क्लोन वा अपडेट गर्नेछ', + 'label-choose-usfm-files': 'USFM फाइलहरू छान्नुहोस्', + 'label-choose-md-files': 'Markdown फाइलहरू छान्नुहोस्', + 'label-merge': 'मर्ज गर्नुहोस्', + 'label-abort': 'रद्द गर्नुहोस्', + 'tooltip-star-project': 'स्टार प्रोजेक्ट', + 'tooltip-un-star-project': 'अनस्टार परियोजना', + 'tooltip-merge-all-orginal-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि ORIGINAL स्वीकार गर्नुहोस्', + 'tooltip-merge-orginal-btn': 'विवाद समाधान गर्न मूल परिवर्तनहरू स्वीकार गर्नुहोस्', + 'tooltip-merge-all-reset-btn': 'खोलिएको फाइललाई प्रारम्भिक अवस्थामा रिसेट गर्नुहोस्', + 'tooltip-merge-all-both-btn': 'द्वन्द्व समाधान गर्न दुवै परिवर्तनहरू स्वीकार गर्नुहोस्', + 'tooltip-merge-both-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि दुवै स्वीकार गर्नुहोस्', + 'tooltip-merge-all-new-btn': 'खोलिएको फाइलमा समाधान नगरिएका सबै द्वन्द्व खण्डहरूको लागि नयाँ स्वीकार गर्नुहोस्', + 'tooltip-merge-new-btn': 'विवाद समाधान गर्न नयाँ परिवर्तनहरू स्वीकार गर्नुहोस्', + 'label-original': 'मौलिक', + 'label-new': 'नयाँ', + 'label-reset': 'रिसेट गर्नुहोस्', + 'label-both': 'दुबै', + 'label-overwrite': 'अधिलेखन गर्नुहोस्', + 'modal-title-abort-conflict-resolution': 'द्वन्द्व समाधान रद्द गर्नुहोस्', + 'msg-abort-conflict-resolution': 'तपाईं द्वन्द्व समाधान प्रक्रिया रद्द गर्न चाहनुहुन्छ। यदि तपाईंले रद्द गर्नुभयो भने, तपाईंले आफ्नो सबै प्रगति गुमाउनुहुनेछ र फेरि सुरु गर्न आवश्यक छ।', + 'label-done': 'सकियो', + 'label-resolved': 'समाधान गरियो', + 'label-resolve-conflict': 'विवाद समाधान', + 'label-comparison': 'तुलना', + 'label-files': 'फाइलहरू', + 'label-re-record': 'पुन: रेकर्ड गर्नुहोस्', + 'modal-title-re-record': 'अडियो पुन: रेकर्ड गर्नुहोस्', + 'msg-re-record-audio': 'के तपाइँ अडियो पुन: रेकर्ड गर्न चाहनुहुन्छ?', + 'modal-title-delete-audio': 'अडियो मेटाउनुहोस्', + 'msg-delete-audio': 'के तपाइँ चयन गरिएको टेक मेटाउन चाहनुहुन्छ?', + 'label-accepted': 'स्वीकार गरियो', + 'msg-remove-resource': 'के तपाईं निश्चित रूपमा स्रोत हटाउन चाहनुहुन्छ। यो कार्य उल्टाउन सकिँदैन', + 'label-check-updates': 'अपडेटहरू जाँच गर्नुहोस्', + 'label-documentation': 'कागजात', + 'label-tech-support': 'प्राविधिक समर्थन', + 'msg-helps-filepath': 'वैध manifest.yaml सँग संसाधन फाइलपाथलाई मद्दत गर्दछ', + 'tooltip-supported-resources': 'समर्थित स्रोतहरू TN, TW, TQ, TA हुन्', + 'label-upload-help-resources': 'मद्दत स्रोतहरू अपलोड गर्नुहोस्', + 'label-filter': 'फिल्टर', + 'label-book-selection': 'पुस्तक चयन', + 'label-chapter-selection': 'अध्याय चयन', + 'label-select': 'चयन्', + 'label-deselect': 'चयन रद्द करें', + 'label-start': 'सुरु्', + 'label-end': 'अन्त्य', + 'label-apply': 'आवेदन दिनुहोस्', + 'label-scope-not-selected': 'सुरु गर्न, स्कोप व्यवस्थापनमा जानुहोस् पुस्तक र अध्यायहरू चयन गर्नुहोस् र लागू गर्नुहोस् बटन क्लिक गर्नुहोस्', + 'label-scope-note-audio': 'परियोजना सूची पृष्ठमा स्कोप म्यानेजमेन्ट विकल्पबाट पुस्तक र अध्याय छान्नुहोस्', + 'modal-title-scope-management': 'स्कोप व्यवस्थापन', }; diff --git a/renderer/src/translations/ru.js b/renderer/src/translations/ru.js index 68173acd3..897ff298c 100644 --- a/renderer/src/translations/ru.js +++ b/renderer/src/translations/ru.js @@ -1,294 +1,294 @@ export const Ru = { - 'app-name': 'Scribe Scripture', - 'new-project-page': 'Новый проект', - 'edit-project': 'Изменить проект', - 'label-abbreviation': 'Сокращенное название', - 'label-target-language': 'Язык перевода', - 'label-ltr': 'слева направо', - 'label-rtl': 'справа налево', - 'label-books': 'Книги', - 'label-book': 'Книга', - 'label-import-book': 'Импорт книги', - 'label-saved': 'Сохранено', - 'label-sync': 'Синхронизировать', - 'label-comments': 'Комментарии', - 'label-cross-ref': 'Перекрестная ссылка', - 'label-add-footnote': 'Добавить сноску', - 'label-add-comment': 'Добавить комментарий', - 'label-add-ref': 'Добавить ссылку', - 'label-user-menu': 'Открыть меню пользователя', - 'label-main-menu': 'Открыть главное меню', - 'label-dont-have-account': 'У вас нет аккаунта?', - 'label-already-have-account': 'Уже имеете аккаунт?', - 'label-new-langauge': 'Новый язык', - 'label-edit-langauge': 'Изменить язык', - 'label-script-direction': 'Направленность письменности', - 'label-drop-file-upload': 'Перетащите сюда файлы для загрузки', - 'projects-page': 'Проекты', - 'label-search': 'Поиск', - 'label-project': 'Проект', - 'label-flavor': 'тип', - 'label-project-type': 'Тип проекта', - 'label-project-name': 'Название проекта', - 'label-language': 'Язык интерфейса', - 'label-language-code': 'Код языка', - 'label-all': 'Все книги', - 'label-other': 'Другой', - 'label-Gitea': 'Gitea', - 'label-deactivate-account': 'Деактивировать аккаунт', - 'label-created-date': 'Дата создания', - 'label-last-viewed': 'Последнее просмотренное', - 'label-description': 'Описание', - 'label-project-id': 'ID проекта', - 'label-sign-in': 'Войти', - 'label-sign-up': 'Регистрация', - 'profile-page': 'Профиль', - 'label-your-profile': 'Ваш профиль', - 'label-username': 'Имя пользователя', - 'label-name': 'Имя', - 'label-firstname': 'Имя', - 'label-lastname': 'фамилия', - 'label-password': 'Пароль', - 'label-confirm-password': 'Подтвердить Пароль', - 'label-email': 'Эл. адрес', - 'label-organization': 'Организация', - 'label-region': 'Область', - 'label-app-language': 'Язык приложения', - 'label-menu-file': 'Файл', - 'label-uploading-files': 'Загрузка файлов', - 'label-menu-edit': 'Редактировать', - 'label-menu-about': 'О', - 'label-bookmarks': 'Закладки', - 'label-custom': 'Custom', - 'label-show-hidden-file': 'Показать скрытые файлы', - 'label-scope': 'Scope', - 'label-door43': 'Door 43', - 'label-paratext': 'Паратекст', - 'label-license': 'Лицензия', - 'label-preview': 'Предпросмотр', - 'label-versification-scheme': 'Тип нумерации стихов', - 'label-old-testament': 'Ветхий Завет', - 'label-new-testament': 'Новый Завет', - 'label-chapter': 'Глава', - 'label-verse': 'Стих', - 'label-import-resource': 'Импорт ресурса', - 'label-resource': 'Ресурс', - 'label-resource-bible': 'Библия', - 'label-resource-obs-tn': 'ОБС Заметк', - 'label-resource-obs-tq': 'ОБС Вовпросы', - 'label-resource-obs': 'Open Bible Stories', - 'label-resource-tn': 'Заметк', - 'label-resource-twlm': 'Слова', - 'label-resource-twl': 'Список слов', - 'label-resource-tq': 'Вовпросы', - 'label-resource-ta': 'Translation Academy', - 'label-resource-name': 'Название ресурса', - 'label-footnotes': 'Примечания', - 'label-location': 'расположение', - 'label-audio-bible': 'Аудио', - 'label-resource-obs-twl': 'ОБС Список слов', - 'placeholder-resource-name': 'Введите имя ресурса', - 'placeholder-license-name': 'Название лицензии', - 'placeholder-search': 'Поиск…', - 'placeholder-door43-url': 'Введите ссылку door43', - 'label-burrito-resource-path': 'Путь к файлу ресурса Священного Писания Burrito', - 'label-burrito-directory': 'Каталог Священного Писания Burrito', - 'label-export-file-path': 'Экспортировать путь к файлу', - 'label-import-project': 'Импорт проекта', - 'label-export-project': 'Экспорт проекта', - 'label-notification': 'Уведомления', - 'label-editor-pane': 'Редактор', - 'label-editor-font-char': 'A', - 'label-upload': 'загрузить', - 'label-no-content-available': 'Нет доступного контента!', - 'label-enter-location': 'Введите расположение', - 'label-editor-load-module': 'Загрузите модуль', - 'label-import-door43-resources': 'Импорт ресурсов DOOR43 помогает', - 'tooltip-editor-lock': 'navigation lock/unlock', - 'tooltip-editor-bookmark': 'закладка', - 'tooltip-editor-notification': 'уведомление', - 'tooltip-editor-layout': 'Макет', - 'tooltip-editor-font-dec': 'уменьшить размер шрифта', - 'tooltip-editor-font-inc': 'увеличить размер шрифта', - 'tooltip-editor-resource-selector': 'переключатель ресурсов', - 'tooltip-editor-remove-section': 'remove section', - 'tooltip-editor-add-section': 'добавить раздел', - 'modal-title-license': 'Лицензия', - 'modal-title-about': 'О', - 'modal-title-remove-resource': 'Remove Resource', - 'modal-title-update-burrito': 'Обновление буррито', - 'modal-title-update-app': 'Обновление автографа!', - 'modal-title-replace-resource': 'Заменить ресурс', - 'dynamic-msg-burrito-validate-import-project': 'Буррито успешно подтвержден', - 'btn-new': 'Новый', - 'btn-close': 'Закрыть', - 'btn-ok': 'OK', - 'btn-source-code': 'Исходный код', - 'btn-save': 'Сохранить', - 'btn-signout': 'Выйти', - 'btn-signup': 'Регистрация', - 'btn-signin': 'Войти', - 'btn-edit': 'Редактировать', - 'btn-export': 'Экспорт', - 'btn-import': 'Импорт', - 'btn-add': 'добавить', - 'btn-create-project': 'Создать проект', - 'btn-import-books': 'Импорт книг', - 'btn-cancel': 'Отмена', - 'btn-restart': 'Запустить снова', - 'btn-clear': 'Clear', - 'btn-upload': 'Загрузить', - 'btn-advance-settings': 'Расширенные настройки', - 'btn-create': 'Создать', - 'btn-all': 'ВСЕ', - 'btn-ot': 'ВЗ', - 'btn-nt': 'НЗ', - 'btn-update': 'Обновление ', - 'btn-replace': 'Заменить', - 'btn-remove': 'Remove', - 'btn-deactivate': 'Деактивировать', - 'btn-load-tn': 'загруженный перевод отмечен', - 'tooltip-import-resource-info-circle': 'Выберите каталог/проект, в котором есть файл Священного Писания Burrito, т. е. файл metadata.json.', - 'tooltip-import-open-file-location': 'открыть расположение папки', - 'dynamic-msg-import-resource-snack': 'Загрузка ресурса прошла успешно! Пожалуйста, проверьте список ресурсов', - 'dynamic-msg-unable-find-buritto-snack': 'Не удалось найти файл буррито (metadata.json).', - 'dynamic-msg-unable-invalid-buritto-snack': 'Недействительный файл буррито (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'Был найден существующий проект с таким названием! Проверьте вкладку «Архив» или «Вкладка «Проекты». Нажмите «Заменить», чтобы перезаписать любой существующий контент в перекрывающихся книгах. Нажмите «Объединить», чтобы объединить проект с текущим проектом. Нажмите «Отмена», чтобы избежать изменений.', - 'dynamic-msg-resource-added': 'ресурс успешно добавлен', - 'dynamic-msg-resource-unable-fetch-url': 'невозможно получить выбранный ресурс с заданного URL-адреса', - 'dynamic-msg-load-ref-bible-snack': 'успешно загружен {{refName}} файл', - 'dynamic-msg-load-ref-bible-snack-fail': 'не удалось загрузить {{refName}} файлов', - 'dynamic-msg-load-ref-bible-success': 'Ссылка-буррито успешно загружена', - 'dynamic-msg-validate-hook-project-name': 'Ввод должен быть длиной от {{minLen}} до {{maxLen}} символов.', - 'dynamic-msg-update-burrito-version': 'Обновите буррито с {{version1}} до {{version2}}.', - 'dynamic-msg-validate-hook-onlyNum': 'Пожалуйста, вводите только цифры.', - 'dynamic-msg-validate-hook-onlyString': 'Пожалуйста, вводите только буквы алфавита.', - 'dynamic-msg-validate-hook-nonSpecChar': 'Специальные символы не допускаются', - 'dynamic-msg-validate-hook-alphaNum': 'Допускаются только буквы и цифры', - 'dynamic-msg-validate-hook-email': 'Email не является допустимым!', - 'dynamic-msg-auto-update': 'Доступно обновление автографа. Загрузить сейчас...', - 'dynamic-msg-auto-update-complete': 'Обновление загружено. Он будет установлен при перезагрузке. Перезагрузить сейчас?', - 'dynamic-msg-import-burrito-project-success': 'Проект успешно импортирован', - 'dynamic-msg-deactivate-account': 'Вы уверены, что хотите деактивировать свой аккаунт? Все ваши данные будут безвозвратно удалены. Это действие не может быть отменено.', - 'dynamic-msg-project-updated': 'Профиль обновлён.', - 'dynamic-msg-app-lang-changed': 'Язык приложения изменён.', - 'dynamic-msg-data-read-fail': 'Не удалось прочитать данные из файла.', - 'dynamic-msg-export-success': 'Экспортировано успешно', - 'dynamic-msg-export-fail': 'Не удалось экспортировать', - 'dynamic-msg-invalid-path': 'Неправильный путь', - 'dynamic-msg-invalid-usfm-file': 'Недействительный файл USFM.', - 'dynamic-msg-invalid-md-file': 'Недействительный файл MD.', - 'dynamic-msg-fill-all-fields': 'Заполните все поля', - 'dynamic-msg-burrito-validation-expected': 'Ожидается версия буррито 0.3.0 вместо {{version}}', - 'dynamic-msg-burrito-validation-failed': 'Проверка буррито не удалась', - 'text-login-page-desc': 'Scribe Scripture — это совершенно новый способ редактирования Священных Писаний и связанных с ними ресурсов с мощными, но элегантными функциями, которые помогут вам сосредоточиться на важных вещах!', - 'text-welcome': 'Добро пожаловать', - 'text-sign-up-quote': 'Станьте частью большого сообщества и получайте удовольствие вместе с нами', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'Активный', - 'label-archived': 'В архиве', - 'label-archived-prj': 'Архивные проекты', - 'label-bible-translation': 'перевод Библии', - 'msg-lang-code-req': 'Требуется код языка.', - 'msg-lang-name-req': 'Укажите название языка.', - 'msg-min-three-letter': 'Введите минимум 3 символа для поиска', - 'label-prj-on-my-computer': 'Проект на моем компьютере', - 'label-save-to-cloud': 'Сохранить в облако', - 'label-last-synced': 'Последняя синхронизация', - 'label-prj-on-cloud': 'Проекты в облаке', - 'label-save-to-computer': 'Сохранить на компьютер', - 'label-view-more': 'Посмотреть больше', - 'label-create-new-user': 'Создать нового пользователя', - 'label-user-name': 'Имя пользователя', - 'label-privacy': 'Конфиденциальность', - 'label-terms': 'Условия', - 'label-collection': 'Коллекция', - 'label-select-folder': 'Выберите папку', - 'label-resources': 'Ресурсы', - 'label-lang': 'Язык', - 'label-type': 'Тип', - 'label-select-language': 'Выберите язык', - 'label-pre-release': 'Пререлиз', - 'label-save-filter': 'Сохранить фильтр', - 'label-subject': 'Предмет', - 'label-release': 'Выпускать', - 'label-version': 'Версия', - 'msg-select-dir-for-SB': 'Выберите каталог/проект, в котором есть файл Писания Буррито, т.е. файл метаданных.json', - 'label-online-resources': 'Интернет-ресурсы', - 'tooltip-download': 'скачать', - 'msg-no-resource-for-bible-obs-download': '
Этот контент недоступен для этого языка
Вы можете импортировать собственные ресурсы по буррито из Священных Писаний через вкладку «Коллекция».
Узнайте больше о создании проектов Write Burrito с помощью Scribe. См. документацию Scribe.
', - 'label-back': 'назад', - 'label-speed': 'Speed', - 'label-record': 'Record', - 'label-stop': 'Stop', - 'label-continue': 'Continue', - 'label-rewind': 'Rewind', - 'label-play': 'Play', - 'label-pause': 'Pause', - 'label-delete': 'Delete', - 'label-volume': 'Volume', - 'label-takes': 'Takes', - 'label-settings': 'Settings', - 'label-restore': 'Восстановить', - 'label-archive': 'Архив', - 'tooltip-save-cloud-btn': 'Это действие синхронизирует ваши данные с Door43.', - 'tooltip-save-computer-btn': 'Это действие клонирует или обновит ваши локальные данные данными Door43.', - 'label-choose-usfm-files': 'Выберите файлы USFM', - 'label-choose-md-files': 'Выберите файлы Markdown', - 'label-merge': 'Объединить', - 'label-abort': 'Прервать', - 'tooltip-star-project': 'Звездный проект', - 'tooltip-un-star-project': 'Снять звезду проекта', - 'tooltip-merge-all-orginal-btn': 'Примите ОРИГИНАЛ для всех неразрешенных конфликтных разделов в открытом файле.', - 'tooltip-merge-orginal-btn': 'Примите ОРИГИНАЛЬНЫЕ изменения для разрешения конфликта.', - 'tooltip-merge-all-reset-btn': 'СБРОСИТЬ открытый файл в исходное состояние', - 'tooltip-merge-all-both-btn': 'Примите ОБА изменения, чтобы разрешить конфликт.', - 'tooltip-merge-both-btn': 'Примите ОБА для всех неразрешенных разделов конфликта в открытом файле.', - 'tooltip-merge-all-new-btn': 'Примите NEW для всех неразрешенных конфликтных разделов в открытом файле.', - 'tooltip-merge-new-btn': 'Примите НОВЫЕ изменения для разрешения конфликта', - 'label-original': 'Оригинал', - 'label-new': 'Новый', - 'label-reset': 'Перезагрузить', - 'label-both': 'Оба', - 'label-overwrite': 'Перезаписать', - 'modal-title-abort-conflict-resolution': 'Прервать разрешение конфликта', - 'msg-abort-conflict-resolution': 'Хотите прервать процесс разрешения конфликта? Если вы прервете, вы потеряете весь свой прогресс и вам придется начинать все сначала.', - 'label-done': 'сделанный', - 'label-resolved': 'решено', - 'label-resolve-conflict': 'разрешить конфликт', - 'label-comparison': 'сравнение', - 'label-files': 'файлы', - 'label-re-record': 'Перезапись', - 'modal-title-re-record': 'Перезапишите аудио', - 'msg-re-record-audio': 'Хотите перезаписать звук?', - 'modal-title-delete-audio': 'Удалить аудио', - 'msg-delete-audio': 'Вы хотите удалить выбранный дубль?', - 'label-accepted': 'Принял', - 'msg-remove-resource': 'Вы уверены, что хотите удалить ресурс? Это действие нельзя отменить.', - 'label-check-updates': 'Проверить обновления', - 'label-documentation': 'Документация', - 'label-tech-support': 'техническая поддержка', - 'msg-helps-filepath': 'Помогает найти путь к ресурсу файла с реальным файлом manifest.yaml.', - 'tooltip-supported-resources': 'поддерживаемые ресурсы: TN, TW, TQ, TA', - 'label-upload-help-resources': 'Загрузить справочные ресурсы', - 'label-filter': 'фильтр', - 'label-book-selection': 'Выбор книги', - 'label-chapter-selection': 'Выбор главы', - 'label-select': 'Выбирать', - 'label-deselect': 'Отменить выбор', - 'label-start': 'Начинать', - 'label-end': 'Конец', - 'label-apply': 'Применять', - 'label-scope-not-selected': 'Чтобы начать, перейдите в раздел «Управление областью действия», выберите книгу и главы и нажмите кнопку «Применить».', - 'label-scope-note-audio': 'Выберите книгу и главу из опции УПРАВЛЕНИЕ ОБЛАСТЬЮ РАБОТ на странице со списком проектов.', - 'modal-title-scope-management': 'Управление областью действия', + 'app-name': 'Scribe Scripture', + 'new-project-page': 'Новый проект', + 'edit-project': 'Изменить проект', + 'label-abbreviation': 'Сокращенное название', + 'label-target-language': 'Язык перевода', + 'label-ltr': 'слева направо', + 'label-rtl': 'справа налево', + 'label-books': 'Книги', + 'label-book': 'Книга', + 'label-import-book': 'Импорт книги', + 'label-saved': 'Сохранено', + 'label-sync': 'Синхронизировать', + 'label-comments': 'Комментарии', + 'label-cross-ref': 'Перекрестная ссылка', + 'label-add-footnote': 'Добавить сноску', + 'label-add-comment': 'Добавить комментарий', + 'label-add-ref': 'Добавить ссылку', + 'label-user-menu': 'Открыть меню пользователя', + 'label-main-menu': 'Открыть главное меню', + 'label-dont-have-account': 'У вас нет аккаунта?', + 'label-already-have-account': 'Уже имеете аккаунт?', + 'label-new-langauge': 'Новый язык', + 'label-edit-langauge': 'Изменить язык', + 'label-script-direction': 'Направленность письменности', + 'label-drop-file-upload': 'Перетащите сюда файлы для загрузки', + 'projects-page': 'Проекты', + 'label-search': 'Поиск', + 'label-project': 'Проект', + 'label-flavor': 'тип', + 'label-project-type': 'Тип проекта', + 'label-project-name': 'Название проекта', + 'label-language': 'Язык интерфейса', + 'label-language-code': 'Код языка', + 'label-all': 'Все книги', + 'label-other': 'Другой', + 'label-Gitea': 'Gitea', + 'label-deactivate-account': 'Деактивировать аккаунт', + 'label-created-date': 'Дата создания', + 'label-last-viewed': 'Последнее просмотренное', + 'label-description': 'Описание', + 'label-project-id': 'ID проекта', + 'label-sign-in': 'Войти', + 'label-sign-up': 'Регистрация', + 'profile-page': 'Профиль', + 'label-your-profile': 'Ваш профиль', + 'label-username': 'Имя пользователя', + 'label-name': 'Имя', + 'label-firstname': 'Имя', + 'label-lastname': 'фамилия', + 'label-password': 'Пароль', + 'label-confirm-password': 'Подтвердить Пароль', + 'label-email': 'Эл. адрес', + 'label-organization': 'Организация', + 'label-region': 'Область', + 'label-app-language': 'Язык приложения', + 'label-menu-file': 'Файл', + 'label-uploading-files': 'Загрузка файлов', + 'label-menu-edit': 'Редактировать', + 'label-menu-about': 'О', + 'label-bookmarks': 'Закладки', + 'label-custom': 'Custom', + 'label-show-hidden-file': 'Показать скрытые файлы', + 'label-scope': 'Scope', + 'label-door43': 'Door 43', + 'label-paratext': 'Паратекст', + 'label-license': 'Лицензия', + 'label-preview': 'Предпросмотр', + 'label-versification-scheme': 'Тип нумерации стихов', + 'label-old-testament': 'Ветхий Завет', + 'label-new-testament': 'Новый Завет', + 'label-chapter': 'Глава', + 'label-verse': 'Стих', + 'label-import-resource': 'Импорт ресурса', + 'label-resource': 'Ресурс', + 'label-resource-bible': 'Библия', + 'label-resource-obs-tn': 'ОБС Заметк', + 'label-resource-obs-tq': 'ОБС Вовпросы', + 'label-resource-obs': 'Open Bible Stories', + 'label-resource-tn': 'Заметк', + 'label-resource-twlm': 'Слова', + 'label-resource-twl': 'Список слов', + 'label-resource-tq': 'Вовпросы', + 'label-resource-ta': 'Translation Academy', + 'label-resource-name': 'Название ресурса', + 'label-footnotes': 'Примечания', + 'label-location': 'расположение', + 'label-audio-bible': 'Аудио', + 'label-resource-obs-twl': 'ОБС Список слов', + 'placeholder-resource-name': 'Введите имя ресурса', + 'placeholder-license-name': 'Название лицензии', + 'placeholder-search': 'Поиск…', + 'placeholder-door43-url': 'Введите ссылку door43', + 'label-burrito-resource-path': 'Путь к файлу ресурса Священного Писания Burrito', + 'label-burrito-directory': 'Каталог Священного Писания Burrito', + 'label-export-file-path': 'Экспортировать путь к файлу', + 'label-import-project': 'Импорт проекта', + 'label-export-project': 'Экспорт проекта', + 'label-notification': 'Уведомления', + 'label-editor-pane': 'Редактор', + 'label-editor-font-char': 'A', + 'label-upload': 'загрузить', + 'label-no-content-available': 'Нет доступного контента!', + 'label-enter-location': 'Введите расположение', + 'label-editor-load-module': 'Загрузите модуль', + 'label-import-door43-resources': 'Импорт ресурсов DOOR43 помогает', + 'tooltip-editor-lock': 'navigation lock/unlock', + 'tooltip-editor-bookmark': 'закладка', + 'tooltip-editor-notification': 'уведомление', + 'tooltip-editor-layout': 'Макет', + 'tooltip-editor-font-dec': 'уменьшить размер шрифта', + 'tooltip-editor-font-inc': 'увеличить размер шрифта', + 'tooltip-editor-resource-selector': 'переключатель ресурсов', + 'tooltip-editor-remove-section': 'remove section', + 'tooltip-editor-add-section': 'добавить раздел', + 'modal-title-license': 'Лицензия', + 'modal-title-about': 'О', + 'modal-title-remove-resource': 'Remove Resource', + 'modal-title-update-burrito': 'Обновление буррито', + 'modal-title-update-app': 'Обновление автографа!', + 'modal-title-replace-resource': 'Заменить ресурс', + 'dynamic-msg-burrito-validate-import-project': 'Буррито успешно подтвержден', + 'btn-new': 'Новый', + 'btn-close': 'Закрыть', + 'btn-ok': 'OK', + 'btn-source-code': 'Исходный код', + 'btn-save': 'Сохранить', + 'btn-signout': 'Выйти', + 'btn-signup': 'Регистрация', + 'btn-signin': 'Войти', + 'btn-edit': 'Редактировать', + 'btn-export': 'Экспорт', + 'btn-import': 'Импорт', + 'btn-add': 'добавить', + 'btn-create-project': 'Создать проект', + 'btn-import-books': 'Импорт книг', + 'btn-cancel': 'Отмена', + 'btn-restart': 'Запустить снова', + 'btn-clear': 'Clear', + 'btn-upload': 'Загрузить', + 'btn-advance-settings': 'Расширенные настройки', + 'btn-create': 'Создать', + 'btn-all': 'ВСЕ', + 'btn-ot': 'ВЗ', + 'btn-nt': 'НЗ', + 'btn-update': 'Обновление ', + 'btn-replace': 'Заменить', + 'btn-remove': 'Remove', + 'btn-deactivate': 'Деактивировать', + 'btn-load-tn': 'загруженный перевод отмечен', + 'tooltip-import-resource-info-circle': 'Выберите каталог/проект, в котором есть файл Священного Писания Burrito, т. е. файл metadata.json.', + 'tooltip-import-open-file-location': 'открыть расположение папки', + 'dynamic-msg-import-resource-snack': 'Загрузка ресурса прошла успешно! Пожалуйста, проверьте список ресурсов', + 'dynamic-msg-unable-find-buritto-snack': 'Не удалось найти файл буррито (metadata.json).', + 'dynamic-msg-unable-invalid-buritto-snack': 'Недействительный файл буррито (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'Был найден существующий проект с таким названием! Проверьте вкладку «Архив» или «Вкладка «Проекты». Нажмите «Заменить», чтобы перезаписать любой существующий контент в перекрывающихся книгах. Нажмите «Объединить», чтобы объединить проект с текущим проектом. Нажмите «Отмена», чтобы избежать изменений.', + 'dynamic-msg-resource-added': 'ресурс успешно добавлен', + 'dynamic-msg-resource-unable-fetch-url': 'невозможно получить выбранный ресурс с заданного URL-адреса', + 'dynamic-msg-load-ref-bible-snack': 'успешно загружен {{refName}} файл', + 'dynamic-msg-load-ref-bible-snack-fail': 'не удалось загрузить {{refName}} файлов', + 'dynamic-msg-load-ref-bible-success': 'Ссылка-буррито успешно загружена', + 'dynamic-msg-validate-hook-project-name': 'Ввод должен быть длиной от {{minLen}} до {{maxLen}} символов.', + 'dynamic-msg-update-burrito-version': 'Обновите буррито с {{version1}} до {{version2}}.', + 'dynamic-msg-validate-hook-onlyNum': 'Пожалуйста, вводите только цифры.', + 'dynamic-msg-validate-hook-onlyString': 'Пожалуйста, вводите только буквы алфавита.', + 'dynamic-msg-validate-hook-nonSpecChar': 'Специальные символы не допускаются', + 'dynamic-msg-validate-hook-alphaNum': 'Допускаются только буквы и цифры', + 'dynamic-msg-validate-hook-email': 'Email не является допустимым!', + 'dynamic-msg-auto-update': 'Доступно обновление автографа. Загрузить сейчас...', + 'dynamic-msg-auto-update-complete': 'Обновление загружено. Он будет установлен при перезагрузке. Перезагрузить сейчас?', + 'dynamic-msg-import-burrito-project-success': 'Проект успешно импортирован', + 'dynamic-msg-deactivate-account': 'Вы уверены, что хотите деактивировать свой аккаунт? Все ваши данные будут безвозвратно удалены. Это действие не может быть отменено.', + 'dynamic-msg-project-updated': 'Профиль обновлён.', + 'dynamic-msg-app-lang-changed': 'Язык приложения изменён.', + 'dynamic-msg-data-read-fail': 'Не удалось прочитать данные из файла.', + 'dynamic-msg-export-success': 'Экспортировано успешно', + 'dynamic-msg-export-fail': 'Не удалось экспортировать', + 'dynamic-msg-invalid-path': 'Неправильный путь', + 'dynamic-msg-invalid-usfm-file': 'Недействительный файл USFM.', + 'dynamic-msg-invalid-md-file': 'Недействительный файл MD.', + 'dynamic-msg-fill-all-fields': 'Заполните все поля', + 'dynamic-msg-burrito-validation-expected': 'Ожидается версия буррито 0.3.0 вместо {{version}}', + 'dynamic-msg-burrito-validation-failed': 'Проверка буррито не удалась', + 'text-login-page-desc': 'Scribe Scripture — это совершенно новый способ редактирования Священных Писаний и связанных с ними ресурсов с мощными, но элегантными функциями, которые помогут вам сосредоточиться на важных вещах!', + 'text-welcome': 'Добро пожаловать', + 'text-sign-up-quote': 'Станьте частью большого сообщества и получайте удовольствие вместе с нами', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'Активный', + 'label-archived': 'В архиве', + 'label-archived-prj': 'Архивные проекты', + 'label-bible-translation': 'перевод Библии', + 'msg-lang-code-req': 'Требуется код языка.', + 'msg-lang-name-req': 'Укажите название языка.', + 'msg-min-three-letter': 'Введите минимум 3 символа для поиска', + 'label-prj-on-my-computer': 'Проект на моем компьютере', + 'label-save-to-cloud': 'Сохранить в облако', + 'label-last-synced': 'Последняя синхронизация', + 'label-prj-on-cloud': 'Проекты в облаке', + 'label-save-to-computer': 'Сохранить на компьютер', + 'label-view-more': 'Посмотреть больше', + 'label-create-new-user': 'Создать нового пользователя', + 'label-user-name': 'Имя пользователя', + 'label-privacy': 'Конфиденциальность', + 'label-terms': 'Условия', + 'label-collection': 'Коллекция', + 'label-select-folder': 'Выберите папку', + 'label-resources': 'Ресурсы', + 'label-lang': 'Язык', + 'label-type': 'Тип', + 'label-select-language': 'Выберите язык', + 'label-pre-release': 'Пререлиз', + 'label-save-filter': 'Сохранить фильтр', + 'label-subject': 'Предмет', + 'label-release': 'Выпускать', + 'label-version': 'Версия', + 'msg-select-dir-for-SB': 'Выберите каталог/проект, в котором есть файл Писания Буррито, т.е. файл метаданных.json', + 'label-online-resources': 'Интернет-ресурсы', + 'tooltip-download': 'скачать', + 'msg-no-resource-for-bible-obs-download': '
Этот контент недоступен для этого языка
Вы можете импортировать собственные ресурсы по буррито из Священных Писаний через вкладку «Коллекция».
Узнайте больше о создании проектов Write Burrito с помощью Scribe. См. документацию Scribe.
', + 'label-back': 'назад', + 'label-speed': 'Speed', + 'label-record': 'Record', + 'label-stop': 'Stop', + 'label-continue': 'Continue', + 'label-rewind': 'Rewind', + 'label-play': 'Play', + 'label-pause': 'Pause', + 'label-delete': 'Delete', + 'label-volume': 'Volume', + 'label-takes': 'Takes', + 'label-settings': 'Settings', + 'label-restore': 'Восстановить', + 'label-archive': 'Архив', + 'tooltip-save-cloud-btn': 'Это действие синхронизирует ваши данные с Door43.', + 'tooltip-save-computer-btn': 'Это действие клонирует или обновит ваши локальные данные данными Door43.', + 'label-choose-usfm-files': 'Выберите файлы USFM', + 'label-choose-md-files': 'Выберите файлы Markdown', + 'label-merge': 'Объединить', + 'label-abort': 'Прервать', + 'tooltip-star-project': 'Звездный проект', + 'tooltip-un-star-project': 'Снять звезду проекта', + 'tooltip-merge-all-orginal-btn': 'Примите ОРИГИНАЛ для всех неразрешенных конфликтных разделов в открытом файле.', + 'tooltip-merge-orginal-btn': 'Примите ОРИГИНАЛЬНЫЕ изменения для разрешения конфликта.', + 'tooltip-merge-all-reset-btn': 'СБРОСИТЬ открытый файл в исходное состояние', + 'tooltip-merge-all-both-btn': 'Примите ОБА изменения, чтобы разрешить конфликт.', + 'tooltip-merge-both-btn': 'Примите ОБА для всех неразрешенных разделов конфликта в открытом файле.', + 'tooltip-merge-all-new-btn': 'Примите NEW для всех неразрешенных конфликтных разделов в открытом файле.', + 'tooltip-merge-new-btn': 'Примите НОВЫЕ изменения для разрешения конфликта', + 'label-original': 'Оригинал', + 'label-new': 'Новый', + 'label-reset': 'Перезагрузить', + 'label-both': 'Оба', + 'label-overwrite': 'Перезаписать', + 'modal-title-abort-conflict-resolution': 'Прервать разрешение конфликта', + 'msg-abort-conflict-resolution': 'Хотите прервать процесс разрешения конфликта? Если вы прервете, вы потеряете весь свой прогресс и вам придется начинать все сначала.', + 'label-done': 'сделанный', + 'label-resolved': 'решено', + 'label-resolve-conflict': 'разрешить конфликт', + 'label-comparison': 'сравнение', + 'label-files': 'файлы', + 'label-re-record': 'Перезапись', + 'modal-title-re-record': 'Перезапишите аудио', + 'msg-re-record-audio': 'Хотите перезаписать звук?', + 'modal-title-delete-audio': 'Удалить аудио', + 'msg-delete-audio': 'Вы хотите удалить выбранный дубль?', + 'label-accepted': 'Принял', + 'msg-remove-resource': 'Вы уверены, что хотите удалить ресурс? Это действие нельзя отменить.', + 'label-check-updates': 'Проверить обновления', + 'label-documentation': 'Документация', + 'label-tech-support': 'техническая поддержка', + 'msg-helps-filepath': 'Помогает найти путь к ресурсу файла с реальным файлом manifest.yaml.', + 'tooltip-supported-resources': 'поддерживаемые ресурсы: TN, TW, TQ, TA', + 'label-upload-help-resources': 'Загрузить справочные ресурсы', + 'label-filter': 'фильтр', + 'label-book-selection': 'Выбор книги', + 'label-chapter-selection': 'Выбор главы', + 'label-select': 'Выбирать', + 'label-deselect': 'Отменить выбор', + 'label-start': 'Начинать', + 'label-end': 'Конец', + 'label-apply': 'Применять', + 'label-scope-not-selected': 'Чтобы начать, перейдите в раздел «Управление областью действия», выберите книгу и главы и нажмите кнопку «Применить».', + 'label-scope-note-audio': 'Выберите книгу и главу из опции УПРАВЛЕНИЕ ОБЛАСТЬЮ РАБОТ на странице со списком проектов.', + 'modal-title-scope-management': 'Управление областью действия', }; diff --git a/renderer/src/translations/te.js b/renderer/src/translations/te.js index a619101b4..e9746a73d 100644 --- a/renderer/src/translations/te.js +++ b/renderer/src/translations/te.js @@ -1,294 +1,294 @@ export const Te = { - 'app-name': 'స్క్రైబ్ స్క్రిప్చర్', - 'new-project-page': 'క్రొత్త ప్రాజెక్ట్', - 'edit-project': 'ప్రాజెక్ట్‌ని సవరించండి', - 'label-abbreviation': 'సంక్షిప్తికరణ', - 'label-target-language': 'లక్ష్య భాష', - 'label-ltr': 'ఎల్ టి ఆర్', - 'label-rtl': 'ఆర్ టి ఎల్', - 'label-books': 'పుస్తకాలు', - 'label-book': 'పుస్తకం', - 'label-import-book': 'దిగుమతి చేసుకొను పుస్తకం', - 'label-saved': 'భద్రపరచబడింది', - 'label-sync': 'సమకాలీకరణ', - 'label-comments': 'ఆక్షేపణలు', - 'label-cross-ref': 'క్రాస్ రిఫరెన్సులు', - 'label-add-footnote': 'ఫుట్‌నోట్ జోడించండి', - 'label-add-comment': 'ఆక్షేపణను జోడించండి', - 'label-add-ref': 'రిఫరెన్సులు జోడించండి', - 'label-user-menu': 'వినియోగదారు కార్యక్రమాల పట్టిక తెరవండి', - 'label-main-menu': 'ప్రాధమిక కార్యక్రమాల పట్టిక తెరవండి', - 'label-dont-have-account': 'ఖాతా లేదా?', - 'label-already-have-account': 'ఖాతా కలిగి ఉన్నారా??', - 'label-new-langauge': 'క్రొత్త భాష', - 'label-edit-langauge': 'భాషని సవరించండి', - 'label-script-direction': 'స్క్రిప్ట్ దర్శకత్వం', - 'label-drop-file-upload': 'అప్‌లోడ్ చేయడానికి ఫైల్‌లను ఇక్కడ వదలండి', - 'projects-page': 'ప్రాజెక్ట్స్', - 'label-search': 'వెతకండి', - 'label-project': 'ప్రాజెక్ట్', - 'label-flavour': 'ఫ్లేవర్', - 'label-project-type': 'ప్రాజెక్ట్ రకం', - 'label-project-name': 'ప్రాజెక్ట్ పేరు', - 'label-language': 'భాష పేరు', - 'label-language-code': 'భాష కోడ్', - 'label-all': 'అన్ని పుస్తకాలు', - 'label-other': 'ఇతర', - 'label-Gitea': 'గిటియ', - 'label-deactivate-account': 'ఖాతా డియాక్టివేట్ చేయండి', - 'label-created-date': 'సృష్టించిన తేదీ', - 'label-last-viewed': 'చివరిగా వీక్షించినది', - 'label-description': 'వివరణ', - 'label-project-id': 'ప్రాజెక్ట్ ఐడి', - 'label-sign-in': 'సైన్ ఇన్ చేయండి', - 'label-sign-up': 'సైన్అప్', - 'profile-page': 'ప్రొఫైల్', - 'label-your-profile': 'మీ ప్రొఫైల్', - 'label-username': 'వినియోగదారుని పేరు', - 'label-name': 'పేరు', - 'label-firstname': 'మొదటి పేరు', - 'label-lastname': 'చివరి పేరు', - 'label-password': 'పాస్వర్డ్', - 'label-confirm-password': 'పాస్వర్డ్ని నిర్ధారించండి', - 'label-email': 'ఇమెయిల్', - 'label-organization': 'సంస్థ', - 'label-region': 'ప్రాంతము', - 'label-app-language': 'యప్ భాష', - 'label-menu-file': 'ఫైల్', - 'label-uploading-files': 'ఫైల్‌లను అప్‌లోడ్ చేస్తోంది', - 'label-menu-edit': 'ఎడిట్', - 'label-menu-about': 'గురించి', - 'label-bookmarks': 'బుక్‌మార్క్‌లు', - 'label-custom': 'కస్టమ్', - 'label-show-hidden-file': 'దాగి ఉన్న ఫైల్‌లను చూపించు', - 'label-scope': 'స్కోప్', - 'label-door43': 'డోర్43', - 'label-paratext': 'పారాటెక్స్ట్', - 'label-license': 'లైసెన్స్', - 'label-preview': 'ప్రివ్యూ', - 'label-versification-scheme': 'వెర్సిఫికేషన్ పథకం', - 'label-old-testament': 'పాత నిబంధన', - 'label-new-testament': 'కొత్త నిబంధన', - 'label-chapter': 'అధ్యాయం', - 'label-verse': 'వచనాలు', - 'label-import-resource': 'వనరులను దిగుమతి చేయండి', - 'label-resource': 'వనరు', - 'label-resource-bible': 'బైబిలు', - 'label-resource-obs-tn': 'ఓబిఎస్ అనువాద నోట్స్', - 'label-resource-obs-tq': 'ఓబిఎస్ అనువాద ప్రశ్నలు', - 'label-resource-obs': 'ఓపెన్ బైబిలు కధలు', - 'label-resource-tn': 'అనువాద నోట్స్', - 'label-resource-twlm': 'అనువాద పదాలు', - 'label-resource-twl': 'అనువాద పదాలు పట్టిక', - 'label-resource-tq': 'అనువాద ప్రశ్నలు', - 'label-resource-ta': ' ట్రాన్స్లేషన్ అకాడమీ', - 'label-resource-name': 'వనరు పేరు', - 'label-footnotes': 'ఫుట్ నోట్స్', - 'label-location': 'స్థానము', - 'label-audio-bible': 'ఆడియో', - 'label-resource-obs-twl': 'ఓబిఎస్ అనువాద పదాలు పట్టిక', - 'placeholder-resource-name': 'వనరు పేరును నమోదు చేయండి', - 'placeholder-license-name': 'లైసెన్స్ పేరు', - 'placeholder-search': 'వెతకండి…', - 'placeholder-door43-url': 'డోర్ 43 urlని నమోదు చేయండి', - 'label-burrito-resource-path': 'స్క్రిప్చర్ బురిటో వనరు ఫైల్‌పాత్', - 'label-burrito-directory': 'స్క్రిప్చర్ బురిటో దర్శని', - 'label-export-file-path': 'ఫైల్‌పాత్ ఎగుమతి చేయండి', - 'label-import-project': 'ప్రాజెక్ట్ దిగుమతి', - 'label-export-project': 'ప్రాజెక్ట్ ఎగుమతి', - 'label-notification': 'నోటిఫికేషన్‌లు', - 'label-editor-pane': 'ఎడిటర్', - 'label-editor-font-char': 'ఏ', - 'label-upload': 'అప్లోడ్', - 'label-no-content-available': 'ఏ కంటెంట్ అందుబాటులో లేదు!', - 'label-enter-location': 'స్థానాన్ని నమోదు చేయండి', - 'label-editor-load-module': 'మాడ్యూల్‌ను లోడ్ చేయండి', - 'label-import-door43-resources': 'దిగుమతి డోర్ 43 వనరులకు సహాయపడుతుంది', - 'tooltip-editor-lock': 'నావిగేషన్ లాక్/అన్‌లాక్', - 'tooltip-editor-bookmark': 'బుక్ మార్క్', - 'tooltip-editor-notification': 'నోటిఫికేషన్‌', - 'tooltip-editor-layout': 'లేఅవుట్', - 'tooltip-editor-font-dec': 'ఫాంట్ పరిమాణాన్ని తగ్గించండి', - 'tooltip-editor-font-inc': 'ఫాంట్ పరిమాణాన్ని పెంచండి', - 'tooltip-editor-resource-selector': 'వనరుల ఎంపిక సాధనం', - 'tooltip-editor-remove-section': 'విభాగాన్ని తీసివేయండి', - 'tooltip-editor-add-section': 'విభాగాన్ని జోడించండి', - 'modal-title-license': 'లైసెన్స్', - 'modal-title-about': 'గురించి', - 'modal-title-remove-resource': 'వనరులను తీసివేయండి', - 'modal-title-update-burrito': 'బురిటోని నవీకరించండి', - 'modal-title-update-app': 'స్క్రైబ్ స్క్రిప్చర్ అప్‌డేట్!', - 'modal-title-replace-resource': 'వనరులను భర్తీ చేయండి', - 'dynamic-msg-burrito-validate-import-project': 'బురిటో విజయవంతంగా ధృవీకరించబడింది', - 'btn-new': 'కొత్తది', - 'btn-close': 'మూసివేయండి', - 'btn-ok': 'ఒకే', - 'btn-source-code': 'సోర్స్ కోడ్', - 'btn-save': 'సేవ్', - 'btn-signout': 'సైన్ అవుట్ చేయండి', - 'btn-signup': 'సైన్ అప్', - 'btn-signin': 'సైన్ ఇన్', - 'btn-edit': 'ఎడిట్', - 'btn-export': 'ఎగుమతి చేయండి', - 'btn-import': 'దిగుమతి చేయండి', - 'btn-add': 'కలుపు', - 'btn-create-project': 'ప్రాజెక్ట్ సృష్టించండి', - 'btn-import-books': 'పుస్తకాలను దిగుమతి చేయండి', - 'btn-cancel': 'రద్దు చేయండి', - 'btn-restart': 'పునఃప్రారంభించండి', - 'btn-clear': ' పరిశుభ్రంగా', - 'btn-upload': 'అప్‌లోడ్ చేయండి', - 'btn-advance-settings': 'ఆధునిక సెట్టింగులు', - 'btn-create': 'సృష్టించండి', - 'btn-all': 'అన్ని', - 'btn-ot': 'ఓటి', - 'btn-nt': 'ఎన్ టి', - 'btn-update': 'అప్డేట్', - 'btn-replace': 'భర్తీ చేయండి', - 'btn-remove': 'తొలిగించట', - 'btn-deactivate': 'నిష్క్రియం చేయండి', - 'btn-load-tn': 'లోడ్ అనువాదం గుర్తించబడింది', - 'tooltip-import-resource-info-circle': 'స్క్రిప్చర్ బురిటో ఫైల్ అంటే metadata.json ఫైల్ ఉన్న డైరెక్టరీ/ప్రాజెక్ట్‌ని ఎంచుకోండి.', - 'tooltip-import-open-file-location': 'ఫోల్డర్ స్థానాన్ని తెరవండి', - 'dynamic-msg-import-resource-snack': 'వనరుల అప్‌లోడ్ విజయవంతమైంది! దయచేసి వనరుల జాబితాను తనిఖీ చేయండి', - 'dynamic-msg-unable-find-buritto-snack': 'బురిటో ఫైల్ (metadata.json) కనుగొనబడలేదు.', - 'dynamic-msg-unable-invalid-buritto-snack': 'చెల్లని బురిటో ఫైల్ (metadata.json).', - 'dynamic-msg-confirm-replace-resource': 'ఆర్కైవ్ చేసిన ట్యాబ్" లేదా "ప్రాజెక్ట్స్ ట్యాబ్" తనిఖీ చేయండి. అతివ్యాప్తి చెందుతున్న పుస్తకాలలో ఇప్పటికే ఉన్న ఏదైనా కంటెంట్‌ని ఓవర్‌రైట్ చేయడానికి "రీప్లేస్" నొక్కండి. ప్రాజెక్ట్‌ను ప్రస్తుత ప్రాజెక్ట్‌తో కలపడానికి "విలీనం" నొక్కండి. మార్పులను నివారించడానికి "రద్దు చేయి" నొక్కండి.', - 'dynamic-msg-resource-added': 'అదే పేరుతో ఇప్పటికే ఉన్న ప్రాజెక్ట్ కనుగొనబడింది!', - 'dynamic-msg-resource-unable-fetch-url': 'ఇచ్చిన url నుండి ఎంచుకున్న వనరును పొందడం సాధ్యం కాలేదు', - 'dynamic-msg-load-ref-bible-snack': 'ఫైల్‌లు విజయవంతంగా లోడ్ అయింది {{refName}} ఫైల్‌లు', - 'dynamic-msg-load-ref-bible-snack-fail': 'ఫైల్‌లను లోడ్ చేయడంలో విఫలమైంది {{refName}} ఫైల్‌లు', - 'dynamic-msg-load-ref-bible-success': 'సూచన-బురిటో విజయవంతంగా లోడ్ చేయబడింది', - 'dynamic-msg-validate-hook-project-name': 'ఇన్‌పుట్ మధ్య ఉండాలి {{minLen}} మరియు {{maxLen}} అక్షరాల పొడవు ఉండాలి', - 'dynamic-msg-update-burrito-version': 'బురిటోను {{version1}} నుండి {{version2}}కి నవీకరించండి అప్డేట్', - 'dynamic-msg-validate-hook-onlyNum': 'దయచేసి సంఖ్యలను మాత్రమే నమోదు చేయండి.', - 'dynamic-msg-validate-hook-onlyString': 'దయచేసి వర్ణమాలలను మాత్రమే నమోదు చేయండి', - 'dynamic-msg-validate-hook-nonSpecChar': 'ప్రత్యేక పాత్రలు అనుమతించబడవు', - 'dynamic-msg-validate-hook-alphaNum': 'అక్షరాలు మరియు సంఖ్యలు మాత్రమే అనుమతించబడతాయి', - 'dynamic-msg-validate-hook-email': 'ఇమెయిల్ చెల్లదు!', - 'dynamic-msg-auto-update': 'కొత్త స్క్రైబ్ స్క్రిప్చర్ అప్‌డేట్ అందుబాటులో ఉంది. ఇప్పుడు డౌన్‌లోడ్ చేస్తోంది...', - 'dynamic-msg-auto-update-complete': 'యప్‌డేట్ డౌన్‌లోడ్ చేయబడింది. ఇది పునఃప్రారంభించినప్పుడు ఇన్స్టాల్ చేయబడుతుంది. ఇప్పుడే పునఃప్రారంభించాలా?', - 'dynamic-msg-import-burrito-project-success': 'ప్రాజెక్ట్ విజయవంతంగా దిగుమతి చేయబడింది', - 'dynamic-msg-deactivate-account': 'మీరు ఖచ్చితంగా మీ ఖాతాను నిష్క్రియం చేయాలనుకుంటున్నారా? మీ డేటా మొత్తం శాశ్వతంగా తీసివేయబడుతుంది. ఈ చర్య రద్దు చేయబడదు.', - 'dynamic-msg-project-updated': 'ప్రొఫైల్ అప్‌డేట్ చేయబడింది.', - 'dynamic-msg-app-lang-changed': 'యప్ భాష మార్చబడింది.', - 'dynamic-msg-data-read-fail': 'ఫైల్ నుండి డేటాను చదవడంలో విఫలమైంది.', - 'dynamic-msg-export-success': 'విజయవంతంగా ఎగుమతి చేయబడింది', - 'dynamic-msg-export-fail': 'ఎగుమతి చేయడంలో విఫలమైంది', - 'dynamic-msg-invalid-path': 'చెల్లని పాత్', - 'dynamic-msg-invalid-usfm-file': 'చెల్లని USFM ఫైల్.', - 'dynamic-msg-invalid-md-file': 'చెల్లని MD ఫైల్.', - 'dynamic-msg-fill-all-fields': 'అన్ని ఫీల్డ్‌లను పూరించండి', - 'dynamic-msg-burrito-validation-expected': '{{version}}కి బదులుగా ఊహించిన బురిటో వెర్షన్ 0.3.0', - 'dynamic-msg-burrito-validation-failed': 'బురిటో ప్రమాణీకరణ విఫలమైంది', - 'text-login-page-desc': 'స్క్రైబ్ స్క్రిప్చర్ అనేది ముఖ్యమైన విషయాలపై దృష్టి పెట్టడంలో మీకు సహాయపడటానికి శక్తివంతమైన ఇంకా సొగసైన ఫీచర్‌లతో స్క్రిప్చర్ మరియు సంబంధిత వనరులను సవరించడానికి పూర్తిగా కొత్త మార్గం!', - 'text-welcome': 'స్వాగతం', - 'text-sign-up-quote': 'గొప్ప సంఘంలో భాగమై మాతో ఆనందించండి', - 'n-0': '0', - 'n-1': '1', - 'n-2': '2', - 'n-3': '3', - 'n-4': '4', - 'n-5': '5', - 'n-6': '6', - 'n-7': '7', - 'n-8': '8', - 'n-9': '9', - 'label-active': 'ఆక్టివ్', - 'label-archived': 'ఆర్కైవ్', - 'label-archived-prj': 'ఆర్కైవ్ చేసిన ప్రాజెక్ట్‌లు', - 'label-bible-translation': 'బైబిల్ అనువాదం', - 'msg-lang-code-req': 'భాషా కోడ్ అవసరం', - 'msg-lang-name-req': 'భాష పేరు అవసరం', - 'msg-min-three-letter': 'అన్వేషించుట కోసం కనీసం 3 అక్షరాలను టైప్ చేయండి', - 'label-prj-on-my-computer': 'నా కంప్యూటర్‌లో ప్రాజెక్ట్', - 'label-save-to-cloud': 'క్లౌడ్‌లో సేవ్ చేయండి', - 'label-last-synced': 'చివరిగా సమకాలీకరించబడింది', - 'label-prj-on-cloud': 'క్లౌడ్‌లో ప్రాజెక్ట్‌లు', - 'label-save-to-computer': 'కంప్యూటర్‌లో సేవ్ చేయండి', - 'label-view-more': 'మరిన్ని చూడండి', - 'label-create-new-user': 'కొత్త వినియోగదారుని సృష్టించండి', - 'label-user-name': 'వినియోగదారు పేరు', - 'label-privacy': 'గోప్యత', - 'label-terms': 'నిబంధనలు', - 'label-collection': 'సేకరణ', - 'label-select-folder': 'ఫోల్డర్‌ని ఎంచుకోండి', - 'label-resources': 'వనరులు', - 'label-lang': 'భాష', - 'label-type': 'టైప్ చేయండి', - 'label-select-language': 'భాషను ఎంచుకోండి', - 'label-pre-release': 'ముందుగా - విడుదల', - 'label-save-filter': 'ఫిల్టర్‌ను భద్రము చేయండి', - 'label-subject': 'పాఠ్యాంశము', - 'label-release': 'విడుదల', - 'label-version': 'వెర్షన్', - 'msg-select-dir-for-SB': 'స్క్రిప్చర్ బురిటో ఫైల్ I.e ఉన్న డైరెక్టరీ/ప్రాజెక్ట్‌ని ఎంచుకోండి. metadata.json ఫైల్', - 'label-online-resources': 'ఆన్‌లైన్ వనరులు', - 'tooltip-download': 'డౌన్‌లోడ్ చేయండి', - 'msg-no-resource-for-bible-obs-download': '
ఈ కంటెంట్ ఈ భాషకు అందుబాటులో లేదు
మీరు స్క్రిప్చర్ బురిటో వనరులను దిగుమతి చేసుకోవచ్చు. "bold" }}> సేకరణ tab.
Scribeతో స్క్రిప్చర్ బురిటో ప్రాజెక్ట్‌లను సృష్టించడం గురించి మరింత తెలుసుకోండి. స్క్రైబ్ డాక్స్.
ని చూడండి.
', - 'label-back': 'వెనుక', - 'label-speed': 'వేగము', - 'label-record': 'రికార్డ్ చేయండి', - 'label-stop': 'ఆపు', - 'label-continue': 'కొనసాగించు', - 'label-rewind': 'వెనక్కు చేయండి', - 'label-play': 'ప్లే చేయండి', - 'label-pause': 'నిలుపు', - 'label-delete': 'తొలగించు', - 'label-volume': 'వాల్యూమ్', - 'label-takes': 'తీసుకుంటాడు', - 'label-settings': 'సెట్టింగ్‌లు', - 'label-restore': 'పునరుద్ధరించు', - 'label-archive': 'భద్రపరచు', - 'tooltip-save-cloud-btn': 'ఈ చర్య మీ డేటాను Door43కి సమకాలీకరిస్తుంది ', - 'tooltip-save-computer-btn': 'ఈ చర్య మీ స్థానిక డేటాను Door43 డేటాతో క్లోన్ చేస్తుంది లేదా అప్‌డేట్ చేస్తుంది', - 'label-choose-usfm-files': 'USFM ఫైల్‌లను ఎన్నుకోండి', - 'label-choose-md-files': 'మార్క్‌డౌన్ ఫైల్‌లను ఎన్నుకోండి', - 'label-merge': 'విలీనం', - 'label-abort': 'రద్దు', - 'tooltip-star-project': 'స్టార్ ప్రాజెక్ట్', - 'tooltip-un-star-project': 'అన్‌స్టార్ ప్రాజెక్ట్', - 'tooltip-merge-all-orginal-btn': 'తెరిచిన ఫైల్‌లోని అన్ని పరిష్కరించబడని వైరుధ్య విభాగాల కోసం ఒరిజినల్‌ని అంగీకరించండి', - 'tooltip-merge-orginal-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి అసలు మార్పులను ఆమోదించండి', - 'tooltip-merge-all-reset-btn': 'తెరిచిన ఫైల్‌ని ప్రారంభ స్థితికి రీసెట్ చేయండి', - 'tooltip-merge-all-both-btn': 'తెరిచిన ఫైల్‌లోని అన్ని పరిష్కరించబడని వైరుధ్య విభాగాల కోసం రెండింటినీ ఆమోదించండి', - 'tooltip-merge-both-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి రెండు మార్పులను ఆమోదించండి', - 'tooltip-merge-all-new-btn': 'వివాద పరిష్కార ఫైల్‌లో పరిష్కారం కాని అన్ని సంఘర్షణ విభాగాల కోసం క్రొత్తదాన్ని ఆమోదించండి', - 'tooltip-merge-new-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి కొత్త మార్పులను ఆమోదించండి', - 'label-original': 'అసలైనది', - 'label-new': 'కొత్త', - 'label-reset': 'రీసెట్ చేయండి', - 'label-both': 'అవి రెండు', - 'label-overwrite': 'దిద్దిరాయటం', - 'modal-title-abort-conflict-resolution': 'వివాద పరిష్కారాన్ని రద్దు చేయండి', - 'msg-abort-conflict-resolution': 'మీరు సంఘర్షణ పరిష్కార ప్రక్రియను నిలిపివేయాలనుకుంటున్నారా. మీరు అబార్ట్ చేస్తే, మీరు మీ పురోగతి మొత్తాన్ని కోల్పోతారు మరియు మళ్లీ ప్రారంభించాలి.', - 'label-done': 'పూర్తి', - 'label-resolved': 'పరిష్కరించబడింది', - 'label-resolve-conflict': 'సంఘర్షణను పరిష్కరించండి', - 'label-comparison': 'పోల్చిచూచుట', - 'label-files': 'ఫైల్స్', - 'label-re-record': 'మళ్లీ రికార్డ్', - 'modal-title-re-record': 'ఆడియోని మళ్లీ రికార్డ్ చేయండి', - 'msg-re-record-audio': 'మీరు ఆడియోని మళ్లీ రికార్డ్ చేయాలనుకుంటున్నారా', - 'modal-title-delete-audio': 'తోలిగించటం', - 'msg-delete-audio': 'మీరు ఎంచుకుని తీసుకున్న దానిని తొలగించాలనుకుంటున్నారా?', - 'label-accepted': 'అంగీకరించిన', - 'msg-remove-resource': 'మీరు ఖచ్చితంగా వనరును తీసివేయాలనుకుంటున్నారా. ఈ చర్య వెనక్కి తీసుకోబడదు', - 'label-check-updates': 'అప్డేట్స్ తనికి', - 'label-documentation': 'డాక్యుమెంటేషన్', - 'label-tech-support': 'సాంకేతిక మద్దతు', - 'msg-helps-filepath': 'చెల్లుబాటు అయ్యే మానిఫెస్ట్.yamlతో రిసోర్స్ ఫైల్‌పాత్‌కు సహాయం చేస్తుంది', - 'tooltip-supported-resources': 'మద్దతు ఉన్న వనరులు TN, TW, TQ, TA', - 'label-upload-help-resources': 'సహాయ వనరులను అప్‌లోడ్ చేయండి', - 'label-filter': 'ఫిల్టర్', - 'label-book-selection': 'పుస్తక ఎంపిక', - 'label-chapter-selection': 'అధ్యాయం ఎంపిక', - 'label-select': 'ఎంచుకోండి', - 'label-deselect': 'ఎంపికను తీసివేయండి', - 'label-start': 'ప్రారంభించండి', - 'label-end': 'ముగింపు', - 'label-apply': 'దరఖాస్తు చేసుకోండి', - 'label-scope-not-selected': 'ప్రారంభించడానికి, స్కోప్ మేనేజ్‌మెంట్‌కి వెళ్లి పుస్తకం మరియు అధ్యాయాలను ఎంచుకుని, వర్తించు బటన్‌ను క్లిక్ చేయండి', - 'label-scope-note-audio': 'ప్రాజెక్ట్ జాబితా పేజీలో స్కోప్ మేనేజ్‌మెంట్ ఎంపిక నుండి పుస్తకం మరియు అధ్యాయాన్ని ఎంచుకోండి', - 'modal-title-scope-management': 'స్కోప్ మేనేజ్‌మెంట్', + 'app-name': 'స్క్రైబ్ స్క్రిప్చర్', + 'new-project-page': 'క్రొత్త ప్రాజెక్ట్', + 'edit-project': 'ప్రాజెక్ట్‌ని సవరించండి', + 'label-abbreviation': 'సంక్షిప్తికరణ', + 'label-target-language': 'లక్ష్య భాష', + 'label-ltr': 'ఎల్ టి ఆర్', + 'label-rtl': 'ఆర్ టి ఎల్', + 'label-books': 'పుస్తకాలు', + 'label-book': 'పుస్తకం', + 'label-import-book': 'దిగుమతి చేసుకొను పుస్తకం', + 'label-saved': 'భద్రపరచబడింది', + 'label-sync': 'సమకాలీకరణ', + 'label-comments': 'ఆక్షేపణలు', + 'label-cross-ref': 'క్రాస్ రిఫరెన్సులు', + 'label-add-footnote': 'ఫుట్‌నోట్ జోడించండి', + 'label-add-comment': 'ఆక్షేపణను జోడించండి', + 'label-add-ref': 'రిఫరెన్సులు జోడించండి', + 'label-user-menu': 'వినియోగదారు కార్యక్రమాల పట్టిక తెరవండి', + 'label-main-menu': 'ప్రాధమిక కార్యక్రమాల పట్టిక తెరవండి', + 'label-dont-have-account': 'ఖాతా లేదా?', + 'label-already-have-account': 'ఖాతా కలిగి ఉన్నారా??', + 'label-new-langauge': 'క్రొత్త భాష', + 'label-edit-langauge': 'భాషని సవరించండి', + 'label-script-direction': 'స్క్రిప్ట్ దర్శకత్వం', + 'label-drop-file-upload': 'అప్‌లోడ్ చేయడానికి ఫైల్‌లను ఇక్కడ వదలండి', + 'projects-page': 'ప్రాజెక్ట్స్', + 'label-search': 'వెతకండి', + 'label-project': 'ప్రాజెక్ట్', + 'label-flavour': 'ఫ్లేవర్', + 'label-project-type': 'ప్రాజెక్ట్ రకం', + 'label-project-name': 'ప్రాజెక్ట్ పేరు', + 'label-language': 'భాష పేరు', + 'label-language-code': 'భాష కోడ్', + 'label-all': 'అన్ని పుస్తకాలు', + 'label-other': 'ఇతర', + 'label-Gitea': 'గిటియ', + 'label-deactivate-account': 'ఖాతా డియాక్టివేట్ చేయండి', + 'label-created-date': 'సృష్టించిన తేదీ', + 'label-last-viewed': 'చివరిగా వీక్షించినది', + 'label-description': 'వివరణ', + 'label-project-id': 'ప్రాజెక్ట్ ఐడి', + 'label-sign-in': 'సైన్ ఇన్ చేయండి', + 'label-sign-up': 'సైన్అప్', + 'profile-page': 'ప్రొఫైల్', + 'label-your-profile': 'మీ ప్రొఫైల్', + 'label-username': 'వినియోగదారుని పేరు', + 'label-name': 'పేరు', + 'label-firstname': 'మొదటి పేరు', + 'label-lastname': 'చివరి పేరు', + 'label-password': 'పాస్వర్డ్', + 'label-confirm-password': 'పాస్వర్డ్ని నిర్ధారించండి', + 'label-email': 'ఇమెయిల్', + 'label-organization': 'సంస్థ', + 'label-region': 'ప్రాంతము', + 'label-app-language': 'యప్ భాష', + 'label-menu-file': 'ఫైల్', + 'label-uploading-files': 'ఫైల్‌లను అప్‌లోడ్ చేస్తోంది', + 'label-menu-edit': 'ఎడిట్', + 'label-menu-about': 'గురించి', + 'label-bookmarks': 'బుక్‌మార్క్‌లు', + 'label-custom': 'కస్టమ్', + 'label-show-hidden-file': 'దాగి ఉన్న ఫైల్‌లను చూపించు', + 'label-scope': 'స్కోప్', + 'label-door43': 'డోర్43', + 'label-paratext': 'పారాటెక్స్ట్', + 'label-license': 'లైసెన్స్', + 'label-preview': 'ప్రివ్యూ', + 'label-versification-scheme': 'వెర్సిఫికేషన్ పథకం', + 'label-old-testament': 'పాత నిబంధన', + 'label-new-testament': 'కొత్త నిబంధన', + 'label-chapter': 'అధ్యాయం', + 'label-verse': 'వచనాలు', + 'label-import-resource': 'వనరులను దిగుమతి చేయండి', + 'label-resource': 'వనరు', + 'label-resource-bible': 'బైబిలు', + 'label-resource-obs-tn': 'ఓబిఎస్ అనువాద నోట్స్', + 'label-resource-obs-tq': 'ఓబిఎస్ అనువాద ప్రశ్నలు', + 'label-resource-obs': 'ఓపెన్ బైబిలు కధలు', + 'label-resource-tn': 'అనువాద నోట్స్', + 'label-resource-twlm': 'అనువాద పదాలు', + 'label-resource-twl': 'అనువాద పదాలు పట్టిక', + 'label-resource-tq': 'అనువాద ప్రశ్నలు', + 'label-resource-ta': ' ట్రాన్స్లేషన్ అకాడమీ', + 'label-resource-name': 'వనరు పేరు', + 'label-footnotes': 'ఫుట్ నోట్స్', + 'label-location': 'స్థానము', + 'label-audio-bible': 'ఆడియో', + 'label-resource-obs-twl': 'ఓబిఎస్ అనువాద పదాలు పట్టిక', + 'placeholder-resource-name': 'వనరు పేరును నమోదు చేయండి', + 'placeholder-license-name': 'లైసెన్స్ పేరు', + 'placeholder-search': 'వెతకండి…', + 'placeholder-door43-url': 'డోర్ 43 urlని నమోదు చేయండి', + 'label-burrito-resource-path': 'స్క్రిప్చర్ బురిటో వనరు ఫైల్‌పాత్', + 'label-burrito-directory': 'స్క్రిప్చర్ బురిటో దర్శని', + 'label-export-file-path': 'ఫైల్‌పాత్ ఎగుమతి చేయండి', + 'label-import-project': 'ప్రాజెక్ట్ దిగుమతి', + 'label-export-project': 'ప్రాజెక్ట్ ఎగుమతి', + 'label-notification': 'నోటిఫికేషన్‌లు', + 'label-editor-pane': 'ఎడిటర్', + 'label-editor-font-char': 'ఏ', + 'label-upload': 'అప్లోడ్', + 'label-no-content-available': 'ఏ కంటెంట్ అందుబాటులో లేదు!', + 'label-enter-location': 'స్థానాన్ని నమోదు చేయండి', + 'label-editor-load-module': 'మాడ్యూల్‌ను లోడ్ చేయండి', + 'label-import-door43-resources': 'దిగుమతి డోర్ 43 వనరులకు సహాయపడుతుంది', + 'tooltip-editor-lock': 'నావిగేషన్ లాక్/అన్‌లాక్', + 'tooltip-editor-bookmark': 'బుక్ మార్క్', + 'tooltip-editor-notification': 'నోటిఫికేషన్‌', + 'tooltip-editor-layout': 'లేఅవుట్', + 'tooltip-editor-font-dec': 'ఫాంట్ పరిమాణాన్ని తగ్గించండి', + 'tooltip-editor-font-inc': 'ఫాంట్ పరిమాణాన్ని పెంచండి', + 'tooltip-editor-resource-selector': 'వనరుల ఎంపిక సాధనం', + 'tooltip-editor-remove-section': 'విభాగాన్ని తీసివేయండి', + 'tooltip-editor-add-section': 'విభాగాన్ని జోడించండి', + 'modal-title-license': 'లైసెన్స్', + 'modal-title-about': 'గురించి', + 'modal-title-remove-resource': 'వనరులను తీసివేయండి', + 'modal-title-update-burrito': 'బురిటోని నవీకరించండి', + 'modal-title-update-app': 'స్క్రైబ్ స్క్రిప్చర్ అప్‌డేట్!', + 'modal-title-replace-resource': 'వనరులను భర్తీ చేయండి', + 'dynamic-msg-burrito-validate-import-project': 'బురిటో విజయవంతంగా ధృవీకరించబడింది', + 'btn-new': 'కొత్తది', + 'btn-close': 'మూసివేయండి', + 'btn-ok': 'ఒకే', + 'btn-source-code': 'సోర్స్ కోడ్', + 'btn-save': 'సేవ్', + 'btn-signout': 'సైన్ అవుట్ చేయండి', + 'btn-signup': 'సైన్ అప్', + 'btn-signin': 'సైన్ ఇన్', + 'btn-edit': 'ఎడిట్', + 'btn-export': 'ఎగుమతి చేయండి', + 'btn-import': 'దిగుమతి చేయండి', + 'btn-add': 'కలుపు', + 'btn-create-project': 'ప్రాజెక్ట్ సృష్టించండి', + 'btn-import-books': 'పుస్తకాలను దిగుమతి చేయండి', + 'btn-cancel': 'రద్దు చేయండి', + 'btn-restart': 'పునఃప్రారంభించండి', + 'btn-clear': ' పరిశుభ్రంగా', + 'btn-upload': 'అప్‌లోడ్ చేయండి', + 'btn-advance-settings': 'ఆధునిక సెట్టింగులు', + 'btn-create': 'సృష్టించండి', + 'btn-all': 'అన్ని', + 'btn-ot': 'ఓటి', + 'btn-nt': 'ఎన్ టి', + 'btn-update': 'అప్డేట్', + 'btn-replace': 'భర్తీ చేయండి', + 'btn-remove': 'తొలిగించట', + 'btn-deactivate': 'నిష్క్రియం చేయండి', + 'btn-load-tn': 'లోడ్ అనువాదం గుర్తించబడింది', + 'tooltip-import-resource-info-circle': 'స్క్రిప్చర్ బురిటో ఫైల్ అంటే metadata.json ఫైల్ ఉన్న డైరెక్టరీ/ప్రాజెక్ట్‌ని ఎంచుకోండి.', + 'tooltip-import-open-file-location': 'ఫోల్డర్ స్థానాన్ని తెరవండి', + 'dynamic-msg-import-resource-snack': 'వనరుల అప్‌లోడ్ విజయవంతమైంది! దయచేసి వనరుల జాబితాను తనిఖీ చేయండి', + 'dynamic-msg-unable-find-buritto-snack': 'బురిటో ఫైల్ (metadata.json) కనుగొనబడలేదు.', + 'dynamic-msg-unable-invalid-buritto-snack': 'చెల్లని బురిటో ఫైల్ (metadata.json).', + 'dynamic-msg-confirm-replace-resource': 'ఆర్కైవ్ చేసిన ట్యాబ్" లేదా "ప్రాజెక్ట్స్ ట్యాబ్" తనిఖీ చేయండి. అతివ్యాప్తి చెందుతున్న పుస్తకాలలో ఇప్పటికే ఉన్న ఏదైనా కంటెంట్‌ని ఓవర్‌రైట్ చేయడానికి "రీప్లేస్" నొక్కండి. ప్రాజెక్ట్‌ను ప్రస్తుత ప్రాజెక్ట్‌తో కలపడానికి "విలీనం" నొక్కండి. మార్పులను నివారించడానికి "రద్దు చేయి" నొక్కండి.', + 'dynamic-msg-resource-added': 'అదే పేరుతో ఇప్పటికే ఉన్న ప్రాజెక్ట్ కనుగొనబడింది!', + 'dynamic-msg-resource-unable-fetch-url': 'ఇచ్చిన url నుండి ఎంచుకున్న వనరును పొందడం సాధ్యం కాలేదు', + 'dynamic-msg-load-ref-bible-snack': 'ఫైల్‌లు విజయవంతంగా లోడ్ అయింది {{refName}} ఫైల్‌లు', + 'dynamic-msg-load-ref-bible-snack-fail': 'ఫైల్‌లను లోడ్ చేయడంలో విఫలమైంది {{refName}} ఫైల్‌లు', + 'dynamic-msg-load-ref-bible-success': 'సూచన-బురిటో విజయవంతంగా లోడ్ చేయబడింది', + 'dynamic-msg-validate-hook-project-name': 'ఇన్‌పుట్ మధ్య ఉండాలి {{minLen}} మరియు {{maxLen}} అక్షరాల పొడవు ఉండాలి', + 'dynamic-msg-update-burrito-version': 'బురిటోను {{version1}} నుండి {{version2}}కి నవీకరించండి అప్డేట్', + 'dynamic-msg-validate-hook-onlyNum': 'దయచేసి సంఖ్యలను మాత్రమే నమోదు చేయండి.', + 'dynamic-msg-validate-hook-onlyString': 'దయచేసి వర్ణమాలలను మాత్రమే నమోదు చేయండి', + 'dynamic-msg-validate-hook-nonSpecChar': 'ప్రత్యేక పాత్రలు అనుమతించబడవు', + 'dynamic-msg-validate-hook-alphaNum': 'అక్షరాలు మరియు సంఖ్యలు మాత్రమే అనుమతించబడతాయి', + 'dynamic-msg-validate-hook-email': 'ఇమెయిల్ చెల్లదు!', + 'dynamic-msg-auto-update': 'కొత్త స్క్రైబ్ స్క్రిప్చర్ అప్‌డేట్ అందుబాటులో ఉంది. ఇప్పుడు డౌన్‌లోడ్ చేస్తోంది...', + 'dynamic-msg-auto-update-complete': 'యప్‌డేట్ డౌన్‌లోడ్ చేయబడింది. ఇది పునఃప్రారంభించినప్పుడు ఇన్స్టాల్ చేయబడుతుంది. ఇప్పుడే పునఃప్రారంభించాలా?', + 'dynamic-msg-import-burrito-project-success': 'ప్రాజెక్ట్ విజయవంతంగా దిగుమతి చేయబడింది', + 'dynamic-msg-deactivate-account': 'మీరు ఖచ్చితంగా మీ ఖాతాను నిష్క్రియం చేయాలనుకుంటున్నారా? మీ డేటా మొత్తం శాశ్వతంగా తీసివేయబడుతుంది. ఈ చర్య రద్దు చేయబడదు.', + 'dynamic-msg-project-updated': 'ప్రొఫైల్ అప్‌డేట్ చేయబడింది.', + 'dynamic-msg-app-lang-changed': 'యప్ భాష మార్చబడింది.', + 'dynamic-msg-data-read-fail': 'ఫైల్ నుండి డేటాను చదవడంలో విఫలమైంది.', + 'dynamic-msg-export-success': 'విజయవంతంగా ఎగుమతి చేయబడింది', + 'dynamic-msg-export-fail': 'ఎగుమతి చేయడంలో విఫలమైంది', + 'dynamic-msg-invalid-path': 'చెల్లని పాత్', + 'dynamic-msg-invalid-usfm-file': 'చెల్లని USFM ఫైల్.', + 'dynamic-msg-invalid-md-file': 'చెల్లని MD ఫైల్.', + 'dynamic-msg-fill-all-fields': 'అన్ని ఫీల్డ్‌లను పూరించండి', + 'dynamic-msg-burrito-validation-expected': '{{version}}కి బదులుగా ఊహించిన బురిటో వెర్షన్ 0.3.0', + 'dynamic-msg-burrito-validation-failed': 'బురిటో ప్రమాణీకరణ విఫలమైంది', + 'text-login-page-desc': 'స్క్రైబ్ స్క్రిప్చర్ అనేది ముఖ్యమైన విషయాలపై దృష్టి పెట్టడంలో మీకు సహాయపడటానికి శక్తివంతమైన ఇంకా సొగసైన ఫీచర్‌లతో స్క్రిప్చర్ మరియు సంబంధిత వనరులను సవరించడానికి పూర్తిగా కొత్త మార్గం!', + 'text-welcome': 'స్వాగతం', + 'text-sign-up-quote': 'గొప్ప సంఘంలో భాగమై మాతో ఆనందించండి', + 'n-0': '0', + 'n-1': '1', + 'n-2': '2', + 'n-3': '3', + 'n-4': '4', + 'n-5': '5', + 'n-6': '6', + 'n-7': '7', + 'n-8': '8', + 'n-9': '9', + 'label-active': 'ఆక్టివ్', + 'label-archived': 'ఆర్కైవ్', + 'label-archived-prj': 'ఆర్కైవ్ చేసిన ప్రాజెక్ట్‌లు', + 'label-bible-translation': 'బైబిల్ అనువాదం', + 'msg-lang-code-req': 'భాషా కోడ్ అవసరం', + 'msg-lang-name-req': 'భాష పేరు అవసరం', + 'msg-min-three-letter': 'అన్వేషించుట కోసం కనీసం 3 అక్షరాలను టైప్ చేయండి', + 'label-prj-on-my-computer': 'నా కంప్యూటర్‌లో ప్రాజెక్ట్', + 'label-save-to-cloud': 'క్లౌడ్‌లో సేవ్ చేయండి', + 'label-last-synced': 'చివరిగా సమకాలీకరించబడింది', + 'label-prj-on-cloud': 'క్లౌడ్‌లో ప్రాజెక్ట్‌లు', + 'label-save-to-computer': 'కంప్యూటర్‌లో సేవ్ చేయండి', + 'label-view-more': 'మరిన్ని చూడండి', + 'label-create-new-user': 'కొత్త వినియోగదారుని సృష్టించండి', + 'label-user-name': 'వినియోగదారు పేరు', + 'label-privacy': 'గోప్యత', + 'label-terms': 'నిబంధనలు', + 'label-collection': 'సేకరణ', + 'label-select-folder': 'ఫోల్డర్‌ని ఎంచుకోండి', + 'label-resources': 'వనరులు', + 'label-lang': 'భాష', + 'label-type': 'టైప్ చేయండి', + 'label-select-language': 'భాషను ఎంచుకోండి', + 'label-pre-release': 'ముందుగా - విడుదల', + 'label-save-filter': 'ఫిల్టర్‌ను భద్రము చేయండి', + 'label-subject': 'పాఠ్యాంశము', + 'label-release': 'విడుదల', + 'label-version': 'వెర్షన్', + 'msg-select-dir-for-SB': 'స్క్రిప్చర్ బురిటో ఫైల్ I.e ఉన్న డైరెక్టరీ/ప్రాజెక్ట్‌ని ఎంచుకోండి. metadata.json ఫైల్', + 'label-online-resources': 'ఆన్‌లైన్ వనరులు', + 'tooltip-download': 'డౌన్‌లోడ్ చేయండి', + 'msg-no-resource-for-bible-obs-download': '
ఈ కంటెంట్ ఈ భాషకు అందుబాటులో లేదు
మీరు స్క్రిప్చర్ బురిటో వనరులను దిగుమతి చేసుకోవచ్చు. "bold" }}> సేకరణ tab.
Scribeతో స్క్రిప్చర్ బురిటో ప్రాజెక్ట్‌లను సృష్టించడం గురించి మరింత తెలుసుకోండి. స్క్రైబ్ డాక్స్.
ని చూడండి.
', + 'label-back': 'వెనుక', + 'label-speed': 'వేగము', + 'label-record': 'రికార్డ్ చేయండి', + 'label-stop': 'ఆపు', + 'label-continue': 'కొనసాగించు', + 'label-rewind': 'వెనక్కు చేయండి', + 'label-play': 'ప్లే చేయండి', + 'label-pause': 'నిలుపు', + 'label-delete': 'తొలగించు', + 'label-volume': 'వాల్యూమ్', + 'label-takes': 'తీసుకుంటాడు', + 'label-settings': 'సెట్టింగ్‌లు', + 'label-restore': 'పునరుద్ధరించు', + 'label-archive': 'భద్రపరచు', + 'tooltip-save-cloud-btn': 'ఈ చర్య మీ డేటాను Door43కి సమకాలీకరిస్తుంది ', + 'tooltip-save-computer-btn': 'ఈ చర్య మీ స్థానిక డేటాను Door43 డేటాతో క్లోన్ చేస్తుంది లేదా అప్‌డేట్ చేస్తుంది', + 'label-choose-usfm-files': 'USFM ఫైల్‌లను ఎన్నుకోండి', + 'label-choose-md-files': 'మార్క్‌డౌన్ ఫైల్‌లను ఎన్నుకోండి', + 'label-merge': 'విలీనం', + 'label-abort': 'రద్దు', + 'tooltip-star-project': 'స్టార్ ప్రాజెక్ట్', + 'tooltip-un-star-project': 'అన్‌స్టార్ ప్రాజెక్ట్', + 'tooltip-merge-all-orginal-btn': 'తెరిచిన ఫైల్‌లోని అన్ని పరిష్కరించబడని వైరుధ్య విభాగాల కోసం ఒరిజినల్‌ని అంగీకరించండి', + 'tooltip-merge-orginal-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి అసలు మార్పులను ఆమోదించండి', + 'tooltip-merge-all-reset-btn': 'తెరిచిన ఫైల్‌ని ప్రారంభ స్థితికి రీసెట్ చేయండి', + 'tooltip-merge-all-both-btn': 'తెరిచిన ఫైల్‌లోని అన్ని పరిష్కరించబడని వైరుధ్య విభాగాల కోసం రెండింటినీ ఆమోదించండి', + 'tooltip-merge-both-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి రెండు మార్పులను ఆమోదించండి', + 'tooltip-merge-all-new-btn': 'వివాద పరిష్కార ఫైల్‌లో పరిష్కారం కాని అన్ని సంఘర్షణ విభాగాల కోసం క్రొత్తదాన్ని ఆమోదించండి', + 'tooltip-merge-new-btn': 'వైరుధ్యాన్ని పరిష్కరించడానికి కొత్త మార్పులను ఆమోదించండి', + 'label-original': 'అసలైనది', + 'label-new': 'కొత్త', + 'label-reset': 'రీసెట్ చేయండి', + 'label-both': 'అవి రెండు', + 'label-overwrite': 'దిద్దిరాయటం', + 'modal-title-abort-conflict-resolution': 'వివాద పరిష్కారాన్ని రద్దు చేయండి', + 'msg-abort-conflict-resolution': 'మీరు సంఘర్షణ పరిష్కార ప్రక్రియను నిలిపివేయాలనుకుంటున్నారా. మీరు అబార్ట్ చేస్తే, మీరు మీ పురోగతి మొత్తాన్ని కోల్పోతారు మరియు మళ్లీ ప్రారంభించాలి.', + 'label-done': 'పూర్తి', + 'label-resolved': 'పరిష్కరించబడింది', + 'label-resolve-conflict': 'సంఘర్షణను పరిష్కరించండి', + 'label-comparison': 'పోల్చిచూచుట', + 'label-files': 'ఫైల్స్', + 'label-re-record': 'మళ్లీ రికార్డ్', + 'modal-title-re-record': 'ఆడియోని మళ్లీ రికార్డ్ చేయండి', + 'msg-re-record-audio': 'మీరు ఆడియోని మళ్లీ రికార్డ్ చేయాలనుకుంటున్నారా', + 'modal-title-delete-audio': 'తోలిగించటం', + 'msg-delete-audio': 'మీరు ఎంచుకుని తీసుకున్న దానిని తొలగించాలనుకుంటున్నారా?', + 'label-accepted': 'అంగీకరించిన', + 'msg-remove-resource': 'మీరు ఖచ్చితంగా వనరును తీసివేయాలనుకుంటున్నారా. ఈ చర్య వెనక్కి తీసుకోబడదు', + 'label-check-updates': 'అప్డేట్స్ తనికి', + 'label-documentation': 'డాక్యుమెంటేషన్', + 'label-tech-support': 'సాంకేతిక మద్దతు', + 'msg-helps-filepath': 'చెల్లుబాటు అయ్యే మానిఫెస్ట్.yamlతో రిసోర్స్ ఫైల్‌పాత్‌కు సహాయం చేస్తుంది', + 'tooltip-supported-resources': 'మద్దతు ఉన్న వనరులు TN, TW, TQ, TA', + 'label-upload-help-resources': 'సహాయ వనరులను అప్‌లోడ్ చేయండి', + 'label-filter': 'ఫిల్టర్', + 'label-book-selection': 'పుస్తక ఎంపిక', + 'label-chapter-selection': 'అధ్యాయం ఎంపిక', + 'label-select': 'ఎంచుకోండి', + 'label-deselect': 'ఎంపికను తీసివేయండి', + 'label-start': 'ప్రారంభించండి', + 'label-end': 'ముగింపు', + 'label-apply': 'దరఖాస్తు చేసుకోండి', + 'label-scope-not-selected': 'ప్రారంభించడానికి, స్కోప్ మేనేజ్‌మెంట్‌కి వెళ్లి పుస్తకం మరియు అధ్యాయాలను ఎంచుకుని, వర్తించు బటన్‌ను క్లిక్ చేయండి', + 'label-scope-note-audio': 'ప్రాజెక్ట్ జాబితా పేజీలో స్కోప్ మేనేజ్‌మెంట్ ఎంపిక నుండి పుస్తకం మరియు అధ్యాయాన్ని ఎంచుకోండి', + 'modal-title-scope-management': 'స్కోప్ మేనేజ్‌మెంట్', }; diff --git a/renderer/src/util/convertToRange.js b/renderer/src/util/convertToRange.js index f13ac0994..4f3f822a5 100644 --- a/renderer/src/util/convertToRange.js +++ b/renderer/src/util/convertToRange.js @@ -1,6 +1,6 @@ export const convertToRange = (array) => { const ranges = []; let rangeStart; let - rangeEnd; + rangeEnd; for (let i = 0; i < array.length; i += 1) { rangeStart = array[i]; rangeEnd = rangeStart; diff --git a/renderer/src/util/createObsContent.js b/renderer/src/util/createObsContent.js index 9d8d1ced1..bd581f5ab 100644 --- a/renderer/src/util/createObsContent.js +++ b/renderer/src/util/createObsContent.js @@ -41,52 +41,243 @@ export const createObsContent = ( logger.debug('createObsContent.js', 'Creating the story md files'); // eslint-disable-next-line import/no-dynamic-require if (call === 'new') { + OBSData.forEach(async (storyJson) => { + const currentFileName = `${storyJson.storyId.toString().padStart(2, 0)}.md`; + if (bookAvailable(importedFiles, currentFileName)) { + logger.debug('createObsContent.js', `${currentFileName} has been Imported`); + const file = importedFiles.filter((obj) => (obj.id === currentFileName)); + const fs = window.require('fs'); + if (!fs.existsSync(folder)) { + fs.mkdirSync(folder, { recursive: true }); + } + fs.writeFileSync(path.join(folder, currentFileName), file[0].content, 'utf-8'); + const stats = fs.statSync(path.join(folder, currentFileName)); + ingredients[path.join('ingredients', currentFileName)] = { + checksum: { + md5: md5(file[0].content), + }, + mimeType: 'text/markdown', + size: stats.size, + scope: storyJson.scope, + }; + // ingredients[path.join('content', currentFileName)].scope[book] = []; + } else { + logger.debug('createObsContent.js', 'Creating the md file using RCL function JsonToMd'); + const file = JsonToMd(storyJson, ''); + const fs = window.require('fs'); + if (!fs.existsSync(folder)) { + fs.mkdirSync(folder, { recursive: true }); + } + logger.debug('createObsContent.js', 'Writing File to the Content Directory'); + fs.writeFileSync(path.join(folder, currentFileName), file); + const stats = fs.statSync(path.join(folder, currentFileName)); + ingredients[path.join('ingredients', currentFileName)] = { + checksum: { + md5: md5(file), + }, + mimeType: 'text/markdown', + size: stats.size, + scope: storyJson.scope, + }; + // ingredients[path.join('content', currentFileName)].scope[book] = []; + } + }); + if (!fs.existsSync(folder)) { + fs.mkdirSync(folder, { recursive: true }); + } + // OBS front and back files add to content + logger.debug('createObsContent.js', 'Creating OBS front and back md file in content'); + // check front.md file in imported + const fileFront = {}; + const fileBack = {}; + fileFront.files = importedFiles.filter((obj) => (obj.id === 'front.md')); + fileBack.files = importedFiles.filter((obj) => (obj.id === 'back.md')); + if (fileFront.files.length > 0) { + fileFront.name = fileFront.files[0].id; + fileFront.content = fileFront.files[0].content; + logger.debug('createObsContent.js', `${fileFront.name} has been Imported`); + } else { + fileFront.name = 'front.md'; + fileFront.content = OBSFront; + logger.debug('createObsContent.js', `${fileFront.name} default is created`); + } + fs.writeFileSync(path.join(folder, fileFront.name), fileFront.content); + let obsstat = fs.statSync(path.join(folder, fileFront.name)); + ingredients[path.join('ingredients', fileFront.name)] = { + checksum: { + md5: md5(fileFront.content), + }, + mimeType: 'text/markdown', + size: obsstat.size, + role: 'pubdata', + }; + // back.md + if (fileBack.files.length > 0) { + fileBack.name = fileBack.files[0].id; + fileBack.content = fileBack.files[0].content; + logger.debug('createObsContent.js', `${fileBack.name} has been Imported`); + } else { + fileBack.name = 'back.md'; + fileBack.content = OBSBack; + logger.debug('createObsContent.js', `${fileBack.name} default is created`); + } + fs.writeFileSync(path.join(folder, fileBack.name), fileBack.content); + obsstat = fs.statSync(path.join(folder, fileBack.name)); + ingredients[path.join('ingredients', fileBack.name)] = { + checksum: { + md5: md5(fileBack.content), + }, + mimeType: 'text/plain', + size: obsstat.size, + role: 'title', + }; + // OBS License + fs.writeFileSync(path.join(folder, 'LICENSE.md'), OBSLicense); + obsstat = fs.statSync(path.join(folder, 'LICENSE.md')); + ingredients[path.join('ingredients', 'LICENSE.md')] = { + checksum: { + md5: md5(OBSLicense), + }, + mimeType: 'text/markdown', + size: obsstat.size, + }; + } else if (call === 'edit') { + logger.debug('createObsContent.js', 'in Edit obs content files'); + importedFiles.forEach((file) => { + if (file.id !== 'front.md' && file.id !== 'back.md') { + logger.debug('createObsContent.js', `${file.id} has been Imported`); + const currentStory = OBSData.filter((obj) => ( + (obj.storyId).toString().padStart(2, 0) === (file.id).split('.')[0])); + const fs = window.require('fs'); + // if (!fs.existsSync(folder)) { + // fs.mkdirSync(folder, { recursive: true }); + // } + fs.writeFileSync(path.join(folder, file.id), file.content, 'utf-8'); + const stats = fs.statSync(path.join(folder, file.id)); + ingredients[path.join('ingredients', file.id)] = { + checksum: { + md5: md5(file.content), + }, + mimeType: 'text/markdown', + size: stats.size, + scope: currentStory[0].scope, + }; + } else if (file.id === 'front.md' || file.id === 'back.md') { + const mimeType = file.id === 'front.md' ? 'text/plain' : 'text/markdown'; + const role = file.id === 'front.md' ? 'title' : 'pubdata'; + fs.writeFileSync(path.join(folder, file.id), file.content); + const obsstat = fs.statSync(path.join(folder, file.id)); + ingredients[path.join('ingredients', file.id)] = { + checksum: { + md5: md5(file.content), + }, + mimeType, + size: obsstat.size, + role, + }; + } + }); + } + // scribe setting creation + const settings = { + version: environment.AG_SETTING_VERSION, + project: { + textStories: { + scriptDirection: direction, + starred: call === 'edit' ? currentBurrito.project.textStories.starred : false, + isArchived: call === 'edit' ? currentBurrito.project.textStories.isArchived : false, + description: project.description, + copyright: copyright.title, + lastSeen: moment().format(), + refResources: call === 'edit' ? currentBurrito.project.textStories.refResources : [], + bookMarks: call === 'edit' ? currentBurrito.project.textStories.bookMarks : [], + font: '', + fontSize: 1, + }, + }, + sync: { services: { door43: [] } }, + }; + if (call === 'edit') { + settings.sync = currentBurrito?.sync; + } + logger.debug('createObsContent.js', `Creating ${environment.PROJECT_SETTING_FILE} file in content`); + if (!fs.existsSync(folder)) { + fs.mkdirSync(folder, { recursive: true }); + } + fs.writeFileSync(path.join(folder, environment.PROJECT_SETTING_FILE), JSON.stringify(settings)); + const stat = fs.statSync(path.join(folder, environment.PROJECT_SETTING_FILE)); + ingredients[path.join('ingredients', environment.PROJECT_SETTING_FILE)] = { + checksum: { + md5: md5(settings), + }, + mimeType: 'application/json', + size: stat.size, + role: 'x-scribe', + }; + + resolve(ingredients); + }); +}; + +export const createWebObsContent = ( + username, + project, + direction, + id, + currentBurrito, + importedFiles, + copyright, + call, +) => new Promise(async (resolve) => { + const ingredients = {}; + const supabasePath = `${newPath}/${username}/projects/${project.projectName}_${id}/ingredients`; + + const uploadFileToSupabase = async (filePath, fileContent) => { + const { data: file, error } = await sbStorageUpload(filePath, new Blob([fileContent], { type: 'text/markdown' }), { + upsert: true, + }); + + if (error) { + // eslint-disable-next-line no-console + console.error('Error uploading file to Supabase:', error); + throw error; + } else { + const fileSize = file.size; + return { file, fileSize }; + } + }; + + // eslint-disable-next-line import/no-dynamic-require + if (call === 'new') { OBSData.forEach(async (storyJson) => { const currentFileName = `${storyJson.storyId.toString().padStart(2, 0)}.md`; if (bookAvailable(importedFiles, currentFileName)) { - logger.debug('createObsContent.js', `${currentFileName} has been Imported`); const file = importedFiles.filter((obj) => (obj.id === currentFileName)); - const fs = window.require('fs'); - if (!fs.existsSync(folder)) { - fs.mkdirSync(folder, { recursive: true }); - } - fs.writeFileSync(path.join(folder, currentFileName), file[0].content, 'utf-8'); - const stats = fs.statSync(path.join(folder, currentFileName)); + const stats = await uploadFileToSupabase(`${supabasePath}/${currentFileName}`, file[0].content); ingredients[path.join('ingredients', currentFileName)] = { checksum: { md5: md5(file[0].content), }, mimeType: 'text/markdown', - size: stats.size, + size: stats.fileSize, scope: storyJson.scope, }; // ingredients[path.join('content', currentFileName)].scope[book] = []; } else { - logger.debug('createObsContent.js', 'Creating the md file using RCL function JsonToMd'); const file = JsonToMd(storyJson, ''); - const fs = window.require('fs'); - if (!fs.existsSync(folder)) { - fs.mkdirSync(folder, { recursive: true }); - } - logger.debug('createObsContent.js', 'Writing File to the Content Directory'); - fs.writeFileSync(path.join(folder, currentFileName), file); - const stats = fs.statSync(path.join(folder, currentFileName)); + const stats = await uploadFileToSupabase(`${supabasePath}/${currentFileName}`, file); + ingredients[path.join('ingredients', currentFileName)] = { checksum: { md5: md5(file), }, mimeType: 'text/markdown', - size: stats.size, + size: stats.fileSize, scope: storyJson.scope, }; - // ingredients[path.join('content', currentFileName)].scope[book] = []; } }); - if (!fs.existsSync(folder)) { - fs.mkdirSync(folder, { recursive: true }); - } // OBS front and back files add to content - logger.debug('createObsContent.js', 'Creating OBS front and back md file in content'); // check front.md file in imported const fileFront = {}; const fileBack = {}; @@ -95,294 +286,103 @@ export const createObsContent = ( if (fileFront.files.length > 0) { fileFront.name = fileFront.files[0].id; fileFront.content = fileFront.files[0].content; - logger.debug('createObsContent.js', `${fileFront.name} has been Imported`); } else { fileFront.name = 'front.md'; fileFront.content = OBSFront; - logger.debug('createObsContent.js', `${fileFront.name} default is created`); } - fs.writeFileSync(path.join(folder, fileFront.name), fileFront.content); - let obsstat = fs.statSync(path.join(folder, fileFront.name)); + // fs.writeFileSync(path.join(folder, fileFront.name), fileFront.content); + // let obsstat = fs.statSync(path.join(folder, fileFront.name)); + let obsstat = await uploadFileToSupabase(`${supabasePath}/${fileFront.name}`, fileFront.content); ingredients[path.join('ingredients', fileFront.name)] = { checksum: { md5: md5(fileFront.content), }, mimeType: 'text/markdown', - size: obsstat.size, + size: obsstat.fileSize, role: 'pubdata', }; // back.md if (fileBack.files.length > 0) { fileBack.name = fileBack.files[0].id; fileBack.content = fileBack.files[0].content; - logger.debug('createObsContent.js', `${fileBack.name} has been Imported`); } else { fileBack.name = 'back.md'; fileBack.content = OBSBack; - logger.debug('createObsContent.js', `${fileBack.name} default is created`); } - fs.writeFileSync(path.join(folder, fileBack.name), fileBack.content); - obsstat = fs.statSync(path.join(folder, fileBack.name)); + obsstat = await uploadFileToSupabase(`${supabasePath}/${fileBack.name}`, fileBack.content); ingredients[path.join('ingredients', fileBack.name)] = { checksum: { md5: md5(fileBack.content), }, mimeType: 'text/plain', - size: obsstat.size, + size: obsstat.fileSize, role: 'title', }; - // OBS License - fs.writeFileSync(path.join(folder, 'LICENSE.md'), OBSLicense); - obsstat = fs.statSync(path.join(folder, 'LICENSE.md')); + + obsstat = await uploadFileToSupabase(`${supabasePath}/LICENSE.md`, OBSLicense); ingredients[path.join('ingredients', 'LICENSE.md')] = { checksum: { md5: md5(OBSLicense), }, mimeType: 'text/markdown', - size: obsstat.size, + size: obsstat.fileSize, }; } else if (call === 'edit') { - logger.debug('createObsContent.js', 'in Edit obs content files'); - importedFiles.forEach((file) => { + importedFiles.forEach(async (file) => { if (file.id !== 'front.md' && file.id !== 'back.md') { - logger.debug('createObsContent.js', `${file.id} has been Imported`); const currentStory = OBSData.filter((obj) => ( (obj.storyId).toString().padStart(2, 0) === (file.id).split('.')[0])); - const fs = window.require('fs'); - // if (!fs.existsSync(folder)) { - // fs.mkdirSync(folder, { recursive: true }); - // } - fs.writeFileSync(path.join(folder, file.id), file.content, 'utf-8'); - const stats = fs.statSync(path.join(folder, file.id)); + const stats = await uploadFileToSupabase(`${supabasePath}/${file.id}`, file.content); ingredients[path.join('ingredients', file.id)] = { checksum: { md5: md5(file.content), }, mimeType: 'text/markdown', - size: stats.size, + size: stats.fileSize, scope: currentStory[0].scope, }; } else if (file.id === 'front.md' || file.id === 'back.md') { const mimeType = file.id === 'front.md' ? 'text/plain' : 'text/markdown'; const role = file.id === 'front.md' ? 'title' : 'pubdata'; - fs.writeFileSync(path.join(folder, file.id), file.content); - const obsstat = fs.statSync(path.join(folder, file.id)); + const obsstat = await uploadFileToSupabase(`${supabasePath}/${file.id}`, file.content); ingredients[path.join('ingredients', file.id)] = { checksum: { md5: md5(file.content), }, mimeType, - size: obsstat.size, + size: obsstat.fileSize, role, - }; + }; } }); } - // scribe setting creation - const settings = { - version: environment.AG_SETTING_VERSION, - project: { - textStories: { - scriptDirection: direction, - starred: call === 'edit' ? currentBurrito.project.textStories.starred : false, - isArchived: call === 'edit' ? currentBurrito.project.textStories.isArchived : false, - description: project.description, - copyright: copyright.title, - lastSeen: moment().format(), - refResources: call === 'edit' ? currentBurrito.project.textStories.refResources : [], - bookMarks: call === 'edit' ? currentBurrito.project.textStories.bookMarks : [], - font: '', - fontSize: 1, - }, - }, - sync: { services: { door43: [] } }, - }; - if (call === 'edit') { - settings.sync = currentBurrito?.sync; - } - logger.debug('createObsContent.js', `Creating ${environment.PROJECT_SETTING_FILE} file in content`); - if (!fs.existsSync(folder)) { - fs.mkdirSync(folder, { recursive: true }); - } - fs.writeFileSync(path.join(folder, environment.PROJECT_SETTING_FILE), JSON.stringify(settings)); - const stat = fs.statSync(path.join(folder, environment.PROJECT_SETTING_FILE)); - ingredients[path.join('ingredients', environment.PROJECT_SETTING_FILE)] = { - checksum: { - md5: md5(settings), + // ag setting creation + const settings = { + version: environment.AG_SETTING_VERSION, + project: { + textStories: { + scriptDirection: direction, + starred: call === 'edit' ? currentBurrito.project.textStories.starred : false, + isArchived: call === 'edit' ? currentBurrito.project.textStories.isArchived : false, + description: project.description, + copyright: copyright.title, + lastSeen: moment().format(), + refResources: call === 'edit' ? currentBurrito.project.textStories.refResources : [], + bookMarks: call === 'edit' ? currentBurrito.project.textStories.bookMarks : [], }, - mimeType: 'application/json', - size: stat.size, - role: 'x-scribe', - }; - - resolve(ingredients); - }); + }, + sync: { services: { door43: [] } }, + font: '', + fontSize: 1, }; - - export const createWebObsContent = ( - username, - project, - direction, - id, - currentBurrito, - importedFiles, - copyright, - call, - ) => new Promise(async (resolve) => { - const ingredients = {}; - const supabasePath = `${newPath}/${username}/projects/${project.projectName}_${id}/ingredients`; - - const uploadFileToSupabase = async (filePath, fileContent) => { - const { data: file, error } = await sbStorageUpload(filePath, new Blob([fileContent], { type: 'text/markdown' }), { - upsert: true, - }); - - if (error) { - // eslint-disable-next-line no-console - console.error('Error uploading file to Supabase:', error); - throw error; - } else { - const fileSize = file.size; - return { file, fileSize }; - } - }; - - // eslint-disable-next-line import/no-dynamic-require - if (call === 'new') { - OBSData.forEach(async (storyJson) => { - const currentFileName = `${storyJson.storyId.toString().padStart(2, 0)}.md`; - if (bookAvailable(importedFiles, currentFileName)) { - const file = importedFiles.filter((obj) => (obj.id === currentFileName)); - const stats = await uploadFileToSupabase(`${supabasePath}/${currentFileName}`, file[0].content); - ingredients[path.join('ingredients', currentFileName)] = { - checksum: { - md5: md5(file[0].content), - }, - mimeType: 'text/markdown', - size: stats.fileSize, - scope: storyJson.scope, - }; - // ingredients[path.join('content', currentFileName)].scope[book] = []; - } else { - const file = JsonToMd(storyJson, ''); - const stats = await uploadFileToSupabase(`${supabasePath}/${currentFileName}`, file); - - ingredients[path.join('ingredients', currentFileName)] = { - checksum: { - md5: md5(file), - }, - mimeType: 'text/markdown', - size: stats.fileSize, - scope: storyJson.scope, - }; - } - }); - // OBS front and back files add to content - // check front.md file in imported - const fileFront = {}; - const fileBack = {}; - fileFront.files = importedFiles.filter((obj) => (obj.id === 'front.md')); - fileBack.files = importedFiles.filter((obj) => (obj.id === 'back.md')); - if (fileFront.files.length > 0) { - fileFront.name = fileFront.files[0].id; - fileFront.content = fileFront.files[0].content; - } else { - fileFront.name = 'front.md'; - fileFront.content = OBSFront; - } - // fs.writeFileSync(path.join(folder, fileFront.name), fileFront.content); - // let obsstat = fs.statSync(path.join(folder, fileFront.name)); - let obsstat = await uploadFileToSupabase(`${supabasePath}/${fileFront.name}`, fileFront.content); - ingredients[path.join('ingredients', fileFront.name)] = { - checksum: { - md5: md5(fileFront.content), - }, - mimeType: 'text/markdown', - size: obsstat.fileSize, - role: 'pubdata', - }; - // back.md - if (fileBack.files.length > 0) { - fileBack.name = fileBack.files[0].id; - fileBack.content = fileBack.files[0].content; - } else { - fileBack.name = 'back.md'; - fileBack.content = OBSBack; - } - obsstat = await uploadFileToSupabase(`${supabasePath}/${fileBack.name}`, fileBack.content); - ingredients[path.join('ingredients', fileBack.name)] = { - checksum: { - md5: md5(fileBack.content), - }, - mimeType: 'text/plain', - size: obsstat.fileSize, - role: 'title', - }; - - obsstat = await uploadFileToSupabase(`${supabasePath}/LICENSE.md`, OBSLicense); - ingredients[path.join('ingredients', 'LICENSE.md')] = { - checksum: { - md5: md5(OBSLicense), - }, - mimeType: 'text/markdown', - size: obsstat.fileSize, - }; - } else if (call === 'edit') { - importedFiles.forEach(async (file) => { - if (file.id !== 'front.md' && file.id !== 'back.md') { - const currentStory = OBSData.filter((obj) => ( - (obj.storyId).toString().padStart(2, 0) === (file.id).split('.')[0])); - const stats = await uploadFileToSupabase(`${supabasePath}/${file.id}`, file.content); - ingredients[path.join('ingredients', file.id)] = { - checksum: { - md5: md5(file.content), - }, - mimeType: 'text/markdown', - size: stats.fileSize, - scope: currentStory[0].scope, - }; - } else if (file.id === 'front.md' || file.id === 'back.md') { - const mimeType = file.id === 'front.md' ? 'text/plain' : 'text/markdown'; - const role = file.id === 'front.md' ? 'title' : 'pubdata'; - const obsstat = await uploadFileToSupabase(`${supabasePath}/${file.id}`, file.content); - ingredients[path.join('ingredients', file.id)] = { - checksum: { - md5: md5(file.content), - }, - mimeType, - size: obsstat.fileSize, - role, - }; - } - }); - } - // ag setting creation - const settings = { - version: environment.AG_SETTING_VERSION, - project: { - textStories: { - scriptDirection: direction, - starred: call === 'edit' ? currentBurrito.project.textStories.starred : false, - isArchived: call === 'edit' ? currentBurrito.project.textStories.isArchived : false, - description: project.description, - copyright: copyright.title, - lastSeen: moment().format(), - refResources: call === 'edit' ? currentBurrito.project.textStories.refResources : [], - bookMarks: call === 'edit' ? currentBurrito.project.textStories.bookMarks : [], - }, - }, - sync: { services: { door43: [] } }, - font: '', - fontSize: 1, - }; - const stat = await uploadFileToSupabase(`${supabasePath}/${environment.PROJECT_SETTING_FILE}`, JSON.stringify(settings)); - ingredients[path.join('ingredients', environment.PROJECT_SETTING_FILE)] = { - checksum: { - md5: md5(settings), - }, - mimeType: 'application/json', - size: stat.fileSize, - role: 'x-scribe', - }; - resolve(ingredients); - }); + const stat = await uploadFileToSupabase(`${supabasePath}/${environment.PROJECT_SETTING_FILE}`, JSON.stringify(settings)); + ingredients[path.join('ingredients', environment.PROJECT_SETTING_FILE)] = { + checksum: { + md5: md5(settings), + }, + mimeType: 'application/json', + size: stat.fileSize, + role: 'x-scribe', + }; + resolve(ingredients); +}); diff --git a/renderer/src/util/createVersificationUSFM.js b/renderer/src/util/createVersificationUSFM.js index 42fa89978..555247491 100644 --- a/renderer/src/util/createVersificationUSFM.js +++ b/renderer/src/util/createVersificationUSFM.js @@ -218,8 +218,8 @@ export const createWebVersificationUSFM = async ( const uploadFileToSupabase = async (filePath, fileContent) => { // eslint-disable-next-line no-unused-vars const { data: file, error } = await sbStorageUpload(filePath, new Blob([fileContent], { type: 'text/plain' }), { - upsert: true, - }); + upsert: true, + }); if (error) { throw error; diff --git a/renderer/src/util/factoryCreateContent.js b/renderer/src/util/factoryCreateContent.js index 5a32d329f..4a4ba2495 100644 --- a/renderer/src/util/factoryCreateContent.js +++ b/renderer/src/util/factoryCreateContent.js @@ -27,61 +27,61 @@ export const factoryCreateContent = async ({ }) => { let promise; switch (projectTypeToUse) { - case 'Translation': - promise = await createVersificationUSFM( - username, - project, - versification, - books, - direction, - id, - importedFiles, - copyright, - currentBurrito, - call, - projectType, - ); - break; - case 'Audio': - promise = await createAudioVersification( - username, - project, - versification, - id, - copyright, - currentBurrito, - call, - ); - break; - case 'OBS': - promise = await createObsContent( - username, - project, - direction, - id, - currentBurrito, - importedFiles, - copyright, - call, - ); - break; - case 'Juxta': - promise = await createJuxtaContent( - username, - project, - versification, - books, - direction, - id, - importedFiles, - copyright, - currentBurrito, - call, - projectType, - ); - break; - default: - logger.error('factoryCreateContent.js', `projectType doesn't exist : ${projectType}`); - } + case 'Translation': + promise = await createVersificationUSFM( + username, + project, + versification, + books, + direction, + id, + importedFiles, + copyright, + currentBurrito, + call, + projectType, + ); + break; + case 'Audio': + promise = await createAudioVersification( + username, + project, + versification, + id, + copyright, + currentBurrito, + call, + ); + break; + case 'OBS': + promise = await createObsContent( + username, + project, + direction, + id, + currentBurrito, + importedFiles, + copyright, + call, + ); + break; + case 'Juxta': + promise = await createJuxtaContent( + username, + project, + versification, + books, + direction, + id, + importedFiles, + copyright, + currentBurrito, + call, + projectType, + ); + break; + default: + logger.error('factoryCreateContent.js', `projectType doesn't exist : ${projectType}`); + } return promise; }; diff --git a/renderer/src/util/factoryCreateSB.js b/renderer/src/util/factoryCreateSB.js index 635f5211b..b3e0efcad 100644 --- a/renderer/src/util/factoryCreateSB.js +++ b/renderer/src/util/factoryCreateSB.js @@ -22,67 +22,67 @@ export const factoryCreateSB = async ({ }) => { let burritoFilePromise; switch (projectTypeToUse) { - case 'Translation': - burritoFilePromise = await createTranslationSB( - username, - projectFields, - selectedScope, - language, - langCode, - direction, - copyright, - id, - project, - call, - update, - ); - break; - case 'Audio': - burritoFilePromise = await createAudioSB( - username, - projectFields, - selectedScope, - language, - langCode, - direction, - copyright, - id, - project, - call, - update, - ); - break; - case 'OBS': - burritoFilePromise = await createObsSB( - username, - projectFields, - language, - langCode, - direction, - copyright, - id, - project, - call, - update, - ); - break; - case 'Juxta': - burritoFilePromise = await createJuxtalinearSB( - username, - projectFields, - selectedScope, - language, - langCode, - direction, - copyright, - id, - project, - call, - update, - ); - break; - default: - logger.error('factoryCreateContent.js', `projectTypeToUse doesn't exist [Translation, Audio, OBS, Juxta]: ${projectTypeToUse}`); - } + case 'Translation': + burritoFilePromise = await createTranslationSB( + username, + projectFields, + selectedScope, + language, + langCode, + direction, + copyright, + id, + project, + call, + update, + ); + break; + case 'Audio': + burritoFilePromise = await createAudioSB( + username, + projectFields, + selectedScope, + language, + langCode, + direction, + copyright, + id, + project, + call, + update, + ); + break; + case 'OBS': + burritoFilePromise = await createObsSB( + username, + projectFields, + language, + langCode, + direction, + copyright, + id, + project, + call, + update, + ); + break; + case 'Juxta': + burritoFilePromise = await createJuxtalinearSB( + username, + projectFields, + selectedScope, + language, + langCode, + direction, + copyright, + id, + project, + call, + update, + ); + break; + default: + logger.error('factoryCreateContent.js', `projectTypeToUse doesn't exist [Translation, Audio, OBS, Juxta]: ${projectTypeToUse}`); + } return burritoFilePromise; }; diff --git a/renderer/src/util/splitStringByLastMarker.js b/renderer/src/util/splitStringByLastMarker.js index 9f9f2be35..d37d93356 100644 --- a/renderer/src/util/splitStringByLastMarker.js +++ b/renderer/src/util/splitStringByLastMarker.js @@ -8,14 +8,14 @@ * @returns {Promise>} */ export async function splitStringByLastOccurence(text, splitter) { - const lastOccurenceIndex = text.lastIndexOf(splitter); + const lastOccurenceIndex = text.lastIndexOf(splitter); - if (lastOccurenceIndex !== -1) { - const prefix = text.substring(0, lastOccurenceIndex); - const suffix = text.substring(lastOccurenceIndex + 1); - return [prefix, suffix]; - } - - // No Occurence found - return [text]; + if (lastOccurenceIndex !== -1) { + const prefix = text.substring(0, lastOccurenceIndex); + const suffix = text.substring(lastOccurenceIndex + 1); + return [prefix, suffix]; } + + // No Occurence found + return [text]; +} diff --git a/renderer/src/util/validate.js b/renderer/src/util/validate.js index 61f2b95cb..6658328ef 100644 --- a/renderer/src/util/validate.js +++ b/renderer/src/util/validate.js @@ -11,24 +11,24 @@ export const validate = (schemaName, fn, data, version) => { // console.log(schemaName, fn, data, version); let schemaIndex; switch (version) { - case '0.3.0': - schemaIndex = schemaIndex030; - break; - case '0.3.1': - schemaIndex = schemaIndex031; - break; - case '1.0.0-rc1': - schemaIndex = schemaIndex100rc1; - break; - case '1.0.0-rc2': - schemaIndex = schemaIndex100rc2; - break; - case '1.0.0': - schemaIndex = schemaIndex100; - break; - default: - schemaIndex = schemaIndex100; - break; + case '0.3.0': + schemaIndex = schemaIndex030; + break; + case '0.3.1': + schemaIndex = schemaIndex031; + break; + case '1.0.0-rc1': + schemaIndex = schemaIndex100rc1; + break; + case '1.0.0-rc2': + schemaIndex = schemaIndex100rc2; + break; + case '1.0.0': + schemaIndex = schemaIndex100; + break; + default: + schemaIndex = schemaIndex100; + break; } const ajv = new Ajv({ schemas: schemaIndex.schemas }); logger.debug('validate.js', 'In validate for validation the burrito'); diff --git a/styles/globals.css b/styles/globals.css index 86aacd28a..c9e6f18fc 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -34,7 +34,7 @@ } */ /* .section > .section-heading { - @apply hidden; + @apply hidden; } */ .perf .title .section, @@ -53,7 +53,7 @@ } /* .sectionHeading> .expand { - @apply w-20 text-right uppercase tracking-wider text-xs font-semibold after:content-['_:']; + @apply w-20 text-right uppercase tracking-wider text-xs font-semibold after:content-['_:']; } */ /* .title .mt, */ @@ -62,11 +62,11 @@ } /* .title .mt { - @apply hidden; + @apply hidden; } */ /* .sectionBody .ms { - @apply hidden; + @apply hidden; } */ .editor *[contenteditable='true']:focus { @apply bg-primary-50 outline-none rounded-sm; @@ -113,15 +113,15 @@ p.paragraph:has(.chapter) { } /* .perf .verse:after { - visibility: visible; - position: absolute; - top: 0; - left: 0; - content: ' ' attr(data-atts-number); + visibility: visible; + position: absolute; + top: 0; + left: 0; + content: ' ' attr(data-atts-number); } */ /* .perf .verse { - visibility: hidden; - position: relative; + visibility: hidden; + position: relative; } */ .no-spinner::-webkit-inner-spin-button, diff --git a/styles/loader.css b/styles/loader.css index ff78e958e..0d21719eb 100644 --- a/styles/loader.css +++ b/styles/loader.css @@ -6,6 +6,7 @@ position: fixed; width: 100%; } + #loader-wrapper { position: fixed; top: 0; @@ -14,6 +15,7 @@ height: 100%; z-index: 1000; } + #loader { display: block; position: relative; @@ -25,8 +27,10 @@ border-radius: 50%; border: 3px solid transparent; border-top-color: #3498db; - -webkit-animation: spin 2s linear infinite; /* Chrome, Opera 15+, Safari 5+ */ - animation: spin 2s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */ + -webkit-animation: spin 2s linear infinite; + /* Chrome, Opera 15+, Safari 5+ */ + animation: spin 2s linear infinite; + /* Chrome, Firefox 16+, IE 10+, Opera */ } #loader:before { @@ -39,8 +43,10 @@ border-radius: 50%; border: 3px solid transparent; border-top-color: #e74c3c; - -webkit-animation: spin 3s linear infinite; /* Chrome, Opera 15+, Safari 5+ */ - animation: spin 3s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */ + -webkit-animation: spin 3s linear infinite; + /* Chrome, Opera 15+, Safari 5+ */ + animation: spin 3s linear infinite; + /* Chrome, Firefox 16+, IE 10+, Opera */ } #loader:after { @@ -53,31 +59,48 @@ border-radius: 50%; border: 3px solid transparent; border-top-color: #f9c922; - -webkit-animation: spin 1.5s linear infinite; /* Chrome, Opera 15+, Safari 5+ */ - animation: spin 1.5s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */ + -webkit-animation: spin 1.5s linear infinite; + /* Chrome, Opera 15+, Safari 5+ */ + animation: spin 1.5s linear infinite; + /* Chrome, Firefox 16+, IE 10+, Opera */ } @-webkit-keyframes spin { 0% { - -webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(0deg); /* IE 9 */ - transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */ + -webkit-transform: rotate(0deg); + /* Chrome, Opera 15+, Safari 3.1+ */ + -ms-transform: rotate(0deg); + /* IE 9 */ + transform: rotate(0deg); + /* Firefox 16+, IE 10+, Opera */ } + 100% { - -webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(360deg); /* IE 9 */ - transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */ + -webkit-transform: rotate(360deg); + /* Chrome, Opera 15+, Safari 3.1+ */ + -ms-transform: rotate(360deg); + /* IE 9 */ + transform: rotate(360deg); + /* Firefox 16+, IE 10+, Opera */ } } + @keyframes spin { 0% { - -webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(0deg); /* IE 9 */ - transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */ + -webkit-transform: rotate(0deg); + /* Chrome, Opera 15+, Safari 3.1+ */ + -ms-transform: rotate(0deg); + /* IE 9 */ + transform: rotate(0deg); + /* Firefox 16+, IE 10+, Opera */ } + 100% { - -webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(360deg); /* IE 9 */ - transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */ + -webkit-transform: rotate(360deg); + /* Chrome, Opera 15+, Safari 3.1+ */ + -ms-transform: rotate(360deg); + /* IE 9 */ + transform: rotate(360deg); + /* Firefox 16+, IE 10+, Opera */ } -} +} \ No newline at end of file diff --git a/styles/nprogress.css b/styles/nprogress.css index ec1b9beee..4df7127c8 100644 --- a/styles/nprogress.css +++ b/styles/nprogress.css @@ -34,8 +34,8 @@ display: block; position: fixed; z-index: 1031; - top: 15px; - right: 15px; + top: 23px; + right: 10%; } #nprogress .spinner-icon { diff --git a/styles/style-override.lazy.css b/styles/style-override.lazy.css index 179575a66..b8aad874d 100644 --- a/styles/style-override.lazy.css +++ b/styles/style-override.lazy.css @@ -2,11 +2,13 @@ br { display: none; } + br.usfm-editor-break { display: block; } + /* Don't display a break after a section header */ -.usfm-marker-s + br { +.usfm-marker-s+br { display: none; } @@ -15,26 +17,31 @@ h1.usfm-marker-s { margin: 0.5em 0; font-size: 2em; } + h2.usfm-marker-s { text-align: center; margin: 0.5em 0; font-size: 1.5em; } + h3.usfm-marker-s { text-align: center; margin: 0.5em 0; font-size: 1.17em; } + h4.usfm-marker-s { text-align: center; margin: 0.5em 0; font-size: 1.12em; } + h5.usfm-marker-s { text-align: center; margin: 0.5em 0; font-size: 0.83em; } + h6.usfm-marker-s { text-align: center; margin: 0.5em 0; @@ -53,20 +60,24 @@ hr.usfm-editor-hr { .usfm-editor { margin-top: 1em; overflow-y: scroll; - -ms-overflow-style: none; /* No scrollbar- IE and Edge */ - scrollbar-width: none; /* Firefox */ -} /* Override font, bg color, etc. */ + -ms-overflow-style: none; + /* No scrollbar- IE and Edge */ + scrollbar-width: none; + /* Firefox */ +} + +/* Override font, bg color, etc. */ .usfm-editor::-webkit-scrollbar { - display: none; /* Chrome, Safari, Opera */ + display: none; + /* Chrome, Safari, Opera */ } .usfm-editor-chapter { margin: 15px; } -.usfm-marker-p { -} +.usfm-marker-p {} .usfm-editor-inline { display: inline; @@ -118,6 +129,7 @@ the last child. */ background-color: white; display: none; } + .usfm-marker-c.usfm-editor-front, .usfm-marker-v.usfm-editor-front { display: none; @@ -152,7 +164,8 @@ the last child. */ .toolbar-button { min-width: 3em; - font-size: 16px; /* Default for material-UI icons */ + font-size: 16px; + /* Default for material-UI icons */ } .toolbar-button-active { @@ -187,9 +200,11 @@ the last child. */ display: flex; flex-flow: column; } + .scrollbars-width::-webkit-scrollbar { width: 0.75rem; } + .scrollbars-width::-webkit-scrollbar-thumb { background: #6b6b6b; -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1cb2baf3d..84fb8d3dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1564,11 +1564,16 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.4.0": version "4.11.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== +"@eslint-community/regexpp@^4.6.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -14297,10 +14302,10 @@ just-diff@^5.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -jxl-pdf@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.6.1.tgz#3b088e4426114c2df168d9f06a6c0b0fbb837ec2" - integrity sha512-IGL5u/4T9PU1FY0IltrpxCErFowvz1H9azEhPTXu6NCFK32ECuyPDcNUQgcPbORNWY/NSfFVuCr78nrUq02sSA== +jxl-pdf@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.6.3.tgz#db3ee4026b9c2041e20982b50abb2df4f16b4c85" + integrity sha512-D170/yDidlbP/d/IAnZi2XsDHQb74c1QgtWQGZ9mbtINvjBnQyVEnxOr5olhRjZ6UYnBMOrY1SDpFWW7gTQOOg== dependencies: commander "^11.1.0" fontkit "^2.0.2" From f2aba136bbc7e2ba5df5e7a66d5222875ecc9cc7 Mon Sep 17 00:00:00 2001 From: VIPIN PAUL <37212471+vipinpaul@users.noreply.github.com> Date: Thu, 19 Sep 2024 11:13:18 +0530 Subject: [PATCH 11/17] version update to 0.6.2 (#365) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 26ae3dbc2..1d82dccd6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "scribe-scripture-editor", "description": "A friendly assistant for Bible Translators.", "author": "Bible Technology ", - "version": "0.6.1", + "version": "0.6.2", "license": "MIT", "private": true, "main": "main/index.js", From daeb6a90613225d44a08e60b670b67f401560696 Mon Sep 17 00:00:00 2001 From: VIPIN PAUL <37212471+vipinpaul@users.noreply.github.com> Date: Thu, 19 Sep 2024 13:01:18 +0530 Subject: [PATCH 12/17] Commenting out the mac build for getting other binaries (#366) --- .github/workflows/node.js.yml | 124 +++++++++++++++++----------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index f8ddc88df..dc6a5b1a5 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -95,67 +95,67 @@ jobs: name: Scribe-${{ github.run_id }}-${{ github.sha }} path: artifacts overwrite: true - - build-mac: - runs-on: macos-latest - env: - CI: false - strategy: - matrix: - node-version: [18.20.3] - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 18.20.3 - uses: actions/setup-node@v1 - with: - node-version: 18.20.3 - - run: | - node --version - yarn --version - - name: Increase file descriptor limit - run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 - - name: set @bitregistry translation-help - run: yarn config set '@bit:registry' https://node.bit.dev - - - name: Install Homebrew - run: | - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile - eval "$(/opt/homebrew/bin/brew shellenv)" - - - name: Install canvas dependencies - run: | - brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 - brew reinstall jpeg - echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile - echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile - echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile - echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile - eval "$(/opt/homebrew/bin/brew shellenv)" - brew install python-setuptools + # Commented the below code for getting the binaries build for windows and Ubuntu + # build-mac: + # runs-on: macos-latest + # env: + # CI: false + # strategy: + # matrix: + # node-version: [18.20.3] + + # steps: + # - uses: actions/checkout@v2 + # - name: Use Node.js 18.20.3 + # uses: actions/setup-node@v1 + # with: + # node-version: 18.20.3 + # - run: | + # node --version + # yarn --version + # - name: Increase file descriptor limit + # run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 + # - name: set @bitregistry translation-help + # run: yarn config set '@bit:registry' https://node.bit.dev + + # - name: Install Homebrew + # run: | + # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + # echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile + # eval "$(/opt/homebrew/bin/brew shellenv)" + + # - name: Install canvas dependencies + # run: | + # brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 + # brew reinstall jpeg + # echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile + # echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile + # echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile + # echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile + # eval "$(/opt/homebrew/bin/brew shellenv)" + # brew install python-setuptools - - name: set max memory allocation - run: export NODE_OPTIONS=-max_old_space_size=4096 - - - name: yarn install - run: yarn install --verbose - - - name: install dmg-license - run: yarn add dmg-license - - - name: package - id: package - run: | - yarn dist - - - name: Cleanup artifacts - run: | - npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: Scribe-${{ github.run_id }}-${{ github.sha }} - path: dist - overwrite: true \ No newline at end of file + # - name: set max memory allocation + # run: export NODE_OPTIONS=-max_old_space_size=4096 + + # - name: yarn install + # run: yarn install --verbose + + # - name: install dmg-license + # run: yarn add dmg-license + + # - name: package + # id: package + # run: | + # yarn dist + + # - name: Cleanup artifacts + # run: | + # npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" + # - name: Upload artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: Scribe-${{ github.run_id }}-${{ github.sha }} + # path: dist + # overwrite: true \ No newline at end of file From a06727f3ee2191d8c89b3d6f2de2d87046b29a43 Mon Sep 17 00:00:00 2001 From: VIPIN PAUL <37212471+vipinpaul@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:33:36 +0530 Subject: [PATCH 13/17] Correcting the scope management docs link (#367) --- renderer/src/components/Loading/EmptySrceen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renderer/src/components/Loading/EmptySrceen.js b/renderer/src/components/Loading/EmptySrceen.js index f79050150..39c8bd0a8 100644 --- a/renderer/src/components/Loading/EmptySrceen.js +++ b/renderer/src/components/Loading/EmptySrceen.js @@ -50,7 +50,7 @@ export default function EmptyScreen({ call = '' }) { {' '} Date: Thu, 3 Oct 2024 10:06:46 +0200 Subject: [PATCH 14/17] Dcn/fix windows fs bug (#368) * changed place of the 'nprogress' by few px * trying a configuration to increase 'maxConcurrentTasks' * removed @mui/icons-react from deps and let it in devDeps * fixed a bug that makes the app crashes on bad import from gitea AND make the research for a repo more accessible by keeping the search persistent (it does not put back the default owner everytime you click on a repo) * FIX pathes for windows and all systems * update jxl-pdf and FIX for windows pathes * fixed lint errors * fixed windows path * reverted the spinner back to it's old position * FIX windows path in process * FIXED pdf generation for windows * fixes and updated the module to make it easier to use * corrected eslint * fixed list of book display * modified the code to avoid deleting all the wrappers in the list. When you only have one item in a list, you cannot delete it anymore * removed useless console.log * eslint fix * slight text change * installed 'puppeteer for electron' , we will now instanciate the browser with puppeteer-core and give the instance to jxl-pdf * it's now install chrome automatically for puppeteer-core * installed graceful-fs and removed useless files and updated github action * test to build actions for dcn/fix_windows_fs_bug * getting rid of 'graceful-fs' and everything is working here * resolved last eslint error * removed my branch from yml file * fixed macos install yaml * last fix for this to work on all platforms --------- Co-authored-by: danielc-n --- .expo/README.md | 15 -- .expo/settings.json | 8 - .github/workflows/node.js.yml | 131 +++++++------ .gitignore | 1 + .yarnrc | 0 __mocks__/electron.js | 0 __mocks__/fileMock.js | 0 __mocks__/styleMock.js | 0 app/favicon.ico | Bin app/head.js | 0 app/home/layout.jsx | 0 app/home/page.jsx | 0 app/layout.js | 0 app/loading.js | 0 app/login/page.jsx | 0 app/newproject/page.js | 0 app/page.js | 0 app/profile/page.js | 0 app/projects/page.jsx | 0 app/providers.js | 0 app/resource/page.jsx | 0 app/signup/page.jsx | 0 app/sync/page.js | 0 babel.config.js | 0 docs/Architecture/Architecture.md | 0 docs/Architecture/Autographacodestructure.png | Bin docs/Architecture/BirdEyeView.png | Bin docs/Architecture/CodeStructure.html | 0 docs/Architecture/MajorComponents.png | Bin docs/Architecture/codeStructure.txt | 0 docs/Autographa-Diagram0.txt | 0 docs/AutographaRefactDraft1.md | 0 docs/AutographaTestDoc.md | 0 docs/Autographa_refactorplans.md | 0 docs/AutographaflowDiagramDraft.html | 0 docs/Development/Offline-Merge.md | 0 docs/Flows/sectionPlaceholder flow.pdf | Bin e2e-tests/base.test.ts | 0 e2e-tests/common.js | 0 e2e-tests/myFixtures.ts | 0 intro.png | Bin main/index.js | 86 ++++++++- main/preload.js | 9 +- netlify.toml | 0 next.config.js | 2 + package.json | 13 +- public/brands/door43.png | Bin public/brands/gitea.png | Bin public/brands/paratext.png | Bin public/brands/scribe.png | Bin public/icons/Common/AdjustmentsVertical.svg | 0 public/icons/Common/ArchiveBox.svg | 0 public/icons/Common/ArrowLeft.svg | 0 public/icons/Common/ArrowPath.svg | 0 public/icons/Common/Check.svg | 0 public/icons/Common/ChevronDown.svg | 0 public/icons/Common/ChevronRight.svg | 0 public/icons/Common/ChevronUp.svg | 0 public/icons/Common/ChevronUpDown.svg | 0 public/icons/Common/Cog.svg | 0 public/icons/Common/ComputerDesktop.svg | 0 public/icons/Common/EllipsisVertical.svg | 0 public/icons/Common/ExclamationTriangle.svg | 0 public/icons/Common/InformationCircle.svg | 0 public/icons/Common/MagnifyingGlass.svg | 0 public/icons/Common/Minus.svg | 0 public/icons/Common/Pencil.svg | 0 public/icons/Common/PencilSquare.svg | 0 public/icons/Common/Plus.svg | 0 public/icons/Common/QuestionMarkCircle.svg | 0 public/icons/Common/SquaresPlus.svg | 0 public/icons/Common/Trash.svg | 0 public/icons/Common/XMark.svg | 0 public/icons/Xelah/ArrowDownOnSquare.svg | 0 public/icons/Xelah/ArrowUturnLeft.svg | 0 public/icons/Xelah/ArrowUturnRight.svg | 0 public/icons/Xelah/Bars2.svg | 0 public/icons/Xelah/Bars4.svg | 0 public/icons/Xelah/Copy.svg | 0 public/icons/Xelah/Paste.svg | 0 public/icons/Xelah/Plus.svg | 0 public/icons/Xelah/RectangleStack.svg | 0 public/icons/Xelah/XMark.svg | 0 .../Outline/Brands/Adobe-After-effects.svg | 0 .../Outline/Brands/Adobe-Experince-design.svg | 0 .../Outline/Brands/Adobe-Illustrator.svg | 0 .../basil/Outline/Brands/Adobe-Indesign-1.svg | 0 .../basil/Outline/Brands/Adobe-Indesign.svg | 0 .../basil/Outline/Brands/Adobe-Lightroom.svg | 0 .../basil/Outline/Brands/Adobe-Photoshop.svg | 0 .../basil/Outline/Brands/Adobe-Premiere.svg | 0 public/icons/basil/Outline/Brands/Android.svg | 0 .../icons/basil/Outline/Brands/App-store.svg | 0 public/icons/basil/Outline/Brands/Apple.svg | 0 public/icons/basil/Outline/Brands/Asana.svg | 0 public/icons/basil/Outline/Brands/Behance.svg | 0 public/icons/basil/Outline/Brands/Chrome.svg | 0 .../icons/basil/Outline/Brands/Dribbble.svg | 0 public/icons/basil/Outline/Brands/Dropbox.svg | 0 .../Outline/Brands/Facebook-messenger.svg | 0 .../icons/basil/Outline/Brands/Facebook.svg | 0 public/icons/basil/Outline/Brands/Figma.svg | 0 public/icons/basil/Outline/Brands/Gmail.svg | 0 .../icons/basil/Outline/Brands/Google-alt.svg | 0 .../basil/Outline/Brands/Google-drive.svg | 0 .../basil/Outline/Brands/Google-play.svg | 0 public/icons/basil/Outline/Brands/Google.svg | 0 .../icons/basil/Outline/Brands/Group 151.svg | 0 .../icons/basil/Outline/Brands/Instagram.svg | 0 .../icons/basil/Outline/Brands/Linkedin.svg | 0 public/icons/basil/Outline/Brands/Medium.svg | 0 public/icons/basil/Outline/Brands/Notion.svg | 0 .../icons/basil/Outline/Brands/Pinterest.svg | 0 public/icons/basil/Outline/Brands/QQ.svg | 0 public/icons/basil/Outline/Brands/Reddit.svg | 0 public/icons/basil/Outline/Brands/Sketch.svg | 0 public/icons/basil/Outline/Brands/Skype.svg | 0 public/icons/basil/Outline/Brands/Slack.svg | 0 .../icons/basil/Outline/Brands/Snapchat.svg | 0 .../icons/basil/Outline/Brands/Telegram.svg | 0 public/icons/basil/Outline/Brands/Trello.svg | 0 public/icons/basil/Outline/Brands/Tumblr.svg | 0 public/icons/basil/Outline/Brands/Twitch.svg | 0 public/icons/basil/Outline/Brands/Twitter.svg | 0 public/icons/basil/Outline/Brands/Viber.svg | 0 public/icons/basil/Outline/Brands/Vk.svg | 0 .../icons/basil/Outline/Brands/Whatsapp.svg | 0 public/icons/basil/Outline/Brands/Windows.svg | 0 public/icons/basil/Outline/Brands/Youtube.svg | 0 .../basil/Outline/Communication/Bullhorn.svg | 0 .../basil/Outline/Communication/Chat.svg | 0 .../Outline/Communication/Comment-block.svg | 0 .../Outline/Communication/Comment-minus.svg | 0 .../Outline/Communication/Comment-plus.svg | 0 .../basil/Outline/Communication/Comment.svg | 0 .../basil/Outline/Communication/Contacts.svg | 0 .../basil/Outline/Communication/Dislike.svg | 0 .../Outline/Communication/Envelope-open.svg | 0 .../basil/Outline/Communication/Envelope.svg | 0 .../basil/Outline/Communication/Forward.svg | 0 .../basil/Outline/Communication/Like.svg | 0 .../basil/Outline/Communication/Phone-in.svg | 0 .../Outline/Communication/Phone-miss.svg | 0 .../basil/Outline/Communication/Phone-off.svg | 0 .../basil/Outline/Communication/Phone-out.svg | 0 .../basil/Outline/Communication/Phone.svg | 0 .../basil/Outline/Communication/Reply.svg | 0 .../basil/Outline/Communication/Send.svg | 0 .../basil/Outline/Communication/Share-box.svg | 0 .../basil/Outline/Communication/Share.svg | 0 .../Outline/Communication/User-block.svg | 0 .../Outline/Communication/User-clock.svg | 0 .../basil/Outline/Communication/User-plus.svg | 0 .../basil/Outline/Communication/User.svg | 0 .../basil/Outline/Devices/Battery-empty.svg | 0 .../basil/Outline/Devices/Battery-full.svg | 0 .../basil/Outline/Devices/Battery-low.svg | 0 .../basil/Outline/Devices/Battery-most.svg | 0 .../basil/Outline/Devices/Battery-quarter.svg | 0 .../basil/Outline/Devices/Battry-half.svg | 0 .../icons/basil/Outline/Devices/Binocular.svg | 0 public/icons/basil/Outline/Devices/Camera.svg | 0 .../icons/basil/Outline/Devices/Desktop.svg | 0 .../icons/basil/Outline/Devices/Dialpad.svg | 0 .../icons/basil/Outline/Devices/Gamepad.svg | 0 .../basil/Outline/Devices/Mobile-phone.svg | 0 .../icons/basil/Outline/Devices/Mouse-alt.svg | 0 public/icons/basil/Outline/Devices/Mouse.svg | 0 .../icons/basil/Outline/Devices/Printer.svg | 0 .../icons/basil/Outline/Devices/Processor.svg | 0 public/icons/basil/Outline/Devices/Server.svg | 0 public/icons/basil/Outline/Devices/Video.svg | 0 public/icons/basil/Outline/Devices/Watch.svg | 0 .../icons/basil/Outline/Files/Book-check.svg | 0 .../icons/basil/Outline/Files/Book-mark.svg | 0 public/icons/basil/Outline/Files/Book.svg | 0 .../basil/Outline/Files/Clipboard-alt.svg | 0 .../icons/basil/Outline/Files/Clipboard.svg | 0 .../icons/basil/Outline/Files/Cloud-check.svg | 0 .../basil/Outline/Files/Cloud-download.svg | 0 .../icons/basil/Outline/Files/Cloud-off.svg | 0 .../basil/Outline/Files/Cloud-upload.svg | 0 public/icons/basil/Outline/Files/Cloud.svg | 0 public/icons/basil/Outline/Files/Copy.svg | 0 public/icons/basil/Outline/Files/Document.svg | 0 public/icons/basil/Outline/Files/Download.svg | 0 .../basil/Outline/Files/File-download.svg | 0 .../icons/basil/Outline/Files/File-upload.svg | 0 .../icons/basil/Outline/Files/File-user.svg | 0 public/icons/basil/Outline/Files/File.svg | 0 .../basil/Outline/Files/Folder-block.svg | 0 .../basil/Outline/Files/Folder-delete.svg | 0 .../icons/basil/Outline/Files/Folder-lock.svg | 0 .../icons/basil/Outline/Files/Folder-open.svg | 0 .../icons/basil/Outline/Files/Folder-plus.svg | 0 .../icons/basil/Outline/Files/Folder-user.svg | 0 public/icons/basil/Outline/Files/Folder.svg | 0 public/icons/basil/Outline/Files/Image.svg | 0 public/icons/basil/Outline/Files/Invoice.svg | 0 public/icons/basil/Outline/Files/Picture.svg | 0 public/icons/basil/Outline/Files/Upload.svg | 0 public/icons/basil/Outline/General/Alarm.svg | 0 public/icons/basil/Outline/General/Bag.svg | 0 public/icons/basil/Outline/General/Bank.svg | 0 public/icons/basil/Outline/General/Box.svg | 0 .../icons/basil/Outline/General/Calendar.svg | 0 public/icons/basil/Outline/General/Card.svg | 0 .../basil/Outline/General/Chart-pie-alt.svg | 0 .../icons/basil/Outline/General/Chart-pie.svg | 0 public/icons/basil/Outline/General/Clock.svg | 0 public/icons/basil/Outline/General/Filter.svg | 0 .../icons/basil/Outline/General/Flask-alt.svg | 0 public/icons/basil/Outline/General/Flask.svg | 0 public/icons/basil/Outline/General/Home.svg | 0 public/icons/basil/Outline/General/Medkit.svg | 0 public/icons/basil/Outline/General/Moon.svg | 0 .../icons/basil/Outline/General/Palette.svg | 0 public/icons/basil/Outline/General/Pulse.svg | 0 .../basil/Outline/General/Shopping-bag.svg | 0 .../basil/Outline/General/Shopping-basket.svg | 0 .../basil/Outline/General/Shopping-cart.svg | 0 public/icons/basil/Outline/General/Sun.svg | 0 public/icons/basil/Outline/General/Timer.svg | 0 .../icons/basil/Outline/General/Umbrella.svg | 0 public/icons/basil/Outline/General/Wallet.svg | 0 public/icons/basil/Outline/Interface/Add.svg | 0 public/icons/basil/Outline/Interface/Apps.svg | 0 .../basil/Outline/Interface/Arrow down.svg | 0 .../basil/Outline/Interface/Arrow left.svg | 0 .../basil/Outline/Interface/Arrow right.svg | 0 .../basil/Outline/Interface/Arrow up.svg | 0 .../icons/basil/Outline/Interface/At-sign.svg | 0 .../icons/basil/Outline/Interface/Attach.svg | 0 .../basil/Outline/Interface/Backspace.svg | 0 .../basil/Outline/Interface/Bluetooth.svg | 0 .../icons/basil/Outline/Interface/Cancel.svg | 0 .../basil/Outline/Interface/Caret down.svg | 0 .../basil/Outline/Interface/Caret left.svg | 0 .../basil/Outline/Interface/Caret right.svg | 0 .../basil/Outline/Interface/Caret up.svg | 0 .../icons/basil/Outline/Interface/Check.svg | 0 .../basil/Outline/Interface/Collapse.svg | 0 .../icons/basil/Outline/Interface/Columns.svg | 0 .../icons/basil/Outline/Interface/Cross.svg | 0 .../icons/basil/Outline/Interface/Cursor.svg | 0 .../basil/Outline/Interface/Edit-alt.svg | 0 public/icons/basil/Outline/Interface/Edit.svg | 0 .../basil/Outline/Interface/Exchange.svg | 0 .../icons/basil/Outline/Interface/Expand.svg | 0 .../icons/basil/Outline/Interface/History.svg | 0 .../icons/basil/Outline/Interface/Hotspot.svg | 0 .../icons/basil/Outline/Interface/Layout.svg | 0 .../icons/basil/Outline/Interface/Login.svg | 0 .../icons/basil/Outline/Interface/Logout.svg | 0 public/icons/basil/Outline/Interface/Menu.svg | 0 public/icons/basil/Outline/Interface/Move.svg | 0 .../icons/basil/Outline/Interface/Other 1.svg | 0 .../icons/basil/Outline/Interface/Other 2.svg | 0 public/icons/basil/Outline/Interface/Plus.svg | 0 .../icons/basil/Outline/Interface/Refresh.svg | 0 public/icons/basil/Outline/Interface/Rows.svg | 0 public/icons/basil/Outline/Interface/Save.svg | 0 .../icons/basil/Outline/Interface/Search.svg | 0 .../Outline/Interface/Settings-adjust.svg | 0 .../basil/Outline/Interface/Settings-alt.svg | 0 .../basil/Outline/Interface/Settings.svg | 0 public/icons/basil/Outline/Interface/Sort.svg | 0 .../icons/basil/Outline/Interface/Stack.svg | 0 .../basil/Outline/Interface/Trash-alt.svg | 0 .../icons/basil/Outline/Interface/Trash.svg | 0 .../icons/basil/Outline/Interface/Zoom-in.svg | 0 .../basil/Outline/Interface/Zoom-out.svg | 0 .../basil/Outline/Media/Fast-forward.svg | 0 .../icons/basil/Outline/Media/Fast-rewind.svg | 0 .../icons/basil/Outline/Media/Headphone.svg | 0 public/icons/basil/Outline/Media/Headset.svg | 0 .../basil/Outline/Media/Microphone-off.svg | 0 .../icons/basil/Outline/Media/Microphone.svg | 0 public/icons/basil/Outline/Media/Music.svg | 0 public/icons/basil/Outline/Media/Pause.svg | 0 public/icons/basil/Outline/Media/Play.svg | 0 public/icons/basil/Outline/Media/Shuffle.svg | 0 .../icons/basil/Outline/Media/Skip-next.svg | 0 .../icons/basil/Outline/Media/Skip-prev.svg | 0 .../icons/basil/Outline/Media/Volume-down.svg | 0 .../icons/basil/Outline/Media/Volume-off.svg | 0 .../icons/basil/Outline/Media/Volume-up.svg | 0 .../Outline/Navigation/Current-location.svg | 0 .../basil/Outline/Navigation/Explore.svg | 0 .../icons/basil/Outline/Navigation/Globe.svg | 0 .../Outline/Navigation/Location-check.svg | 0 .../Outline/Navigation/Location-plus.svg | 0 .../Outline/Navigation/Location-question.svg | 0 .../basil/Outline/Navigation/Location.svg | 0 .../basil/Outline/Navigation/Map-location.svg | 0 .../basil/Outline/Navigation/Navigation.svg | 0 public/icons/basil/Outline/Status/Award.svg | 0 .../icons/basil/Outline/Status/Book-open.svg | 0 .../icons/basil/Outline/Status/Bookmark.svg | 0 .../basil/Outline/Status/Checked-box.svg | 0 public/icons/basil/Outline/Status/Diamond.svg | 0 .../icons/basil/Outline/Status/Eye-closed.svg | 0 public/icons/basil/Outline/Status/Eye.svg | 0 public/icons/basil/Outline/Status/Fire.svg | 0 .../icons/basil/Outline/Status/Heart-off.svg | 0 .../icons/basil/Outline/Status/Heart-plus.svg | 0 public/icons/basil/Outline/Status/Heart.svg | 0 .../icons/basil/Outline/Status/Heartbeat.svg | 0 .../basil/Outline/Status/Info-circle.svg | 0 .../icons/basil/Outline/Status/Info-rect.svg | 0 .../basil/Outline/Status/Info-triangle.svg | 0 public/icons/basil/Outline/Status/Key.svg | 0 .../basil/Outline/Status/Lightbulb-alt.svg | 0 .../basil/Outline/Status/Lightbulb-off.svg | 0 .../icons/basil/Outline/Status/Lightbulb.svg | 0 .../basil/Outline/Status/Lightning-alt.svg | 0 .../icons/basil/Outline/Status/Lightning.svg | 0 .../icons/basil/Outline/Status/Lock-time.svg | 0 public/icons/basil/Outline/Status/Lock.svg | 0 .../basil/Outline/Status/Notification-off.svg | 0 .../basil/Outline/Status/Notification-on.svg | 0 .../basil/Outline/Status/Notification.svg | 0 public/icons/basil/Outline/Status/Pin.svg | 0 .../basil/Outline/Status/Power-button.svg | 0 public/icons/basil/Outline/Status/Present.svg | 0 .../icons/basil/Outline/Status/Sand-watch.svg | 0 public/icons/basil/Outline/Status/Shield.svg | 0 .../icons/basil/Outline/Status/Star-half.svg | 0 public/icons/basil/Outline/Status/Star.svg | 0 .../icons/basil/Outline/Status/Toggle-off.svg | 0 .../icons/basil/Outline/Status/Toggle-on.svg | 0 .../icons/basil/Outline/Status/University.svg | 0 public/icons/basil/Outline/Status/Unlock.svg | 0 .../Solid/Brands/Adobe-After-effects.svg | 0 .../Solid/Brands/Adobe-Experince-design.svg | 0 .../basil/Solid/Brands/Adobe-Illustrator.svg | 0 .../basil/Solid/Brands/Adobe-Indesign-1.svg | 0 .../basil/Solid/Brands/Adobe-Indesign.svg | 0 .../basil/Solid/Brands/Adobe-Lightroom.svg | 0 .../basil/Solid/Brands/Adobe-Photoshop.svg | 0 .../basil/Solid/Brands/Adobe-Premiere.svg | 0 public/icons/basil/Solid/Brands/Android.svg | 0 public/icons/basil/Solid/Brands/App-store.svg | 0 public/icons/basil/Solid/Brands/Apple.svg | 0 public/icons/basil/Solid/Brands/Asana.svg | 0 public/icons/basil/Solid/Brands/Behance.svg | 0 public/icons/basil/Solid/Brands/Chrome.svg | 0 public/icons/basil/Solid/Brands/Dribbble.svg | 0 public/icons/basil/Solid/Brands/Dropbox.svg | 0 .../basil/Solid/Brands/Facebook-messenger.svg | 0 public/icons/basil/Solid/Brands/Facebook.svg | 0 public/icons/basil/Solid/Brands/Figma.svg | 0 public/icons/basil/Solid/Brands/Gmail.svg | 0 .../icons/basil/Solid/Brands/Google-alt.svg | 0 .../icons/basil/Solid/Brands/Google-drive.svg | 0 .../icons/basil/Solid/Brands/Google-play.svg | 0 public/icons/basil/Solid/Brands/Google.svg | 0 public/icons/basil/Solid/Brands/Instagram.svg | 0 public/icons/basil/Solid/Brands/Linkedin.svg | 0 public/icons/basil/Solid/Brands/Medium.svg | 0 public/icons/basil/Solid/Brands/Notion.svg | 0 public/icons/basil/Solid/Brands/Pinterest.svg | 0 public/icons/basil/Solid/Brands/QQ.svg | 0 public/icons/basil/Solid/Brands/Reddit.svg | 0 public/icons/basil/Solid/Brands/Sketch.svg | 0 public/icons/basil/Solid/Brands/Skype.svg | 0 public/icons/basil/Solid/Brands/Slack.svg | 0 public/icons/basil/Solid/Brands/Snapchat.svg | 0 public/icons/basil/Solid/Brands/Telegram.svg | 0 public/icons/basil/Solid/Brands/Trello.svg | 0 public/icons/basil/Solid/Brands/Tumblr.svg | 0 public/icons/basil/Solid/Brands/Twitch.svg | 0 public/icons/basil/Solid/Brands/Twitter.svg | 0 public/icons/basil/Solid/Brands/Viber.svg | 0 public/icons/basil/Solid/Brands/Vk.svg | 0 public/icons/basil/Solid/Brands/Wechat.svg | 0 public/icons/basil/Solid/Brands/Whatsapp.svg | 0 public/icons/basil/Solid/Brands/Windows.svg | 0 public/icons/basil/Solid/Brands/Youtube.svg | 0 .../basil/Solid/Communication/Bullhorn.svg | 0 .../icons/basil/Solid/Communication/Chat.svg | 0 .../Solid/Communication/Comment-block.svg | 0 .../Solid/Communication/Comment-minus.svg | 0 .../Solid/Communication/Comment-plus.svg | 0 .../basil/Solid/Communication/Comment.svg | 0 .../basil/Solid/Communication/Contacts.svg | 0 .../basil/Solid/Communication/Dislike.svg | 0 .../Solid/Communication/Envelope-open.svg | 0 .../basil/Solid/Communication/Envelope.svg | 0 .../basil/Solid/Communication/Forward.svg | 0 .../icons/basil/Solid/Communication/Like.svg | 0 .../basil/Solid/Communication/Phone-in.svg | 0 .../basil/Solid/Communication/Phone-miss.svg | 0 .../basil/Solid/Communication/Phone-off.svg | 0 .../basil/Solid/Communication/Phone-out.svg | 0 .../icons/basil/Solid/Communication/Phone.svg | 0 .../icons/basil/Solid/Communication/Reply.svg | 0 .../icons/basil/Solid/Communication/Send.svg | 0 .../basil/Solid/Communication/Share-box.svg | 0 .../icons/basil/Solid/Communication/Share.svg | 0 .../basil/Solid/Communication/User-block.svg | 0 .../basil/Solid/Communication/User-clock.svg | 0 .../basil/Solid/Communication/User-plus.svg | 0 .../icons/basil/Solid/Communication/User.svg | 0 .../basil/Solid/Devices/Battery-full-1.svg | 0 .../basil/Solid/Devices/Battery-full.svg | 0 .../icons/basil/Solid/Devices/Battery-low.svg | 0 .../basil/Solid/Devices/Battery-most.svg | 0 .../basil/Solid/Devices/Battery-quarter.svg | 0 .../icons/basil/Solid/Devices/Battry-half.svg | 0 .../icons/basil/Solid/Devices/Binocular.svg | 0 public/icons/basil/Solid/Devices/Camera.svg | 0 public/icons/basil/Solid/Devices/Desktop.svg | 0 public/icons/basil/Solid/Devices/Dialpad.svg | 0 public/icons/basil/Solid/Devices/Gamepad.svg | 0 .../basil/Solid/Devices/Mobile-phone.svg | 0 .../icons/basil/Solid/Devices/Mouse-alt.svg | 0 public/icons/basil/Solid/Devices/Mouse.svg | 0 public/icons/basil/Solid/Devices/Printer.svg | 0 .../icons/basil/Solid/Devices/Processor.svg | 0 public/icons/basil/Solid/Devices/Server.svg | 0 public/icons/basil/Solid/Devices/Video.svg | 0 public/icons/basil/Solid/Devices/Watch.svg | 0 public/icons/basil/Solid/Files/Book-check.svg | 0 public/icons/basil/Solid/Files/Book-mark.svg | 0 public/icons/basil/Solid/Files/Book.svg | 0 .../icons/basil/Solid/Files/Clipboard-alt.svg | 0 public/icons/basil/Solid/Files/Clipboard.svg | 0 .../icons/basil/Solid/Files/Cloud-check.svg | 0 .../basil/Solid/Files/Cloud-download.svg | 0 public/icons/basil/Solid/Files/Cloud-off.svg | 0 .../icons/basil/Solid/Files/Cloud-upload.svg | 0 public/icons/basil/Solid/Files/Cloud.svg | 0 public/icons/basil/Solid/Files/Copy.svg | 0 public/icons/basil/Solid/Files/Document.svg | 0 public/icons/basil/Solid/Files/Download.svg | 0 .../icons/basil/Solid/Files/File-download.svg | 0 .../icons/basil/Solid/Files/File-upload.svg | 0 public/icons/basil/Solid/Files/File-user.svg | 0 public/icons/basil/Solid/Files/File.svg | 0 .../icons/basil/Solid/Files/Folder-block.svg | 0 .../icons/basil/Solid/Files/Folder-delete.svg | 0 .../icons/basil/Solid/Files/Folder-lock.svg | 0 .../icons/basil/Solid/Files/Folder-open.svg | 0 .../icons/basil/Solid/Files/Folder-plus.svg | 0 .../icons/basil/Solid/Files/Folder-user.svg | 0 public/icons/basil/Solid/Files/Folder.svg | 0 public/icons/basil/Solid/Files/Image.svg | 0 public/icons/basil/Solid/Files/Invoice.svg | 0 public/icons/basil/Solid/Files/Picture.svg | 0 public/icons/basil/Solid/Files/Upload.svg | 0 public/icons/basil/Solid/General/Alarm.svg | 0 public/icons/basil/Solid/General/Bag.svg | 0 public/icons/basil/Solid/General/Bank.svg | 0 public/icons/basil/Solid/General/Box.svg | 0 public/icons/basil/Solid/General/Calendar.svg | 0 public/icons/basil/Solid/General/Card.svg | 0 .../basil/Solid/General/Chart-pie-alt.svg | 0 .../icons/basil/Solid/General/Chart-pie.svg | 0 public/icons/basil/Solid/General/Clock.svg | 0 public/icons/basil/Solid/General/Filter.svg | 0 .../icons/basil/Solid/General/Flask-alt.svg | 0 public/icons/basil/Solid/General/Flask.svg | 0 public/icons/basil/Solid/General/Home.svg | 0 public/icons/basil/Solid/General/Medkit.svg | 0 public/icons/basil/Solid/General/Moon.svg | 0 public/icons/basil/Solid/General/Palette.svg | 0 public/icons/basil/Solid/General/Pulse.svg | 0 .../basil/Solid/General/Shopping-bag.svg | 0 .../basil/Solid/General/Shopping-basket.svg | 0 .../basil/Solid/General/Shopping-cart.svg | 0 public/icons/basil/Solid/General/Sun.svg | 0 public/icons/basil/Solid/General/Timer.svg | 0 public/icons/basil/Solid/General/Umbrella.svg | 0 public/icons/basil/Solid/General/Wallet.svg | 0 public/icons/basil/Solid/Interface/Add.svg | 0 public/icons/basil/Solid/Interface/Apps.svg | 0 .../basil/Solid/Interface/Arrow down.svg | 0 .../basil/Solid/Interface/Arrow left.svg | 0 .../basil/Solid/Interface/Arrow right.svg | 0 .../icons/basil/Solid/Interface/Arrow up.svg | 0 .../icons/basil/Solid/Interface/At-sign.svg | 0 public/icons/basil/Solid/Interface/Attach.svg | 0 .../icons/basil/Solid/Interface/Backspace.svg | 0 .../icons/basil/Solid/Interface/Bluetooth.svg | 0 public/icons/basil/Solid/Interface/Cancel.svg | 0 .../basil/Solid/Interface/Caret down.svg | 0 .../basil/Solid/Interface/Caret left.svg | 0 .../basil/Solid/Interface/Caret right.svg | 0 .../icons/basil/Solid/Interface/Caret up.svg | 0 public/icons/basil/Solid/Interface/Check.svg | 0 .../icons/basil/Solid/Interface/Collapse.svg | 0 .../icons/basil/Solid/Interface/Columns.svg | 0 public/icons/basil/Solid/Interface/Cross.svg | 0 public/icons/basil/Solid/Interface/Cursor.svg | 0 .../icons/basil/Solid/Interface/Edit-alt.svg | 0 public/icons/basil/Solid/Interface/Edit.svg | 0 .../icons/basil/Solid/Interface/Exchange.svg | 0 public/icons/basil/Solid/Interface/Expand.svg | 0 .../icons/basil/Solid/Interface/History.svg | 0 .../icons/basil/Solid/Interface/Hotspot.svg | 0 public/icons/basil/Solid/Interface/Layout.svg | 0 public/icons/basil/Solid/Interface/Login.svg | 0 public/icons/basil/Solid/Interface/Logout.svg | 0 public/icons/basil/Solid/Interface/Menu.svg | 0 public/icons/basil/Solid/Interface/Move.svg | 0 .../icons/basil/Solid/Interface/Other 1.svg | 0 .../icons/basil/Solid/Interface/Other 2.svg | 0 public/icons/basil/Solid/Interface/Plus.svg | 0 .../icons/basil/Solid/Interface/Refresh.svg | 0 public/icons/basil/Solid/Interface/Rows.svg | 0 public/icons/basil/Solid/Interface/Save.svg | 0 public/icons/basil/Solid/Interface/Search.svg | 0 .../basil/Solid/Interface/Settings-adjust.svg | 0 .../basil/Solid/Interface/Settings-alt.svg | 0 .../icons/basil/Solid/Interface/Settings.svg | 0 public/icons/basil/Solid/Interface/Sort.svg | 0 public/icons/basil/Solid/Interface/Stack.svg | 0 .../icons/basil/Solid/Interface/Trash-alt.svg | 0 public/icons/basil/Solid/Interface/Trash.svg | 0 .../icons/basil/Solid/Interface/Zoom-in.svg | 0 .../icons/basil/Solid/Interface/Zoom-out.svg | 0 .../icons/basil/Solid/Media/Fast-forward.svg | 0 .../icons/basil/Solid/Media/Fast-rewind.svg | 0 public/icons/basil/Solid/Media/Headphone.svg | 0 public/icons/basil/Solid/Media/Headset.svg | 0 .../basil/Solid/Media/Microphone-off.svg | 0 public/icons/basil/Solid/Media/Microphone.svg | 0 public/icons/basil/Solid/Media/Music.svg | 0 public/icons/basil/Solid/Media/Pause.svg | 0 public/icons/basil/Solid/Media/Play.svg | 0 public/icons/basil/Solid/Media/Shuffle.svg | 0 public/icons/basil/Solid/Media/Skip-next.svg | 0 public/icons/basil/Solid/Media/Skip-prev.svg | 0 .../icons/basil/Solid/Media/Volume-down.svg | 0 public/icons/basil/Solid/Media/Volume-off.svg | 0 public/icons/basil/Solid/Media/Volume-up.svg | 0 .../Solid/Navigation/Current-location.svg | 0 .../icons/basil/Solid/Navigation/Explore.svg | 0 public/icons/basil/Solid/Navigation/Globe.svg | 0 .../basil/Solid/Navigation/Location-check.svg | 0 .../basil/Solid/Navigation/Location-plus.svg | 0 .../Solid/Navigation/Location-question.svg | 0 .../icons/basil/Solid/Navigation/Location.svg | 0 .../basil/Solid/Navigation/Map-location.svg | 0 .../basil/Solid/Navigation/Navigation.svg | 0 public/icons/basil/Solid/Status/Award.svg | 0 public/icons/basil/Solid/Status/Book-open.svg | 0 public/icons/basil/Solid/Status/Bookmark.svg | 0 .../icons/basil/Solid/Status/Checked-box.svg | 0 public/icons/basil/Solid/Status/Diamond.svg | 0 .../icons/basil/Solid/Status/Eye-closed.svg | 0 public/icons/basil/Solid/Status/Eye.svg | 0 public/icons/basil/Solid/Status/Fire.svg | 0 public/icons/basil/Solid/Status/Group 23.svg | 0 public/icons/basil/Solid/Status/Heart-off.svg | 0 public/icons/basil/Solid/Status/Heart.svg | 0 public/icons/basil/Solid/Status/Heartbeat.svg | 0 .../icons/basil/Solid/Status/Info-circle.svg | 0 public/icons/basil/Solid/Status/Info-rect.svg | 0 .../basil/Solid/Status/Info-triangle.svg | 0 public/icons/basil/Solid/Status/Key.svg | 0 .../basil/Solid/Status/Lightbulb-alt.svg | 0 .../basil/Solid/Status/Lightbulb-off.svg | 0 public/icons/basil/Solid/Status/Lightbulb.svg | 0 .../basil/Solid/Status/Lightning-alt.svg | 0 public/icons/basil/Solid/Status/Lightning.svg | 0 public/icons/basil/Solid/Status/Lock-time.svg | 0 public/icons/basil/Solid/Status/Lock.svg | 0 .../basil/Solid/Status/Notification-off.svg | 0 .../basil/Solid/Status/Notification-on.svg | 0 .../icons/basil/Solid/Status/Notification.svg | 0 public/icons/basil/Solid/Status/Pin.svg | 0 .../icons/basil/Solid/Status/Power-button.svg | 0 public/icons/basil/Solid/Status/Present.svg | 0 .../icons/basil/Solid/Status/Sand-watch.svg | 0 public/icons/basil/Solid/Status/Shield.svg | 0 public/icons/basil/Solid/Status/Star-half.svg | 0 public/icons/basil/Solid/Status/Star.svg | 0 .../icons/basil/Solid/Status/Toggle-off.svg | 0 public/icons/basil/Solid/Status/Toggle-on.svg | 0 .../icons/basil/Solid/Status/University.svg | 0 public/icons/basil/Solid/Status/Unlock.svg | 0 public/icons/circle-info-solid.svg | 0 public/icons/crossreference.svg | 0 public/icons/door43.svg | 0 public/icons/expand_more.svg | 0 public/icons/file.svg | 0 public/icons/filter.svg | 0 public/icons/font.svg | 0 public/icons/footnotes.svg | 0 public/icons/logo.svg | 0 public/icons/new.svg | 0 public/icons/projects.svg | 0 public/icons/sectionIcons/2Column.svg | 0 public/icons/sectionIcons/4Column.svg | 0 .../sectionIcons/NotesOnly [not used yet].svg | 0 public/icons/sectionIcons/bcv.svg | 0 public/icons/sectionIcons/biblePlusNotes.svg | 0 public/icons/sectionIcons/bookNote.svg | 0 public/icons/sectionIcons/jxlSimple.svg | 0 public/icons/sectionIcons/jxlSpread.svg | 0 public/icons/sectionIcons/markdown.svg | 0 public/icons/sectionIcons/obs.svg | 0 public/icons/sectionIcons/obsPlusNotes.svg | 0 public/icons/sectionIcons/paraBible.svg | 0 public/icons/sundesmos/alignHelp.png | Bin public/icons/sundesmos/check_circleTrue.svg | 0 public/icons/sundesmos/check_circleWrong.svg | 0 public/icons/sync.svg | 0 public/icons/trash.svg | 0 public/icons/waveform.svg | 0 public/icons/x-solid.svg | 0 public/illustrations/bible-icon.svg | 0 public/illustrations/close-button-black.svg | 0 public/illustrations/dialogue-icon.svg | 0 public/illustrations/dictionary-icon.svg | 0 public/illustrations/down-arrow.svg | 0 public/illustrations/greenCheck.png | Bin public/illustrations/group.svg | 0 public/illustrations/half-moon.svg | 0 public/illustrations/image-icon.svg | 0 public/illustrations/location-icon.svg | 0 public/illustrations/minimize.svg | 0 public/illustrations/quote.svg | 0 public/illustrations/sitting.png | Bin public/illustrations/sitting.svg | 0 public/illustrations/standing.png | Bin public/illustrations/vector-one.svg | 0 public/scribex/bcs-hi_irv.tit.usfm | 0 public/scribex/bcs-hi_irv.usfm | 0 .../scribex/unfoldingWord-en_ult.psa-bak.usfm | 0 .../unfoldingWord-en_ult.psa-short.usfm | 0 public/scribex/unfoldingWord-en_ult.psa.usfm | 0 .../EditorPage/AudioEditor/AudioEditor.js | 2 +- renderer/src/components/Sync/Gitea/Gitea.js | 9 +- .../components/Sync/Gitea/GiteaFileBrowser.js | 11 +- .../src/layouts/editor/InnerFramePopup.js | 175 ++++++++++++------ .../pdfGenWrappers/BookList.js | 33 ++++ .../HeaderWrapper/BCVHeaderWrapper.js | 30 ++- .../HeaderWrapper/JXLHeaderWrapper.js | 23 ++- .../HeaderWrapper/OBSHeaderWrapper.js | 9 +- .../pdfGenWrappers/SectionAccordion.js | 16 +- .../pdfGenWrappers/WrapperTemplate.js | 140 ++++++++------ styles/globals.css | 9 +- styles/loader.css | 0 styles/nprogress.css | 4 +- styles/scribe-logo.png | Bin styles/scribe.icns | Bin styles/style-override.lazy.css | 0 supabase.js | 0 testconfig/setupTests.js | 0 useStyles.js | 0 yarn.lock | 88 +++++---- 654 files changed, 526 insertions(+), 288 deletions(-) delete mode 100644 .expo/README.md delete mode 100644 .expo/settings.json mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .yarnrc mode change 100644 => 100755 __mocks__/electron.js mode change 100644 => 100755 __mocks__/fileMock.js mode change 100644 => 100755 __mocks__/styleMock.js mode change 100644 => 100755 app/favicon.ico mode change 100644 => 100755 app/head.js mode change 100644 => 100755 app/home/layout.jsx mode change 100644 => 100755 app/home/page.jsx mode change 100644 => 100755 app/layout.js mode change 100644 => 100755 app/loading.js mode change 100644 => 100755 app/login/page.jsx mode change 100644 => 100755 app/newproject/page.js mode change 100644 => 100755 app/page.js mode change 100644 => 100755 app/profile/page.js mode change 100644 => 100755 app/projects/page.jsx mode change 100644 => 100755 app/providers.js mode change 100644 => 100755 app/resource/page.jsx mode change 100644 => 100755 app/signup/page.jsx mode change 100644 => 100755 app/sync/page.js mode change 100644 => 100755 babel.config.js mode change 100644 => 100755 docs/Architecture/Architecture.md mode change 100644 => 100755 docs/Architecture/Autographacodestructure.png mode change 100644 => 100755 docs/Architecture/BirdEyeView.png mode change 100644 => 100755 docs/Architecture/CodeStructure.html mode change 100644 => 100755 docs/Architecture/MajorComponents.png mode change 100644 => 100755 docs/Architecture/codeStructure.txt mode change 100644 => 100755 docs/Autographa-Diagram0.txt mode change 100644 => 100755 docs/AutographaRefactDraft1.md mode change 100644 => 100755 docs/AutographaTestDoc.md mode change 100644 => 100755 docs/Autographa_refactorplans.md mode change 100644 => 100755 docs/AutographaflowDiagramDraft.html mode change 100644 => 100755 docs/Development/Offline-Merge.md mode change 100644 => 100755 docs/Flows/sectionPlaceholder flow.pdf mode change 100644 => 100755 e2e-tests/base.test.ts mode change 100644 => 100755 e2e-tests/common.js mode change 100644 => 100755 e2e-tests/myFixtures.ts mode change 100644 => 100755 intro.png mode change 100644 => 100755 main/index.js mode change 100644 => 100755 main/preload.js mode change 100644 => 100755 netlify.toml mode change 100644 => 100755 public/brands/door43.png mode change 100644 => 100755 public/brands/gitea.png mode change 100644 => 100755 public/brands/paratext.png mode change 100644 => 100755 public/brands/scribe.png mode change 100644 => 100755 public/icons/Common/AdjustmentsVertical.svg mode change 100644 => 100755 public/icons/Common/ArchiveBox.svg mode change 100644 => 100755 public/icons/Common/ArrowLeft.svg mode change 100644 => 100755 public/icons/Common/ArrowPath.svg mode change 100644 => 100755 public/icons/Common/Check.svg mode change 100644 => 100755 public/icons/Common/ChevronDown.svg mode change 100644 => 100755 public/icons/Common/ChevronRight.svg mode change 100644 => 100755 public/icons/Common/ChevronUp.svg mode change 100644 => 100755 public/icons/Common/ChevronUpDown.svg mode change 100644 => 100755 public/icons/Common/Cog.svg mode change 100644 => 100755 public/icons/Common/ComputerDesktop.svg mode change 100644 => 100755 public/icons/Common/EllipsisVertical.svg mode change 100644 => 100755 public/icons/Common/ExclamationTriangle.svg mode change 100644 => 100755 public/icons/Common/InformationCircle.svg mode change 100644 => 100755 public/icons/Common/MagnifyingGlass.svg mode change 100644 => 100755 public/icons/Common/Minus.svg mode change 100644 => 100755 public/icons/Common/Pencil.svg mode change 100644 => 100755 public/icons/Common/PencilSquare.svg mode change 100644 => 100755 public/icons/Common/Plus.svg mode change 100644 => 100755 public/icons/Common/QuestionMarkCircle.svg mode change 100644 => 100755 public/icons/Common/SquaresPlus.svg mode change 100644 => 100755 public/icons/Common/Trash.svg mode change 100644 => 100755 public/icons/Common/XMark.svg mode change 100644 => 100755 public/icons/Xelah/ArrowDownOnSquare.svg mode change 100644 => 100755 public/icons/Xelah/ArrowUturnLeft.svg mode change 100644 => 100755 public/icons/Xelah/ArrowUturnRight.svg mode change 100644 => 100755 public/icons/Xelah/Bars2.svg mode change 100644 => 100755 public/icons/Xelah/Bars4.svg mode change 100644 => 100755 public/icons/Xelah/Copy.svg mode change 100644 => 100755 public/icons/Xelah/Paste.svg mode change 100644 => 100755 public/icons/Xelah/Plus.svg mode change 100644 => 100755 public/icons/Xelah/RectangleStack.svg mode change 100644 => 100755 public/icons/Xelah/XMark.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-After-effects.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Experince-design.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Illustrator.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Indesign.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Lightroom.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Photoshop.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Premiere.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Android.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/App-store.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Apple.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Asana.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Behance.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Chrome.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Dribbble.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Dropbox.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Facebook-messenger.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Facebook.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Figma.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Gmail.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-drive.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-play.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Group 151.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Instagram.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Linkedin.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Medium.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Notion.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Pinterest.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/QQ.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Reddit.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Sketch.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Skype.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Slack.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Snapchat.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Telegram.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Trello.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Tumblr.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Twitch.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Twitter.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Viber.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Vk.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Whatsapp.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Windows.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Youtube.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Bullhorn.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Chat.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-minus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Contacts.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Dislike.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Envelope-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Envelope.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Forward.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Like.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-in.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-miss.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-out.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Reply.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Send.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Share-box.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Share.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-clock.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-empty.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-full.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-low.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-most.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-quarter.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battry-half.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Binocular.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Camera.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Desktop.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Dialpad.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Gamepad.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mobile-phone.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mouse-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mouse.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Printer.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Processor.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Server.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Video.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Watch.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book-mark.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Clipboard-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Clipboard.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-upload.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Copy.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Document.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-upload.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-user.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-delete.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-lock.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-user.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Image.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Invoice.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Picture.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Upload.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Alarm.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Bag.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Bank.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Box.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Calendar.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Card.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Chart-pie-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Chart-pie.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Clock.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Filter.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Flask-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Flask.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Home.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Medkit.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Moon.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Palette.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Pulse.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-bag.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-basket.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-cart.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Sun.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Timer.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Umbrella.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Wallet.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Add.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Apps.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow down.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow left.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow right.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow up.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/At-sign.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Attach.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Backspace.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Bluetooth.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cancel.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret down.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret left.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret right.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret up.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Check.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Collapse.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Columns.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cross.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cursor.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Edit-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Edit.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Exchange.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Expand.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/History.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Hotspot.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Layout.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Login.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Logout.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Menu.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Move.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Other 1.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Other 2.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Refresh.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Rows.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Save.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Search.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings-adjust.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Sort.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Stack.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Trash-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Trash.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Zoom-in.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Zoom-out.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Fast-forward.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Fast-rewind.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Headphone.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Headset.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Microphone-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Microphone.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Music.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Pause.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Play.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Shuffle.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Skip-next.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Skip-prev.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-down.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-up.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Current-location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Explore.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Globe.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-question.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Map-location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Navigation.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Award.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Book-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Bookmark.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Checked-box.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Diamond.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Eye-closed.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Eye.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Fire.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heartbeat.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-circle.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-rect.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-triangle.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Key.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightning-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightning.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lock-time.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lock.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification-on.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Pin.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Power-button.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Present.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Sand-watch.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Shield.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Star-half.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Star.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Toggle-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Toggle-on.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/University.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Unlock.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-After-effects.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Experince-design.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Illustrator.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Indesign.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Lightroom.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Photoshop.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Premiere.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Android.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/App-store.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Apple.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Asana.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Behance.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Chrome.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Dribbble.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Dropbox.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Facebook-messenger.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Facebook.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Figma.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Gmail.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-drive.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-play.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Instagram.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Linkedin.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Medium.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Notion.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Pinterest.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/QQ.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Reddit.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Sketch.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Skype.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Slack.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Snapchat.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Telegram.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Trello.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Tumblr.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Twitch.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Twitter.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Viber.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Vk.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Wechat.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Whatsapp.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Windows.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Youtube.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Bullhorn.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Chat.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-minus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Contacts.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Dislike.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Envelope-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Envelope.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Forward.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Like.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-in.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-miss.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-out.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Reply.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Send.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Share-box.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Share.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-clock.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-full-1.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-full.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-low.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-most.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-quarter.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battry-half.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Binocular.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Camera.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Desktop.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Dialpad.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Gamepad.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mobile-phone.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mouse-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mouse.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Printer.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Processor.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Server.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Video.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Watch.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book-mark.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Clipboard-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Clipboard.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-upload.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Copy.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Document.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-upload.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-user.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-delete.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-lock.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-user.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Image.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Invoice.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Picture.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Upload.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Alarm.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Bag.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Bank.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Box.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Calendar.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Card.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Chart-pie-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Chart-pie.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Clock.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Filter.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Flask-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Flask.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Home.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Medkit.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Moon.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Palette.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Pulse.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-bag.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-basket.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-cart.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Sun.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Timer.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Umbrella.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Wallet.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Add.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Apps.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow down.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow left.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow right.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow up.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/At-sign.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Attach.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Backspace.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Bluetooth.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cancel.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret down.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret left.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret right.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret up.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Check.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Collapse.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Columns.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cross.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cursor.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Edit-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Edit.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Exchange.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Expand.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/History.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Hotspot.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Layout.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Login.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Logout.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Menu.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Move.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Other 1.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Other 2.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Refresh.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Rows.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Save.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Search.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings-adjust.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Sort.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Stack.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Trash-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Trash.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Zoom-in.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Zoom-out.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Fast-forward.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Fast-rewind.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Headphone.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Headset.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Microphone-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Microphone.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Music.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Pause.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Play.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Shuffle.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Skip-next.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Skip-prev.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-down.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-up.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Current-location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Explore.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Globe.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-question.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Map-location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Navigation.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Award.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Book-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Bookmark.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Checked-box.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Diamond.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Eye-closed.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Eye.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Fire.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Group 23.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heart-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heart.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heartbeat.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-circle.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-rect.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-triangle.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Key.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightning-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightning.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lock-time.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lock.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification-on.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Pin.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Power-button.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Present.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Sand-watch.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Shield.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Star-half.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Star.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Toggle-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Toggle-on.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/University.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Unlock.svg mode change 100644 => 100755 public/icons/circle-info-solid.svg mode change 100644 => 100755 public/icons/crossreference.svg mode change 100644 => 100755 public/icons/door43.svg mode change 100644 => 100755 public/icons/expand_more.svg mode change 100644 => 100755 public/icons/file.svg mode change 100644 => 100755 public/icons/filter.svg mode change 100644 => 100755 public/icons/font.svg mode change 100644 => 100755 public/icons/footnotes.svg mode change 100644 => 100755 public/icons/logo.svg mode change 100644 => 100755 public/icons/new.svg mode change 100644 => 100755 public/icons/projects.svg mode change 100644 => 100755 public/icons/sectionIcons/2Column.svg mode change 100644 => 100755 public/icons/sectionIcons/4Column.svg mode change 100644 => 100755 public/icons/sectionIcons/NotesOnly [not used yet].svg mode change 100644 => 100755 public/icons/sectionIcons/bcv.svg mode change 100644 => 100755 public/icons/sectionIcons/biblePlusNotes.svg mode change 100644 => 100755 public/icons/sectionIcons/bookNote.svg mode change 100644 => 100755 public/icons/sectionIcons/jxlSimple.svg mode change 100644 => 100755 public/icons/sectionIcons/jxlSpread.svg mode change 100644 => 100755 public/icons/sectionIcons/markdown.svg mode change 100644 => 100755 public/icons/sectionIcons/obs.svg mode change 100644 => 100755 public/icons/sectionIcons/obsPlusNotes.svg mode change 100644 => 100755 public/icons/sectionIcons/paraBible.svg mode change 100644 => 100755 public/icons/sundesmos/alignHelp.png mode change 100644 => 100755 public/icons/sundesmos/check_circleTrue.svg mode change 100644 => 100755 public/icons/sundesmos/check_circleWrong.svg mode change 100644 => 100755 public/icons/sync.svg mode change 100644 => 100755 public/icons/trash.svg mode change 100644 => 100755 public/icons/waveform.svg mode change 100644 => 100755 public/icons/x-solid.svg mode change 100644 => 100755 public/illustrations/bible-icon.svg mode change 100644 => 100755 public/illustrations/close-button-black.svg mode change 100644 => 100755 public/illustrations/dialogue-icon.svg mode change 100644 => 100755 public/illustrations/dictionary-icon.svg mode change 100644 => 100755 public/illustrations/down-arrow.svg mode change 100644 => 100755 public/illustrations/greenCheck.png mode change 100644 => 100755 public/illustrations/group.svg mode change 100644 => 100755 public/illustrations/half-moon.svg mode change 100644 => 100755 public/illustrations/image-icon.svg mode change 100644 => 100755 public/illustrations/location-icon.svg mode change 100644 => 100755 public/illustrations/minimize.svg mode change 100644 => 100755 public/illustrations/quote.svg mode change 100644 => 100755 public/illustrations/sitting.png mode change 100644 => 100755 public/illustrations/sitting.svg mode change 100644 => 100755 public/illustrations/standing.png mode change 100644 => 100755 public/illustrations/vector-one.svg mode change 100644 => 100755 public/scribex/bcs-hi_irv.tit.usfm mode change 100644 => 100755 public/scribex/bcs-hi_irv.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa-bak.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa-short.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa.usfm create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js mode change 100644 => 100755 styles/globals.css mode change 100644 => 100755 styles/loader.css mode change 100644 => 100755 styles/nprogress.css mode change 100644 => 100755 styles/scribe-logo.png mode change 100644 => 100755 styles/scribe.icns mode change 100644 => 100755 styles/style-override.lazy.css mode change 100644 => 100755 supabase.js mode change 100644 => 100755 testconfig/setupTests.js mode change 100644 => 100755 useStyles.js mode change 100644 => 100755 yarn.lock diff --git a/.expo/README.md b/.expo/README.md deleted file mode 100644 index fd146b4d3..000000000 --- a/.expo/README.md +++ /dev/null @@ -1,15 +0,0 @@ -> Why do I have a folder named ".expo" in my project? - -The ".expo" folder is created when an Expo project is started using "expo start" command. - -> What do the files contain? - -- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. -- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator. -- "settings.json": contains the server configuration that is used to serve the application manifest. - -> Should I commit the ".expo" folder? - -No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. - -Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/.expo/settings.json b/.expo/settings.json deleted file mode 100644 index 92bc513bf..000000000 --- a/.expo/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "hostType": "lan", - "lanType": "ip", - "dev": true, - "minify": false, - "urlRandomness": null, - "https": false -} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dc6a5b1a5..c5aab8607 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -12,6 +12,7 @@ jobs: runs-on: ubuntu-latest env: CI: false + NODE_OPTIONS: --max-old-space-size=4096 strategy: matrix: node-version: [18.20.3] @@ -31,9 +32,6 @@ jobs: - name: yarn install run: yarn install - - name: set max memory allocation - run: export NODE_OPTIONS=-max_old_space_size=4096 - - name: package id: package run: | @@ -53,6 +51,7 @@ jobs: runs-on: ubuntu-latest env: CI: false + NODE_OPTIONS: --max-old-space-size=4096 strategy: matrix: node-version: [18.20.3] @@ -70,9 +69,6 @@ jobs: - name: set @bitregistry translation-help run: yarn config set '@bit:registry' https://node.bit.dev - - name: set max memory allocation - run: export NODE_OPTIONS=-max_old_space_size=4096 - - name: install dependencies run: yarn install @@ -96,66 +92,63 @@ jobs: path: artifacts overwrite: true # Commented the below code for getting the binaries build for windows and Ubuntu - # build-mac: - # runs-on: macos-latest - # env: - # CI: false - # strategy: - # matrix: - # node-version: [18.20.3] - - # steps: - # - uses: actions/checkout@v2 - # - name: Use Node.js 18.20.3 - # uses: actions/setup-node@v1 - # with: - # node-version: 18.20.3 - # - run: | - # node --version - # yarn --version - # - name: Increase file descriptor limit - # run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 - # - name: set @bitregistry translation-help - # run: yarn config set '@bit:registry' https://node.bit.dev - - # - name: Install Homebrew - # run: | - # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - # echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile - # eval "$(/opt/homebrew/bin/brew shellenv)" - - # - name: Install canvas dependencies - # run: | - # brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 - # brew reinstall jpeg - # echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile - # echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile - # echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile - # echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile - # eval "$(/opt/homebrew/bin/brew shellenv)" - # brew install python-setuptools - - - # - name: set max memory allocation - # run: export NODE_OPTIONS=-max_old_space_size=4096 - - # - name: yarn install - # run: yarn install --verbose - - # - name: install dmg-license - # run: yarn add dmg-license - - # - name: package - # id: package - # run: | - # yarn dist - - # - name: Cleanup artifacts - # run: | - # npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" - # - name: Upload artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: Scribe-${{ github.run_id }}-${{ github.sha }} - # path: dist - # overwrite: true \ No newline at end of file + build-mac: + runs-on: macos-latest + env: + CI: false + NODE_OPTIONS: --max-old-space-size=4096 + strategy: + matrix: + node-version: [18.20.3] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js 18.20.3 + uses: actions/setup-node@v1 + with: + node-version: 18.20.3 + - run: | + node --version + yarn --version + - name: Increase file descriptor limit + run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 + - name: set @bitregistry translation-help + run: yarn config set '@bit:registry' https://node.bit.dev + + - name: Install Homebrew + run: | + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" + + - name: Install canvas dependencies + run: | + brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 + brew reinstall jpeg + echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile + echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile + echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile + echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" + brew install python-setuptools + + - name: yarn install + run: yarn install + + - name: install dmg-license + run: yarn add dmg-license + + - name: package + id: package + run: | + yarn dist + + - name: Cleanup artifacts + run: | + npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: Scribe-${{ github.run_id }}-${{ github.sha }} + path: dist + overwrite: true \ No newline at end of file diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 8cbe4b69a..a0f608045 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /.pnp .pnp.js bower_components +/.expo # next-on-netlify build output out_functions/ diff --git a/.yarnrc b/.yarnrc old mode 100644 new mode 100755 diff --git a/__mocks__/electron.js b/__mocks__/electron.js old mode 100644 new mode 100755 diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js old mode 100644 new mode 100755 diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js old mode 100644 new mode 100755 diff --git a/app/favicon.ico b/app/favicon.ico old mode 100644 new mode 100755 diff --git a/app/head.js b/app/head.js old mode 100644 new mode 100755 diff --git a/app/home/layout.jsx b/app/home/layout.jsx old mode 100644 new mode 100755 diff --git a/app/home/page.jsx b/app/home/page.jsx old mode 100644 new mode 100755 diff --git a/app/layout.js b/app/layout.js old mode 100644 new mode 100755 diff --git a/app/loading.js b/app/loading.js old mode 100644 new mode 100755 diff --git a/app/login/page.jsx b/app/login/page.jsx old mode 100644 new mode 100755 diff --git a/app/newproject/page.js b/app/newproject/page.js old mode 100644 new mode 100755 diff --git a/app/page.js b/app/page.js old mode 100644 new mode 100755 diff --git a/app/profile/page.js b/app/profile/page.js old mode 100644 new mode 100755 diff --git a/app/projects/page.jsx b/app/projects/page.jsx old mode 100644 new mode 100755 diff --git a/app/providers.js b/app/providers.js old mode 100644 new mode 100755 diff --git a/app/resource/page.jsx b/app/resource/page.jsx old mode 100644 new mode 100755 diff --git a/app/signup/page.jsx b/app/signup/page.jsx old mode 100644 new mode 100755 diff --git a/app/sync/page.js b/app/sync/page.js old mode 100644 new mode 100755 diff --git a/babel.config.js b/babel.config.js old mode 100644 new mode 100755 diff --git a/docs/Architecture/Architecture.md b/docs/Architecture/Architecture.md old mode 100644 new mode 100755 diff --git a/docs/Architecture/Autographacodestructure.png b/docs/Architecture/Autographacodestructure.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/BirdEyeView.png b/docs/Architecture/BirdEyeView.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/CodeStructure.html b/docs/Architecture/CodeStructure.html old mode 100644 new mode 100755 diff --git a/docs/Architecture/MajorComponents.png b/docs/Architecture/MajorComponents.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/codeStructure.txt b/docs/Architecture/codeStructure.txt old mode 100644 new mode 100755 diff --git a/docs/Autographa-Diagram0.txt b/docs/Autographa-Diagram0.txt old mode 100644 new mode 100755 diff --git a/docs/AutographaRefactDraft1.md b/docs/AutographaRefactDraft1.md old mode 100644 new mode 100755 diff --git a/docs/AutographaTestDoc.md b/docs/AutographaTestDoc.md old mode 100644 new mode 100755 diff --git a/docs/Autographa_refactorplans.md b/docs/Autographa_refactorplans.md old mode 100644 new mode 100755 diff --git a/docs/AutographaflowDiagramDraft.html b/docs/AutographaflowDiagramDraft.html old mode 100644 new mode 100755 diff --git a/docs/Development/Offline-Merge.md b/docs/Development/Offline-Merge.md old mode 100644 new mode 100755 diff --git a/docs/Flows/sectionPlaceholder flow.pdf b/docs/Flows/sectionPlaceholder flow.pdf old mode 100644 new mode 100755 diff --git a/e2e-tests/base.test.ts b/e2e-tests/base.test.ts old mode 100644 new mode 100755 diff --git a/e2e-tests/common.js b/e2e-tests/common.js old mode 100644 new mode 100755 diff --git a/e2e-tests/myFixtures.ts b/e2e-tests/myFixtures.ts old mode 100644 new mode 100755 diff --git a/intro.png b/intro.png old mode 100644 new mode 100755 diff --git a/main/index.js b/main/index.js old mode 100644 new mode 100755 index 038cc32be..410e69c72 --- a/main/index.js +++ b/main/index.js @@ -1,7 +1,9 @@ // Native require('@electron/remote/main').initialize(); -const { join } = require('path'); +const path = require('path'); +const fs = require('fs'); const { format } = require('url'); +const { install } = require('@puppeteer/browsers'); const config = require("dotenv"); config.config(); @@ -12,11 +14,71 @@ const prepareNext = require('electron-next'); const { autoUpdater } = require('electron-updater'); let mainWindow; +let browserPath; function isDev() { return process.argv[2] == '--dev'; } + +async function setPermissions(chromePath) { + try { + fs.chmodSync(chromePath, '755'); + } catch (err) { + console.error(`Failed to set permissions for ${chromePath}: `, err); + } +} + +function getChromeCacheDir() { + const dataDir = app.getPath('appData'); + + const chromeDataDir = path.join(dataDir, 'chrome-cache'); + const chromeDataDirFilePath = path.join(chromeDataDir, 'executablePath'); + + // Create the folder if it doesn't exist + try { + fs.accessSync(chromeDataDir); + } catch (err) { + // If the directory doesn't exist, create it + fs.mkdirSync(chromeDataDir, { recursive: true }); + fs.appendFileSync(chromeDataDirFilePath, '', 'utf8'); + console.log(`Created persistent Chrome data directory at: ${chromeDataDir}`); + } + + return chromeDataDir; +} + +async function verifyAndInstallChrome(version) { + // Get the persistent directory + const cacheDir = getChromeCacheDir(); + const cacheDirFilePath = path.join(cacheDir, 'executablePath'); + + // Check if the browser is already installed + + // fs.accessSync(cacheDirFilePath); + const data = fs.readFileSync(cacheDirFilePath, 'utf8'); + if(data.trim() !== '') { + console.log(`Chrome version ${version} is already installed at '${data}'`); + browserPath = data; + return browserPath; + } + console.log(`Chrome version ${version} is not installed. Installing now...`); + await install({ + cacheDir, + browser: 'chrome', + buildId: version, + }).then((res) => { + if (fs.existsSync(res.executablePath)) { + browserPath = res.executablePath; + fs.appendFileSync(cacheDirFilePath, res.executablePath, 'utf8'); + console.log(`Chrome version ${version} has been installed to ${browserPath}.`); + } + setPermissions(browserPath); + }).catch((err) => { + throw new Error(`Failed to install Chrome version ${version} : ${err}`); + }); +} + // Prepare the renderer once the app is ready -function createWindow() { +async function createWindow() { mainWindow = new BrowserWindow({ width: 900, height: 600, @@ -26,22 +88,37 @@ function createWindow() { webSecurity: false, enableRemoteModule: true, contextIsolation: false, - preload: join(__dirname, 'preload.js'), + preload: path.join(__dirname, 'preload.js'), }, }); require('@electron/remote/main').enable(mainWindow.webContents); const url = isDev() ? 'http://localhost:8000' : format({ - pathname: join(__dirname, '../renderer/out/index.html'), + pathname: path.join(__dirname, '../renderer/out/index.html'), protocol: 'file:', slashes: true, }); + // useful line of code to debug puppet with the console in the app + // app.commandLine.appendSwitch('remote-debugging-port', '8000'); + + verifyAndInstallChrome('121.0.6167.85') + .catch(err => { + console.error(`Failed to verify or install Chrome: ${err.message}`); + }); + mainWindow.loadURL(url); autoUpdater.checkForUpdatesAndNotify(); } +ipcMain.handle('get-browser-path', async (event) => { + await verifyAndInstallChrome('121.0.6167.85').catch(err => { + console.error(`Failed to verify or install Chrome: ${err.message}`); + }); + return browserPath; +}); + // prevent multiple app window opening const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { @@ -71,6 +148,7 @@ app.on('window-all-closed', () => { app.on('activate', async () => { if (mainWindow === null) { + await pie.initialize(app); createWindow(); } }); diff --git a/main/preload.js b/main/preload.js old mode 100644 new mode 100755 index 59b36b867..d52376010 --- a/main/preload.js +++ b/main/preload.js @@ -2,6 +2,7 @@ const { ipcRenderer } = require('electron'); const log = require('electron-log'); const fontList = require('font-list'); const { PdfGen } = require('jxl-pdf'); +const puppeteer = require('puppeteer-core'); const _fonts = []; const fetchFonts = async () => { @@ -17,12 +18,10 @@ const fetchFonts = async () => { }; fetchFonts(); -// Since we disabled nodeIntegration we can reintroduce -// needed node functionality here process.once('loaded', () => { - global.ipcRenderer = ipcRenderer; + global.puppeteer = puppeteer; global.log = log; - global.PdfGenStatic = PdfGen + global.PdfGenStatic = PdfGen; global.fonts = _fonts; -}); +}); \ No newline at end of file diff --git a/netlify.toml b/netlify.toml old mode 100644 new mode 100755 diff --git a/next.config.js b/next.config.js index c3dcde20e..b77ffcaac 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,7 @@ // const nodeExternals = require('webpack-node-externals'); const path = require('path'); const colors = require('tailwindcss/colors'); +const TerserPlugin = require("terser-webpack-plugin"); const nextConfig = { webpack: (config, { isServer }) => { @@ -9,6 +10,7 @@ const nextConfig = { config.resolve.fallback.fs = false; config.resolve.alias.canvas = false; } + config.module.rules.push({ test: /\.md$/, use: 'raw-loader', diff --git a/package.json b/package.json index 1d82dccd6..e53d41af2 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "pack-app": "yarn build && electron-builder --dir", "dist": "yarn build && electron-builder -p never", "deploy": "yarn build && electron-builder -p always", - "makewin": "electron-builder --windows" + "makewin": "yarn build && electron-builder --windows" }, "eslintIgnore": [ "*.test.js" @@ -101,8 +101,8 @@ "babel-jest": "^28.1.1", "babel-plugin-istanbul": "^6.1.1", "buffer-loader": "^0.1.0", - "canvas": "^2.9.1", - "electron": "21.0.1", + "canvas": "^2.11.2", + "electron": "^21.0.1", "electron-builder": "^23.6.0", "eslint": "^8.17.0", "eslint-config-airbnb": "^19.0.4", @@ -146,6 +146,7 @@ "@mui/material": "^5.15.15", "@mui/styles": "^5.15.18", "@ory/kratos-client": "^0.10.1", + "@puppeteer/browsers": "^2.4.0", "@radix-ui/react-dialog": "^1.0.3", "@radix-ui/react-dropdown-menu": "^2.0.4", "@react-pdf/renderer": "^3.4.0", @@ -185,7 +186,7 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", - "jxl-pdf": "0.6.3", + "jxl-pdf": "0.8.0", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", @@ -205,6 +206,7 @@ "proskomma-core": "^0.10.4", "proskomma-json-tools": "^0.8.16", "proskomma-react-hooks": "2.4.0", + "puppeteer-core": "^21.6.1", "random-words": "^2.0.1", "raw-loader": "^4.0.2", "react": "^18.2.0", @@ -222,6 +224,7 @@ "react-scripts": "5.0.1", "styled-components": "^5.3.6", "tc-ui-toolkit": "5.3.3", + "terser-webpack-plugin": "^5.3.10", "tls": "^0.0.1", "translation-helps-rcl": "3.5.12", "typescript": "^4.9.5", @@ -249,4 +252,4 @@ "word-aligner": "$word-aligner", "@mui/lab": "$@mui/lab" } -} \ No newline at end of file +} diff --git a/public/brands/door43.png b/public/brands/door43.png old mode 100644 new mode 100755 diff --git a/public/brands/gitea.png b/public/brands/gitea.png old mode 100644 new mode 100755 diff --git a/public/brands/paratext.png b/public/brands/paratext.png old mode 100644 new mode 100755 diff --git a/public/brands/scribe.png b/public/brands/scribe.png old mode 100644 new mode 100755 diff --git a/public/icons/Common/AdjustmentsVertical.svg b/public/icons/Common/AdjustmentsVertical.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArchiveBox.svg b/public/icons/Common/ArchiveBox.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArrowLeft.svg b/public/icons/Common/ArrowLeft.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArrowPath.svg b/public/icons/Common/ArrowPath.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Check.svg b/public/icons/Common/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronDown.svg b/public/icons/Common/ChevronDown.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronRight.svg b/public/icons/Common/ChevronRight.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronUp.svg b/public/icons/Common/ChevronUp.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronUpDown.svg b/public/icons/Common/ChevronUpDown.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Cog.svg b/public/icons/Common/Cog.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ComputerDesktop.svg b/public/icons/Common/ComputerDesktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/EllipsisVertical.svg b/public/icons/Common/EllipsisVertical.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ExclamationTriangle.svg b/public/icons/Common/ExclamationTriangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/InformationCircle.svg b/public/icons/Common/InformationCircle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/MagnifyingGlass.svg b/public/icons/Common/MagnifyingGlass.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Minus.svg b/public/icons/Common/Minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Pencil.svg b/public/icons/Common/Pencil.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/PencilSquare.svg b/public/icons/Common/PencilSquare.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Plus.svg b/public/icons/Common/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/QuestionMarkCircle.svg b/public/icons/Common/QuestionMarkCircle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/SquaresPlus.svg b/public/icons/Common/SquaresPlus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Trash.svg b/public/icons/Common/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/XMark.svg b/public/icons/Common/XMark.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowDownOnSquare.svg b/public/icons/Xelah/ArrowDownOnSquare.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowUturnLeft.svg b/public/icons/Xelah/ArrowUturnLeft.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowUturnRight.svg b/public/icons/Xelah/ArrowUturnRight.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Bars2.svg b/public/icons/Xelah/Bars2.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Bars4.svg b/public/icons/Xelah/Bars4.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Copy.svg b/public/icons/Xelah/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Paste.svg b/public/icons/Xelah/Paste.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Plus.svg b/public/icons/Xelah/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/RectangleStack.svg b/public/icons/Xelah/RectangleStack.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/XMark.svg b/public/icons/Xelah/XMark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-After-effects.svg b/public/icons/basil/Outline/Brands/Adobe-After-effects.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Experince-design.svg b/public/icons/basil/Outline/Brands/Adobe-Experince-design.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Illustrator.svg b/public/icons/basil/Outline/Brands/Adobe-Illustrator.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg b/public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Indesign.svg b/public/icons/basil/Outline/Brands/Adobe-Indesign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Lightroom.svg b/public/icons/basil/Outline/Brands/Adobe-Lightroom.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Photoshop.svg b/public/icons/basil/Outline/Brands/Adobe-Photoshop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Premiere.svg b/public/icons/basil/Outline/Brands/Adobe-Premiere.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Android.svg b/public/icons/basil/Outline/Brands/Android.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/App-store.svg b/public/icons/basil/Outline/Brands/App-store.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Apple.svg b/public/icons/basil/Outline/Brands/Apple.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Asana.svg b/public/icons/basil/Outline/Brands/Asana.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Behance.svg b/public/icons/basil/Outline/Brands/Behance.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Chrome.svg b/public/icons/basil/Outline/Brands/Chrome.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Dribbble.svg b/public/icons/basil/Outline/Brands/Dribbble.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Dropbox.svg b/public/icons/basil/Outline/Brands/Dropbox.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Facebook-messenger.svg b/public/icons/basil/Outline/Brands/Facebook-messenger.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Facebook.svg b/public/icons/basil/Outline/Brands/Facebook.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Figma.svg b/public/icons/basil/Outline/Brands/Figma.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Gmail.svg b/public/icons/basil/Outline/Brands/Gmail.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-alt.svg b/public/icons/basil/Outline/Brands/Google-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-drive.svg b/public/icons/basil/Outline/Brands/Google-drive.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-play.svg b/public/icons/basil/Outline/Brands/Google-play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google.svg b/public/icons/basil/Outline/Brands/Google.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Group 151.svg b/public/icons/basil/Outline/Brands/Group 151.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Instagram.svg b/public/icons/basil/Outline/Brands/Instagram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Linkedin.svg b/public/icons/basil/Outline/Brands/Linkedin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Medium.svg b/public/icons/basil/Outline/Brands/Medium.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Notion.svg b/public/icons/basil/Outline/Brands/Notion.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Pinterest.svg b/public/icons/basil/Outline/Brands/Pinterest.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/QQ.svg b/public/icons/basil/Outline/Brands/QQ.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Reddit.svg b/public/icons/basil/Outline/Brands/Reddit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Sketch.svg b/public/icons/basil/Outline/Brands/Sketch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Skype.svg b/public/icons/basil/Outline/Brands/Skype.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Slack.svg b/public/icons/basil/Outline/Brands/Slack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Snapchat.svg b/public/icons/basil/Outline/Brands/Snapchat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Telegram.svg b/public/icons/basil/Outline/Brands/Telegram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Trello.svg b/public/icons/basil/Outline/Brands/Trello.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Tumblr.svg b/public/icons/basil/Outline/Brands/Tumblr.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Twitch.svg b/public/icons/basil/Outline/Brands/Twitch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Twitter.svg b/public/icons/basil/Outline/Brands/Twitter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Viber.svg b/public/icons/basil/Outline/Brands/Viber.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Vk.svg b/public/icons/basil/Outline/Brands/Vk.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Whatsapp.svg b/public/icons/basil/Outline/Brands/Whatsapp.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Windows.svg b/public/icons/basil/Outline/Brands/Windows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Youtube.svg b/public/icons/basil/Outline/Brands/Youtube.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Bullhorn.svg b/public/icons/basil/Outline/Communication/Bullhorn.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Chat.svg b/public/icons/basil/Outline/Communication/Chat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-block.svg b/public/icons/basil/Outline/Communication/Comment-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-minus.svg b/public/icons/basil/Outline/Communication/Comment-minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-plus.svg b/public/icons/basil/Outline/Communication/Comment-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment.svg b/public/icons/basil/Outline/Communication/Comment.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Contacts.svg b/public/icons/basil/Outline/Communication/Contacts.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Dislike.svg b/public/icons/basil/Outline/Communication/Dislike.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Envelope-open.svg b/public/icons/basil/Outline/Communication/Envelope-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Envelope.svg b/public/icons/basil/Outline/Communication/Envelope.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Forward.svg b/public/icons/basil/Outline/Communication/Forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Like.svg b/public/icons/basil/Outline/Communication/Like.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-in.svg b/public/icons/basil/Outline/Communication/Phone-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-miss.svg b/public/icons/basil/Outline/Communication/Phone-miss.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-off.svg b/public/icons/basil/Outline/Communication/Phone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-out.svg b/public/icons/basil/Outline/Communication/Phone-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone.svg b/public/icons/basil/Outline/Communication/Phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Reply.svg b/public/icons/basil/Outline/Communication/Reply.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Send.svg b/public/icons/basil/Outline/Communication/Send.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Share-box.svg b/public/icons/basil/Outline/Communication/Share-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Share.svg b/public/icons/basil/Outline/Communication/Share.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-block.svg b/public/icons/basil/Outline/Communication/User-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-clock.svg b/public/icons/basil/Outline/Communication/User-clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-plus.svg b/public/icons/basil/Outline/Communication/User-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User.svg b/public/icons/basil/Outline/Communication/User.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-empty.svg b/public/icons/basil/Outline/Devices/Battery-empty.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-full.svg b/public/icons/basil/Outline/Devices/Battery-full.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-low.svg b/public/icons/basil/Outline/Devices/Battery-low.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-most.svg b/public/icons/basil/Outline/Devices/Battery-most.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-quarter.svg b/public/icons/basil/Outline/Devices/Battery-quarter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battry-half.svg b/public/icons/basil/Outline/Devices/Battry-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Binocular.svg b/public/icons/basil/Outline/Devices/Binocular.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Camera.svg b/public/icons/basil/Outline/Devices/Camera.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Desktop.svg b/public/icons/basil/Outline/Devices/Desktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Dialpad.svg b/public/icons/basil/Outline/Devices/Dialpad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Gamepad.svg b/public/icons/basil/Outline/Devices/Gamepad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mobile-phone.svg b/public/icons/basil/Outline/Devices/Mobile-phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mouse-alt.svg b/public/icons/basil/Outline/Devices/Mouse-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mouse.svg b/public/icons/basil/Outline/Devices/Mouse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Printer.svg b/public/icons/basil/Outline/Devices/Printer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Processor.svg b/public/icons/basil/Outline/Devices/Processor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Server.svg b/public/icons/basil/Outline/Devices/Server.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Video.svg b/public/icons/basil/Outline/Devices/Video.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Watch.svg b/public/icons/basil/Outline/Devices/Watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book-check.svg b/public/icons/basil/Outline/Files/Book-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book-mark.svg b/public/icons/basil/Outline/Files/Book-mark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book.svg b/public/icons/basil/Outline/Files/Book.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Clipboard-alt.svg b/public/icons/basil/Outline/Files/Clipboard-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Clipboard.svg b/public/icons/basil/Outline/Files/Clipboard.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-check.svg b/public/icons/basil/Outline/Files/Cloud-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-download.svg b/public/icons/basil/Outline/Files/Cloud-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-off.svg b/public/icons/basil/Outline/Files/Cloud-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-upload.svg b/public/icons/basil/Outline/Files/Cloud-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud.svg b/public/icons/basil/Outline/Files/Cloud.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Copy.svg b/public/icons/basil/Outline/Files/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Document.svg b/public/icons/basil/Outline/Files/Document.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Download.svg b/public/icons/basil/Outline/Files/Download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-download.svg b/public/icons/basil/Outline/Files/File-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-upload.svg b/public/icons/basil/Outline/Files/File-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-user.svg b/public/icons/basil/Outline/Files/File-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File.svg b/public/icons/basil/Outline/Files/File.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-block.svg b/public/icons/basil/Outline/Files/Folder-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-delete.svg b/public/icons/basil/Outline/Files/Folder-delete.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-lock.svg b/public/icons/basil/Outline/Files/Folder-lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-open.svg b/public/icons/basil/Outline/Files/Folder-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-plus.svg b/public/icons/basil/Outline/Files/Folder-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-user.svg b/public/icons/basil/Outline/Files/Folder-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder.svg b/public/icons/basil/Outline/Files/Folder.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Image.svg b/public/icons/basil/Outline/Files/Image.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Invoice.svg b/public/icons/basil/Outline/Files/Invoice.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Picture.svg b/public/icons/basil/Outline/Files/Picture.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Upload.svg b/public/icons/basil/Outline/Files/Upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Alarm.svg b/public/icons/basil/Outline/General/Alarm.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Bag.svg b/public/icons/basil/Outline/General/Bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Bank.svg b/public/icons/basil/Outline/General/Bank.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Box.svg b/public/icons/basil/Outline/General/Box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Calendar.svg b/public/icons/basil/Outline/General/Calendar.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Card.svg b/public/icons/basil/Outline/General/Card.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Chart-pie-alt.svg b/public/icons/basil/Outline/General/Chart-pie-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Chart-pie.svg b/public/icons/basil/Outline/General/Chart-pie.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Clock.svg b/public/icons/basil/Outline/General/Clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Filter.svg b/public/icons/basil/Outline/General/Filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Flask-alt.svg b/public/icons/basil/Outline/General/Flask-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Flask.svg b/public/icons/basil/Outline/General/Flask.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Home.svg b/public/icons/basil/Outline/General/Home.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Medkit.svg b/public/icons/basil/Outline/General/Medkit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Moon.svg b/public/icons/basil/Outline/General/Moon.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Palette.svg b/public/icons/basil/Outline/General/Palette.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Pulse.svg b/public/icons/basil/Outline/General/Pulse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-bag.svg b/public/icons/basil/Outline/General/Shopping-bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-basket.svg b/public/icons/basil/Outline/General/Shopping-basket.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-cart.svg b/public/icons/basil/Outline/General/Shopping-cart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Sun.svg b/public/icons/basil/Outline/General/Sun.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Timer.svg b/public/icons/basil/Outline/General/Timer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Umbrella.svg b/public/icons/basil/Outline/General/Umbrella.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Wallet.svg b/public/icons/basil/Outline/General/Wallet.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Add.svg b/public/icons/basil/Outline/Interface/Add.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Apps.svg b/public/icons/basil/Outline/Interface/Apps.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow down.svg b/public/icons/basil/Outline/Interface/Arrow down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow left.svg b/public/icons/basil/Outline/Interface/Arrow left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow right.svg b/public/icons/basil/Outline/Interface/Arrow right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow up.svg b/public/icons/basil/Outline/Interface/Arrow up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/At-sign.svg b/public/icons/basil/Outline/Interface/At-sign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Attach.svg b/public/icons/basil/Outline/Interface/Attach.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Backspace.svg b/public/icons/basil/Outline/Interface/Backspace.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Bluetooth.svg b/public/icons/basil/Outline/Interface/Bluetooth.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cancel.svg b/public/icons/basil/Outline/Interface/Cancel.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret down.svg b/public/icons/basil/Outline/Interface/Caret down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret left.svg b/public/icons/basil/Outline/Interface/Caret left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret right.svg b/public/icons/basil/Outline/Interface/Caret right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret up.svg b/public/icons/basil/Outline/Interface/Caret up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Check.svg b/public/icons/basil/Outline/Interface/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Collapse.svg b/public/icons/basil/Outline/Interface/Collapse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Columns.svg b/public/icons/basil/Outline/Interface/Columns.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cross.svg b/public/icons/basil/Outline/Interface/Cross.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cursor.svg b/public/icons/basil/Outline/Interface/Cursor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Edit-alt.svg b/public/icons/basil/Outline/Interface/Edit-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Edit.svg b/public/icons/basil/Outline/Interface/Edit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Exchange.svg b/public/icons/basil/Outline/Interface/Exchange.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Expand.svg b/public/icons/basil/Outline/Interface/Expand.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/History.svg b/public/icons/basil/Outline/Interface/History.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Hotspot.svg b/public/icons/basil/Outline/Interface/Hotspot.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Layout.svg b/public/icons/basil/Outline/Interface/Layout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Login.svg b/public/icons/basil/Outline/Interface/Login.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Logout.svg b/public/icons/basil/Outline/Interface/Logout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Menu.svg b/public/icons/basil/Outline/Interface/Menu.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Move.svg b/public/icons/basil/Outline/Interface/Move.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Other 1.svg b/public/icons/basil/Outline/Interface/Other 1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Other 2.svg b/public/icons/basil/Outline/Interface/Other 2.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Plus.svg b/public/icons/basil/Outline/Interface/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Refresh.svg b/public/icons/basil/Outline/Interface/Refresh.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Rows.svg b/public/icons/basil/Outline/Interface/Rows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Save.svg b/public/icons/basil/Outline/Interface/Save.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Search.svg b/public/icons/basil/Outline/Interface/Search.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings-adjust.svg b/public/icons/basil/Outline/Interface/Settings-adjust.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings-alt.svg b/public/icons/basil/Outline/Interface/Settings-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings.svg b/public/icons/basil/Outline/Interface/Settings.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Sort.svg b/public/icons/basil/Outline/Interface/Sort.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Stack.svg b/public/icons/basil/Outline/Interface/Stack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Trash-alt.svg b/public/icons/basil/Outline/Interface/Trash-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Trash.svg b/public/icons/basil/Outline/Interface/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Zoom-in.svg b/public/icons/basil/Outline/Interface/Zoom-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Zoom-out.svg b/public/icons/basil/Outline/Interface/Zoom-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Fast-forward.svg b/public/icons/basil/Outline/Media/Fast-forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Fast-rewind.svg b/public/icons/basil/Outline/Media/Fast-rewind.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Headphone.svg b/public/icons/basil/Outline/Media/Headphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Headset.svg b/public/icons/basil/Outline/Media/Headset.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Microphone-off.svg b/public/icons/basil/Outline/Media/Microphone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Microphone.svg b/public/icons/basil/Outline/Media/Microphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Music.svg b/public/icons/basil/Outline/Media/Music.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Pause.svg b/public/icons/basil/Outline/Media/Pause.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Play.svg b/public/icons/basil/Outline/Media/Play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Shuffle.svg b/public/icons/basil/Outline/Media/Shuffle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Skip-next.svg b/public/icons/basil/Outline/Media/Skip-next.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Skip-prev.svg b/public/icons/basil/Outline/Media/Skip-prev.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-down.svg b/public/icons/basil/Outline/Media/Volume-down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-off.svg b/public/icons/basil/Outline/Media/Volume-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-up.svg b/public/icons/basil/Outline/Media/Volume-up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Current-location.svg b/public/icons/basil/Outline/Navigation/Current-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Explore.svg b/public/icons/basil/Outline/Navigation/Explore.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Globe.svg b/public/icons/basil/Outline/Navigation/Globe.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-check.svg b/public/icons/basil/Outline/Navigation/Location-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-plus.svg b/public/icons/basil/Outline/Navigation/Location-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-question.svg b/public/icons/basil/Outline/Navigation/Location-question.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location.svg b/public/icons/basil/Outline/Navigation/Location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Map-location.svg b/public/icons/basil/Outline/Navigation/Map-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Navigation.svg b/public/icons/basil/Outline/Navigation/Navigation.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Award.svg b/public/icons/basil/Outline/Status/Award.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Book-open.svg b/public/icons/basil/Outline/Status/Book-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Bookmark.svg b/public/icons/basil/Outline/Status/Bookmark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Checked-box.svg b/public/icons/basil/Outline/Status/Checked-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Diamond.svg b/public/icons/basil/Outline/Status/Diamond.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Eye-closed.svg b/public/icons/basil/Outline/Status/Eye-closed.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Eye.svg b/public/icons/basil/Outline/Status/Eye.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Fire.svg b/public/icons/basil/Outline/Status/Fire.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart-off.svg b/public/icons/basil/Outline/Status/Heart-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart-plus.svg b/public/icons/basil/Outline/Status/Heart-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart.svg b/public/icons/basil/Outline/Status/Heart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heartbeat.svg b/public/icons/basil/Outline/Status/Heartbeat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-circle.svg b/public/icons/basil/Outline/Status/Info-circle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-rect.svg b/public/icons/basil/Outline/Status/Info-rect.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-triangle.svg b/public/icons/basil/Outline/Status/Info-triangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Key.svg b/public/icons/basil/Outline/Status/Key.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb-alt.svg b/public/icons/basil/Outline/Status/Lightbulb-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb-off.svg b/public/icons/basil/Outline/Status/Lightbulb-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb.svg b/public/icons/basil/Outline/Status/Lightbulb.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightning-alt.svg b/public/icons/basil/Outline/Status/Lightning-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightning.svg b/public/icons/basil/Outline/Status/Lightning.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lock-time.svg b/public/icons/basil/Outline/Status/Lock-time.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lock.svg b/public/icons/basil/Outline/Status/Lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification-off.svg b/public/icons/basil/Outline/Status/Notification-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification-on.svg b/public/icons/basil/Outline/Status/Notification-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification.svg b/public/icons/basil/Outline/Status/Notification.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Pin.svg b/public/icons/basil/Outline/Status/Pin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Power-button.svg b/public/icons/basil/Outline/Status/Power-button.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Present.svg b/public/icons/basil/Outline/Status/Present.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Sand-watch.svg b/public/icons/basil/Outline/Status/Sand-watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Shield.svg b/public/icons/basil/Outline/Status/Shield.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Star-half.svg b/public/icons/basil/Outline/Status/Star-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Star.svg b/public/icons/basil/Outline/Status/Star.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Toggle-off.svg b/public/icons/basil/Outline/Status/Toggle-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Toggle-on.svg b/public/icons/basil/Outline/Status/Toggle-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/University.svg b/public/icons/basil/Outline/Status/University.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Unlock.svg b/public/icons/basil/Outline/Status/Unlock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-After-effects.svg b/public/icons/basil/Solid/Brands/Adobe-After-effects.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Experince-design.svg b/public/icons/basil/Solid/Brands/Adobe-Experince-design.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Illustrator.svg b/public/icons/basil/Solid/Brands/Adobe-Illustrator.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg b/public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Indesign.svg b/public/icons/basil/Solid/Brands/Adobe-Indesign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Lightroom.svg b/public/icons/basil/Solid/Brands/Adobe-Lightroom.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Photoshop.svg b/public/icons/basil/Solid/Brands/Adobe-Photoshop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Premiere.svg b/public/icons/basil/Solid/Brands/Adobe-Premiere.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Android.svg b/public/icons/basil/Solid/Brands/Android.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/App-store.svg b/public/icons/basil/Solid/Brands/App-store.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Apple.svg b/public/icons/basil/Solid/Brands/Apple.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Asana.svg b/public/icons/basil/Solid/Brands/Asana.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Behance.svg b/public/icons/basil/Solid/Brands/Behance.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Chrome.svg b/public/icons/basil/Solid/Brands/Chrome.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Dribbble.svg b/public/icons/basil/Solid/Brands/Dribbble.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Dropbox.svg b/public/icons/basil/Solid/Brands/Dropbox.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Facebook-messenger.svg b/public/icons/basil/Solid/Brands/Facebook-messenger.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Facebook.svg b/public/icons/basil/Solid/Brands/Facebook.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Figma.svg b/public/icons/basil/Solid/Brands/Figma.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Gmail.svg b/public/icons/basil/Solid/Brands/Gmail.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-alt.svg b/public/icons/basil/Solid/Brands/Google-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-drive.svg b/public/icons/basil/Solid/Brands/Google-drive.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-play.svg b/public/icons/basil/Solid/Brands/Google-play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google.svg b/public/icons/basil/Solid/Brands/Google.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Instagram.svg b/public/icons/basil/Solid/Brands/Instagram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Linkedin.svg b/public/icons/basil/Solid/Brands/Linkedin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Medium.svg b/public/icons/basil/Solid/Brands/Medium.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Notion.svg b/public/icons/basil/Solid/Brands/Notion.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Pinterest.svg b/public/icons/basil/Solid/Brands/Pinterest.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/QQ.svg b/public/icons/basil/Solid/Brands/QQ.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Reddit.svg b/public/icons/basil/Solid/Brands/Reddit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Sketch.svg b/public/icons/basil/Solid/Brands/Sketch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Skype.svg b/public/icons/basil/Solid/Brands/Skype.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Slack.svg b/public/icons/basil/Solid/Brands/Slack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Snapchat.svg b/public/icons/basil/Solid/Brands/Snapchat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Telegram.svg b/public/icons/basil/Solid/Brands/Telegram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Trello.svg b/public/icons/basil/Solid/Brands/Trello.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Tumblr.svg b/public/icons/basil/Solid/Brands/Tumblr.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Twitch.svg b/public/icons/basil/Solid/Brands/Twitch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Twitter.svg b/public/icons/basil/Solid/Brands/Twitter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Viber.svg b/public/icons/basil/Solid/Brands/Viber.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Vk.svg b/public/icons/basil/Solid/Brands/Vk.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Wechat.svg b/public/icons/basil/Solid/Brands/Wechat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Whatsapp.svg b/public/icons/basil/Solid/Brands/Whatsapp.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Windows.svg b/public/icons/basil/Solid/Brands/Windows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Youtube.svg b/public/icons/basil/Solid/Brands/Youtube.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Bullhorn.svg b/public/icons/basil/Solid/Communication/Bullhorn.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Chat.svg b/public/icons/basil/Solid/Communication/Chat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-block.svg b/public/icons/basil/Solid/Communication/Comment-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-minus.svg b/public/icons/basil/Solid/Communication/Comment-minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-plus.svg b/public/icons/basil/Solid/Communication/Comment-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment.svg b/public/icons/basil/Solid/Communication/Comment.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Contacts.svg b/public/icons/basil/Solid/Communication/Contacts.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Dislike.svg b/public/icons/basil/Solid/Communication/Dislike.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Envelope-open.svg b/public/icons/basil/Solid/Communication/Envelope-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Envelope.svg b/public/icons/basil/Solid/Communication/Envelope.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Forward.svg b/public/icons/basil/Solid/Communication/Forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Like.svg b/public/icons/basil/Solid/Communication/Like.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-in.svg b/public/icons/basil/Solid/Communication/Phone-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-miss.svg b/public/icons/basil/Solid/Communication/Phone-miss.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-off.svg b/public/icons/basil/Solid/Communication/Phone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-out.svg b/public/icons/basil/Solid/Communication/Phone-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone.svg b/public/icons/basil/Solid/Communication/Phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Reply.svg b/public/icons/basil/Solid/Communication/Reply.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Send.svg b/public/icons/basil/Solid/Communication/Send.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Share-box.svg b/public/icons/basil/Solid/Communication/Share-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Share.svg b/public/icons/basil/Solid/Communication/Share.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-block.svg b/public/icons/basil/Solid/Communication/User-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-clock.svg b/public/icons/basil/Solid/Communication/User-clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-plus.svg b/public/icons/basil/Solid/Communication/User-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User.svg b/public/icons/basil/Solid/Communication/User.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-full-1.svg b/public/icons/basil/Solid/Devices/Battery-full-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-full.svg b/public/icons/basil/Solid/Devices/Battery-full.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-low.svg b/public/icons/basil/Solid/Devices/Battery-low.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-most.svg b/public/icons/basil/Solid/Devices/Battery-most.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-quarter.svg b/public/icons/basil/Solid/Devices/Battery-quarter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battry-half.svg b/public/icons/basil/Solid/Devices/Battry-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Binocular.svg b/public/icons/basil/Solid/Devices/Binocular.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Camera.svg b/public/icons/basil/Solid/Devices/Camera.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Desktop.svg b/public/icons/basil/Solid/Devices/Desktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Dialpad.svg b/public/icons/basil/Solid/Devices/Dialpad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Gamepad.svg b/public/icons/basil/Solid/Devices/Gamepad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mobile-phone.svg b/public/icons/basil/Solid/Devices/Mobile-phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mouse-alt.svg b/public/icons/basil/Solid/Devices/Mouse-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mouse.svg b/public/icons/basil/Solid/Devices/Mouse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Printer.svg b/public/icons/basil/Solid/Devices/Printer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Processor.svg b/public/icons/basil/Solid/Devices/Processor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Server.svg b/public/icons/basil/Solid/Devices/Server.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Video.svg b/public/icons/basil/Solid/Devices/Video.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Watch.svg b/public/icons/basil/Solid/Devices/Watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book-check.svg b/public/icons/basil/Solid/Files/Book-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book-mark.svg b/public/icons/basil/Solid/Files/Book-mark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book.svg b/public/icons/basil/Solid/Files/Book.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Clipboard-alt.svg b/public/icons/basil/Solid/Files/Clipboard-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Clipboard.svg b/public/icons/basil/Solid/Files/Clipboard.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-check.svg b/public/icons/basil/Solid/Files/Cloud-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-download.svg b/public/icons/basil/Solid/Files/Cloud-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-off.svg b/public/icons/basil/Solid/Files/Cloud-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-upload.svg b/public/icons/basil/Solid/Files/Cloud-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud.svg b/public/icons/basil/Solid/Files/Cloud.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Copy.svg b/public/icons/basil/Solid/Files/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Document.svg b/public/icons/basil/Solid/Files/Document.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Download.svg b/public/icons/basil/Solid/Files/Download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-download.svg b/public/icons/basil/Solid/Files/File-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-upload.svg b/public/icons/basil/Solid/Files/File-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-user.svg b/public/icons/basil/Solid/Files/File-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File.svg b/public/icons/basil/Solid/Files/File.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-block.svg b/public/icons/basil/Solid/Files/Folder-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-delete.svg b/public/icons/basil/Solid/Files/Folder-delete.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-lock.svg b/public/icons/basil/Solid/Files/Folder-lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-open.svg b/public/icons/basil/Solid/Files/Folder-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-plus.svg b/public/icons/basil/Solid/Files/Folder-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-user.svg b/public/icons/basil/Solid/Files/Folder-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder.svg b/public/icons/basil/Solid/Files/Folder.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Image.svg b/public/icons/basil/Solid/Files/Image.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Invoice.svg b/public/icons/basil/Solid/Files/Invoice.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Picture.svg b/public/icons/basil/Solid/Files/Picture.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Upload.svg b/public/icons/basil/Solid/Files/Upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Alarm.svg b/public/icons/basil/Solid/General/Alarm.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Bag.svg b/public/icons/basil/Solid/General/Bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Bank.svg b/public/icons/basil/Solid/General/Bank.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Box.svg b/public/icons/basil/Solid/General/Box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Calendar.svg b/public/icons/basil/Solid/General/Calendar.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Card.svg b/public/icons/basil/Solid/General/Card.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Chart-pie-alt.svg b/public/icons/basil/Solid/General/Chart-pie-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Chart-pie.svg b/public/icons/basil/Solid/General/Chart-pie.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Clock.svg b/public/icons/basil/Solid/General/Clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Filter.svg b/public/icons/basil/Solid/General/Filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Flask-alt.svg b/public/icons/basil/Solid/General/Flask-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Flask.svg b/public/icons/basil/Solid/General/Flask.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Home.svg b/public/icons/basil/Solid/General/Home.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Medkit.svg b/public/icons/basil/Solid/General/Medkit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Moon.svg b/public/icons/basil/Solid/General/Moon.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Palette.svg b/public/icons/basil/Solid/General/Palette.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Pulse.svg b/public/icons/basil/Solid/General/Pulse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-bag.svg b/public/icons/basil/Solid/General/Shopping-bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-basket.svg b/public/icons/basil/Solid/General/Shopping-basket.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-cart.svg b/public/icons/basil/Solid/General/Shopping-cart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Sun.svg b/public/icons/basil/Solid/General/Sun.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Timer.svg b/public/icons/basil/Solid/General/Timer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Umbrella.svg b/public/icons/basil/Solid/General/Umbrella.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Wallet.svg b/public/icons/basil/Solid/General/Wallet.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Add.svg b/public/icons/basil/Solid/Interface/Add.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Apps.svg b/public/icons/basil/Solid/Interface/Apps.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow down.svg b/public/icons/basil/Solid/Interface/Arrow down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow left.svg b/public/icons/basil/Solid/Interface/Arrow left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow right.svg b/public/icons/basil/Solid/Interface/Arrow right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow up.svg b/public/icons/basil/Solid/Interface/Arrow up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/At-sign.svg b/public/icons/basil/Solid/Interface/At-sign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Attach.svg b/public/icons/basil/Solid/Interface/Attach.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Backspace.svg b/public/icons/basil/Solid/Interface/Backspace.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Bluetooth.svg b/public/icons/basil/Solid/Interface/Bluetooth.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cancel.svg b/public/icons/basil/Solid/Interface/Cancel.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret down.svg b/public/icons/basil/Solid/Interface/Caret down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret left.svg b/public/icons/basil/Solid/Interface/Caret left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret right.svg b/public/icons/basil/Solid/Interface/Caret right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret up.svg b/public/icons/basil/Solid/Interface/Caret up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Check.svg b/public/icons/basil/Solid/Interface/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Collapse.svg b/public/icons/basil/Solid/Interface/Collapse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Columns.svg b/public/icons/basil/Solid/Interface/Columns.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cross.svg b/public/icons/basil/Solid/Interface/Cross.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cursor.svg b/public/icons/basil/Solid/Interface/Cursor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Edit-alt.svg b/public/icons/basil/Solid/Interface/Edit-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Edit.svg b/public/icons/basil/Solid/Interface/Edit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Exchange.svg b/public/icons/basil/Solid/Interface/Exchange.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Expand.svg b/public/icons/basil/Solid/Interface/Expand.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/History.svg b/public/icons/basil/Solid/Interface/History.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Hotspot.svg b/public/icons/basil/Solid/Interface/Hotspot.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Layout.svg b/public/icons/basil/Solid/Interface/Layout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Login.svg b/public/icons/basil/Solid/Interface/Login.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Logout.svg b/public/icons/basil/Solid/Interface/Logout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Menu.svg b/public/icons/basil/Solid/Interface/Menu.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Move.svg b/public/icons/basil/Solid/Interface/Move.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Other 1.svg b/public/icons/basil/Solid/Interface/Other 1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Other 2.svg b/public/icons/basil/Solid/Interface/Other 2.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Plus.svg b/public/icons/basil/Solid/Interface/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Refresh.svg b/public/icons/basil/Solid/Interface/Refresh.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Rows.svg b/public/icons/basil/Solid/Interface/Rows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Save.svg b/public/icons/basil/Solid/Interface/Save.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Search.svg b/public/icons/basil/Solid/Interface/Search.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings-adjust.svg b/public/icons/basil/Solid/Interface/Settings-adjust.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings-alt.svg b/public/icons/basil/Solid/Interface/Settings-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings.svg b/public/icons/basil/Solid/Interface/Settings.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Sort.svg b/public/icons/basil/Solid/Interface/Sort.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Stack.svg b/public/icons/basil/Solid/Interface/Stack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Trash-alt.svg b/public/icons/basil/Solid/Interface/Trash-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Trash.svg b/public/icons/basil/Solid/Interface/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Zoom-in.svg b/public/icons/basil/Solid/Interface/Zoom-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Zoom-out.svg b/public/icons/basil/Solid/Interface/Zoom-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Fast-forward.svg b/public/icons/basil/Solid/Media/Fast-forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Fast-rewind.svg b/public/icons/basil/Solid/Media/Fast-rewind.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Headphone.svg b/public/icons/basil/Solid/Media/Headphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Headset.svg b/public/icons/basil/Solid/Media/Headset.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Microphone-off.svg b/public/icons/basil/Solid/Media/Microphone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Microphone.svg b/public/icons/basil/Solid/Media/Microphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Music.svg b/public/icons/basil/Solid/Media/Music.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Pause.svg b/public/icons/basil/Solid/Media/Pause.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Play.svg b/public/icons/basil/Solid/Media/Play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Shuffle.svg b/public/icons/basil/Solid/Media/Shuffle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Skip-next.svg b/public/icons/basil/Solid/Media/Skip-next.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Skip-prev.svg b/public/icons/basil/Solid/Media/Skip-prev.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-down.svg b/public/icons/basil/Solid/Media/Volume-down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-off.svg b/public/icons/basil/Solid/Media/Volume-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-up.svg b/public/icons/basil/Solid/Media/Volume-up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Current-location.svg b/public/icons/basil/Solid/Navigation/Current-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Explore.svg b/public/icons/basil/Solid/Navigation/Explore.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Globe.svg b/public/icons/basil/Solid/Navigation/Globe.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-check.svg b/public/icons/basil/Solid/Navigation/Location-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-plus.svg b/public/icons/basil/Solid/Navigation/Location-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-question.svg b/public/icons/basil/Solid/Navigation/Location-question.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location.svg b/public/icons/basil/Solid/Navigation/Location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Map-location.svg b/public/icons/basil/Solid/Navigation/Map-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Navigation.svg b/public/icons/basil/Solid/Navigation/Navigation.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Award.svg b/public/icons/basil/Solid/Status/Award.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Book-open.svg b/public/icons/basil/Solid/Status/Book-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Bookmark.svg b/public/icons/basil/Solid/Status/Bookmark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Checked-box.svg b/public/icons/basil/Solid/Status/Checked-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Diamond.svg b/public/icons/basil/Solid/Status/Diamond.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Eye-closed.svg b/public/icons/basil/Solid/Status/Eye-closed.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Eye.svg b/public/icons/basil/Solid/Status/Eye.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Fire.svg b/public/icons/basil/Solid/Status/Fire.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Group 23.svg b/public/icons/basil/Solid/Status/Group 23.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heart-off.svg b/public/icons/basil/Solid/Status/Heart-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heart.svg b/public/icons/basil/Solid/Status/Heart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heartbeat.svg b/public/icons/basil/Solid/Status/Heartbeat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-circle.svg b/public/icons/basil/Solid/Status/Info-circle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-rect.svg b/public/icons/basil/Solid/Status/Info-rect.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-triangle.svg b/public/icons/basil/Solid/Status/Info-triangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Key.svg b/public/icons/basil/Solid/Status/Key.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb-alt.svg b/public/icons/basil/Solid/Status/Lightbulb-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb-off.svg b/public/icons/basil/Solid/Status/Lightbulb-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb.svg b/public/icons/basil/Solid/Status/Lightbulb.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightning-alt.svg b/public/icons/basil/Solid/Status/Lightning-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightning.svg b/public/icons/basil/Solid/Status/Lightning.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lock-time.svg b/public/icons/basil/Solid/Status/Lock-time.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lock.svg b/public/icons/basil/Solid/Status/Lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification-off.svg b/public/icons/basil/Solid/Status/Notification-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification-on.svg b/public/icons/basil/Solid/Status/Notification-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification.svg b/public/icons/basil/Solid/Status/Notification.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Pin.svg b/public/icons/basil/Solid/Status/Pin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Power-button.svg b/public/icons/basil/Solid/Status/Power-button.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Present.svg b/public/icons/basil/Solid/Status/Present.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Sand-watch.svg b/public/icons/basil/Solid/Status/Sand-watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Shield.svg b/public/icons/basil/Solid/Status/Shield.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Star-half.svg b/public/icons/basil/Solid/Status/Star-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Star.svg b/public/icons/basil/Solid/Status/Star.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Toggle-off.svg b/public/icons/basil/Solid/Status/Toggle-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Toggle-on.svg b/public/icons/basil/Solid/Status/Toggle-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/University.svg b/public/icons/basil/Solid/Status/University.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Unlock.svg b/public/icons/basil/Solid/Status/Unlock.svg old mode 100644 new mode 100755 diff --git a/public/icons/circle-info-solid.svg b/public/icons/circle-info-solid.svg old mode 100644 new mode 100755 diff --git a/public/icons/crossreference.svg b/public/icons/crossreference.svg old mode 100644 new mode 100755 diff --git a/public/icons/door43.svg b/public/icons/door43.svg old mode 100644 new mode 100755 diff --git a/public/icons/expand_more.svg b/public/icons/expand_more.svg old mode 100644 new mode 100755 diff --git a/public/icons/file.svg b/public/icons/file.svg old mode 100644 new mode 100755 diff --git a/public/icons/filter.svg b/public/icons/filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/font.svg b/public/icons/font.svg old mode 100644 new mode 100755 diff --git a/public/icons/footnotes.svg b/public/icons/footnotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/logo.svg b/public/icons/logo.svg old mode 100644 new mode 100755 diff --git a/public/icons/new.svg b/public/icons/new.svg old mode 100644 new mode 100755 diff --git a/public/icons/projects.svg b/public/icons/projects.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/2Column.svg b/public/icons/sectionIcons/2Column.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/4Column.svg b/public/icons/sectionIcons/4Column.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/NotesOnly [not used yet].svg b/public/icons/sectionIcons/NotesOnly [not used yet].svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/bcv.svg b/public/icons/sectionIcons/bcv.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/biblePlusNotes.svg b/public/icons/sectionIcons/biblePlusNotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/bookNote.svg b/public/icons/sectionIcons/bookNote.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/jxlSimple.svg b/public/icons/sectionIcons/jxlSimple.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/jxlSpread.svg b/public/icons/sectionIcons/jxlSpread.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/markdown.svg b/public/icons/sectionIcons/markdown.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/obs.svg b/public/icons/sectionIcons/obs.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/obsPlusNotes.svg b/public/icons/sectionIcons/obsPlusNotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/paraBible.svg b/public/icons/sectionIcons/paraBible.svg old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/alignHelp.png b/public/icons/sundesmos/alignHelp.png old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/check_circleTrue.svg b/public/icons/sundesmos/check_circleTrue.svg old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/check_circleWrong.svg b/public/icons/sundesmos/check_circleWrong.svg old mode 100644 new mode 100755 diff --git a/public/icons/sync.svg b/public/icons/sync.svg old mode 100644 new mode 100755 diff --git a/public/icons/trash.svg b/public/icons/trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/waveform.svg b/public/icons/waveform.svg old mode 100644 new mode 100755 diff --git a/public/icons/x-solid.svg b/public/icons/x-solid.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/bible-icon.svg b/public/illustrations/bible-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/close-button-black.svg b/public/illustrations/close-button-black.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/dialogue-icon.svg b/public/illustrations/dialogue-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/dictionary-icon.svg b/public/illustrations/dictionary-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/down-arrow.svg b/public/illustrations/down-arrow.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/greenCheck.png b/public/illustrations/greenCheck.png old mode 100644 new mode 100755 diff --git a/public/illustrations/group.svg b/public/illustrations/group.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/half-moon.svg b/public/illustrations/half-moon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/image-icon.svg b/public/illustrations/image-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/location-icon.svg b/public/illustrations/location-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/minimize.svg b/public/illustrations/minimize.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/quote.svg b/public/illustrations/quote.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/sitting.png b/public/illustrations/sitting.png old mode 100644 new mode 100755 diff --git a/public/illustrations/sitting.svg b/public/illustrations/sitting.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/standing.png b/public/illustrations/standing.png old mode 100644 new mode 100755 diff --git a/public/illustrations/vector-one.svg b/public/illustrations/vector-one.svg old mode 100644 new mode 100755 diff --git a/public/scribex/bcs-hi_irv.tit.usfm b/public/scribex/bcs-hi_irv.tit.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/bcs-hi_irv.usfm b/public/scribex/bcs-hi_irv.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa-bak.usfm b/public/scribex/unfoldingWord-en_ult.psa-bak.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa-short.usfm b/public/scribex/unfoldingWord-en_ult.psa-short.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa.usfm b/public/scribex/unfoldingWord-en_ult.psa.usfm old mode 100644 new mode 100755 diff --git a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js index f3781e8e6..cc61639f8 100644 --- a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js +++ b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js @@ -91,7 +91,7 @@ const AudioEditor = ({ editor }) => { // Since this project doesn't have text data, we will create a JSON using the versification scheme await readFile({ projectname: projectName, - filename: 'audio/ingredients/versification.json', + filename: path.join('audio', 'ingredients', 'versification.json'), username, }).then((value) => { if (value) { diff --git a/renderer/src/components/Sync/Gitea/Gitea.js b/renderer/src/components/Sync/Gitea/Gitea.js index 6b8aabdbd..5dbaef805 100644 --- a/renderer/src/components/Sync/Gitea/Gitea.js +++ b/renderer/src/components/Sync/Gitea/Gitea.js @@ -13,14 +13,18 @@ const Gitea = ({ }) => { const [authentication, setAuthentication] = useState(); const [repository, setRepository] = useState(); + const [localDefaultOwner, setLocalDefaultOwner] = useState(''); useEffect(() => { setAuth(authentication); setRepo(repository); - // on auth change update sycn on user profile + // on auth change update sync on user profile (async () => { if (authentication !== undefined) { await createSyncProfile(authentication); + if (repository !== undefined) { + setLocalDefaultOwner(repository.owner.login); + } } })(); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -28,6 +32,7 @@ const Gitea = ({ const getAuth = async () => { const authentication = await localforage.getItem('authentication'); + setLocalDefaultOwner(authentication ? authentication.user.login : ''); return authentication; }; @@ -60,7 +65,7 @@ const Gitea = ({ diff --git a/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js b/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js index 977d0cb6f..a66bae34d 100644 --- a/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js +++ b/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js @@ -90,10 +90,13 @@ const GiteaFileBrowser = ({ changeRepo }) => { // const regex = /.+\/\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]).1$/; let finalBranches = []; // eslint-disable-next-line no-console - console.log('chedk : ', fetchBranches.some((branch) => branch.name === 'scribe-main')); - if (fetchBranches.some((branch) => branch.name === 'scribe-main')) { - finalBranches.push({ name: 'scribe-main' }); - } else { + try { + if (fetchBranches && fetchBranches.some((branch) => branch.name === 'scribe-main')) { + finalBranches.push({ name: 'scribe-main' }); + } else { + finalBranches = fetchBranches; + } + } catch (e) { finalBranches = fetchBranches; } setSelectedGiteaProjectBranch(finalBranches[0]); diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index b421c62d6..16bd2b168 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -18,11 +18,22 @@ import { WrapperTemplate } from './pdfGenInterface/pdfGenWrappers/WrapperTemplat import ExpandMore from '../../../../public/icons/expand_more.svg'; import { SelectOption } from './SelectOptions'; import packageInfo from '../../../../package.json'; +import * as logger from '../../logger'; export function findProjectInfo(meta, autoGrapha) { - return autoGrapha?.filter((a) => `${a.name }_${ a.id}` === meta)[0]; + return autoGrapha?.filter((a) => `${a.name}_${a.id}` === meta)[0]; } +const fixPath = (source) => { + const isWindows = process.platform === 'win32'; + if (isWindows) { + // Convert to Windows style paths + return source.replace(/\//g, '\\'); + } + // Convert to Unix style paths + return source.replace(/\\/g, '/'); +}; + function changeMetaDataToWrapperSection(meta, autoGrapha) { const projInfo = findProjectInfo(meta, autoGrapha); if (projInfo.type === 'Text Translation') { @@ -67,20 +78,16 @@ function messageToPeople(json) { message += '\t'; } if (json.type === 'step') { - message += `Starting step ${ json.args[0]}`; + message += `Starting step ${json.args[0]}`; } else if (json.type === 'section') { - message += `Starting to prepare ${ json.args[0]}`; + message += `Starting to prepare ${json.args[0]}`; } else if (json.type === 'wrappedSection') { - message - += `Preparing section of type ${ - json.args[0] - } from ${ - json.args[1].split('-')[0]}`; + message += `Preparing section of type ${json.args[0]} from ${json.args[1].split('-')[0]}`; if (json.args[1].split('-')[1]) { - message += ` to ${ json.args[1].split('-')[1]}`; + message += ` to ${json.args[1].split('-')[1]}`; } } else if (json.type === 'pdf') { - message += `Writing pdf of ${ json.args[1]}`; + message += `Writing pdf of ${json.args[1]}`; } else { findProjectInfo(); message += json.msg; @@ -91,13 +98,22 @@ function messageToPeople(json) { function createSection(folder, pickerJson) { const path = require('path'); const fs = window.require('fs'); + const fixedPath = fixPath(folder); - const projects = fs.readdirSync(folder); + let projects; + try { + if (!fs.existsSync(fixedPath)) { + fs.mkdirSync(fixedPath); + } + projects = fs.readdirSync(fixedPath); + } catch (err) { + logger.error('InnerFramePopup.js', `Error reading project dir: ${err}`); + } let currentMetadataPath = ''; // eslint-disable-next-line for (const project of projects) { - currentMetadataPath = path.join(folder, '/', project, '/', 'metadata.json'); + currentMetadataPath = fixPath(path.join(fixedPath, project, 'metadata.json')); if (fs.existsSync(currentMetadataPath)) { const jsontest = fs.readFileSync(currentMetadataPath, 'utf-8'); const jsonParse = JSON.parse(jsontest); @@ -119,9 +135,9 @@ function createSection(folder, pickerJson) { language: `${jsonParse.resourceMeta?.language}`, src: { type: 'fs', - path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -131,9 +147,9 @@ function createSection(folder, pickerJson) { language: `${jsonParse.languages[0].tag}`, src: { type: 'fs', - path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -145,9 +161,9 @@ function createSection(folder, pickerJson) { language: jsonParse.meta.defaultLocale, src: { type: 'fs', - path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}/${fileName}`, + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`, `${fileName}`), }, books: [], }; @@ -158,9 +174,9 @@ function createSection(folder, pickerJson) { language: jsonParse.meta.defaultLocale, src: { type: 'fs', - path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -171,9 +187,9 @@ function createSection(folder, pickerJson) { language: jsonParse.languages[0] ? jsonParse.languages[0].name.en : 'French', src: { type: 'fs', - path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: jsonParse.type.flavorType.currentScope ? Object.keys(jsonParse.type.flavorType.currentScope) : [], }; @@ -243,11 +259,12 @@ export default function InnerFramePopup() { // the order Of The Selected choice const [orderSelection, setOrderSelection] = useState([0]); // is the json is validate or not - const [isJsonValidate, setIsJsonValidate] = useState(false); + const [isJsonValidate, setIsJsonValidate] = useState(true); + const [jsonValidation, setJsonValidation] = useState({}); const [messagePrint, setMessagePrint] = useState(''); // the actual kitchenFaucet const pdfCallBacks = (json) => { - setMessagePrint((prev) => `${prev }\n${ messageToPeople(json)}`); + setMessagePrint((prev) => `${prev}\n${messageToPeople(json)}`); }; const { states: { selectedProject }, @@ -269,7 +286,7 @@ export default function InnerFramePopup() { ); // the selected headerInfo - const [headerInfo, setHeaderInfo] = useState('{"sizes":"9on11","fonts":"allGentium","pages":"EXECUTIVE"}'); + const [headerInfo, setHeaderInfo] = useState('{"sizes":"9on11","fonts":"allGentium","pages":"EXECUTIVE", "verbose":"false"}'); // const [headerInfo, setHeaderInfo] = useState('{}'); const [nameFile, setNameFile] = useState(''); const [folder, setFolder] = useState(null); @@ -364,7 +381,8 @@ export default function InnerFramePopup() { 'users', `${currentUser}`, 'projects', - `${p.name}_${p.id[0]}/ingredients`, + `${p.name}_${p.id[0]}`, + 'ingredients', ); return p; }); @@ -383,7 +401,7 @@ export default function InnerFramePopup() { setListResourcesForPdf(pickerJson); return currentUser; }) - .then((currentUser) => readLocalResources(currentUser, () => {})); + .then((currentUser) => readLocalResources(currentUser, () => { })); }, []); useEffect(() => { @@ -400,6 +418,7 @@ export default function InnerFramePopup() { useEffect(() => { const validationJson = global.PdfGenStatic.validateConfig(JSON.parse(kitchenFaucet)); + setJsonValidation(validationJson); if (validationJson.length === 0) { const header = JSON.parse(headerInfo); if ( @@ -410,9 +429,10 @@ export default function InnerFramePopup() { && header.pages ) { if (!header.outputPath && folder) { + const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`; + data.outputPath = path.join(`${folder}`, `${generate({ exactly: 5, wordsPerString: 1 }).join('-')}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -420,7 +440,7 @@ export default function InnerFramePopup() { setIsJsonValidate(true); } } else { - setIsJsonValidate(false); + setIsJsonValidate(true); } }, [selected, headerInfo, orderSelection, folder, kitchenFaucet]); @@ -439,7 +459,6 @@ export default function InnerFramePopup() { } if (chosenFolder.filePaths.length > 0) { setFolder(chosenFolder.filePaths[0]); - setMessagePrint((prev) => `${prev }\nfolder selected : ${ chosenFolder.filePaths[0]}`); } else { // Handle case where no folder was selected // eslint-disable-next-line @@ -452,17 +471,18 @@ export default function InnerFramePopup() { }; useEffect(() => { + const path = window.require('path'); if (folder && nameFile === '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`; + data.outputPath = path.join(`${folder}`, `${generate({ exactly: 5, wordsPerString: 1 }).join('-')}.pdf`); data.verbose = false; return JSON.stringify(data); }); } else if (folder && nameFile !== '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ nameFile }.pdf`; + data.outputPath = path.join(`${folder}`, `${nameFile}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -471,9 +491,10 @@ export default function InnerFramePopup() { useEffect(() => { if (folder && nameFile !== '') { + const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ nameFile }.pdf`; + data.outputPath = path.join(`${folder}`, `${nameFile}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -539,19 +560,19 @@ export default function InnerFramePopup() { }} > {SelectOption( - 'fonts', - 'fonts', - jsonWithHeaderChoice.fonts, + 'Paper size', + 'pages', + jsonWithHeaderChoice.pages, handleChangeHeaderInfo, )} {SelectOption( - 'Pages', - 'pages', - jsonWithHeaderChoice.pages, + 'Font', + 'fonts', + jsonWithHeaderChoice.fonts, handleChangeHeaderInfo, )} {SelectOption( - 'Sizes', + 'Font size', 'sizes', jsonWithHeaderChoice.sizes, handleChangeHeaderInfo, @@ -617,7 +638,7 @@ export default function InnerFramePopup() { fontWeight: 600, }} > - Advanced + Advanced mode
- mode Merge projects into a single + Merge projects into a single export, access more print types, and use loop mode.
@@ -680,7 +701,7 @@ export default function InnerFramePopup() {
    - {Object.keys(selected).map((k) => ( + {Object.keys(selected).map((k, i, arraySel) => (
  • 1} />
  • ))} @@ -730,6 +752,7 @@ export default function InnerFramePopup() { alignItems: 'center', backgroundColor: '#F50', color: 'white', + cursor: 'pointer', }} onClick={() => handleOpenModalAddWrapper(true)} > @@ -763,8 +786,9 @@ export default function InnerFramePopup() { openFileDialogSettingData(); }} > - Choose export folder + Choose an export folder +
    {folder ? `Folder selected : ${folder}` : 'Please choose an export folder'}
    { handleInputChange(e); @@ -795,21 +819,58 @@ export default function InnerFramePopup() { } } onClick={async () => { - if (isJsonValidate) { + const executablePath = await global.ipcRenderer.invoke('get-browser-path'); + let browser; + if (jsonValidation.length === 0) { + try { + browser = await global.puppeteer.launch({ + headless: 'new', + args: [ + '--disable-web-security', + ], + executablePath, + }); + } catch (err) { + logger.error('InnerFramePopup.js', 'Puppeteer falling back to no-sandbox'); + browser = await global.puppeteer.launch({ + headless: 'new', + args: [ + '--disable-web-security', + '--no-sandbox', + '--disable-setuid-sandbox', + ], + executablePath, + }); + } setMessagePrint(''); - const pdfGen = new global.PdfGenStatic( - JSON.parse(kitchenFaucet), - pdfCallBacks, - ); - setMessagePrint('Generating Pdf ...'); try { + setMessagePrint((prev) => `${prev}\nInstanciating pdfGen`); + const pdfGen = new global.PdfGenStatic( + { ...JSON.parse(kitchenFaucet), browser }, + pdfCallBacks, + ); await pdfGen.doPdf(); } catch (pdfError) { - setMessagePrint((prev) => `${prev }\nPDF generation failed: ${ pdfError.message}`); + setMessagePrint((prev) => `${prev}\nPDF generation failed: ${pdfError.message}`); return; } - setMessagePrint((prev) => `${prev }\nSuccessful pdf generation.`); + setMessagePrint((prev) => `${prev}\nSuccessful pdf generation.`); + } else { + const cleanerMessage = jsonValidation.map( + (txt) => { + let theText = txt; + if (txt.includes('outputPath')) { + theText = 'Please choose an export folder'; + } else if (txt.includes('Unknown section type')) { + theText = 'Please choose at least one "Print type"'; + } else if (txt.includes('requires ranges')) { + theText = 'Canon specification : please choose at least one book'; + } + return theText; + }, + ).join('\n'); + setMessagePrint(`# Error\n${cleanerMessage}`); } }} > diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js new file mode 100644 index 000000000..ca35b7391 --- /dev/null +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js @@ -0,0 +1,33 @@ +import React from 'react'; + +export const BookList = ({ books }) => ( +
    + {books.map((book, index) => ( +
    +
    +
    + {book} +
    +
    +
    + ))} +
    +); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js index 8341a0b1f..e923eccf4 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js @@ -1,12 +1,14 @@ import { useEffect, useState, useContext } from 'react'; import { Modal } from '@material-ui/core'; import { ProjectContext } from '@/components/context/ProjectContext'; +import { ReferenceContext } from '@/components/context/ReferenceContext'; import SelectBook from '@/components/EditorPage/Navigation/reference/SelectBook'; import { useBibleReference } from 'bible-reference-rcl'; import { XMarkIcon } from '@heroicons/react/24/outline'; import { useTranslation } from 'react-i18next'; import Layout from '../../../../../../public/icons/basil/Solid/Interface/Layout.svg'; import { TextOnlyTooltip, LoopSwitch } from '../fieldPicker/customMuiComponent'; +import { BookList } from '../BookList'; export function BCVWrapperSortableList({ keyWrapper, @@ -16,16 +18,21 @@ export function BCVWrapperSortableList({ loopMode, }) { // Start get all book from current project - const initialBook = 'mat'; + // const initialBook = 'mat'; const initialChapter = '1'; const initialVerse = '1'; const { t } = useTranslation(); + const { + state: { + bookId, + }, + } = useContext(ReferenceContext); const { state: { bookList }, } = useBibleReference({ - initialBook, + initialBook: bookId, initialChapter, initialVerse, }); @@ -33,7 +40,7 @@ export function BCVWrapperSortableList({ states: { canonList }, } = useContext(ProjectContext); // end get all book from current project - const [selectedBooks, setSelectedBooks] = useState([]); + const [selectedBooks, setSelectedBooks] = useState(bookId ? [bookId.toUpperCase()] : []); const [openModalBook, setOpenModalBook] = useState(false); useEffect(() => { @@ -47,7 +54,7 @@ export function BCVWrapperSortableList({ return (
    -
    +
    {advanceMode ? (
    - For each book selected above + Loop mode
    - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each book selected below.
    )} @@ -99,13 +106,13 @@ export function BCVWrapperSortableList({ style={{ margin: 'auto', display: 'flex', - justifyContent: 'center', + justifyContent: 'left', alignItems: 'center', // Added alignment to center vertically - fontSize: 24, + fontSize: 20, color: 'black', }} > -
    +
    Translation @@ -212,7 +219,10 @@ export function BCVWrapperSortableList({ > {t('label-custom')}
    +
    + +
    { @@ -61,7 +68,7 @@ export function JXLHeaderWrapper({ fontWeight: 600, }} > - For each book selected above + Loop mode
    - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each book selected below.
    )} @@ -100,7 +107,7 @@ export function JXLHeaderWrapper({ margin: 'auto', display: 'flex', justifyContent: 'center', - alignItems: 'center', // Added alignment to center vertically + alignItems: 'center', fontSize: 24, color: 'black', }} @@ -213,6 +220,8 @@ export function JXLHeaderWrapper({ {t('label-custom')} + +
    -
    +
    {advanceMode ? (
    - For each Obs selected above + Loop mode
    - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each story selected above.
    )} @@ -152,7 +152,6 @@ export function OBSWrapperSortableList({ ) : (
    )} -
    ); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js index ab7f094db..643e4bf5f 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js @@ -20,6 +20,20 @@ const convertionWrapperType = (type) => { } }; +const hashPrintTypes = { + bcvBible: 'Bible by verse', + bookNote: 'Book Note', + '4ColumnSpread': 'Four resources on facing pages', + '2Column': 'Two resources in two columns', + biblePlusNotes: 'Notes focus (by verse)', + paraBible: 'Formatted Bible', + markdown: 'Simple formatting', + // jxlSpread: 'Juxtalinear on facing pages', + jxlSimple: 'Juxtalinear', + obs: 'Obs', + obsPlusNotes: 'Obs with Notes', +}; + export function AccordionPicker({ language, setSelected, @@ -236,7 +250,7 @@ export function AccordionPicker({ }} > {keySpecification !== 'null' - ? keySpecification + ? hashPrintTypes[keySpecification] : 'select a print type'} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index 7fba7b6aa..2a627f746 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -7,15 +7,26 @@ import Trash from '../../../../../public/icons/trash.svg'; import { OBSWrapperSortableList } from './HeaderWrapper/OBSHeaderWrapper'; import { BCVWrapperSortableList } from './HeaderWrapper/BCVHeaderWrapper'; -function firstElem(projectInfo) { - if (projectInfo.type === 'Juxtalinear') { - return `{"0": {"id":"${uuidv4()}", "type": "jxlSimple", "source":"${ - projectInfo.path - }","content": {} }}`; +const fixPath = (source) => { + const isWindows = process.platform === 'win32'; + if (isWindows) { + // Convert to Windows style paths + return source.replace(/\//g, '\\'); } - return `{"0": {"id":"${uuidv4()}", "type": "null", "source":"${ - projectInfo.path - }","content": {} }}`; + // Convert to Unix style paths + return source.replace(/\\/g, '/'); +}; + +function firstElem(projectInfo) { + const obj = { + 0: { + id: uuidv4(), + type: projectInfo.type === 'Juxtalinear' ? 'jxlSimple' : 'null', + source: projectInfo.path === undefined ? 'null' : fixPath(projectInfo.path), + content: {}, + }, + }; + return JSON.stringify(obj); } export function WrapperTemplate({ @@ -28,6 +39,7 @@ export function WrapperTemplate({ advanceMode, changePrintData, changePrintOrder, + showTrashButton, }) { const [orderSections, setOrderSelections] = useState([0]); const updateElemOrder = (items) => { @@ -42,11 +54,31 @@ export function WrapperTemplate({ ); // choice is the possible section by wrapper + const getSectionType = (key) => { + let ret; + if (sections) { + try { + const parseSection = JSON.parse(sections); + if (parseSection[key]) { + ret = parseSection[key].type; + } else { + ret = 'null'; + } + } catch { + ret = 'null'; + } + } else { + ret = 'null'; + } + return ret; + }; + useEffect(() => { - setSections(firstElem(projectInfo)); + const fePI = firstElem(projectInfo); + setSections(fePI); }, [projectInfo]); - const [LoopMode, setLoopMode] = useState(false); + const [loopMode, setLoopMode] = useState(false); const sortableListClassName = `sortable-${keyWrapper}-list`; const itemClassName = `sortable-${keyWrapper}-item`; @@ -75,7 +107,10 @@ export function WrapperTemplate({ t[keyWrapper].content.content = {}; // Update with new sections - t[keyWrapper].content.content = JSON.parse(sections); + try { + t[keyWrapper].content.content = JSON.parse(sections); + // eslint-disable-next-line + } catch {} return t; }); @@ -130,7 +165,7 @@ export function WrapperTemplate({ }); }); }; - }, [Object.keys(JSON.parse(sections)).length]); + }, [sections]); return (
    ) : (
    @@ -161,7 +196,7 @@ export function WrapperTemplate({ advanceMode={advanceMode} changePrintData={changePrintData} setLoopMode={setLoopMode} - loopMode={LoopMode} + loopMode={loopMode} /> ) : (
    @@ -172,14 +207,14 @@ export function WrapperTemplate({ advanceMode={advanceMode} changePrintData={changePrintData} setLoopMode={setLoopMode} - loopMode={LoopMode} + loopMode={loopMode} /> ) : (
    )}
    - + changePrintData((prev) => { + const updatedSelected = JSON.parse( + JSON.stringify(prev), + ); + // Remove the last key in the map as it's not required + delete updatedSelected[ + parseInt(keyWrapper, 10) + ]; + return updatedSelected; + }); + }} + > + + + )}
      + {/* eslint-disable-next-line */} {Object.keys(JSON.parse(sections)).map((k, index) => (
    • 1 ? ( - -
    -
    - - - - - - - - -
    - -
    - - - -
    -
    - -
    -
    - - ); -} - -BibleNavigationX.propTypes = { - showVerse: PropTypes.bool, -}; diff --git a/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectBook.js b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectBook.js new file mode 100644 index 000000000..1a430edeb --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectBook.js @@ -0,0 +1,166 @@ +import React, { useState, useEffect } from 'react'; +import PropTypes from 'prop-types'; +import { Disclosure, Transition } from '@headlessui/react'; +import { useTranslation } from 'react-i18next'; +import styles from './SelectReference.module.css'; + +export default function SelectBook({ + children, + bookList, + selectBook, + onChangeBook, + multiSelectBook, + selectedBooks, + scope, + setBook, + booksInProject, +}) { + const [openNT, setOpenNT] = useState(true); + const [openOT, setOpenOT] = useState(true); + + function toggleNT() { + setOpenNT(true); + setOpenOT(false); + } + + function toggleOT() { + setOpenOT(true); + setOpenNT(false); + } + + function toggle() { + setOpenNT(true); + setOpenOT(true); + } + + function bookSelect(e, bookId) { + e.preventDefault(); + if (booksInProject.includes(bookId.toLowerCase())) { + onChangeBook(bookId, selectedBooks[0]); + setBook(bookId); + if (multiSelectBook === false) { selectBook(); } + } + } + useEffect(() => { + if (scope === 'Old Testament (OT)') { + toggleOT(); + } else if (scope === 'New Testament (NT)') { + toggleNT(); + } else { + toggle(); + } + }, [scope]); + const { t } = useTranslation(); + + const getBookClassName = (book) => { + let className = styles.bookSelect; + + if (!booksInProject.includes(book.key.toLowerCase())) { + return styles.disabled; + } + + if (selectedBooks.includes(book.key.toUpperCase())) { + className += ` ${styles.active}`; + } + + return className; + }; + return ( + <> +
    +
    +
    {t('btn-all')}
    +
    {t('btn-ot')}
    +
    {t('btn-nt')}
    +
    +
    + {children} +
    +
    + + + {openOT && ( + <> +
    + {t('label-old-testament')} +
    + + +
    + {bookList.map((book, index) => ( + index <= 38 && ( +
    (bookSelect(e, book.key, book.name))} + className={getBookClassName(book)} + > + {book.name} +
    + ) + ))} +
    +
    +
    + + )} +
    + + {openNT && ( + <> +
    + {t('label-new-testament')} +
    + + +
    + {bookList.map((book, index) => (index > 38 && ( +
    (bookSelect(e, book.key, book.name))} + className={getBookClassName(book)} + > + {book.name} +
    + ) + ))} +
    +
    +
    + + )} +
    + + ); +} + +SelectBook.propTypes = { + children: PropTypes.any, + selectBook: PropTypes.func, + onChangeBook: PropTypes.func, + bookList: PropTypes.array, + selectedBooks: PropTypes.array, + multiSelectBook: PropTypes.bool, + scope: PropTypes.string, + setBook: PropTypes.func, + booksInProject: PropTypes.array, +}; diff --git a/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectChapter.js b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectChapter.js new file mode 100644 index 000000000..b0442bd64 --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectChapter.js @@ -0,0 +1,87 @@ +import PropTypes from 'prop-types'; +import { Disclosure, Transition } from '@headlessui/react'; +import { useTranslation } from 'react-i18next'; +import styles from './SelectReference.module.css'; + +export default function SelectChapter({ + children, + bookName, + chapter, + chapterList, + onChangeChapter, + closeBooks, + closeChapters, + setChapterNumber, + loading, +}) { + const { t } = useTranslation(); + + const onChapterSelect = (e, chapterNum) => { + e.preventDefault(); + onChangeChapter(chapterNum, chapter); + closeBooks(); + closeChapters(); + + if (chapterNum && setChapterNumber) { + setChapterNumber(chapterNum); + } + }; + + return ( + <> +
    +
    +
    + {bookName} +
    +
    + {t('label-chapter')} + : + {chapter} +
    +
    +
    + {children} +
    +
    + + + + + {!loading && chapterList.map((chapter) => ( + + ))} + + + + + ); +} + +SelectChapter.propTypes = { + children: PropTypes.any, + bookName: PropTypes.string, + chapter: PropTypes.string, + chapterList: PropTypes.array, + onChangeChapter: PropTypes.func, + closeBooks: PropTypes.func, + closeChapters: PropTypes.func, + setChapterNumber: PropTypes.func, + loading: PropTypes.bool, +}; diff --git a/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectReference.module.css b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectReference.module.css new file mode 100644 index 000000000..e1c09f06f --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/SelectReference.module.css @@ -0,0 +1,14 @@ +.select { + @apply py-1 px-2 hover:bg-primary hover:text-white cursor-pointer rounded hover:w-auto; +} +.bookSelect { + @apply py-1 mt-1 px-2 hover:bg-primary hover:text-white cursor-pointer rounded lg:w-5/12 sm:w-10/12; +} + +.active { + @apply py-1 px-2 bg-primary text-white cursor-pointer rounded sm:w-10/12 lg:w-5/12; +} + +.disabled { + @apply py-1 px-2 text-slate-400 rounded; +} \ No newline at end of file diff --git a/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/index.js b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/index.js new file mode 100644 index 000000000..38540a6c2 --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/BibleNavigationX/index.js @@ -0,0 +1,198 @@ +import PropTypes from 'prop-types'; +import { Dialog, Transition } from '@headlessui/react'; +import React, { + Fragment, useContext, useEffect, useRef, useState, +} from 'react'; +import { XMarkIcon, ChevronDownIcon } from '@heroicons/react/24/solid'; +import * as localforage from 'localforage'; +import { ReferenceContext } from '@/components/context/ReferenceContext'; +import SelectBook from './SelectBook'; +import SelectChapter from './SelectChapter'; + +export default function BibleNavigationX(props) { + const { + chapterNumber, setChapterNumber, setBook, loading, bookAvailable, booksInProject, + } = props; + + const { + state: { + bookId, + bookList, + bookName, + chapter, + chapterList, + }, actions: { + onChangeBook, + onChangeChapter, + setCloseNavigation, + }, + } = useContext(ReferenceContext); + + const [openBook, setOpenBook] = useState(false); + const [openChapter, setOpenChapter] = useState(false); + const cancelButtonRef = useRef(null); + + const [multiSelectBook] = useState(false); + const [selectedBooks, setSelectedBooks] = useState([]); + + function closeBooks() { + setOpenBook(false); + } + + function openBooks() { + setSelectedBooks([(bookId.toUpperCase())]); + setOpenBook(true); + } + + function closeChapters() { + setOpenChapter(false); + } + + function selectBook() { + setOpenBook(false); + setOpenChapter(true); + } + + useEffect(() => { + async function setReference() { + await localforage.setItem('navigationHistory', [bookId, chapter]); + } + setReference(); + }, [bookId, chapter]); + + useEffect(() => { + if (openBook === false && openChapter === false) { + setCloseNavigation(true); + } + if (openBook || openChapter) { + setCloseNavigation(false); + } + }, [openChapter, openBook, setCloseNavigation]); + + return ( + <> +
    +
    + {bookName} + + + {chapterNumber} + + +
    +
    + <> + + + +
    +
    + + + +
    +
    +
    +
    + + + + +
    +
    + + + +
    +
    +
    +
    + + + ); +} + +BibleNavigationX.propTypes = { + chapterNumber: PropTypes.number, + setChapterNumber: PropTypes.func, + setBook: PropTypes.func, + loading: PropTypes.bool, + bookAvailable: PropTypes.bool, +}; diff --git a/renderer/src/components/EditorPage/TextEditor/Buttons.jsx b/renderer/src/components/EditorPage/TextEditor/Buttons.jsx deleted file mode 100644 index e2fe18eb0..000000000 --- a/renderer/src/components/EditorPage/TextEditor/Buttons.jsx +++ /dev/null @@ -1,120 +0,0 @@ -/* eslint-disable no-unused-vars */ -import React, { useState } from 'react'; - -import RectangleStackIcon from '@/icons/Xelah/RectangleStack.svg'; -import ArrowDownOnSquareIcon from '@/icons/Xelah/ArrowDownOnSquare.svg'; -import Bars2Icon from '@/icons/Xelah/Bars2.svg'; -import Bars4Icon from '@/icons/Xelah/Bars4.svg'; -import ArrowUturnLeftIcon from '@/icons/Xelah/ArrowUturnLeft.svg'; -import ArrowUturnRightIcon from '@/icons/Xelah/ArrowUturnRight.svg'; -import PencilIcon from '@/icons/Common/Pencil.svg'; -import Copy from '@/icons/Xelah/Copy.svg'; -import Paste from '@/icons/Xelah/Paste.svg'; - -export const classNames = (...classes) => classes.filter(Boolean).join(' '); - -export default function Buttons(props) { - const [sectionable, setSectionableState] = useState(false); - const [blockable, setBlockableState] = useState(true); - const [editable, setEditableState] = useState(true); - const [preview, setPreviewState] = useState(false); - const { - bookCode, - canUndo, - canRedo, - undo, - redo, - setSectionable, - setBlockable, - setEditable, - setPreview, - exportUsfm, - } = props; - - const onSectionable = () => { - setSectionableState(!sectionable); - setSectionable(!sectionable); - }; - const onBlockable = () => { - setBlockableState(!blockable); - setBlockable(!blockable); - }; - const onEditable = () => { - setEditableState(!editable); - setEditable(!editable); - }; - const onPreview = () => { - setPreviewState(!preview); - setPreview(!preview); - }; - - return ( - <> - - - - {blockable ? ( - - ) - : ( - - )} - - - - - exportUsfm(bookCode)} - title="Save" - /> - - ); -} diff --git a/renderer/src/components/EditorPage/TextEditor/Editor.jsx b/renderer/src/components/EditorPage/TextEditor/Editor.jsx deleted file mode 100644 index aed580380..000000000 --- a/renderer/src/components/EditorPage/TextEditor/Editor.jsx +++ /dev/null @@ -1,184 +0,0 @@ -import React, { - useContext, useEffect, useLayoutEffect, useRef, -} from 'react'; -import { HtmlPerfEditor } from '@xelah/type-perf-html'; - -import LoadingScreen from '@/components/Loading/LoadingScreen'; -import { ReferenceContext } from '@/components/context/ReferenceContext'; -import { ProjectContext } from '@/components/context/ProjectContext'; -import { ScribexContext } from '@/components/context/ScribexContext'; -import EmptyScreen from '@/components/Loading/EmptySrceen'; -// eslint-disable-next-line import/no-unresolved, import/extensions -import { functionMapping } from './utils/insertFunctionMap'; - -import RecursiveBlock from './RecursiveBlock'; -// eslint-disable-next-line import/no-unresolved, import/extensions -import { useAutoSaveIndication } from '@/hooks2/useAutoSaveIndication'; -import { onIntersection, scrollReference } from './utils/IntersectionObserver'; - -export default function Editor(props) { - const { - sequenceIds, - isSaving, - htmlPerf, - sectionable, - blockable, - editable, - preview, - verbose, - bookChange, - setBookChange, - addSequenceId, - saveHtmlPerf, - setGraftSequenceId, - bookAvailable, - setChapterNumber, - setVerseNumber, - triggerVerseInsert, - } = props; - - const { - state: { - chapter, selectedFont, editorFontSize, projectScriptureDir, - }, - } = useContext(ReferenceContext); - - const { - states: { openSideBar, scrollLock }, - actions: { setOpenSideBar, setSideBarTab }, - } = useContext(ProjectContext); - - const { - state: { - caretPosition, insertType, selectedText, numberToInsert, textToInsert, - }, - actions: { - setCaretPosition, setSelectedText, setNumberToInsert, setTextToInsert, setInsertType, - }, - } = useContext(ScribexContext); - - const sequenceId = sequenceIds.at(-1); - const style = isSaving ? { cursor: 'progress' } : {}; - - const handlers = { - onBlockClick: ({ element }) => { - const _sequenceId = element.dataset.target; - const { tagName } = element; - if (_sequenceId) { - if (tagName === 'SPAN' && element.dataset.subtype === 'footnote') { - setGraftSequenceId(_sequenceId); - setOpenSideBar(!openSideBar); - setSideBarTab('footnotes'); - } - if (tagName === 'SPAN' && element.dataset.subtype === 'xref') { - setGraftSequenceId(_sequenceId); - setOpenSideBar(!openSideBar); - setSideBarTab('xref'); - } - } else { - setSideBarTab(''); - setGraftSequenceId(null); - } - }, - }; - useEffect(() => { - setBookChange(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [htmlPerf]); - - useEffect(() => { // temp fix to trigger rerender to cause onblcok trigger to save to file. Need to find a better way. - if (insertType !== '') { - insertType === 'insertVerseNumber' || insertType === 'insertChapterNumber' - ? functionMapping[insertType].function({ caretPosition, numberToInsert }) - : functionMapping[insertType].function({ caretPosition, textToInsert, selectedText }); - setNumberToInsert(''); - setTextToInsert(''); - setInsertType(''); - setSelectedText(null); - setCaretPosition(0); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [triggerVerseInsert]); - - const isScrolling = useRef(false); - useLayoutEffect(() => { - const handleScroll = () => { - isScrolling.current = true; - }; - const handleScrollEnd = () => { - isScrolling.current = false; - }; - const editorDiv = document.getElementById('fulleditor'); - // Adding scroll and click event listeners - editorDiv.addEventListener('scroll', handleScroll); - editorDiv.addEventListener('click', handleScrollEnd); - return () => { - editorDiv.removeEventListener('scroll', handleScroll); - editorDiv.removeEventListener('click', handleScrollEnd); - }; - }, []); - - useAutoSaveIndication(isSaving); - - function onReferenceSelected({ chapter, verse }) { - chapter && setChapterNumber(chapter); - verse && setVerseNumber(verse); - !scrollLock && scrollReference(chapter, verse); - } - - const observer = new IntersectionObserver((entries) => onIntersection({ - scroll: isScrolling.current, setChapterNumber, scrollLock, entries, setVerseNumber, - }), { - root: document.querySelector('editor'), - threshold: 0, - rootMargin: '0% 0% -60% 0%', - }); - - const watchNodes = document.querySelectorAll('.editor .chapter'); - const watchArr = Array.from(watchNodes); - const reverseArray = watchArr.length > 0 ? watchArr.slice().reverse() : []; - reverseArray.forEach((chapter) => { observer.observe(chapter); }); - - const _props = { - htmlPerf, - onHtmlPerf: saveHtmlPerf, - chapterIndex: chapter, - sequenceIds, - addSequenceId, - components: { - block: (__props) => RecursiveBlock({ - htmlPerf, onHtmlPerf: saveHtmlPerf, sequenceIds, addSequenceId, onReferenceSelected, setCaretPosition, setSelectedText, scrollLock, ...__props, - }), - }, - options: { - sectionable, - blockable, - editable, - preview, - }, - decorators: {}, - verbose, - handlers, - }; - - return ( -
    1.3) ? 1.5 : '', - direction: `${projectScriptureDir === 'RTL' ? 'rtl' : 'auto'}`, - }} - className="border-l-2 border-r-2 border-secondary pb-16 overflow-auto h-full scrollbars-width leading-8" - > -
    - {!bookAvailable && } - {bookAvailable && (!sequenceId || bookChange) && } - {bookAvailable && sequenceId && !bookChange && ( - - )} -
    -
    - ); -} diff --git a/renderer/src/components/EditorPage/TextEditor/EditorMenuBar.jsx b/renderer/src/components/EditorPage/TextEditor/EditorMenuBar.jsx index 9e48eda78..2302e3757 100644 --- a/renderer/src/components/EditorPage/TextEditor/EditorMenuBar.jsx +++ b/renderer/src/components/EditorPage/TextEditor/EditorMenuBar.jsx @@ -6,8 +6,6 @@ import { LockClosedIcon, BookmarkIcon, LockOpenIcon } from '@heroicons/react/24/ // import BibleNavigationX from '@/components/EditorPage/TextEditor/BibleNavigationX'; import { useTranslation } from 'react-i18next'; import BibleNavigationX from './BibleNavigationX'; -import Buttons from './Buttons'; -import InsertMenu from './InsertMenu'; export default function EditorMenuBar(props) { const { @@ -17,9 +15,13 @@ export default function EditorMenuBar(props) { verseNumber, setVerseNumber, handleSelectedFont, - setTriggerVerseInsert, handleEditorFontSize, editorFontSize, + book, + setBook, + loading, + bookAvailable, + booksInProject, } = props; const { t } = useTranslation(); @@ -39,13 +41,18 @@ export default function EditorMenuBar(props) { }; return ( -
    +
    -
    -
    -
    -
    - -
    -
    -
    diff --git a/renderer/src/components/EditorPage/TextEditor/EmptyScreen.jsx b/renderer/src/components/EditorPage/TextEditor/EmptyScreen.jsx new file mode 100644 index 000000000..204624a1b --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/EmptyScreen.jsx @@ -0,0 +1,37 @@ +/* eslint-disable no-tabs */ +import { t } from 'i18next'; +import React from 'react'; + +export default function EmptyScreen() { + return ( +
    +
    +
    +
    +
    + + + + + + + + + +
    +

    {t('label-no-content-available')}

    +
    +
    +
    +
    + ); +} diff --git a/renderer/src/components/EditorPage/TextEditor/InsertMenu.jsx b/renderer/src/components/EditorPage/TextEditor/InsertMenu.jsx deleted file mode 100644 index d19c9ae03..000000000 --- a/renderer/src/components/EditorPage/TextEditor/InsertMenu.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import { PopupContextProvider } from '../../Popup/PopupContext'; -import Popup from './Popup'; - -export default function InsertMenu({ setTriggerVerseInsert }) { - return ( -
    - - - - - - - - - - - - -
    - ); -} diff --git a/renderer/src/components/EditorPage/TextEditor/LexicalEditor.jsx b/renderer/src/components/EditorPage/TextEditor/LexicalEditor.jsx new file mode 100644 index 000000000..68597dd9c --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/LexicalEditor.jsx @@ -0,0 +1,85 @@ +import React, { + useEffect, useState, useRef, useMemo, +} from 'react'; +import { + Editor, getViewOptions, DEFAULT_VIEW_MODE, immutableNoteCallerNodeName, NoteEditor, +} from '@biblionexus-foundation/scribe-editor'; + +import NotesEditorHeader from './NotesEditorHeader'; + +export default function LexicalEditor({ + usjInput, onUsjChange, setNavRef, selectedFont, fontSize, textDirection, scrRef, setScrRef, +}) { + const [usj, setUsj] = useState(); + const editorRef = useRef(null); + const [isNoteEditorOpen, setIsNoteEditorOpen] = useState(false); + const [selectedNoteId, setSelectedNoteId] = useState(''); + + const [viewMode] = useState(DEFAULT_VIEW_MODE); + const viewOptions = useMemo(() => getViewOptions(viewMode), [viewMode]); + + const nodeOptions = { + [immutableNoteCallerNodeName]: { + onClick: (e) => { + setIsNoteEditorOpen(true); + setSelectedNoteId(e.currentTarget.getAttribute('data-caller-id')); + }, + }, + }; + + const onChange = async (updatedUsj) => { + editorRef.current?.setUsj(updatedUsj); + onUsjChange(updatedUsj); + }; + useEffect(() => { + if (usjInput) { + setUsj(usjInput); + } + }, [usjInput]); + useEffect(() => { + const timeoutId = setTimeout(() => { + if (usj && editorRef.current) { + editorRef.current.setUsj(usj); + } + }, 1000); + return () => clearTimeout(timeoutId); + }, [usj]); + + useEffect(() => { + setNavRef(scrRef); + }, [scrRef, setNavRef]); + + return ( +
    +
    + +
    + + {isNoteEditorOpen && ( +
    + setIsNoteEditorOpen(false)} + /> + +
    + )} +
    + ); +} diff --git a/renderer/src/components/EditorPage/TextEditor/NotesEditorHeader.jsx b/renderer/src/components/EditorPage/TextEditor/NotesEditorHeader.jsx new file mode 100644 index 000000000..63d921138 --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/NotesEditorHeader.jsx @@ -0,0 +1,27 @@ +import React from 'react'; + +const NotesEditorHeader = ({ onClose }) => ( +
    +
    +
    +
    Notes Editor
    +
    + +
    +
    +
    +); + +export default NotesEditorHeader; diff --git a/renderer/src/components/EditorPage/TextEditor/Popup.jsx b/renderer/src/components/EditorPage/TextEditor/Popup.jsx deleted file mode 100644 index 18698f9d4..000000000 --- a/renderer/src/components/EditorPage/TextEditor/Popup.jsx +++ /dev/null @@ -1,116 +0,0 @@ -import React, { useContext } from 'react'; -import PropTypes from 'prop-types'; -import { ScribexContext } from '@/components/context/ScribexContext'; - -import XMarkIcon from '@/icons/Xelah/XMark.svg'; -import { usePopup } from '../../Popup/PopupContext'; -import PopUpTemplate from '../../Popup'; -import { functionMapping } from './utils/insertFunctionMap'; - -const Popup = ({ action, setTriggerVerseInsert }) => { - const { - state: { - textToInsert, numberToInsert, selectedText, - }, - actions: { - setTextToInsert, - setNumberToInsert, - setInsertType, - setSelectedText, - }, - } = useContext(ScribexContext); - const { setIsOpen } = usePopup(); - - const handleInputChange = (event) => { - setTextToInsert(event.target.value); - }; - - const handleNumberInputChange = (e) => { - setNumberToInsert(e.target.value.replace(/[^0-9]/g, '')); - }; - const handleSubmit = () => { - setInsertType(action); - setTriggerVerseInsert((prev) => !prev); - - // calling funciton here does not trigger the perf check to safe. Hence the trigger to re-render. and the code is commented out. - // action === 'insertVerseNumber' || action === 'insertChapterNumber' - // ? functionMapping[action].function({ caretPosition, numberToInsert }) - // : functionMapping[action].function({ caretPosition, textToInsert, selectedText }); - setIsOpen(false); - setSelectedText(''); - }; - - const handleClose = () => { - setIsOpen(false); - setSelectedText(''); - }; - - return ( - -
    -

    {functionMapping[action].title}

    - -
    -
    -
    - {selectedText && selectedText.length > 0 - && ( -
    - Selected Text : - {' '} - {selectedText} - {' '} -
    - )} - -
    -
    - {action === 'insertVerseNumber' || action === 'insertChapterNumber' - ? ( - e.stopPropagation()} - /> - ) : ( - e.stopPropagation()} - /> - )} - -
    -
    - -
    -
    -
    - ); -}; - -Popup.propTypes = { - action: PropTypes.string.isRequired, - // handleButtonClick: PropTypes.func.isRequired, -}; - -export default Popup; diff --git a/renderer/src/components/EditorPage/TextEditor/RecursiveBlock.jsx b/renderer/src/components/EditorPage/TextEditor/RecursiveBlock.jsx deleted file mode 100644 index 0a4e59afa..000000000 --- a/renderer/src/components/EditorPage/TextEditor/RecursiveBlock.jsx +++ /dev/null @@ -1,137 +0,0 @@ -/* eslint-disable react/prop-types */ -/* eslint-disable no-unused-vars */ -import React, { useEffect, useState } from 'react'; -import { HtmlPerfEditor } from '@xelah/type-perf-html'; -import { getCurrentCursorPosition, pasteTextAtCursorPosition } from '@/util/cursorUtils'; -import { - getCurrentVerse, getCurrentChapter, -} from '@/components/EditorPage/TextEditor/utils/getReferences'; - -const getTarget = ({ content }) => { - const div = document.createElement('div'); - div.innerHTML = content; - - const { target } = div.firstChild?.dataset || {}; - - return target; -}; - -export default function RecursiveBlock({ - htmlPerf, - onHtmlPerf, - sequenceIds, - addSequenceId, - options, - content, - style, - contentEditable, - index, - verbose, - setFootNote, - bookId, - onReferenceSelected, - setCaretPosition, - setSelectedText, - scrollLock, - ...props -}) { - const [currentVerse, setCurrentVerse] = useState(null); - - const updateCursorPosition = () => { - const cursorPosition = getCurrentCursorPosition('editor'); - setCaretPosition(cursorPosition); - }; - - function handleSelection() { - let selectedText = ''; - if (window.getSelection) { - selectedText = window.getSelection().toString(); - } else if (document.selection && document.selection.type !== 'Control') { - selectedText = document.selection.createRange().text; - } - if (selectedText) { - setSelectedText(selectedText); - } - } - const checkCurrentVerse = () => { - if (document.getSelection().rangeCount >= 1 && onReferenceSelected) { - const range = document.getSelection().getRangeAt(0); - const selectedNode = range.startContainer; - const { verse } = getCurrentVerse(selectedNode); - const chapter = getCurrentChapter(selectedNode); - onReferenceSelected({ bookId, chapter, verse }); - // !scrollLock && hightlightRefVerse(chapter, verse); - } - updateCursorPosition(); - handleSelection(); - }; - - const keyStrokeHandler = (event) => { - const activeTextArea = document.activeElement; - // Replace line break with space - if (event.key === 'Enter') { - if (activeTextArea.children.length > 1) { - const lineBreak = activeTextArea.children[1]?.outerHTML; - activeTextArea.children[1].outerHTML = lineBreak.replace(//gi, ' '); - } - } - // Disable backspace if the previous node is not the same verse - if (event.keyCode === 8) { - const range = document.getSelection().getRangeAt(0); - const selectedNode = range.startContainer; - const prevNode = selectedNode.previousSibling; - if (prevNode && prevNode.dataset.attsNumber !== currentVerse) { - event.preventDefault(); - } - prevNode ? setCurrentVerse(prevNode.dataset.attsNumber) : {}; - } - if ([37, 38, 39, 40].includes(event.keyCode)) { - checkCurrentVerse(); - updateCursorPosition(); - } - }; - - function onPasteHandler(event) { - const cursorPosition = getCurrentCursorPosition('editor'); - const paste = (event.clipboardData || window.clipboardData).getData('text'); - pasteTextAtCursorPosition({ cursorPosition, textToInsert: paste }); - } - - let component; - - const editable = !!content.match(/data-type="paragraph"/); - - if (editable) { - component = ( - // eslint-disable-next-line jsx-a11y/no-static-element-interactions -
    { event.preventDefault(); onPasteHandler(event); }} - {...props} - /> - ); - } - if (!editable) { - const sequenceId = getTarget({ content }); - - if (sequenceId && !options.preview) { - const _props = { - sequenceIds: [...sequenceIds, sequenceId], - addSequenceId, - htmlPerf, - onHtmlPerf, - onInput: props?.onInput, - options, - }; - component = ; - } - component ||=
    ; - } - - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{component}; -} diff --git a/renderer/src/components/EditorPage/TextEditor/cacheUtils.js b/renderer/src/components/EditorPage/TextEditor/cacheUtils.js new file mode 100644 index 000000000..4a8dd4331 --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/cacheUtils.js @@ -0,0 +1,129 @@ +import * as path from 'path'; +import * as crypto from 'crypto'; +import { convertUsfmToUsj } from './conversionUtils'; + +let fs; + +function initFS() { + if (typeof window !== 'undefined' && window.require) { + fs = window.require('fs'); + } +} +initFS(); + +export function getMd5Hash(content) { + return crypto.createHash('md5').update(content).digest('hex'); +} + +export function getCacheFilePath(hash, projectCachePath) { + return path.join(projectCachePath, `${hash}.json`); +} + +export function isCacheValid(hash, projectCachePath) { + if (!fs) { return false; } + const cacheFilePath = getCacheFilePath(hash, projectCachePath); + return fs.existsSync(cacheFilePath); +} + +export function readCache(hash, projectCachePath) { + if (!fs) { throw new Error('File system not available'); } + const cacheFilePath = path.join(projectCachePath, `${hash}.json`); + return JSON.parse(fs.readFileSync(cacheFilePath, 'utf8')); +} + +export function writeCache(hash, data, projectCachePath) { + if (!fs) { + // eslint-disable-next-line no-console + console.error('File system not available'); + return; + } + const cacheFilePath = getCacheFilePath(hash, projectCachePath); + fs.writeFileSync(cacheFilePath, JSON.stringify(data), 'utf8'); +} + +export function deleteOldCacheFile(hash, projectCachePath) { + const cacheFilePath = getCacheFilePath(hash, projectCachePath); + if (fs.existsSync(cacheFilePath)) { + fs.unlinkSync(cacheFilePath); + } +} + +export function getCacheMapFromFile(fileCacheMapPath) { + if (fileCacheMapPath) { + try { + if (fs.existsSync(fileCacheMapPath)) { + const fileContent = fs.readFileSync(fileCacheMapPath, 'utf-8'); + return JSON.parse(fileContent); + } + } catch (error) { + // eslint-disable-next-line no-console + console.error('Error reading cache file:', error); + } + } + + return {}; +} + +export function updateCacheMapToFile(fileCacheMapPath, filePath, hash) { + if (fileCacheMapPath) { + const cacheMap = getCacheMapFromFile(fileCacheMapPath); + cacheMap[filePath] = hash; + try { + fs.mkdirSync(path.dirname(fileCacheMapPath), { recursive: true }); + fs.writeFileSync(fileCacheMapPath, JSON.stringify(cacheMap)); + } catch (error) { + // eslint-disable-next-line no-console + console.error('Error writing cache file:', error); + } + } +} + +export async function handleCache(filePath, usfmContent, projectCachePath, fileCacheMapPath) { + const newHash = getMd5Hash(usfmContent); + const fileCacheMap = getCacheMapFromFile(fileCacheMapPath); + const oldHash = fileCacheMap[filePath]; + + async function processAndCacheUSJ() { + const { usj, error } = await convertUsfmToUsj(usfmContent); + if (error) { + // eslint-disable-next-line no-console + console.error('Error parsing USFM', error); + return { error }; + } + writeCache(newHash, usj, projectCachePath); + updateCacheMapToFile(fileCacheMapPath, filePath, newHash); + return { usj }; + } + + if (!oldHash) { + // eslint-disable-next-line no-console + console.log('No existing hash found. Creating new cache entry.'); + return processAndCacheUSJ(); + } + + if (isCacheValid(oldHash, projectCachePath) && oldHash === newHash) { + // eslint-disable-next-line no-console + console.log('Cache hit'); + return { usj: await readCache(oldHash, projectCachePath) }; + } + // eslint-disable-next-line no-console + console.log('Cache miss or content changed'); + deleteOldCacheFile(oldHash, projectCachePath); + return processAndCacheUSJ(); +} + +export async function updateCache(filePath, usj, usfm, fileCacheMapPath, projectCachePath) { + const newHash = getMd5Hash(usfm); + const fileCacheMap = getCacheMapFromFile(fileCacheMapPath); + const oldHash = fileCacheMap[filePath]; + + if (oldHash && isCacheValid(oldHash, projectCachePath) && oldHash === newHash) { + writeCache(oldHash, usj, projectCachePath); + } else { + if (oldHash) { + deleteOldCacheFile(oldHash, projectCachePath); + } + writeCache(newHash, usj, projectCachePath); + updateCacheMapToFile(fileCacheMapPath, filePath, newHash); + } +} diff --git a/renderer/src/components/EditorPage/TextEditor/conversionUtils.js b/renderer/src/components/EditorPage/TextEditor/conversionUtils.js new file mode 100644 index 000000000..c9c57bbaa --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/conversionUtils.js @@ -0,0 +1,45 @@ +import USFMParser from 'sj-usfm-grammar'; + +let usfmParserInstance; +let usfmParserInitialized; + +export async function initializeParser() { + if (!usfmParserInstance) { + if (!usfmParserInitialized) { + usfmParserInitialized = await USFMParser.init(); + } + await usfmParserInitialized; + usfmParserInstance = new USFMParser(); + } + return usfmParserInstance; +} + +export async function convertUsfmToUsj(usfm) { + if (!usfmParserInstance) { + usfmParserInstance = await initializeParser(); + } + try { + const usj = usfmParserInstance.usfmToUsj(usfm); + return { usj }; + } catch (e) { + return { usj: { content: [] }, error: e }; + } +} + +export async function convertUsjToUsfm(usj) { + if (!usfmParserInstance) { + usfmParserInstance = await initializeParser(); + } + const usfm = usfmParserInstance.usjToUsfm(usj); + return usfm; +} + +initializeParser() + .then(() => { + // eslint-disable-next-line no-console + console.log('USFM Parser initialized successfully'); + }) + .catch((err) => { + // eslint-disable-next-line no-console + console.error('Error initializing USFM Parser:', err); + }); diff --git a/renderer/src/components/EditorPage/TextEditor/hooks/saveToFile.js b/renderer/src/components/EditorPage/TextEditor/hooks/saveToFile.js index b5ef6c340..a4923347d 100644 --- a/renderer/src/components/EditorPage/TextEditor/hooks/saveToFile.js +++ b/renderer/src/components/EditorPage/TextEditor/hooks/saveToFile.js @@ -1,10 +1,8 @@ import localforage from 'localforage'; -// import { readRefMeta } from '../../../core/reference/readRefMeta'; import { isElectron } from '@/core/handleElectron'; import writeToFile from '@/core/editor/writeToFile'; import { readRefBurrito } from '@/core/reference/readRefBurrito'; import packageInfo from '../../../../../../package.json'; -import { newPath } from '../../../../../../supabase'; // function to save to file. export const saveToFile = async (usfmText, bookCode) => { @@ -14,12 +12,12 @@ export const saveToFile = async (usfmText, bookCode) => { const projectName = await localforage.getItem('currentProject'); const path = require('path'); const newpath = localStorage.getItem('userPath'); - const metaPath = isElectron() ? path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json') : `${newPath}/${userName}/projects/${projectName}/metadata.json`; + const metaPath = path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json'); const metaData = JSON.parse(await readRefBurrito({ metaPath })); Object.entries(metaData.ingredients).forEach(async ([key, _ingredients]) => { if (_ingredients.scope) { const _bookID = Object.entries(_ingredients.scope)[0][0]; - if (_bookID === bookCode) { + if (_bookID.toUpperCase() === bookCode.toUpperCase()) { await writeToFile({ username: userName, projectname: projectName, diff --git a/renderer/src/components/EditorPage/TextEditor/hooks/useReadUsfmFile.js b/renderer/src/components/EditorPage/TextEditor/hooks/useReadUsfmFile.js index 193486311..2f4fa52f0 100644 --- a/renderer/src/components/EditorPage/TextEditor/hooks/useReadUsfmFile.js +++ b/renderer/src/components/EditorPage/TextEditor/hooks/useReadUsfmFile.js @@ -1,20 +1,21 @@ -import { useEffect, useState, useContext } from 'react'; +import { useEffect, useState } from 'react'; import localforage from 'localforage'; -import { ReferenceContext } from '@/components/context/ReferenceContext'; import { readRefBurrito } from '../../../../core/reference/readRefBurrito'; import { readFile } from '../../../../core/editor/readFile'; import packageInfo from '../../../../../../package.json'; -// hook to fetch usfmfile from system drive -export const useReadUsfmFile = () => { +import { handleCache } from '../cacheUtils'; + +export const useReadUsfmFile = (bookId) => { const [usfmData, setUsfmData] = useState([]); const [bookAvailable, setbookAvailable] = useState(false); - const { - state: { - bookId, - }, - } = useContext(ReferenceContext); + const [usfmString, setUsfmString] = useState(''); + const [cachedData, setCachedData] = useState({}); + const [loading, setLoading] = useState(true); + const [booksInProject, setBooksInProject] = useState([]); + useEffect(() => { async function readLocalFile() { + setLoading(true); try { const userProfile = await localforage.getItem('userProfile'); const userName = userProfile?.username; @@ -31,27 +32,49 @@ export const useReadUsfmFile = () => { _books.push(bookObj); } }); + setBooksInProject(_books.map((bookObj) => bookObj.bookId.toLowerCase())); const [currentBook] = _books.filter((bookObj) => bookObj.bookId === bookId?.toUpperCase()); + const projectCachePath = path.join(newpath, packageInfo.name, 'users', userName, 'project_cache', projectName); + const fileCacheMapPath = path.join(projectCachePath, 'fileCacheMap.json'); + const filePath = path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'ingredients', `${bookId?.toUpperCase()}.usfm`); if (currentBook) { const fileData = await readFile({ projectname: projectName, filename: currentBook.fileName, username: userName }); + const cachedData = await handleCache(filePath, fileData, projectCachePath, fileCacheMapPath); const books = [{ selectors: { org: 'unfoldingWord', lang: 'en', abbr: 'ult' }, - bookCode: currentBook.bookId.toLowerCase(), + bookCode: currentBook.bookId?.toLowerCase(), data: fileData, }]; setUsfmData(books); setbookAvailable(true); + setUsfmString(fileData); + setCachedData(cachedData); } else { setUsfmData([]); setbookAvailable(false); } - // setUsfmData(fileData); + setLoading(false); } catch (err) { + setLoading(false); // eslint-disable-next-line no-console return console.log(err); } } readLocalFile(); }, [bookId]); - return { usfmData, bookAvailable }; + return { + usfmData, bookAvailable, usfmString, bookId, cachedData, loading, booksInProject, + }; }; + +export async function getCachePaths(bookId) { + const path = require('path'); + const userProfile = await localforage.getItem('userProfile'); + const projectName = await localforage.getItem('currentProject'); + const newPath = await localforage.getItem('userPath'); + const userName = userProfile?.username; + const projectCachePath = path.join(newPath, packageInfo.name, 'users', userName, 'project_cache', projectName); + const fileCacheMapPath = path.join(projectCachePath, 'fileCacheMap.json'); + const filePath = path.join(newPath, packageInfo.name, 'users', userName, 'projects', projectName, 'ingredients', `${bookId?.toUpperCase()}.usfm`); + return { filePath, projectCachePath, fileCacheMapPath }; +} diff --git a/renderer/src/components/EditorPage/TextEditor/index.jsx b/renderer/src/components/EditorPage/TextEditor/index.jsx index 76734ba1e..b534a997d 100644 --- a/renderer/src/components/EditorPage/TextEditor/index.jsx +++ b/renderer/src/components/EditorPage/TextEditor/index.jsx @@ -1,127 +1,121 @@ import React, { - useEffect, useState, useContext, Fragment, + useEffect, useState, useContext, useMemo, } from 'react'; -import { useProskomma, useImport, useCatalog } from 'proskomma-react-hooks'; -import { useDeepCompareEffect } from 'use-deep-compare'; -import { ScribexContext } from '@/components/context/ScribexContext'; import { ReferenceContext } from '@/components/context/ReferenceContext'; -import { ProjectContext } from '@/components/context/ProjectContext'; -import EditorSideBar from '@/modules/editorsidebar/EditorSideBar'; +import { debounce } from 'lodash'; + +import { LoadingSpinner } from '@/components/LoadingSpinner'; import { useReadUsfmFile } from './hooks/useReadUsfmFile'; -import htmlMap from './hooks/htmlmap'; -import usePerf from './hooks/usePerf'; import EditorMenuBar from './EditorMenuBar'; -import Editor from './Editor'; +import LexicalEditor from './LexicalEditor'; +import { updateCacheNSaveFile } from './updateAndSave'; +import EmptyScreen from './EmptyScreen'; + +const defaultScrRef = { + bookCode: 'PSA', + chapterNum: 1, + verseNum: 1, +}; export default function TextEditor() { - const { state, actions } = useContext(ScribexContext); - const { verbose } = state; - const [selectedBook, setSelectedBook] = useState(); - const [bookChange, setBookChange] = useState(false); const [chapterNumber, setChapterNumber] = useState(1); const [verseNumber, setVerseNumber] = useState(1); - const [triggerVerseInsert, setTriggerVerseInsert] = useState(false); - // const [newVerChapNumber, setInsertNumber] = useState(''); - // const [insertVerseRChapter, setInsertVerseRChapter] = useState(''); - - const { usfmData, bookAvailable } = useReadUsfmFile(); + const [usjInput, setUsjInput] = useState(); + const [scrRef, setScrRef] = useState(defaultScrRef); + const [navRef, setNavRef] = useState(); const { - state: { bookId, selectedFont, editorFontSize }, + state: { + bookId: defaultBookId, selectedFont, editorFontSize, projectScriptureDir, + }, actions: { handleSelectedFont, onChangeChapter, onChangeVerse, handleEditorFontSize, }, } = useContext(ReferenceContext); + const [book, setBook] = useState(defaultBookId); const { - states: { openSideBar }, - actions: { setOpenSideBar }, - } = useContext(ProjectContext); - - let selectedDocument; - - const { proskomma, stateId, newStateId } = useProskomma({ verbose }); - const { done } = useImport({ - proskomma, - stateId, - newStateId, - documents: usfmData, - }); - - function closeSideBar(status) { - setOpenSideBar(status); - } + cachedData, loading, bookAvailable, booksInProject, + } = useReadUsfmFile(book); useEffect(() => { - setSelectedBook(bookId.toUpperCase()); - setBookChange(true); - }, [bookId]); + if (cachedData.error) { + console.error('Error parsing USFM', cachedData.error); + return; + } + const { usj } = cachedData; + if (!usj && usj?.entries(usj).length === 0) { return; } + console.log(usj); + setUsjInput(usj); + }, [book, cachedData]); useEffect(() => { + setScrRef({ + bookCode: book, + chapterNum: chapterNumber, + verseNum: verseNumber, + }); onChangeChapter(chapterNumber, 1); onChangeVerse(verseNumber, 1); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [chapterNumber, verseNumber]); - - const { catalog } = useCatalog({ proskomma, stateId, verbose }); - const { id: docSetId, documents } = (done && catalog.docSets[0]) || {}; - if (done) { - selectedDocument = documents?.find( - (doc) => doc.bookCode === selectedBook, - ); - } - - const { bookCode, h: bookName } = selectedDocument || {}; - const ready = (docSetId && bookCode) || false; - const isLoading = !done || !ready; - const { state: perfState, actions: perfActions } = usePerf({ - proskomma, - ready, - docSetId, - bookCode, - verbose, - htmlMap, - }); - const { htmlPerf } = perfState; + }, [chapterNumber, verseNumber, book]); - useDeepCompareEffect(() => { - if (htmlPerf && htmlPerf.mainSequenceId !== state.sequenceIds[0]) { - actions.setSequenceIds([htmlPerf?.mainSequenceId]); + useEffect(() => { + if (navRef) { + const { chapterNum, verseNum } = navRef; + setChapterNumber(chapterNum); + setVerseNumber(verseNum); } - }, [htmlPerf, state.sequenceIds, perfState]); + }, [navRef]); + + const handleUsjChange = useMemo( + () => debounce(async (updatedUsj) => { + updateCacheNSaveFile(updatedUsj, book); + console.log('usj updated', updatedUsj); + }, 1000), + [book], + ); const _props = { - ...state, - ...perfState, - ...actions, - ...perfActions, - editorFontSize, selectedFont, chapterNumber, - verseNumber, - isLoading, - bookName, - bookChange, - bookAvailable, - handleEditorFontSize, - setBookChange, setChapterNumber, + verseNumber, setVerseNumber, + book, + setBook, handleSelectedFont, - triggerVerseInsert, - setTriggerVerseInsert, + bookId: book, + loading, + editorFontSize, + handleEditorFontSize, + bookAvailable, + booksInProject, + }; + + const props = { + selectedFont, + fontSize: editorFontSize, + textDirection: projectScriptureDir?.toLowerCase(), + usjInput, + onUsjChange: handleUsjChange, + setNavRef, + scrRef, + setScrRef, + bookId: book, + }; return ( - <> - -
    - - -
    - +
    + + {loading ? ( + + ) : ( + <> + {!bookAvailable && } + {bookAvailable && usjInput && } + + )} +
    ); } diff --git a/renderer/src/components/EditorPage/TextEditor/updateAndSave.js b/renderer/src/components/EditorPage/TextEditor/updateAndSave.js new file mode 100644 index 000000000..d07f95115 --- /dev/null +++ b/renderer/src/components/EditorPage/TextEditor/updateAndSave.js @@ -0,0 +1,15 @@ +import { getCachePaths } from './hooks/useReadUsfmFile'; +import { convertUsjToUsfm } from './conversionUtils'; +import { updateCache } from './cacheUtils'; +import { saveToFile } from './hooks/saveToFile'; + +export async function updateCacheNSaveFile(usj, bookId) { + const usfm = await convertUsjToUsfm(usj); + const { filePath, projectCachePath, fileCacheMapPath } = await getCachePaths(bookId); + updateCache(filePath, usj, usfm, fileCacheMapPath, projectCachePath); + if (usfm) { + await saveToFile(usfm, bookId); + // eslint-disable-next-line no-console + console.log('updated usfm file saved'); + } +} diff --git a/renderer/src/components/EditorPage/TextEditor/utils/IntersectionObserver.js b/renderer/src/components/EditorPage/TextEditor/utils/IntersectionObserver.js deleted file mode 100644 index 164b2b80e..000000000 --- a/renderer/src/components/EditorPage/TextEditor/utils/IntersectionObserver.js +++ /dev/null @@ -1,36 +0,0 @@ -export const scrollReference = (() => { - let prevCV; - return (c, v) => { - const refEditors = document.getElementsByClassName('ref-editor'); - refEditors.length > 0 && Array.prototype.filter.call(refEditors, (refEditor) => { - if (!prevCV || prevCV.c !== c) { - const chapterInView = refEditor.querySelector(`#ch-${c}`); - if (chapterInView) { - chapterInView.scrollIntoView(); - chapterInView.classList.add('scroll-mt-10'); - } - } else { - const verseInView = refEditor.querySelector(`#ch${c}v${v}`); - if (verseInView) { - verseInView.scrollIntoView(); - } - } - }); - prevCV = { c, v }; - }; -})(); - -export const onIntersection = ({ - scroll, entries, setChapterNumber, scrollLock, setVerseNumber, -}) => { - if (scroll) { - // eslint-disable-next-line no-restricted-syntax - for (const entry of entries) { - if (entry.isIntersecting) { - setChapterNumber(entry.target.dataset.attsNumber); - setVerseNumber(1); - scrollLock === false ? scrollReference(entry.target.dataset.attsNumber) : {}; - } - } - } -}; diff --git a/renderer/src/components/EditorPage/TextEditor/utils/getReferences.js b/renderer/src/components/EditorPage/TextEditor/utils/getReferences.js deleted file mode 100644 index b923fa370..000000000 --- a/renderer/src/components/EditorPage/TextEditor/utils/getReferences.js +++ /dev/null @@ -1,64 +0,0 @@ -export const getCurrentVerse = (currentNode) => { - let verse; - let previousElement = currentNode?.previousElementSibling; - const verseText = currentNode?.nextSibling; - while (previousElement) { - if (previousElement.dataset.type === 'mark' && previousElement.dataset.subtype === 'verses') { - verse = previousElement.dataset.attsNumber; - break; - } - previousElement = previousElement?.previousElementSibling; - } - return { verse, verseText }; -}; - -export const removeHighlightFromRefVerse = ({ c, v }) => { - const refEditors = document.getElementsByClassName('ref-editor'); - refEditors.length > 0 && Array.prototype.filter.call(refEditors, (refEditor) => { - const prevHighlight = refEditor.querySelector(`#ch${c}v${v}`)?.nextElementSibling; - const hightlightText = prevHighlight && prevHighlight.innerHTML; - prevHighlight && prevHighlight.replaceWith(hightlightText); - }); -}; - -export const hightlightRefVerse = (() => { - let prevCV; - return (c, v) => { - const refEditors = document.getElementsByClassName('ref-editor'); - refEditors.length > 0 && Array.prototype.filter.call(refEditors, (refEditor) => { - if (!(prevCV && prevCV.c !== c)) { - const verseInView = refEditor.querySelector(`#ch${c}v${v}`); - const { verseText } = getCurrentVerse(verseInView); - // highlight verse - const range = document.createRange(); - range.setStart(verseText, 0); - range.setEnd(verseText, verseText.textContent.length); - const newSpan = document.createElement('span'); - newSpan.classList.add('bg-primary-50'); - range.surroundContents(newSpan); - // remove highlight from previous verse - prevCV && removeHighlightFromRefVerse({ ...prevCV }); - } - }); - prevCV = { c, v }; - }; -})(); - -export const getCurrentChapter = (currentNode) => { - let currentChapter; - const closestParaDiv = currentNode.parentNode.parentNode; - if (closestParaDiv.firstElementChild?.firstElementChild?.classList.contains('chapter')) { - currentChapter = closestParaDiv.firstElementChild.firstElementChild.dataset.attsNumber; - return currentChapter; - } - - let prevParaDiv = closestParaDiv.previousElementSibling; - while (prevParaDiv) { - if (prevParaDiv.firstElementChild?.firstElementChild?.classList.contains('chapter')) { - currentChapter = prevParaDiv.firstElementChild.firstElementChild.dataset.attsNumber; - break; - } - prevParaDiv = prevParaDiv.previousElementSibling; - } - return currentChapter; -}; diff --git a/renderer/src/components/EditorPage/TextEditor/utils/insertFunctionMap.js b/renderer/src/components/EditorPage/TextEditor/utils/insertFunctionMap.js deleted file mode 100644 index a4fedbc64..000000000 --- a/renderer/src/components/EditorPage/TextEditor/utils/insertFunctionMap.js +++ /dev/null @@ -1,18 +0,0 @@ -import { - insertVerseNumber, insertChapterNumber, insertFootnote, insertXRef, -} from '@/util/cursorUtils'; - -export const functionMapping = { - insertVerseNumber: { - title: 'Insert Verse', function: insertVerseNumber, icon: 'V', pholder: 'Verse number', - }, - insertChapterNumber: { - title: 'Insert Chapter', function: insertChapterNumber, icon: 'C', placeholder: 'Chapter number', - }, - insertFootnote: { - title: 'Insert Footnote', function: insertFootnote, icon: 'FN', placeholder: 'Footnote', - }, - insertXRef: { - title: 'Insert Cross Reference', function: insertXRef, icon: 'XR', placeholder: 'Cross Reference', - }, -}; diff --git a/renderer/src/components/hooks/scribex/htmlmap.js b/renderer/src/components/hooks/scribex/htmlmap.js deleted file mode 100644 index e9b9d9729..000000000 --- a/renderer/src/components/hooks/scribex/htmlmap.js +++ /dev/null @@ -1,55 +0,0 @@ -const htmlMap = (context) => ({ - '*': { - '*': { - tagName: 'span', - }, - sequence: { - tagName: 'section', - }, - }, - wrapper: { - '*': { - tagName: 'wrapper', - }, - sequence: { - tagName: 'section', - }, - }, - paragraph: { - '*': { - tagName: 'p', - }, - }, - mark: { - '*': { - tagName: 'span', - }, - chapter: ({ atts }) => { - context.lastChapter = atts.number; - return ({ - classList: ['mark', 'chapter', `chapter-${atts.number}`], - id: `ch-${atts.number}`, - tagName: 'span', - }); - }, - verses: ({ atts }) => ({ - classList: ['mark', 'verse', `verse-${atts.number}`], - id: `ch${context.lastChapter}v${atts.number}`, - tagName: 'span', - attributes: { contenteditable: false }, - }), - }, - graft: { - heading: { - tagName: 'div', - }, - title: { - tagName: 'div', - }, - introduction: { - tagName: 'div', - }, - }, -}); - -export default htmlMap({}); diff --git a/renderer/src/components/hooks/scribex/htmlmap.json b/renderer/src/components/hooks/scribex/htmlmap.json deleted file mode 100644 index bf319d520..000000000 --- a/renderer/src/components/hooks/scribex/htmlmap.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "*": { - "*": { - "tagName": "span" - }, - "sequence": { - "tagName": "section" - } - }, - "graft": { - "title": { - "tagName": "p" - }, - "footnote":{ - "tagName":"span" - } - }, - "ms": { - "paragraph": { - "tagName": "h3" - } - }, - "paragraph": { - "usfm:mt": { - "classList": ["major-title paragraph mt"], - "tagName": "h2" - }, - "usfm:ms": { - "classList": ["major-section-heading paragraph ms"], - "tagName": "h3" - }, - "*": { - "tagName": "p" - } - }, - "mark": { - "chapter": { - "tagName": "sub" - }, - "verses": { - "tagName": "sup" - } - } -} diff --git a/renderer/src/components/hooks/scribex/saveToFile.js b/renderer/src/components/hooks/scribex/saveToFile.js deleted file mode 100644 index cb8a2cd7d..000000000 --- a/renderer/src/components/hooks/scribex/saveToFile.js +++ /dev/null @@ -1,42 +0,0 @@ -import localforage from 'localforage'; -// import { readRefMeta } from '../../../core/reference/readRefMeta'; -import { isElectron } from '@/core/handleElectron'; -import { readRefBurrito } from '../../../core/reference/readRefBurrito'; -import writeToFile from '../../../core/editor/writeToFile'; -import packageInfo from '../../../../../package.json'; -import { newPath } from '../../../../../supabase'; -// if (!process.env.NEXT_PUBLIC_IS_ELECTRON) { -// const newPath = require('../../../../../supabase').newPath -// } -// function to save to file. -export const saveToFile = async (usfmText, bookCode) => { - try { - const userProfile = await localforage.getItem('userProfile'); - const userName = isElectron() ? userProfile?.username : userProfile?.user?.email; - const projectName = await localforage.getItem('currentProject'); - const path = require('path'); - const newpath = localStorage.getItem('userPath'); - // const projectsDir = path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName); - const metaPath = isElectron() ? path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json') : `${newPath}/${userName}/projects/${projectName}/metadata.json`; - // const refs = await readRefMeta({ projectsDir }) - const metaData = JSON.parse(await readRefBurrito({ metaPath })); - Object.entries(metaData.ingredients).forEach(async ([key, _ingredients]) => { - if (_ingredients.scope) { - const _bookID = Object.entries(_ingredients.scope)[0][0]; - if (_bookID === bookCode) { - // setTimeout(() => { - await writeToFile({ - username: userName, - projectname: projectName, - filename: key, - data: usfmText, - }); - // }, 2000); - } - } - }); - } catch (err) { - // eslint-disable-next-line no-console - return console.log(err); - } -}; diff --git a/renderer/src/components/hooks/scribex/usePerf.js b/renderer/src/components/hooks/scribex/usePerf.js deleted file mode 100644 index 18bdcccf8..000000000 --- a/renderer/src/components/hooks/scribex/usePerf.js +++ /dev/null @@ -1,123 +0,0 @@ -/* eslint-disable no-unused-vars */ -import { useState, useTransition } from 'react'; -import { - useDeepCompareCallback, - useDeepCompareEffect, - useDeepCompareMemo, -} from 'use-deep-compare'; -import isEqual from 'lodash.isequal'; -import EpiteleteHtml from 'epitelete-html'; -import { saveToFile } from './saveToFile'; - -export default function usePerf({ - proskomma, - ready, - docSetId, - bookCode, - verbose, - htmlMap, - refName, -}) { - const [isSaving, startSaving] = useTransition(); - const [htmlPerf, setHtmlPerf] = useState(); - const [usfmText, setUsfmText] = useState(); - - const epiteleteHtml = useDeepCompareMemo( - () => ready - && new EpiteleteHtml({ - proskomma, - docSetId, - htmlMap, - options: { historySize: 100 }, - }), - [proskomma, ready, docSetId, refName], - ); - - useDeepCompareEffect(() => { - if (epiteleteHtml) { - epiteleteHtml.readHtml(bookCode, { cloning: false }, htmlMap).then((_htmlPerf) => { - // remove htmlMap for default classes - setHtmlPerf(_htmlPerf); - }); - } - }, [epiteleteHtml, bookCode]); - - // exports perf to usfm and writes to file. - const exportUsfm = async (bookCode) => { - const usfmString = await epiteleteHtml?.readUsfm(bookCode); - setUsfmText(usfmString); - saveToFile(usfmString, bookCode); - epiteleteHtml?.readHtml(bookCode, { cloning: false }, htmlMap).then((_htmlPerf) => { // remove htmlMap for default classes - setHtmlPerf(_htmlPerf); - }); - }; - - const saveHtmlPerf = useDeepCompareCallback( - (_htmlPerf, { sequenceId }) => { - if (!isEqual(htmlPerf, _htmlPerf)) { setHtmlPerf(_htmlPerf); } - - startSaving(async () => { - const newHtmlPerf = await epiteleteHtml?.writeHtml( - bookCode, - sequenceId, - _htmlPerf, - { insertSequences: true }, - ); - if (!isEqual(htmlPerf, newHtmlPerf)) { setHtmlPerf(newHtmlPerf); } - exportUsfm(bookCode); - }); - }, - [htmlPerf, bookCode], - ); - - const insertNewGraft = useDeepCompareCallback( - (_htmlPerf, { sequenceId }) => { - if (!isEqual(htmlPerf, _htmlPerf)) { setHtmlPerf(_htmlPerf); } - - startSaving(async () => { - const newHtmlPerf = await epiteleteHtml?.writeHtml( - bookCode, - sequenceId, - _htmlPerf, - { insertSequences: true }, - ); - - if (!isEqual(htmlPerf, newHtmlPerf)) { setHtmlPerf(newHtmlPerf); } - exportUsfm(bookCode); - }); - }, - [htmlPerf, bookCode], - ); - - const undo = async () => { - const newPerfHtml = await epiteleteHtml?.undoHtml(bookCode); - setHtmlPerf(newPerfHtml); - }; - - const redo = async () => { - const newPerfHtml = await epiteleteHtml?.redoHtml(bookCode); - setHtmlPerf(newPerfHtml); - }; - - const canUndo = (epiteleteHtml?.canUndo && epiteleteHtml?.canUndo(bookCode)) || false; - const canRedo = (epiteleteHtml?.canRedo && epiteleteHtml?.canRedo(bookCode)) || false; - - const state = { - bookCode, - htmlPerf, - canUndo, - canRedo, - isSaving, - usfmText, - }; - - const actions = { - insertNewGraft, - saveHtmlPerf, - exportUsfm, - undo, - redo, - }; - - return { state, actions }; -} diff --git a/renderer/src/components/hooks/scribex/useReadUsfmFile.js b/renderer/src/components/hooks/scribex/useReadUsfmFile.js deleted file mode 100644 index b3a9f4ad0..000000000 --- a/renderer/src/components/hooks/scribex/useReadUsfmFile.js +++ /dev/null @@ -1,57 +0,0 @@ -import { useEffect, useState, useContext } from 'react'; -import localforage from 'localforage'; -import { ReferenceContext } from '@/components/context/ReferenceContext'; -import { readRefBurrito } from '../../../core/reference/readRefBurrito'; -import { readFile } from '../../../core/editor/readFile'; -import packageInfo from '../../../../../package.json'; -// hook to fetch usfmfile from system drive -export const useReadUsfmFile = () => { - const [usfmData, setUsfmData] = useState([]); - const [bookAvailable, setbookAvailable] = useState(false); - const { - state: { - bookId, - }, - } = useContext(ReferenceContext); - useEffect(() => { - async function readLocalFile() { - try { - const userProfile = await localforage.getItem('userProfile'); - const userName = userProfile?.username; - const projectName = await localforage.getItem('currentProject'); - const path = require('path'); - const newpath = localStorage.getItem('userPath'); - const metaPath = path.join(newpath, packageInfo.name, 'users', userName, 'projects', projectName, 'metadata.json'); - const metaData = JSON.parse(await readRefBurrito({ metaPath })); - const _books = []; - Object.entries(metaData.ingredients).forEach(async ([key, _ingredients]) => { - if (_ingredients.scope) { - const _bookID = Object.entries(_ingredients.scope)[0][0]; - const bookObj = { bookId: _bookID, fileName: key }; - _books.push(bookObj); - } - }); - const [currentBook] = _books.filter((bookObj) => bookObj.bookId === bookId?.toUpperCase()); - if (currentBook) { - const fileData = await readFile({ projectname: projectName, filename: currentBook.fileName, username: userName }); - const books = [{ - selectors: { org: 'unfoldingWord', lang: 'en', abbr: 'ult' }, - bookCode: currentBook.bookId.toLowerCase(), - data: fileData, - }]; - setUsfmData(books); - setbookAvailable(true); - } else { - setUsfmData([]); - setbookAvailable(false); - } - // setUsfmData(fileData); - } catch (err) { - // eslint-disable-next-line no-console - return console.log(err); - } - } - readLocalFile(); - }, [bookId]); - return { usfmData, bookAvailable }; -}; diff --git a/renderer/src/layouts/editor/SectionContainer.js b/renderer/src/layouts/editor/SectionContainer.js index 4e4415eb2..fffa5e607 100644 --- a/renderer/src/layouts/editor/SectionContainer.js +++ b/renderer/src/layouts/editor/SectionContainer.js @@ -28,6 +28,20 @@ const SectionContainer = () => { const data = fs.readFileSync(metaPath, 'utf-8'); const metadata = JSON.parse(data); setEditor(metadata.type.flavorType.flavor.name); + + if (metadata.type.flavorType.flavor.name === 'textTranslation') { + // Check for project_cache folder and create if it doesn't exist + const projectCachePath = path.join(newpath, packageInfo.name, 'users', username, 'project_cache', projectName); + if (!fs.existsSync(projectCachePath)) { + fs.mkdirSync(projectCachePath, { recursive: true }); + } + + // Check for fileCacheMap.json and create if it doesn't exist + const fileCacheMapPath = path.join(projectCachePath, 'fileCacheMap.json'); + if (!fs.existsSync(fileCacheMapPath)) { + fs.writeFileSync(fileCacheMapPath, JSON.stringify({}), 'utf-8'); + } + } }); }); }, [editor]); diff --git a/renderer/src/modules/editorsidebar/EditorSideBar.js b/renderer/src/modules/editorsidebar/EditorSideBar.js index 34742ca90..24b166ffb 100644 --- a/renderer/src/modules/editorsidebar/EditorSideBar.js +++ b/renderer/src/modules/editorsidebar/EditorSideBar.js @@ -18,14 +18,15 @@ import { BookmarkIcon, } from '@heroicons/react/24/outline'; +import { NoteEditor } from '@biblionexus-foundation/scribe-editor'; import PinIcon from '@/icons/basil/Outline/Status/Pin.svg'; import CrossReferenceIcon from '@/icons/crossreference.svg'; import FootNotesIcon from '@/icons/footnotes.svg'; import Search from './Search'; -import CrossReferences from './CrossReferences'; +// import CrossReferences from './CrossReferences'; // import FootNotes from './FootNotes'; -import GraftEditor from './GraftEditor'; +// import GraftEditor from './GraftEditor'; import Comments from './Comments'; import Bookmarks from '../../components/EditorPage/BookMarks/Bookmarks'; @@ -54,7 +55,7 @@ export default function EditorSideBar(props) { const { isOpen, closeSideBar, - graftProps, + notesProps, } = props; const { @@ -192,10 +193,18 @@ export default function EditorSideBar(props) {
    {state.tabIndex === 0 && } - {state.tabIndex === 1 - && } - {state.tabIndex === 2 - && } + {/* {state.tabIndex === 1 + && } */} + {state.tabIndex === 2 && ( + + )} + {/* && } */} {state.tabIndex === 3 && } {state.tabIndex === 4 diff --git a/styles/globals.css b/styles/globals.css index 0bc61f88d..b11a89c2c 100755 --- a/styles/globals.css +++ b/styles/globals.css @@ -109,7 +109,7 @@ p.paragraph:has(.chapter) { } .ref-editor ::selection { - @apply bg-primary-50; + @apply bg-primary-50; } /* .perf .verse:after { @@ -271,7 +271,7 @@ p.paragraph:has(.chapter) { margin: 0.1em; } */ .button { - @apply flex h-8 cursor-pointer items-center justify-center rounded-lg p-2 text-xs font-bold outline-none xl:px-4; + @apply flex h-8 cursor-pointer items-center justify-center rounded-lg p-2 text-xs font-bold outline-none xl:px-4; } .pdfViewer { @@ -576,28 +576,7 @@ MODAL SECTION SELECTION BLOCK END #sundesmosToolbar { background-color: #E5E7EB; border-color: white; -} - -.chunk-row:hover { - background-color: rgba(135, 206, 250, 0.3); -} - -div.draggable { - border-color: #121212; - border-width: 1px; -} - -@media (prefers-color-scheme: dark) { - .source-text { - color: #ffffff; - } -} -@media (prefers-color-scheme: light) { - .source-text { - color: #121212; - } -} .prevent-select { -webkit-user-select: none; @@ -856,4 +835,2420 @@ Select scribe theme Start align-self: "flex-end"; margin-top: 16; margin-right: 16; -} \ No newline at end of file +} + + +} +.editor-input { + text-align: start; +} + +.editor-input > p { + direction: inherit; + margin-top: 0; + margin-bottom: 0; + line-height: 1.5; +} + +/* USJ Nodes */ + +.leadingFloat { + float: start; +} +.clearFloat { + clear: both; +} +.align_start { + text-align: start; +} +.align_center { + text-align: center; +} +.align_end { + text-align: end; +} +@font-face { + font-family: 'Charis SIL'; + src: local('Charis SIL'), local('Charis SIL Bold'), + local('Charis SIL Bold Italic'), local('Charis SIL Italic'), + url('file:///C:/Windows/Fonts/CharisSIL-B.ttf'); + font-weight: normal; +} +@font-face { + font-family: 'Charis SIL'; + src: local('Charis SIL Bold'); + font-weight: bold; +} +@font-face { + font-family: 'Charis SIL'; + src: local('Charis SIL Italic'); + font-style: italic; +} +@font-face { + font-family: 'Charis SIL'; + src: local('Charis SIL Bold Italic'); + font-weight: bold; + font-style: italic; +} +.formatted-font .usfm { + font-family: 'Charis SIL'; + font-size: 12pt; +} + +/* BookNode */ + +.usfm_id { + display: none; +} +.formatted-font .usfm_id { + font-size: 100%; +} + +/* ChapterNode, ImmutableChapterNode */ + +.formatted-font .usfm_c { + @apply text-primary block break-before-column font-medium uppercase tracking-wider before:content-['Chapter_:_']; +} +.text-spacing[dir='ltr'] .usfm_c { + @apply pl-4 text-left; +} +.text-spacing[dir='rtl'] .usfm_c { + @apply pr-4 text-right; +} +.formatted-font .usfm_ca { + color: #007306; + font-size: 133%; + font-style: italic; +} + +.formatted-font .usfm_cp { + font-weight: bold; + color: #003380; + font-size: 150%; +} +.text-spacing .usfm_cp { + margin-bottom: 4pt; + margin-top: 8pt; +} + +/* VerseNode, ImmutableVerseNode */ + +.formatted-font .usfm_v { + @apply align-top text-xs uppercase tracking-wider text-primary; +} +.text-spacing[dir='ltr'] .usfm_v { + @apply text-left; +} +.text-spacing[dir='rtl'] .usfm_v { + @apply text-right; +} + +.formatted-font .usfm_va { + color: #007306; + font-size: 100%; + vertical-align: text-top; + font-size: 66%; +} + +.formatted-font .usfm_vp { + color: #003380; + font-size: 100%; + vertical-align: text-top; + font-size: 66%; +} + +/* ParaNode */ + +.formatted-font .usfm_usfm { + font-size: 100%; +} + +.formatted-font .usfm_ide { + font-size: 100%; + display: none; +} + +.formatted-font .usfm_h { + font-size: 100%; + display: none; +} + +.formatted-font .usfm_h1 { + font-size: 100%; +} + +.formatted-font .usfm_h2 { + font-size: 100%; +} + +.formatted-font .usfm_h3 { + font-size: 100%; +} + +.usfm_toc1 { + @apply hidden; +} +.formatted-font .usfm_toc1 { + @apply font-bold italic text-green-900; +} +.text-spacing[dir='ltr'] .usfm_toc1 { + @apply ml-2 text-left; +} +.text-spacing[dir='rtl'] .usfm_toc1 { + @apply mr-2 text-right; +} + +.usfm_toc2 { + @apply hidden; +} +.formatted-font .usfm_toc2 { + @apply italic text-green-900; +} +.text-spacing[dir='ltr'] .usfm_toc2 { + @apply ml-2 text-left; +} +.text-spacing[dir='rtl'] .usfm_toc2 { + @apply mr-2 text-right; +} + +.usfm_toc3 { + @apply hidden; +} +.formatted-font .usfm_toc3 { + @apply font-bold italic text-red-500; +} +.text-spacing[dir='ltr'] .usfm_toc3 { + @apply ml-2 text-left; +} +.text-spacing[dir='rtl'] .usfm_toc3 { + @apply mr-2 text-right; +} + +.formatted-font .usfm_toca1 { + color: #8c8c8c; + font-size: 83%; + font-style: italic; +} + +.formatted-font .usfm_toca2 { + color: #8c8c8c; + font-size: 83%; + font-style: italic; +} + +.formatted-font .usfm_toca3 { + color: #8c8c8c; + font-size: 83%; + font-style: italic; +} + +.formatted-font .usfm_rem { + color: #003380; + font-size: 100%; +} + +.formatted-font .usfm_sts { + color: #003380; + font-size: 100%; +} + +.formatted-font .usfm_restore { + color: #003380; + font-size: 100%; +} + +.formatted-font .usfm_imt { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_imt { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_imt1 { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_imt1 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_imt2 { + font-size: 108%; + font-style: italic; +} +.text-spacing .usfm_imt2 { + text-align: center; + margin-bottom: 3pt; + margin-top: 6pt; +} + +.formatted-font .usfm_imt3 { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_imt3 { + text-align: center; + margin-bottom: 2pt; + margin-top: 2pt; +} + +.formatted-font .usfm_imt4 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_imt4 { + text-align: center; + margin-bottom: 2pt; + margin-top: 2pt; +} + +.formatted-font .usfm_imte { + font-weight: bold; + font-size: 166%; +} +.text-spacing .usfm_imte { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_imte1 { + font-weight: bold; + font-size: 166%; +} +.text-spacing .usfm_imte1 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_imte2 { + font-size: 133%; + font-style: italic; +} +.text-spacing .usfm_imte2 { + text-align: center; + margin-bottom: 2pt; +} + +.formatted-font .usfm_is { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_is { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_is1 { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_is1 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_is2 { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_is2 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_iot { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_iot { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_io { + font-size: 100%; +} +.text-spacing[dir='ltr'] .usfm_io { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_io { + margin-right: 10vw; +} + +.formatted-font .usfm_io1 { + font-size: 100%; +} +.text-spacing[dir='ltr'] .usfm_io1 { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_io1 { + margin-right: 10vw; +} + +.formatted-font .usfm_io2 { + font-size: 100%; +} +.text-spacing[dir='ltr'] .usfm_io2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_io2 { + margin-right: 15vw; +} + +.formatted-font .usfm_io3 { + font-size: 100%; +} +.text-spacing[dir='ltr'] .usfm_io3 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_io3 { + margin-right: 20vw; +} + +.formatted-font .usfm_io4 { + font-size: 100%; +} +.text-spacing[dir='ltr'] .usfm_io4 { + margin-left: 25vw; +} +.text-spacing[dir='rtl'] .usfm_io4 { + margin-right: 25vw; +} + +.formatted-font .usfm_ior { + font-size: 100%; +} + +.formatted-font .usfm_ip { + font-size: 100%; +} +.text-spacing .usfm_ip { + text-indent: 2.5vw; +} + +.formatted-font .usfm_im { + font-size: 100%; +} + +.formatted-font .usfm_ipi { + font-size: 100%; +} +.text-spacing .usfm_ipi { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_imi { + font-size: 100%; +} +.text-spacing .usfm_imi { + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_ili { + font-size: 100%; +} +.text-spacing .usfm_ili { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_ili { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_ili { + margin-right: 10vw; +} + +.formatted-font .usfm_ili1 { + font-size: 100%; +} +.text-spacing .usfm_ili1 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_ili1 { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_ili1 { + margin-right: 10vw; +} + +.formatted-font .usfm_ili2 { + font-size: 100%; +} +.text-spacing .usfm_ili2 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_ili2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_ili2 { + margin-right: 15vw; +} + +.formatted-font .usfm_ipq { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_ipq { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_imq { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_imq { + margin-left: 5vw; + margin-right: 5vw; +} + +.usfm_ipr { + text-align: end; +} +.formatted-font .usfm_ipr { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_ipr { + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_ib { + font-size: 83%; +} + +.formatted-font .usfm_iq { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_iq { + text-indent: -15vw; +} +.text-spacing[dir='ltr'] .usfm_iq { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_iq { + margin-right: 20vw; +} + +.formatted-font .usfm_iq1 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_iq1 { + text-indent: -15vw; +} +.text-spacing[dir='ltr'] .usfm_iq1 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_iq1 { + margin-right: 20vw; +} + +.formatted-font .usfm_iq2 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_iq2 { + text-indent: -10vw; +} +.text-spacing[dir='ltr'] .usfm_iq2 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_iq2 { + margin-right: 20vw; +} + +.formatted-font .usfm_iq3 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_iq3 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_iq3 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_iq3 { + margin-right: 20vw; +} + +.formatted-font .usfm_iex { + font-size: 100%; +} +.text-spacing .usfm_iex { + text-indent: 2.5vw; + margin-bottom: 4pt; + margin-top: 4pt; +} + +.formatted-font .usfm_iqt { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_ie { + font-size: 83%; +} + +.formatted-font .usfm_cl { + font-weight: bold; + font-size: 150%; +} +.text-spacing .usfm_cl { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_cd { + font-size: 91%; +} +.text-spacing .usfm_cd { + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_p { + font-size: 100%; +} +.text-spacing .usfm_p { + text-indent: 2.5vw; +} + +.formatted-font .usfm_m { + font-size: 100%; +} + +.formatted-font .usfm_po { + font-size: 100%; +} +.text-spacing .usfm_po { + text-indent: 2.5vw; + margin-bottom: 4pt; + margin-top: 4pt; +} + +.usfm_pr { + text-align: end; +} +.formatted-font .usfm_pr { + font-size: 100%; +} + +.usfm_cls { + text-align: end; +} +.formatted-font .usfm_cls { + font-size: 100%; +} + +.formatted-font .usfm_pmo { + font-size: 100%; +} +.text-spacing .usfm_pmo { + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_pm { + font-size: 100%; +} +.text-spacing .usfm_pm { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_pmc { + font-size: 100%; +} +.text-spacing .usfm_pmc { + margin-left: 5vw; + margin-right: 5vw; +} + +.usfm_pmr { + text-align: end; +} +.formatted-font .usfm_pmr { + font-size: 100%; +} +.text-spacing .usfm_pmr { + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_pi { + font-size: 100%; +} +.text-spacing .usfm_pi { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_pi1 { + font-size: 100%; +} +.text-spacing .usfm_pi1 { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_pi2 { + font-size: 100%; +} +.text-spacing .usfm_pi2 { + text-indent: 2.5vw; +} +.text-spacing[dir='ltr'] .usfm_pi2 { + margin-left: 10vw; + margin-right: 5vw; +} +.text-spacing[dir='rtl'] .usfm_pi2 { + margin-left: 5vw; + margin-right: 10vw; +} + +.formatted-font .usfm_pi3 { + font-size: 100%; +} +.text-spacing .usfm_pi3 { + text-indent: 2.5vw; +} +.text-spacing[dir='ltr'] .usfm_pi3 { + margin-left: 15vw; + margin-right: 5vw; +} +.text-spacing[dir='rtl'] .usfm_pi3 { + margin-left: 5vw; + margin-right: 15vw; +} + +.formatted-font .usfm_pc { + font-size: 100%; +} +.text-spacing .usfm_pc { + text-align: center; +} + +.formatted-font .usfm_mi { + font-size: 100%; +} +.text-spacing .usfm_mi { + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_nb { + font-size: 100%; +} + +.formatted-font .usfm_q { + font-size: 100%; +} +.text-spacing .usfm_q { + text-indent: -10vw; +} +.text-spacing[dir='ltr'] .usfm_q { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_q { + margin-right: 15vw; +} + +.formatted-font .usfm_q1 { + font-size: 100%; +} +.text-spacing .usfm_q1 { + text-indent: -10vw; +} +.text-spacing[dir='ltr'] .usfm_q1 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_q1 { + margin-right: 15vw; +} + +.formatted-font .usfm_q2 { + font-size: 100%; +} +.text-spacing .usfm_q2 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_q2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_q2 { + margin-right: 15vw; +} + +.formatted-font .usfm_q3 { + font-size: 100%; +} +.text-spacing .usfm_q3 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_q3 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_q3 { + margin-right: 15vw; +} + +.formatted-font .usfm_q4 { + font-size: 100%; +} +.text-spacing .usfm_q4 { + text-indent: -2.5vw; +} +.text-spacing[dir='ltr'] .usfm_q4 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_q4 { + margin-right: 15vw; +} + +.formatted-font .usfm_qc { + font-size: 100%; +} +.text-spacing .usfm_qc { + text-align: center; +} + +.usfm_qr { + text-align: end; +} +.formatted-font .usfm_qr { + font-size: 100%; +} + +.formatted-font .usfm_qa { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_qm { + font-size: 100%; +} +.text-spacing .usfm_qm { + text-indent: -15vw; +} +.text-spacing[dir='ltr'] .usfm_qm { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_qm { + margin-right: 20vw; +} + +.formatted-font .usfm_qm1 { + font-size: 100%; +} +.text-spacing .usfm_qm1 { + text-indent: -15vw; +} +.text-spacing[dir='ltr'] .usfm_qm1 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_qm1 { + margin-right: 20vw; +} + +.formatted-font .usfm_qm2 { + font-size: 100%; +} +.text-spacing .usfm_qm2 { + text-indent: -10vw; +} +.text-spacing[dir='ltr'] .usfm_qm2 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_qm2 { + margin-right: 20vw; +} + +.formatted-font .usfm_qm3 { + font-size: 100%; +} +.text-spacing .usfm_qm3 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_qm3 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_qm3 { + margin-right: 20vw; +} + +.formatted-font .usfm_qd { + font-size: 100%; + font-style: italic; +} +.text-spacing[dir='ltr'] .usfm_qd { + margin-left: 5vw; +} +.text-spacing[dir='rtl'] .usfm_qd { + margin-right: 5vw; +} + +.formatted-font .usfm_b { + font-size: 83%; +} + +.formatted-font .usfm_mt { + font-weight: bold; + font-size: 166%; +} +.text-spacing .usfm_mt { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_mt1 { + @apply text-2xl font-bold; +} +.text-spacing .usfm_mt1 { + @apply my-2 text-center; +} + +.formatted-font .usfm_mt2 { + font-size: 133%; + font-style: italic; +} +.text-spacing .usfm_mt2 { + text-align: center; + margin-bottom: 2pt; +} + +.formatted-font .usfm_mt3 { + font-weight: bold; + font-size: 133%; +} +.text-spacing .usfm_mt3 { + text-align: center; + margin-bottom: 2pt; + margin-top: 2pt; +} + +.formatted-font .usfm_mt4 { + font-size: 100%; +} +.text-spacing .usfm_mt4 { + text-align: center; + margin-bottom: 2pt; + margin-top: 2pt; +} + +.formatted-font .usfm_mte { + font-weight: bold; + font-size: 166%; +} +.text-spacing .usfm_mte { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_mte1 { + font-weight: bold; + font-size: 166%; +} +.text-spacing .usfm_mte1 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_mte2 { + font-size: 133%; + font-style: italic; +} +.text-spacing .usfm_mte2 { + text-align: center; + margin-bottom: 2pt; +} + +.formatted-font .usfm_ms { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_ms { + text-align: center; + margin-bottom: 4pt; + margin-top: 16pt; +} + +.formatted-font .usfm_ms1 { + @apply text-lg; +} +.text-spacing .usfm_ms1 { + @apply m-2 text-center; +} + +.formatted-font .usfm_ms2 { + font-weight: bold; + font-size: 116%; +} +.text-spacing .usfm_ms2 { + text-align: center; + margin-bottom: 4pt; + margin-top: 16pt; +} + +.formatted-font .usfm_ms3 { + font-size: 116%; + font-style: italic; +} +.text-spacing .usfm_ms3 { + text-align: center; + margin-bottom: 4pt; + margin-top: 16pt; +} + +.formatted-font .usfm_mr { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_mr { + text-align: center; + margin-bottom: 4pt; +} + +.formatted-font .usfm_s { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_s { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_s1 { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_s1 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_s2 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_s2 { + text-align: center; + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_s3 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_s3 { + margin-bottom: 3pt; + margin-top: 6pt; +} + +.formatted-font .usfm_s4 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_s4 { + margin-bottom: 3pt; + margin-top: 6pt; +} + +.formatted-font .usfm_sr { + font-weight: bold; + font-size: 100%; +} +.text-spacing .usfm_sr { + text-align: center; + margin-bottom: 4pt; +} + +.formatted-font .usfm_r { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_r { + text-align: center; + margin-bottom: 4pt; +} + +.formatted-font .usfm_sp { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_sp { + margin-bottom: 4pt; + margin-top: 8pt; +} + +.formatted-font .usfm_d { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_d { + text-align: center; + margin-bottom: 4pt; + margin-top: 4pt; +} + +.text-spacing .usfm_sd { + margin-bottom: 24pt; + margin-top: 24pt; +} + +.text-spacing .usfm_sd1 { + margin-bottom: 24pt; + margin-top: 24pt; +} + +.text-spacing .usfm_sd2 { + margin-bottom: 18pt; + margin-top: 18pt; +} + +.text-spacing .usfm_sd3 { + margin-bottom: 12pt; + margin-top: 12pt; +} + +.text-spacing .usfm_sd4 { + margin-bottom: 8pt; + margin-top: 8pt; +} + +.formatted-font .usfm_lh { + font-size: 100%; +} +.text-spacing .usfm_lh { + text-indent: 2.5vw; +} + +.formatted-font .usfm_li { + font-size: 100%; +} +.text-spacing .usfm_li { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_li { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_li { + margin-right: 10vw; +} + +.formatted-font .usfm_li1 { + font-size: 100%; +} +.text-spacing .usfm_li1 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_li1 { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_li1 { + margin-right: 10vw; +} + +.formatted-font .usfm_li2 { + font-size: 100%; +} +.text-spacing .usfm_li2 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_li2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_li2 { + margin-right: 15vw; +} + +.formatted-font .usfm_li3 { + font-size: 100%; +} +.text-spacing .usfm_li3 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_li3 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_li3 { + margin-right: 20vw; +} + +.formatted-font .usfm_li4 { + font-size: 100%; +} +.text-spacing .usfm_li4 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_li4 { + margin-left: 25vw; +} +.text-spacing[dir='rtl'] .usfm_li4 { + margin-right: 25vw; +} + +.formatted-font .usfm_lf { + font-size: 100%; +} + +.formatted-font .usfm_lim { + font-size: 100%; +} +.text-spacing .usfm_lim { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_lim { + margin-left: 15vw; + margin-right: 5vw; +} +.text-spacing[dir='rtl'] .usfm_lim { + margin-left: 5vw; + margin-right: 15vw; +} + +.formatted-font .usfm_lim1 { + font-size: 100%; +} +.text-spacing .usfm_lim1 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_lim1 { + margin-left: 15vw; + margin-right: 5vw; +} +.text-spacing[dir='rtl'] .usfm_lim1 { + margin-left: 5vw; + margin-right: 15vw; +} + +.formatted-font .usfm_lim2 { + font-size: 100%; +} +.text-spacing .usfm_lim2 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_lim2 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_lim2 { + margin-right: 20vw; +} + +.formatted-font .usfm_lim3 { + font-size: 100%; +} +.text-spacing .usfm_lim3 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_lim3 { + margin-left: 25vw; +} +.text-spacing[dir='rtl'] .usfm_lim3 { + margin-right: 25vw; +} + +.formatted-font .usfm_lim4 { + font-size: 100%; +} +.text-spacing .usfm_lim4 { + text-indent: -7.5vw; +} +.text-spacing[dir='ltr'] .usfm_lim4 { + margin-left: 30vw; +} +.text-spacing[dir='rtl'] .usfm_lim4 { + margin-right: 30vw; +} + +.usfm_lit { + text-align: end; +} +.formatted-font .usfm_lit { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_ph { + font-size: 100%; +} +.text-spacing .usfm_ph { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_ph { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_ph { + margin-right: 10vw; +} + +.formatted-font .usfm_ph1 { + font-size: 100%; +} +.text-spacing .usfm_ph1 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_ph1 { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_ph1 { + margin-right: 10vw; +} + +.formatted-font .usfm_ph2 { + font-size: 100%; +} +.text-spacing .usfm_ph2 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_ph2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_ph2 { + margin-right: 15vw; +} + +.formatted-font .usfm_ph3 { + font-size: 100%; +} +.text-spacing .usfm_ph3 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_ph3 { + margin-left: 20vw; +} +.text-spacing[dir='rtl'] .usfm_ph3 { + margin-right: 20vw; +} + +/* CharNode */ + +.formatted-font .usfm_qs { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_qac { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_litl { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_lik { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_liv { + font-size: 100%; +} + +.formatted-font .usfm_liv1 { + font-size: 100%; +} + +.formatted-font .usfm_liv2 { + font-size: 100%; +} + +.formatted-font .usfm_liv3 { + font-size: 100%; +} + +.formatted-font .usfm_liv4 { + font-size: 100%; +} + +.formatted-font .usfm_liv5 { + font-size: 100%; +} + +.formatted-font .usfm_rq { + font-size: 83%; + font-style: italic; +} + +.formatted-font .usfm_qt { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_nd { + font-size: 100%; + text-decoration: underline; +} + +.formatted-font .usfm_tl { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_dc { + font-style: italic; +} + +.formatted-font .usfm_bk { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_sig { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_pn { + font-weight: bold; + font-size: 100%; + text-decoration: underline; +} + +.formatted-font .usfm_png { + font-size: 100%; + text-decoration: underline; +} + +.formatted-font .usfm_addpn { + font-weight: bold; + font-size: 100%; + font-style: italic; + text-decoration: underline; +} + +.formatted-font .usfm_wj { + color: #d43128; + font-size: 100%; +} + +.formatted-font .usfm_k { + font-weight: bold; + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_sls { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_ord { + vertical-align: text-top; + font-size: 66%; +} + +.formatted-font .usfm_add { + font-weight: bold; + font-style: italic; +} + +.formatted-font .usfm_no { + font-size: 100%; +} + +.formatted-font .usfm_it { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_bd { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_bdit { + font-weight: bold; + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_em { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_sc { + font-size: 100%; + font-variant: small-caps; +} + +.formatted-font .usfm_sup { + vertical-align: text-top; + font-size: 66%; +} + +.formatted-font .usfm_pb { + font-size: 100%; +} + +.formatted-font .usfm_fig { + font-size: 100%; +} + +.formatted-font .usfm_jmp { + color: #003380; + text-decoration: underline; +} + +.formatted-font .usfm_pro { + font-size: 83%; +} + +.formatted-font .usfm_rb { + font-size: 100%; +} + +.formatted-font .usfm_w { + font-size: 100%; +} + +.formatted-font .usfm_wh { + font-size: 100%; +} + +.formatted-font .usfm_wg { + font-size: 100%; +} + +.formatted-font .usfm_wa { + font-size: 100%; +} + +.formatted-font .usfm_ndx { + font-size: 100%; +} + +/* Footnote NoteNode */ + +.formatted-font .usfm_f { + font-size: 80%; + position: relative; + top: -0.5em; +} + +.formatted-font .usfm_fe { + font-size: 100%; +} + +/* Footnote CharNode */ + +.formatted-font .usfm_fr { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_ft { + font-size: 100%; +} + +.formatted-font .usfm_fk { + font-weight: bold; + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_fq { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_fqa { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_fl { + font-weight: bold; + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_fw { + font-size: 100%; +} + +.formatted-font .usfm_fp { + font-size: 100%; +} + +.formatted-font .usfm_fv { + vertical-align: text-top; + font-size: 66%; +} + +.formatted-font .usfm_fdc { + font-size: 100%; +} + +.formatted-font .usfm_fm { + vertical-align: text-top; + font-size: 66%; +} + +/* Cross-reference NoteNode */ + +.formatted-font .usfm_x { + font-size: 100%; +} + +/* Cross-reference CharNode */ + +.formatted-font .usfm_xo { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_xop { + font-size: 100%; +} + +.formatted-font .usfm_xt { + font-size: 100%; + unicode-bidi: embed; +} + +.formatted-font .usfm_xta { + font-size: 100%; +} + +.formatted-font .usfm_xk { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_xq { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_xot { + font-size: 100%; +} + +.formatted-font .usfm_xnt { + font-size: 100%; +} + +.formatted-font .usfm_xdc { + font-size: 100%; +} + +/* periph */ + +.formatted-font .usfm_periph { + font-weight: bold; + color: #e87217; + font-size: 116%; +} +.text-spacing .usfm_periph { + margin-bottom: 4pt; + margin-top: 16pt; +} + +.formatted-font .usfm_p1 { + font-size: 100%; +} +.text-spacing .usfm_p1 { + text-indent: 2.5vw; +} + +.formatted-font .usfm_p2 { + font-size: 100%; +} +.text-spacing .usfm_p2 { + text-indent: 2.5vw; +} +.text-spacing[dir='ltr'] .usfm_p2 { + margin-left: 2.5vw; +} +.text-spacing[dir='rtl'] .usfm_p2 { + margin-right: 2.5vw; +} + +.formatted-font .usfm_k1 { + font-size: 100%; +} + +.formatted-font .usfm_k2 { + font-size: 100%; +} + +.formatted-font .usfm_xtSee { + color: #003380; + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_xtSeeAlso { + color: #003380; + font-size: 100%; + font-style: italic; +} + +/* MilestoneNode */ + +.formatted-font .usfm_qt-s { + font-size: 100%; +} + +.formatted-font .usfm_qt-e { + font-size: 100%; +} + +.formatted-font .usfm_qt1-s { + font-size: 100%; +} + +.formatted-font .usfm_qt1-e { + font-size: 100%; +} + +.formatted-font .usfm_qt2-s { + font-size: 100%; +} + +.formatted-font .usfm_qt2-e { + font-size: 100%; +} + +.formatted-font .usfm_qt3-s { + font-size: 100%; +} + +.formatted-font .usfm_qt3-e { + font-size: 100%; +} + +.formatted-font .usfm_qt4-s { + font-size: 100%; +} + +.formatted-font .usfm_qt4-e { + font-size: 100%; +} + +.formatted-font .usfm_qt5-s { + font-size: 100%; +} + +.formatted-font .usfm_qt5-e { + font-size: 100%; +} + +.formatted-font .usfm_ts-s { + font-size: 100%; +} + +.formatted-font .usfm_ts-e { + font-size: 100%; +} + +/* table */ + +.formatted-font .usfm_tr { + font-size: 100%; +} +.text-spacing .usfm_tr { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_tr { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_tr { + margin-right: 10vw; +} + +.formatted-font .usfm_th1 { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_th2 { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_th3 { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_th4 { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_th5 { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_tc1 { + font-size: 100%; +} + +.formatted-font .usfm_tc2 { + font-size: 100%; +} + +.formatted-font .usfm_tc3 { + font-size: 100%; +} + +.formatted-font .usfm_tc4 { + font-size: 100%; +} + +.formatted-font .usfm_tc5 { + font-size: 100%; +} + +.formatted-font .usfm_thc1 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thc1 { + text-align: center; +} + +.formatted-font .usfm_thc2 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thc2 { + text-align: center; +} + +.formatted-font .usfm_thc3 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thc3 { + text-align: center; +} + +.formatted-font .usfm_thc4 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thc4 { + text-align: center; +} + +.formatted-font .usfm_thc5 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thc5 { + text-align: center; +} + +.formatted-font .usfm_tcc1 { + font-size: 100%; +} +.text-spacing .usfm_tcc1 { + text-align: center; +} + +.formatted-font .usfm_tcc2 { + font-size: 100%; +} +.text-spacing .usfm_tcc2 { + text-align: center; +} + +.formatted-font .usfm_tcc3 { + font-size: 100%; +} +.text-spacing .usfm_tcc3 { + text-align: center; +} + +.formatted-font .usfm_tcc4 { + font-size: 100%; +} +.text-spacing .usfm_tcc4 { + text-align: center; +} + +.formatted-font .usfm_tcc5 { + font-size: 100%; +} +.text-spacing .usfm_tcc5 { + text-align: center; +} + +.formatted-font .usfm_thr1 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thr1 { + text-align: end; +} + +.formatted-font .usfm_thr2 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thr2 { + text-align: end; +} + +.formatted-font .usfm_thr3 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thr3 { + text-align: end; +} + +.formatted-font .usfm_thr4 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thr4 { + text-align: end; +} + +.formatted-font .usfm_thr5 { + font-size: 100%; + font-style: italic; +} +.text-spacing .usfm_thr5 { + text-align: end; +} + +.formatted-font .usfm_tcr1 { + font-size: 100%; +} +.text-spacing .usfm_tcr1 { + text-align: end; +} + +.formatted-font .usfm_tcr2 { + font-size: 100%; +} +.text-spacing .usfm_tcr2 { + text-align: end; +} + +.formatted-font .usfm_tcr3 { + font-size: 100%; +} +.text-spacing .usfm_tcr3 { + text-align: end; +} + +.formatted-font .usfm_tcr4 { + font-size: 100%; +} +.text-spacing .usfm_tcr4 { + text-align: end; +} + +.formatted-font .usfm_tcr5 { + font-size: 100%; +} +.text-spacing .usfm_tcr5 { + text-align: end; +} + +/* table/unknown */ + +.formatted-font .usfm_tr1 { + font-size: 100%; +} +.text-spacing .usfm_tr1 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_tr1 { + margin-left: 10vw; +} +.text-spacing[dir='rtl'] .usfm_tr1 { + margin-right: 10vw; +} + +.formatted-font .usfm_tr2 { + font-size: 100%; +} +.text-spacing .usfm_tr2 { + text-indent: -5vw; +} +.text-spacing[dir='ltr'] .usfm_tr2 { + margin-left: 15vw; +} +.text-spacing[dir='rtl'] .usfm_tr2 { + margin-right: 15vw; +} + +.formatted-font .usfm_ps { + font-size: 100%; +} +.text-spacing .usfm_ps { + text-indent: 2.5vw; +} + +.formatted-font .usfm_psi { + font-size: 100%; +} +.text-spacing .usfm_psi { + text-indent: 2.5vw; + margin-left: 5vw; + margin-right: 5vw; +} + +.formatted-font .usfm_fs { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_wr { + font-size: 100%; + font-style: italic; +} + +.formatted-font .usfm_pub { + font-size: 83%; +} + +.formatted-font .usfm_toc { + font-size: 83%; +} + +.formatted-font .usfm_pref { + font-size: 83%; +} + +.formatted-font .usfm_intro { + font-size: 83%; +} + +.formatted-font .usfm_conc { + font-size: 83%; +} + +.formatted-font .usfm_glo { + font-size: 83%; +} + +.formatted-font .usfm_idx { + font-size: 83%; +} + +.formatted-font .usfm_maps { + font-size: 83%; +} + +.formatted-font .usfm_cov { + font-size: 83%; +} + +.formatted-font .usfm_spine { + font-size: 83%; +} + +.formatted-font .usfm_pubinfo { + color: #003380; + font-size: 100%; +} + +.formatted-font .usfm_zpa-xb { + font-size: 100%; +} + +.formatted-font .usfm_zpa-xc { + font-weight: bold; + font-size: 100%; +} + +.formatted-font .usfm_zpa-xv { + font-size: 100%; +} + +.formatted-font .usfm_zpa-d { + font-size: 100%; +} + +body { + background-color: rgba(252, 252, 252, 1); + color: rgba(25, 25, 25, 1); +} + +.marker { + unicode-bidi: isolate; +} +.formatted-font .marker { + color: rgba(140, 140, 140, 1); + font-size: 0.7em; +} + +/* Used for unformatted displays */ +.markerplain { + unicode-bidi: isolate; +} + +.notetext { + unicode-bidi: embed; +} + +.attribute { + color: rgba(170, 170, 170, 1); +} + +.attribute:hover { + color: rgba(25, 25, 25, 1); +} + +.invalid { + color: rgba(204, 30, 20, 1); + font-weight: bold; +} + +/* NoteNode, ImmutableNoteCallerNode */ + +.immutable-note-caller > button, +/* Styles for Preview (and Ruby) views */ +.caller_preview, +.previewcallee { + color: rgba(18, 82, 179, 1); + font-weight: bold; + line-height: 1; + vertical-align: super; + font-size: 0.66em; +} + +.immutable-note-caller > button { + cursor: pointer; + text-decoration: none; + border: 0; + padding: 0; + background-color: inherit; +} + +.immutable-note-caller[data-caller='-'] { + display: none; +} + +.formatted-font .immutable-note-caller { + @apply text-xs text-blue-500; +} + +.caller_big { + unicode-bidi: normal; + color: rgba(18, 82, 179, 1); + font-weight: bold; + text-indent: 0pt; + vertical-align: text-top; + font-size: 0.66em; +} + +.caller_small { + unicode-bidi: normal; + color: rgba(18, 82, 179, 1); + font-family: Times New Roman; + vertical-align: text-top; + text-indent: 0pt; + font-size: 0.66em; +} + +.caller_highlight { + background-color: #ffffb5; + border-top: solid 1px #0000ff; + border-bottom: solid 1px #0000ff; +} + +.opennote { + color: #7777ff; +} + +rt { + cursor: pointer; +} + +/* Style statues */ +.status_unknown { + color: rgba(204, 30, 20, 1); + font-weight: bold; +} + +.status_invalid { + border-bottom: 1px solid rgba(204, 30, 20, 1); + color: rgba(204, 30, 20, 1); +} + +.caption { + text-align: center; + font-style: italic; + font-weight: bold; +} + +.figure { + text-align: center; +} + +.sidebar { + border: solid 1px rgba(18, 82, 179, 1); + margin-left: 10px; +} + +/* VerseNode, ImmutableVerseNode */ + +/* +.formatted-font .verse { + @apply text-cyan-500; + background-color: rgba(222, 222, 222, 1); + vertical-align: super; + font-size: 0.66em; +} +.text-spacing .verse { + margin: 0px 2px 0px 2px; + padding: 0px 1px 0px 1px; + text-indent: 0in; + white-space: nowrap; +} +*/ + +.annot_comment_todo { + border-bottom: 1px dashed #888888; +} +.annot_comment_todo { + border-bottom: 1px dashed #888888; +} +span.unread img { + background-color: #ffff99; + position: relative; + bottom: -1px; /* negative of border-width to align baseline */ + border-width: 1px; + border-style: solid; + border-color: #808080; +} +span.read img { + background-color: transparent; + position: relative; + bottom: 0px; + border-width: 0px; + border-style: none; +} + +.annot_comment_todo { + border-bottom: 1px dashed #888888; +} + +.annot_comment_done { + border-bottom: 1px dashed #888888; +} + +.annot_greencursor { + background-color: rgba(152, 235, 157, 1); +} +.annot_goldcursor { + background-color: rgba(255, 255, 163, 1); +} +.annot_bluecursor { + background-color: rgba(204, 224, 255, 1); +} +.annot_greycursor { + background-color: rgba(222, 222, 222, 1); +} +.annot_violetcursor { + background-color: rgba(233, 212, 255, 1); +} + +.annot_spellingerror { + background-repeat: repeat-x; + background-position: left bottom; + padding-bottom: 0px; + vertical-align: text-top; +} + +.annot_spellingunknown { + background-repeat: repeat-x; + background-position: left bottom; + padding-bottom: 0px; + vertical-align: text-top; +} + +.found_term { + background-color: rgba(222, 222, 222, 1); + text-indent: 0; + margin-left: 0; + display: inline-block; + border-bottom-style: solid; + border-bottom-width: medium medium thick medium; + border-bottom-color: rgba(252, 252, 252, 1); + text-decoration: inherit; +} +.guessed_term { + background-color: rgba(255, 191, 143, 1); + text-indent: 0; + margin-left: 0; + display: inline-block; + border-bottom-style: solid; + border-bottom-width: medium medium thick medium; + border-bottom-color: rgba(252, 252, 252, 1); + text-decoration: inherit; +} +.found_term.unselected_term { + background-color: rgba(222, 222, 222, 0.6); + text-indent: 0; + margin-left: 0; + display: inline-block; + border-bottom-style: solid; + border-bottom-width: medium medium thick medium; + border-bottom-color: rgba(252, 252, 252, 1); + text-decoration: inherit; +} +.guessed_term.unselected_term { + background-color: rgba(255, 191, 143, 0.3); + text-indent: 0; + margin-left: 0; + display: inline-block; + border-bottom-style: solid; + border-bottom-width: medium medium thick medium; + border-bottom-color: rgba(252, 252, 252, 1); + text-decoration: inherit; +} +.selected_term { + border-style: none none solid none; + text-indent: 0; + margin-left: 0; + display: inline-block; + border-bottom-style: solid; + border-bottom-width: medium medium thick medium; + border-bottom-color: rgba(252, 252, 252, 1); + text-decoration: inherit; +} +.annot_reference_link { + border-bottom: 1px solid #93c4ff; +} +.annot_invalid_reference { + border-bottom: 1px solid #ff8080; +} +.annot_checkError { + border-top: 1px solid #ff0000; + border-bottom: 1px solid #ff0000; + background-color: rgba(255, 204, 204, 0.5); +} + +/* ContextMenuPlugin */ + +.auto-embed-menu { + width: 150px; +} + +.typeahead-popover { + background: #fff; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.3); + border-radius: 8px; +} + +.typeahead-popover ul { + padding: 0; + list-style: none; + margin: 0; + border-radius: 8px; + max-height: 200px; + overflow-y: scroll; + -ms-overflow-style: none; + scrollbar-width: none; +} + +.typeahead-popover ul::-webkit-scrollbar { + display: none; +} + +.typeahead-popover ul li { + margin: 0; + min-width: 180px; + font-size: 14px; + outline: none; + cursor: pointer; + border-radius: 8px; +} + +.typeahead-popover ul li.selected { + background: #eee; +} + +.typeahead-popover li { + margin: 0 8px 0 8px; + padding: 8px; + color: #050505; + cursor: pointer; + line-height: 16px; + font-size: 15px; + display: flex; + align-content: center; + flex-direction: row; + flex-shrink: 0; + background-color: #fff; + border-radius: 8px; + border: 0; +} + +.typeahead-popover li.active { + display: flex; + width: 20px; + height: 20px; + background-size: contain; +} + +.typeahead-popover li:first-child { + border-radius: 8px 8px 0px 0px; +} + +.typeahead-popover li:last-child { + border-radius: 0px 0px 8px 8px; +} + +.typeahead-popover li:hover { + background-color: #eee; +} + +.typeahead-popover li .text { + display: flex; + line-height: 20px; + flex-grow: 1; + min-width: 150px; +} + +.typeahead-popover li .icon { + display: flex; + width: 20px; + height: 20px; + user-select: none; + margin-right: 8px; + line-height: 16px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} diff --git a/yarn.lock b/yarn.lock index 9050bac93..5ac165303 100755 --- a/yarn.lock +++ b/yarn.lock @@ -87,7 +87,7 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7": +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== @@ -113,7 +113,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4": version "7.25.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== @@ -361,6 +361,16 @@ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== +"@babel/plugin-proposal-private-property-in-object@^7.21.11": + version "7.21.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-proposal-throw-expressions@^7.18.6", "@babel/plugin-proposal-throw-expressions@^7.22.5": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.24.7.tgz#8a386bcb77965d82f5b926508b27919d9ac9450f" @@ -1187,11 +1197,55 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@biblionexus-foundation/scribe-editor@0.1.2-scribe-v1": + version "0.1.2-scribe-v1" + resolved "https://registry.yarnpkg.com/@biblionexus-foundation/scribe-editor/-/scribe-editor-0.1.2-scribe-v1.tgz#1368b95b1ba71d7a5257868bdf4735f33ea525b7" + integrity sha512-8cAqbdz+VdBima+q7Yr22b537nddICiBn+mI4/ctuke+FlCobHEweQgigNAaTOBF9h1dzOF0H+sHiBvETUceow== + dependencies: + "@biblionexus-foundation/scripture-utilities" "^0.0.4" + "@lexical/mark" "^0.17.1" + "@lexical/react" "^0.17.1" + "@lexical/selection" "^0.17.1" + "@lexical/utils" "^0.17.1" + autoprefixer "^10.4.20" + fast-equals "^5.0.1" + lexical "^0.17.1" + +"@biblionexus-foundation/scripture-utilities@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@biblionexus-foundation/scripture-utilities/-/scripture-utilities-0.0.4.tgz#aac4cd5c7ffd98b60990b661b475f2c0f8a5a832" + integrity sha512-EslK90TulsLaePMRhcJV/lClFC7NTdbQXbNCXbMN4rR07ES9ZSqKRKaMelNOtWh0eZgXa+glBf7mPC2vdwM6uQ== + dependencies: + "@xmldom/xmldom" "^0.8.10" + "@capacitor/app@5.0.6": version "5.0.6" resolved "https://registry.yarnpkg.com/@capacitor/app/-/app-5.0.6.tgz#2ee02551115fd2e92dc7e81bc30a6c6fa78efa66" integrity sha512-6ZXVdnNmaYILasC/RjQw+yfTmq2ZO7Q3v5lFcDVfq3PFGnybyYQh+RstBrYri+376OmXOXxBD7E6UxBhrMzXGA== +"@capacitor/cli@5.4.2": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@capacitor/cli/-/cli-5.4.2.tgz#673ef8ff19b87e896467bac57b8272b223273051" + integrity sha512-ck2DC9hEai2BWsBM08WN98xjC2LDusSzUWQySTNQ81S/cQUpSPXk9YX+KTd3rP/kI/sXpOuDEe7SSS7qkD1a2w== + dependencies: + "@ionic/cli-framework-output" "^2.2.5" + "@ionic/utils-fs" "^3.1.6" + "@ionic/utils-subprocess" "^2.1.11" + "@ionic/utils-terminal" "^2.3.3" + commander "^9.3.0" + debug "^4.3.4" + env-paths "^2.2.0" + kleur "^4.1.4" + native-run "^1.7.3" + open "^8.4.0" + plist "^3.0.5" + prompts "^2.4.2" + rimraf "^4.4.1" + semver "^7.3.7" + tar "^6.1.11" + tslib "^2.4.0" + xml2js "^0.5.0" + "@capacitor/core@5.4.2": version "5.4.2" resolved "https://registry.yarnpkg.com/@capacitor/core/-/core-5.4.2.tgz#c7303f6b0b080e5f585b79399f246701c4c8ea84" @@ -1739,6 +1793,15 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@ionic/cli-framework-output@^2.2.5": + version "2.2.8" + resolved "https://registry.yarnpkg.com/@ionic/cli-framework-output/-/cli-framework-output-2.2.8.tgz#29d541acc7773a6aaceec5f3b079937fbcef5402" + integrity sha512-TshtaFQsovB4NWRBydbNFawql6yul7d5bMiW1WYYf17hd99V6xdDdk3vtF51bw6sLkxON3bDQpWsnUc9/hVo3g== + dependencies: + "@ionic/utils-terminal" "2.3.5" + debug "^4.0.0" + tslib "^2.0.1" + "@ionic/core@7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@ionic/core/-/core-7.8.6.tgz#523f5a3d0fd52c9560213a32719af06fe3f6d769" @@ -1765,6 +1828,96 @@ ionicons "^7.0.0" tslib "*" +"@ionic/utils-array@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@ionic/utils-array/-/utils-array-2.1.6.tgz#eee863be945ee1a28b9a10ff16fdea776fa18c22" + integrity sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-fs@3.1.7", "@ionic/utils-fs@^3.1.6": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@ionic/utils-fs/-/utils-fs-3.1.7.tgz#e0d41225272c346846867e88a0b84b1a4ee9d9c9" + integrity sha512-2EknRvMVfhnyhL1VhFkSLa5gOcycK91VnjfrTB0kbqkTFCOXyXgVLI5whzq7SLrgD9t1aqos3lMMQyVzaQ5gVA== + dependencies: + "@types/fs-extra" "^8.0.0" + debug "^4.0.0" + fs-extra "^9.0.0" + tslib "^2.0.1" + +"@ionic/utils-object@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@ionic/utils-object/-/utils-object-2.1.6.tgz#c0259bf925b6c12663d06f6bc1703e5dcb565e6d" + integrity sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-process@2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@ionic/utils-process/-/utils-process-2.1.11.tgz#ac06dfa2307027095ab0420a234924a9effeb6bd" + integrity sha512-Uavxn+x8j3rDlZEk1X7YnaN6wCgbCwYQOeIjv/m94i1dzslqWhqIHEqxEyeE8HsT5Negboagg7GtQiABy+BLbA== + dependencies: + "@ionic/utils-object" "2.1.6" + "@ionic/utils-terminal" "2.3.4" + debug "^4.0.0" + signal-exit "^3.0.3" + tree-kill "^1.2.2" + tslib "^2.0.1" + +"@ionic/utils-stream@3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@ionic/utils-stream/-/utils-stream-3.1.6.tgz#7c2fdcf4d9e621e8b2260e2fee2471825a4e214f" + integrity sha512-4+Kitey1lTA1yGtnigeYNhV/0tggI3lWBMjC7tBs1K9GXa/q7q4CtOISppdh8QgtOhrhAXS2Igp8rbko/Cj+lA== + dependencies: + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-subprocess@^2.1.11": + version "2.1.14" + resolved "https://registry.yarnpkg.com/@ionic/utils-subprocess/-/utils-subprocess-2.1.14.tgz#06224bdc6d9891ed86b1e556fc172a0eeabdc846" + integrity sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg== + dependencies: + "@ionic/utils-array" "2.1.6" + "@ionic/utils-fs" "3.1.7" + "@ionic/utils-process" "2.1.11" + "@ionic/utils-stream" "3.1.6" + "@ionic/utils-terminal" "2.3.4" + cross-spawn "^7.0.3" + debug "^4.0.0" + tslib "^2.0.1" + +"@ionic/utils-terminal@2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@ionic/utils-terminal/-/utils-terminal-2.3.4.tgz#e40c44b676265ed6a07a68407bda6e135870f879" + integrity sha512-cEiMFl3jklE0sW60r8JHH3ijFTwh/jkdEKWbylSyExQwZ8pPuwoXz7gpkWoJRLuoRHHSvg+wzNYyPJazIHfoJA== + dependencies: + "@types/slice-ansi" "^4.0.0" + debug "^4.0.0" + signal-exit "^3.0.3" + slice-ansi "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + tslib "^2.0.1" + untildify "^4.0.0" + wrap-ansi "^7.0.0" + +"@ionic/utils-terminal@2.3.5", "@ionic/utils-terminal@^2.3.3": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@ionic/utils-terminal/-/utils-terminal-2.3.5.tgz#a48465f40496ee8f29c6d92e4506d5f19762ac3c" + integrity sha512-3cKScz9Jx2/Pr9ijj1OzGlBDfcmx7OMVBt4+P1uRR0SSW4cm1/y3Mo4OY3lfkuaYifMNBW8Wz6lQHbs1bihr7A== + dependencies: + "@types/slice-ansi" "^4.0.0" + debug "^4.0.0" + signal-exit "^3.0.3" + slice-ansi "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + tslib "^2.0.1" + untildify "^4.0.0" + wrap-ansi "^7.0.0" + "@ioredis/commands@^1.1.1": version "1.2.0" resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" @@ -2643,6 +2796,207 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== +"@lexical/clipboard@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.17.1.tgz#816b2559e60c5cfb5df5c6a4d1d1dcd850662d14" + integrity sha512-OVqnEfWX8XN5xxuMPo6BfgGKHREbz++D5V5ISOiml0Z8fV/TQkdgwqbBJcUdJHGRHWSUwdK7CWGs/VALvVvZyw== + dependencies: + "@lexical/html" "0.17.1" + "@lexical/list" "0.17.1" + "@lexical/selection" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/code@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.17.1.tgz#1db1cd221fb6ec74342e8a6526ec8ac370f4c06b" + integrity sha512-ZspfTm6g6dN3nAb4G5bPp3SqxzdkB/bjGfa0uRKMU6/eBKtrMUgZsGxt0a8JRZ1eq2TZrQhx+l1ceRoLXii/bQ== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + prismjs "^1.27.0" + +"@lexical/devtools-core@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/devtools-core/-/devtools-core-0.17.1.tgz#08e0e0fe7312486a41b49d75c075d6edf60fc11e" + integrity sha512-SzL1EX9Rt5GptIo87t6nDxAc9TtYtl6DyAPNz/sCltspdd69KQgs23sTRa26/tkNFCS1jziRN7vpN3mlnmm5wA== + dependencies: + "@lexical/html" "0.17.1" + "@lexical/link" "0.17.1" + "@lexical/mark" "0.17.1" + "@lexical/table" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/dragon@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.17.1.tgz#e196a8a226889f0d0a7ef271163e9cecd53b8a85" + integrity sha512-lhBRKP7RlhiVCLtF0qiNqmMhEO6cQB43sMe7d4bvuY1G2++oKY/XAJPg6QJZdXRrCGRQ6vZ26QRNhRPmCxL5Ng== + dependencies: + lexical "0.17.1" + +"@lexical/hashtag@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.17.1.tgz#137896cff6d7d2e3638cfc8cadf1d3e035809c14" + integrity sha512-XtP0BI8vEewAe7tzq9MC49UPUvuChuNJI/jqFp+ezZlt/RUq0BClQCOPuSlrTJhluvE2rWnUnOnVMk8ILRvggQ== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/history@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.17.1.tgz#864f8bd5450bc6a2b513e02c42f022299400e63b" + integrity sha512-OU/ohajz4FXchUhghsWC7xeBPypFe50FCm5OePwo767G7P233IztgRKIng2pTT4zhCPW7S6Mfl53JoFHKehpWA== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/html@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.17.1.tgz#746ecfeea6a1aef3b0a5ce821cf059262f182dd5" + integrity sha512-yGG+K2DXl7Wn2DpNuZ0Y3uCHJgfHkJN3/MmnFb4jLnH1FoJJiuy7WJb/BRRh9H+6xBJ9v70iv+kttDJ0u1xp5w== + dependencies: + "@lexical/selection" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/link@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.17.1.tgz#ef93c41710e33028512986334c98df7f0ad285c4" + integrity sha512-qFJEKBesZAtR8kfJfIVXRFXVw6dwcpmGCW7duJbtBRjdLjralOxrlVKyFhW9PEXGhi4Mdq2Ux16YnnDncpORdQ== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/list@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.17.1.tgz#8b29d42fe310b25de0a160577adf5fc0b7c2a874" + integrity sha512-k9ZnmQuBvW+xVUtWJZwoGtiVG2cy+hxzkLGU4jTq1sqxRIoSeGcjvhFAK8JSEj4i21SgkB1FmkWXoYK5kbwtRA== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/mark@0.17.1", "@lexical/mark@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.17.1.tgz#58e74f494e3dc4a43b5b5efd1b28436f2941f937" + integrity sha512-V82SSRjvygmV+ZMwVpy5gwgr2ZDrJpl3TvEDO+G5I4SDSjbgvua8hO4dKryqiDVlooxQq9dsou0GrZ9Qtm6rYg== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/markdown@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.17.1.tgz#e5435f4aa711f0859433eba2b96ee2afb04b636a" + integrity sha512-uexR9snyT54jfQTrbr/GZAtzX+8Oyykr4p1HS0vCVL1KU5MDuP2PoyFfOv3rcfB2TASc+aYiINhU2gSXzwCHNg== + dependencies: + "@lexical/code" "0.17.1" + "@lexical/link" "0.17.1" + "@lexical/list" "0.17.1" + "@lexical/rich-text" "0.17.1" + "@lexical/text" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/offset@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.17.1.tgz#3c008d9a0eb17ff0a056e6db4eab61f1ae909522" + integrity sha512-fX0ZSIFWwUKAjxf6l21vyXFozJGExKWyWxA+EMuOloNAGotHnAInxep0Mt8t/xcvHs7luuyQUxEPw7YrTJP7aw== + dependencies: + lexical "0.17.1" + +"@lexical/overflow@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.17.1.tgz#f158c5498cac353764d7f0c8c53b42ee14582f5b" + integrity sha512-oElVDq486R3rO2+Zz0EllXJGpW3tN0tfcH+joZ5h36+URKuNeKddqkJuDRvgSLOr9l8Jhtv3+/YKduPJVKMz6w== + dependencies: + lexical "0.17.1" + +"@lexical/plain-text@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.17.1.tgz#da03dfee8862622c150e64db823065a4eff751cd" + integrity sha512-CSvi4j1a4ame0OAvOKUCCmn2XrNsWcST4lExGTa9Ei/VIh8IZ+a97h4Uby8T3lqOp10x+oiizYWzY30pb9QaBg== + dependencies: + "@lexical/clipboard" "0.17.1" + "@lexical/selection" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/react@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.17.1.tgz#ec9595e6d554d3d8787885db4558848233c2ce33" + integrity sha512-DI4k25tO0E1WyozrjaLgKMOmLjOB7+39MT4eZN9brPlU7g+w0wzdGbTZUPgPmFGIKPK+MSLybCwAJCK97j8HzQ== + dependencies: + "@lexical/clipboard" "0.17.1" + "@lexical/code" "0.17.1" + "@lexical/devtools-core" "0.17.1" + "@lexical/dragon" "0.17.1" + "@lexical/hashtag" "0.17.1" + "@lexical/history" "0.17.1" + "@lexical/link" "0.17.1" + "@lexical/list" "0.17.1" + "@lexical/mark" "0.17.1" + "@lexical/markdown" "0.17.1" + "@lexical/overflow" "0.17.1" + "@lexical/plain-text" "0.17.1" + "@lexical/rich-text" "0.17.1" + "@lexical/selection" "0.17.1" + "@lexical/table" "0.17.1" + "@lexical/text" "0.17.1" + "@lexical/utils" "0.17.1" + "@lexical/yjs" "0.17.1" + lexical "0.17.1" + react-error-boundary "^3.1.4" + +"@lexical/rich-text@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.17.1.tgz#c74b8d5d2ca767e021c313e4f3258e1ecf5cd1a6" + integrity sha512-T3kvj4P1OpedX9jvxN3WN8NP1Khol6mCW2ScFIRNRz2dsXgyN00thH1Q1J/uyu7aKyGS7rzcY0rb1Pz1qFufqQ== + dependencies: + "@lexical/clipboard" "0.17.1" + "@lexical/selection" "0.17.1" + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/selection@0.17.1", "@lexical/selection@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.17.1.tgz#9a537e69fec4e5682b43b226239c78fd7af19811" + integrity sha512-qBKVn+lMV2YIoyRELNr1/QssXx/4c0id9NCB/BOuYlG8du5IjviVJquEF56NEv2t0GedDv4BpUwkhXT2QbNAxA== + dependencies: + lexical "0.17.1" + +"@lexical/table@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.17.1.tgz#62473f95a96c44ab20e4a1c1dec4b53a5093897c" + integrity sha512-2fUYPmxhyuMQX3MRvSsNaxbgvwGNJpHaKx1Ldc+PT2MvDZ6ALZkfsxbi0do54Q3i7dOon8/avRp4TuVaCnqvoA== + dependencies: + "@lexical/utils" "0.17.1" + lexical "0.17.1" + +"@lexical/text@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.17.1.tgz#b54ce8c7e6d891e063321d340172053bb43bbd87" + integrity sha512-zD2pAGXaMfPpT8PeNrx3+n0+jGnQORHyn0NEBO+hnyacKfUq5z5sI6Gebsq5NwH789bRadmJM5LvX5w8fsuv6w== + dependencies: + lexical "0.17.1" + +"@lexical/utils@0.17.1", "@lexical/utils@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.17.1.tgz#58465121a977a04b7995efde6fde8ca97cbfff8d" + integrity sha512-jCQER5EsvhLNxKH3qgcpdWj/necUb82Xjp8qWQ3c0tyL07hIRm2tDRA/s9mQmvcP855HEZSmGVmR5SKtkcEAVg== + dependencies: + "@lexical/list" "0.17.1" + "@lexical/selection" "0.17.1" + "@lexical/table" "0.17.1" + lexical "0.17.1" + +"@lexical/yjs@0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.17.1.tgz#6d13506f168f465fd6e68cc64aa822b6c49adedb" + integrity sha512-9mn5PDtaH5uLMH6hQ59EAx5FkRzmJJFcVs3E6zSIbtgkG3UASR3CFEfgsLKTjl/GC5NnTGuMck+jXaupDVBhOg== + dependencies: + "@lexical/offset" "0.17.1" + lexical "0.17.1" + "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" @@ -4455,6 +4809,13 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/fs-extra@^8.0.0": + version "8.1.5" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.5.tgz#33aae2962d3b3ec9219b5aca2555ee00274f5927" + integrity sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ== + dependencies: + "@types/node" "*" + "@types/fs-extra@^9.0.11": version "9.0.13" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" @@ -4793,6 +5154,11 @@ "@types/node" "*" "@types/send" "*" +"@types/slice-ansi@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/slice-ansi/-/slice-ansi-4.0.0.tgz#eb40dfbe3ac5c1de61f6bcb9ed471f54baa989d6" + integrity sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ== + "@types/sockjs@^0.3.33": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" @@ -5174,7 +5540,7 @@ lodash.isequal "^4.5.0" use-deep-compare "^1.1.0" -"@xmldom/xmldom@^0.8.8": +"@xmldom/xmldom@^0.8.10", "@xmldom/xmldom@^0.8.8": version "0.8.10" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== @@ -5927,7 +6293,7 @@ automation-events@^7.0.9: "@babel/runtime" "^7.25.6" tslib "^2.7.0" -autoprefixer@^10.4.13: +autoprefixer@^10.4.13, autoprefixer@^10.4.20: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== @@ -6425,7 +6791,7 @@ bidi-js@^1.0.2: dependencies: require-from-string "^2.0.2" -big-integer@^1.6.17: +big-integer@1.6.x, big-integer@^1.6.17: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== @@ -6549,6 +6915,13 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== +bplist-parser@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6989,11 +7362,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001646: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406: version "1.0.30001659" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz#f370c311ffbc19c4965d8ec0064a3625c8aaa7af" integrity sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA== +caniuse-lite@^1.0.30001646: + version "1.0.30001667" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== + canvas@^2.11.2: version "2.11.2" resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" @@ -7596,6 +7974,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.3.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -9159,9 +9542,9 @@ electron-publish@23.6.0: mime "^2.5.2" electron-to-chromium@^1.5.4: - version "1.5.18" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz#5fe62b9d21efbcfa26571066502d94f3ed97e495" - integrity sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ== + version "1.5.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz#5203ce5d6054857d84ba84d3681cbe59132ade78" + integrity sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw== electron-updater@^5.0.1: version "5.3.0" @@ -9194,6 +9577,13 @@ element-resize-detector@^1.1.10: dependencies: batch-processor "1.0.0" +elementtree@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" + integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== + dependencies: + sax "1.1.4" + elliptic@^6.5.3, elliptic@^6.5.5: version "6.5.7" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" @@ -10243,6 +10633,11 @@ fast-equals@^3.0.1: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-3.0.3.tgz#8e6cb4e51ca1018d87dd41982ef92758b3e4197f" integrity sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg== +fast-equals@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" + integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== + fast-fifo@^1.2.0, fast-fifo@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" @@ -11123,6 +11518,16 @@ glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + global-agent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -11827,9 +12232,9 @@ humanize-ms@^1.2.1: ms "^2.0.0" hyphen@^1.6.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.10.4.tgz#ae16551b8a56ae7c34ffd4b98777221795e6c912" - integrity sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg== + version "1.10.6" + resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.10.6.tgz#0e779d280e696102b97d7e42f5ca5de2cc97e274" + integrity sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw== hyphenate-style-name@^1.0.3: version "1.1.0" @@ -12252,7 +12657,14 @@ is-cidr@^4.0.2: dependencies: cidr-regex "^3.1.1" -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.8.1: +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-core-module@^2.15.1, is-core-module@^2.8.1: version "2.15.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== @@ -14366,6 +14778,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + klona@^2.0.4, klona@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" @@ -14446,6 +14863,11 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lexical@0.17.1, lexical@^0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.17.1.tgz#02f4057b82cb302ceb9ca9b031dcf9406be5780a" + integrity sha512-72/MhR7jqmyqD10bmJw8gztlCm4KDDT+TPtU4elqXrEvHoO5XENi34YAEUD9gIkPfqSwyLa9mwAX1nKzIr5xEA== + libnpmaccess@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" @@ -15718,6 +16140,13 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -15791,6 +16220,11 @@ minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: dependencies: yallist "^4.0.0" +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + minipass@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" @@ -15981,6 +16415,23 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.3.tgz#7bb95c88e6561f84880bb67195437b1cfbe99224" integrity sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg== +native-run@^1.7.3: + version "1.7.4" + resolved "https://registry.yarnpkg.com/native-run/-/native-run-1.7.4.tgz#b98b74812805cef8665cfceec651e66e662123e3" + integrity sha512-yDEwTp66vmXpqFiSQzz4sVQgyq5U58gGRovglY4GHh12ITyWa6mh6Lbpm2gViVOVD1JYFtYnwcgr7GTFBinXNA== + dependencies: + "@ionic/utils-fs" "^3.1.6" + "@ionic/utils-terminal" "^2.3.3" + bplist-parser "^0.3.2" + debug "^4.3.4" + elementtree "^0.1.7" + ini "^3.0.1" + plist "^3.0.6" + split2 "^4.1.0" + through2 "^4.0.2" + tslib "^2.4.0" + yauzl "^2.10.0" + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -17291,7 +17742,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: +path-scurry@^1.11.1, path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -17524,7 +17975,7 @@ playwright@1.47.0: optionalDependencies: fsevents "2.3.2" -plist@^3.0.1, plist@^3.0.4: +plist@^3.0.1, plist@^3.0.4, plist@^3.0.5, plist@^3.0.6: version "3.1.0" resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== @@ -18228,6 +18679,11 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + proc-log@^2.0.0, proc-log@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" @@ -18867,6 +19323,13 @@ react-draggable@^4.4.3: clsx "^1.1.1" prop-types "^15.8.1" +react-error-boundary@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + dependencies: + "@babel/runtime" "^7.12.5" + react-error-overlay@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" @@ -19835,6 +20298,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -19989,6 +20459,11 @@ sass-loader@^12.3.0: klona "^2.0.4" neo-async "^2.6.2" +sax@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" + integrity sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg== + sax@>=0.6.0, sax@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" @@ -20131,11 +20606,18 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: +semver@^7.0.0, semver@^7.1.1, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -20400,6 +20882,13 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +sj-usfm-grammar@^3.0.0, sj-usfm-grammar@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sj-usfm-grammar/-/sj-usfm-grammar-3.0.3.tgz#3e62d05a386bdca2946b54fb910635fb1685b6d7" + integrity sha512-5c915LAa09Y5XYI3F+iLxRdVym+/YS+6zS7nerKzgm88l3koUEC+DLkwO7MTTRjInurU6gT8L0S/094wZ/Uphg== + dependencies: + sj-usfm-grammar "^3.0.0" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -20459,6 +20948,15 @@ slice-ansi@^3.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + smart-buffer@^4.0.2, smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -20690,6 +21188,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + sprintf-js@^1.1.2, sprintf-js@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" @@ -20898,7 +21401,7 @@ string-punctuation-tokenizer@2.1.2: dependencies: xregexp "^4.1.1" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -20916,6 +21419,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -21032,7 +21544,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -21053,6 +21565,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -21818,6 +22337,11 @@ translation-helps-rcl@3.5.12: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + treeverse@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" @@ -22372,6 +22896,11 @@ unstorage@1.9.0: ofetch "^1.1.1" ufo "^1.2.0" +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + untun@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" @@ -22536,7 +23065,7 @@ usfm-editor@0.8.7: slate-react "0.69.0" usfm-js "2.0.1" -usfm-grammar@^2.3.0: +usfm-grammar@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/usfm-grammar/-/usfm-grammar-2.3.1.tgz#58c635106f258e094bfce7d64ed5069a3469ab18" integrity sha512-kUQObcSJqxmtU2pOG5unLZ2hlwJQu9bFodTsQyDPDeSiEpZapzeHPl6zB+RyXkU1DplbQHzhJaMpV5342aRevg== @@ -22906,7 +23435,7 @@ watchpack@^2.4.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wavesurfer.js@^6.6.2: +wavesurfer.js@^6.6.4: version "6.6.4" resolved "https://registry.yarnpkg.com/wavesurfer.js/-/wavesurfer.js-6.6.4.tgz#45e2d613fbfd60d906362ed6e11b649f481e4485" integrity sha512-nBbc0pD/3FdClxKUKL1UW2V9AJPL+JOjC8T6/YF9/FCAn4uo+H6Y8VBkXo9UJXIHoBewoc7iXj3tPeL0UCJhjA== @@ -23476,7 +24005,7 @@ worker-factory@^7.0.24, worker-factory@^7.0.29: fast-unique-numbers "^9.0.9" tslib "^2.7.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -23511,6 +24040,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 04d0eb80defcd29812d0c798c0faf6a54bcce122 Mon Sep 17 00:00:00 2001 From: VIPIN PAUL <37212471+vipinpaul@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:01:27 +0530 Subject: [PATCH 17/17] updating the version to 0.7.0 (#371) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2be57c813..39f358f51 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "scribe-scripture-editor", "description": "A friendly assistant for Bible Translators.", "author": "Bible Technology ", - "version": "0.6.3", + "version": "0.7.0", "license": "MIT", "private": true, "main": "main/index.js",