Skip to content

Commit

Permalink
Select whole sentence
Browse files Browse the repository at this point in the history
  • Loading branch information
Brokkolie committed May 25, 2024
1 parent 2e40a10 commit 792ef2b
Show file tree
Hide file tree
Showing 9 changed files with 83 additions and 7 deletions.
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${file}"
}
]
}
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
theme: jekyll-theme-slate
title: Simple Translate
title: Simple Translate With Context
description: WebExtensions for translating text on web pages
2 changes: 1 addition & 1 deletion src/_locales/af/messages.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"extName": {
"message": "Simple Translate"
"message": "Simple Translate With Context"
},
"extDescription": {
"message": "Quickly translate selected or typed text on web pages. Supports Google Translate and DeepL API."
Expand Down
2 changes: 1 addition & 1 deletion src/_locales/de/messages.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"extName": {
"message": "Simple Translate"
"message": "Simple Translate With Context"
},
"extDescription": {
"message": "Ausgewählten oder eingegebenen Text schnell auf Webseiten übersetzen. Unterstützt Google Translate und DeepL API."
Expand Down
2 changes: 1 addition & 1 deletion src/_locales/en/messages.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"extName": {
"message": "Simple Translate"
"message": "Simple Translate With Context"
},
"extDescription": {
"message": "Quickly translate selected or typed text on web pages. Supports Google Translate and DeepL API."
Expand Down
59 changes: 59 additions & 0 deletions src/content/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,71 @@ const waitTime = time => {
return new Promise(resolve => setTimeout(() => resolve(), time));
};


const handleTextSelection = () => {
let selection = window.getSelection();
let selectedText = selection.toString();

if (selectedText.length > 0) {
// Den Bereich der Auswahl erhalten
let range = selection.getRangeAt(0);
let startContainer = range.startContainer;
let endContainer = range.endContainer;
let startOffset = range.startOffset;
let endOffset = range.endOffset;

// Den gesamten Text des Start- und End-Containers holen
let startContainerText = startContainer.textContent;
let endContainerText = endContainer.textContent;

// Funktion zum Finden des nächsten Satzzeichens links
function findPreviousSentenceBoundary(text, offset) {
for (let i = offset - 1; i >= 0; i--) {
if (text[i] === '.' || text[i] === ',') {
return i + 1;
}
}
return 0;
}

// Funktion zum Finden des nächsten Satzzeichens rechts
function findNextSentenceBoundary(text, offset) {
for (let i = offset; i < text.length; i++) {
if (text[i] === '.' || text[i] === ',') {
return i;
}
}
return text.length;
}

// Satzgrenzen finden
let startBoundary = findPreviousSentenceBoundary(startContainerText, startOffset);
let endBoundary = findNextSentenceBoundary(endContainerText, endOffset);

// Erweiterter Text
let extendedText = startContainerText.slice(startBoundary, startOffset) +
selectedText +
endContainerText.slice(endOffset, endBoundary);

if (extendedText.length < 300) {
return extendedText;
}
}
return '';
}

const getSelectedText = () => {
const element = document.activeElement;
const isInTextField = element.tagName === "INPUT" || element.tagName === "TEXTAREA";

const selectedText = isInTextField
? element.value.substring(element.selectionStart, element.selectionEnd)
: handleTextSelection();

/* const selectedText = isInTextField
? element.value.substring(element.selectionStart, element.selectionEnd)
: window.getSelection()?.toString() ?? "";
*/
return selectedText;
};

Expand Down
2 changes: 1 addition & 1 deletion src/options/components/SideBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const SideBar = props => (
<div className="sideBar">
<div className="titleContainer">
<img src="/icons/64.png" className="logo" />
<span className="logoTitle">Simple Translate</span>
<span className="logoTitle">Simple Translate With Context</span>
</div>
<ul>
<li
Expand Down
2 changes: 1 addition & 1 deletion src/options/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<head>
<meta charset="UTF-8">
<title>Simple Translate</title>
<title>Simple Translate With Context</title>
<link rel="icon" type="image/png" href="../icons/16.png" sizes="16x16">
<link rel="icon" type="image/png" href="../icons/64.png" sizes="64x64">
</head>
Expand Down
2 changes: 1 addition & 1 deletion src/popup/components/Header.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const getToggleButtonTitle = isEnabled => {

export default props => (
<div id="header">
<div className="title">Simple Translate</div>
<div className="title">Simple Translate With Context</div>
<div className="rightButtons">
<div className="toggleButton" title={getToggleButtonTitle(props.isEnabledOnPage)}>
<Toggle
Expand Down

0 comments on commit 792ef2b

Please sign in to comment.