Merge branch hotfix/v5.6.0 into master

This commit is contained in:
papacarlo
2020-07-28 13:35:47 +00:00
28 changed files with 14060 additions and 18 deletions

View File

@ -1,25 +1,13 @@
# OCR plugin
## Overview
The OCR plugin allows users to recognize text in pictures (.png and .jpg formats) and insert it into documents.
Recognize text from pictures and screenshots and insert it into your documents with multilingual OCR.
The plugin uses [Tesseract.js](https://tesseract.projectnaptha.com/) and supports more than 60 languages.
The plugin is pre-installed in ONLYOFFICE Enterprise Edition, Community Edition (Document Server + Community Server), ONLYOFFICE Integration Edition, ONLYOFFICE cloud service, and ONLYOFFICE Personal.
It is installed by default in cloud, [self-hosted](https://github.com/ONLYOFFICE/DocumentServer) and [desktop version](https://github.com/ONLYOFFICE/DesktopEditors) of ONLYOFFICE editors.
## How to use
1. Choose OCR from the Plugins tab.
2. Load the necessary image.
3. Select the text language from the drop-down list.
4. Click the Recognize button.
5. Click the Insert Text button.
## Documentation
Plugins structure and installation https://api.onlyoffice.com/plugin/basic.
Plugins code and methods https://api.onlyoffice.com/docbuilder/basic.
## User feedback and support
To ask questions and share feedback, use Issues in this repository.
1. Find the OCR plugin in the Plugins tab, click on it and press start.
2. Load the image with text you want to insert into you doc.
3. Choose the language and press Recognize.

94
config.json Normal file
View File

@ -0,0 +1,94 @@
{
"name": "OCR",
"nameLocale": {
"ru": "Распознавание текста",
"fr": "Reconnaissance optique de caractères",
"es": "Reconocimiento óptico de caracteres",
"de": "OCR"
},
"guid": "asc.{440EBF13-9B19-4BD8-8621-05200E58140B}",
"baseUrl": "",
"variations": [
{
"description": "OCR",
"descriptionLocale": {
"ru": "Распознавание текста",
"fr": "Reconnaissance optique de caractères",
"es": "Reconocimiento óptico de caracteres",
"de": "OCR"
},
"url": "index.html",
"icons": [ "icon.png", "icon@2x.png", "icon2.png", "icon2@2x.png" ],
"isViewer": false,
"EditorsSupport": [ "word" ],
"isVisual": true,
"isModal": true,
"isInsideMode": false,
"initDataType": "none",
"initData": "",
"isUpdateOleOnResize": false,
"buttons": [
{
"text": "Insert Text",
"primary": true,
"textLocale": {
"ru": "Вставить текст",
"fr": "Insérer le texte",
"es": "Insertar texto",
"de": "Text einfügen"
}
},
{
"text": "Cancel",
"primary": false,
"textLocale": {
"ru": "Отмена",
"fr": "Annuler",
"es": "Cancelar",
"de": "Abbrechen"
}
}
],
"size": [ 592, 100 ]
},
{
"description": "About",
"descriptionLocale": {
"ru": "Справка",
"fr": "À propos",
"es": "Sobre programa",
"de": "Über"
},
"url": "index_about.html",
"icons": [ "icon.png", "icon@2x.png", "icon2.png", "icon2@2x.png" ],
"isViewer": false,
"EditorsSupport": [ "word" ],
"isVisual": true,
"isModal": true,
"isInsideMode": false,
"initDataType": "none",
"initData": "",
"isUpdateOleOnResize": false,
"buttons": [
{
"text": "Ok",
"primary": true
}
],
"size": [ 392, 147 ]
}
]
}

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

BIN
icon2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
icon2@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
icon@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

144
index.html Normal file
View File

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>OCR</title>
<script type="text/javascript" src="https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.js"></script>
<script type="text/javascript" src="https://onlyoffice.github.io/sdkjs-plugins/v1/plugins-ui.js"></script>
<link rel="stylesheet" href="https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.css">
<script type='text/javascript' src='ocr.js'></script>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js'></script>
<script src='https://cdn.rawgit.com/naptha/tesseract.js/1.0.7/dist/tesseract.js'></script>
<link rel="stylesheet" href="select2-4.0.6-rc.1/dist/css/select2.css"/>
<script src="select2-4.0.6-rc.1/dist/js/select2.js"></script>
</head>
<style>
label{
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 11px;
}
div{
display: inline-block;
vertical-align: top;
}
html{
height: 100%;
}
button{
width: 125px;
}
.disabled {
color: darkgrey;
}
#lang-select {
background: #fff;
border: 1px solid #cfcfcf;
border-radius: 2px;
color: #444444;
font-size: 11px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
height: 22px;
cursor: pointer;
}
#lang-select[disabled],
#lang-select.disabled {
opacity: 0.65;
}
</style>
<body style="box-sizing:border-box; width: 100%; height: 100%; margin: 0; padding-left: 22px; background: #F7F7F7;">
<div style="height: 100%; width: 100%">
<div style="height: 99px">
<label class="noselect" style="display: inline-block; margin-top: 15px; margin-bottom: 22px" id="label1">Tesseract.js lets recognize text in pictures (png, jpg)</label><br>
<div class="noselect">
<div style="margin-right: 0px; width: 175px; overflow: visible;">
<button class="btn-text-default" id="load-file-button-id">Load File</button><br>
<label disabled class="noselect disabled" style="overflow-x: visible" id="file-name-label"></label>
<input style="display: none" type="file" id="images-input" multiple accept='image/jpeg,image/png' />
</div>
</div>
<div class="noselect" style="margin-right: 22px">
<label class="noselect" id="label2">Choose language</label>
<select name = 'lang_combo' disabled class="noselect" id='lang-select' style="width: 125px">
<option value = 'eng'>English</option>
<option value = 'chi_sim'>Chinese</option>
<option value = 'rus'>Russian</option>
<option value = 'meme'>Meme</option>
<option value = 'tha'>Thai</option>
<option value = 'deu'>German</option>
<option value = 'jpn'>Japanese</option>
<option value = 'spa'>Spanish</option>
<option value = 'fra'>French</option>
<option value = 'por'>Portuguese</option>
<option value = 'ita'>Italian</option>
<option value = 'pol'>Polish</option>
<option value = 'tur'>Turkish</option>
<option value = 'nld'>Dutch</option>
<option value = 'ara'>Arabic</option>
<option value = 'ces'>Czech</option>
<option value = 'kor'>Korean</option>
<option value = 'swe'>Swedish</option>
<option value = 'vie'>Vietnamese</option>
<option value = 'ron'>Romanian</option>
<option value = 'ell'>Greek</option>
<option value = 'ind'>Indonesian</option>
<option value = 'hun'>Hungarian</option>
<option value = 'dan'>Danish</option>
<option value = 'bul'>Bulgarian</option>
<option value = 'fin'>Finnish</option>
<option value = 'nor'>Norwegian</option>
<option value = 'ukr'>Ukrainian</option>
<option value = 'cat'>Catalan</option>
<option value = 'hrv'>Croatian</option>
<option value = 'heb'>Hebrew</option>
<option value = 'lit'>Lithuanian</option>
<option value = 'slv'>Slovenian</option>
<option value = 'hin'>Hindi</option>
<option value = 'ben'>Bengali</option>
<option value = 'tel'>Telugu</option>
<option value = 'tam'>Tamil</option>
<option value = 'kan'>Kannada</option>
<option value = 'mal'>Malayalam</option>
<option value = 'tgl'>Tagalog</option>
<option value = 'swa'>Swahili</option>
<option value = 'aze'>Azerbaijani</option>
<option value = 'bel'>Belarusian</option>
<option value = 'afr'>Afrikaans</option>
<option value = 'sqi'>Albanian</option>
<option value = 'eus'>Basque</option>
<option value = 'epo'>Esperanto</option>
<option value = 'est'>Estonian</option>
<option value = 'glg'>Galician</option>
<option value = 'isl'>Icelandic</option>
<option value = 'lav'>Latvian</option>
<option value = 'mkd'>Macedonian</option>
<option value = 'msa'>Malay</option>
<option value = 'mlt'>Maltese</option>
<option value = 'grc'>Ancient Greek</option>
<option value = 'chr'>Cherokee</option>
<option value = 'enm'>English (Old)</option>
<option value = 'frk'>Frankish</option>
<option value = 'equ'>Math</option>
<option value = 'srp'>Serbian (Latin)</option>
<option value = 'slk'>Slovak</option>
</select>
</div>
<div class="noselect">
<button class="btn-text-default" id='recognize-button' disabled>Recognize</button><br>
<label id="status-label" class="noselect disabled" ></label>
</div>
</div>
<div id="scrollable-image-text-div" style="position:absolute; display: none; height: calc(100% - 99px); width: calc(100% - 5px); position: relative; overflow: hidden">
<div style="width: calc(50% - 20px); margin-right: 25px" id="image-container-div" class="noselect">
</div>
<div id="text-container-div" style="width: calc(50% - 24px)">
</div>
</div>
</div>
</body>
</html>

71
index_about.html Normal file
View File

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>About</title>
<style>
p, a{
font-size: 12px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
a:link {
color: darkgrey;
}
/* visited link */
a:visited {
color: darkgrey;
}
/* mouse over link */
a:hover {
color: #8d8d8d;
}
/* selected link */
a:active {
color: darkgrey;
}
</style>
<script type="text/javascript" src="https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.js"></script>
<script type="text/javascript">
window.Asc.plugin.init = function()
{
this.resizeWindow(392, 147, 392, 147, 392, 147);
// none
};
window.Asc.plugin.button = function(id)
{
this.executeCommand("close", "");
};
window.Asc.plugin.onTranslate = function(){
var elem = document.getElementById("p1");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Tesseract.js Add-on");
}
elem = document.getElementById("p1");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Tesseract.js Add-on");
}
elem = document.getElementById("p2");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Tesseract.js is a pure javascript version of the <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages.");
}
elem = document.getElementById("a1");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Source code");
}
};
</script>
</head>
<body style="padding-left: 20px; padding-right: 20px">
<p style="font-size: 15px" id="p1">Tesseract.js Add-on</p>
<p style="font-size: 12px" id="p2">Tesseract.js is a pure javascript version of the <a href="http://tesseract.projectnaptha.com" target="_blank">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages.</p>
<a href="https://github.com/ONLYOFFICE/sdkjs-plugins/tree/master/ocr" target="_blank" id="a1">Source code</a>
</body>
</html>

350
ocr.js Normal file
View File

@ -0,0 +1,350 @@
(function(window, undefined){
var oLangMap = {};
oLangMap['eng'] = "English";
oLangMap['chi_sim'] = "Chinese";
oLangMap['rus'] = "Russian";
oLangMap['meme'] = "Meme";
oLangMap['tha'] = "Thai";
oLangMap['deu'] = "German";
oLangMap['jpn'] = "Japanese";
oLangMap['spa'] = "Spanish";
oLangMap['fra'] = "French";
oLangMap['por'] = "Portuguese";
oLangMap['ita'] = "Italian";
oLangMap['pol'] = "Polish";
oLangMap['tur'] = "Turkish";
oLangMap['nld'] = "Dutch";
oLangMap['ara'] = "Arabic";
oLangMap['ces'] = "Czech";
oLangMap['kor'] = "Korean";
oLangMap['swe'] = "Swedish";
oLangMap['vie'] = "Vietnamese";
oLangMap['ron'] = "Romanian";
oLangMap['ell'] = "Greek";
oLangMap['ind'] = "Indonesian";
oLangMap['hun'] = "Hungarian";
oLangMap['dan'] = "Danish";
oLangMap['bul'] = "Bulgarian";
oLangMap['fin'] = "Finnish";
oLangMap['nor'] = "Norwegian";
oLangMap['ukr'] = "Ukrainian";
oLangMap['cat'] = "Catalan";
oLangMap['hrv'] = "Croatian";
oLangMap['heb'] = "Hebrew";
oLangMap['lit'] = "Lithuanian";
oLangMap['slv'] = "Slovenian";
oLangMap['hin'] = "Hindi";
oLangMap['ben'] = "Bengali";
oLangMap['tel'] = "Telugu";
oLangMap['tam'] = "Tamil";
oLangMap['kan'] = "Kannada";
oLangMap['mal'] = "Malayalam";
oLangMap['tgl'] = "Tagalog";
oLangMap['swa'] = "Swahili";
oLangMap['aze'] = "Azerbaijani";
oLangMap['bel'] = "Belarusian";
oLangMap['afr'] = "Afrikaans";
oLangMap['sqi'] = "Albanian";
oLangMap['eus'] = "Basque";
oLangMap['epo'] = "Esperanto";
oLangMap['est'] = "Estonian";
oLangMap['glg'] = "Galician";
oLangMap['isl'] = "Icelandic";
oLangMap['lav'] = "Latvian";
oLangMap['mkd'] = "Macedonian";
oLangMap['msa'] = "Malay";
oLangMap['mlt'] = "Maltese";
oLangMap['grc'] = "Ancient Greek";
oLangMap['chr'] = "Cherokee";
oLangMap['enm'] = "English (Old)";
oLangMap['frk'] = "Frankish";
oLangMap['equ'] = "Math";
oLangMap['srp'] = "Serbian (Latin)";
oLangMap['slk'] = "Slovak";
window.oncontextmenu = function(e)
{
if (e.preventDefault)
e.preventDefault();
if (e.stopPropagation)
e.stopPropagation();
return false;
};
function escapeHtml(string) {
var res = string;
res = res.replace(/[\', \", \\,]/g, function (sSymbol) {
return '\\' + sSymbol;
});
return res;
}
var arrParsedData = [];
window.Asc.plugin.init = function(){
$('#lang-select').select2({
minimumResultsForSearch: Infinity
});
this.resizeWindow(592, 100, 592, 100, 592, 100);
var nStartFilesCount = 0, arrImages;
$( window ).resize(function(){
updateScroll();
});
function updateScroll(){
Ps.update();
}
var container = document.getElementById('scrollable-image-text-div');
Ps = new PerfectScrollbar("#" + container.id, {});
$('#load-file-button-id').click(
function (e) {
if (window["AscDesktopEditor"])
{
window["AscDesktopEditor"]["OpenFilenameDialog"]("images", true, function(files) {
arrImages = [];
if (!Array.isArray(files)) // string detect
files = [files];
if (files.length == 0)
return;
window.Asc.plugin.resizeWindow(800, 571, 800, 571);
var oImagesContainer = document.getElementById('image-container-div');
while (oImagesContainer.firstChild) {
oImagesContainer.removeChild(oImagesContainer.firstChild);
}
var oTextContainer = document.getElementById('text-container-div');
while (oTextContainer.firstChild) {
oTextContainer.removeChild(oTextContainer.firstChild);
}
for (var i = 0; i < files.length; i++)
{
var oImgElement = document.createElement('img');
oImgElement.src = window["AscDesktopEditor"]["GetImageBase64"](files[i], false);
oImgElement.style.width = '100%';
oImgElement.style.marginBottom = "10px";
arrImages.push(oImgElement);
oImagesContainer.appendChild(oImgElement);
}
document.getElementById('lang-select').removeAttribute('disabled');
document.getElementById('recognize-button').removeAttribute('disabled');
nStartFilesCount = files.length;
$('#status-label').text('');
$('#scrollable-image-text-div').css('display', 'inline-block');
updateScroll();
});
return;
}
$('#images-input').click();
}
);
$('#images-input').change(function(e) {
var arrFiles = e.target.files;
//check for images in file list
var arrFiles2 = [];
for(var i = 0; i < arrFiles.length; ++i){
if(arrFiles[i] && arrFiles[i].type && arrFiles[i].type.indexOf('image') === 0){
arrFiles2.push(arrFiles[i]);
}
else{
alert(arrFiles[i].name + "\nOCR plugin cannot read this file.");
}
}
arrFiles = arrFiles2;
if(arrFiles.length > 0){
window.Asc.plugin.resizeWindow(800, 571, 800, 571);
var oImagesContainer = document.getElementById('image-container-div');
while (oImagesContainer.firstChild) {
oImagesContainer.removeChild(oImagesContainer.firstChild);
}
var oTextContainer = document.getElementById('text-container-div');
while (oTextContainer.firstChild) {
oTextContainer.removeChild(oTextContainer.firstChild);
}
arrParsedData.length = 0;
var oFileReader = new FileReader();
var nIndex = 0;
arrImages = [];
$('#status-label').text('Loading images');
oFileReader.onloadend = function() {
var oImgElement = document.createElement('img');
oImgElement.src = oFileReader.result;
oImgElement.style.width = '100%';
arrImages.push(oImgElement);
oImagesContainer.appendChild(oImgElement);
++nIndex;
if(nIndex < arrFiles.length){
oFileReader.readAsDataURL(arrFiles[nIndex]);
$(oImgElement).css("margin-bottom", "10px");
}
else{
document.getElementById('lang-select').removeAttribute('disabled');
document.getElementById('recognize-button').removeAttribute('disabled');
nStartFilesCount = arrImages.length;
$('#status-label').text('');
$('#scrollable-image-text-div').css('display', 'inline-block');
}
updateScroll();
};
oFileReader.readAsDataURL(arrFiles[nIndex]);
}
});
$('#recognize-button').click(
function () {
var arrImagesCopy = [].concat(arrImages);
for (var i = 0; i < arrImagesCopy.length; i++)
{
if (arrImagesCopy[i] && (0 == arrImagesCopy[i].naturalWidth) && (0 == arrImagesCopy[i].naturalHeight))
{
arrImagesCopy.splice(i, 1);
i--;
}
}
if (0 == arrImagesCopy.length)
return;
var oTextContainer = document.getElementById('text-container-div');
while (oTextContainer.firstChild) {
oTextContainer.removeChild(oTextContainer.firstChild);
}
arrParsedData.length = 0;
document.getElementById('recognize-button').setAttribute('disabled', '');
document.getElementById('lang-select').setAttribute('disabled', '');
document.getElementById('load-file-button-id').setAttribute('disabled', '');
var fTesseractCall = function(){
Tesseract.recognize(arrImagesCopy.splice(0, 1)[0], {lang: $('#lang-select option:selected')[0].value}).progress(function (progress) {
if(progress && progress.status === "recognizing text"){
var nPercent = (100*(progress.progress + nStartFilesCount - arrImagesCopy.length - 1)/nStartFilesCount) >> 0;
$('#status-label').text('Recognizing: '+ nPercent + '%');
}
}).catch(function(err){
$('#status-label').text('');
document.getElementById('recognize-button').removeAttribute('disabled');
document.getElementById('lang-select').removeAttribute('disabled');
document.getElementById('load-file-button-id').removeAttribute('disabled', '');
}).then(function(result){
document.getElementById('text-container-div').appendChild($(result.html)[0]);
arrParsedData.push(result);
updateScroll();
if(arrImagesCopy.length > 0){
fTesseractCall();
}
else{
$('#status-label').text('');
document.getElementById('recognize-button').removeAttribute('disabled');
document.getElementById('lang-select').removeAttribute('disabled');
document.getElementById('load-file-button-id').removeAttribute('disabled', '');
}
});
};
$('#status-label').text('Recognizing: 0%');
fTesseractCall();
}
);
};
window.Asc.plugin.button = function(id){
if (id == 0){
var sScript = '';
sScript += 'var oDocument = Api.GetDocument();';
sScript += '\nvar oParagraph, oRun, arrInsertResult = [], oTextPr;';
for(var i = 0; i < arrParsedData.length; ++i){
var oCurData = arrParsedData[i];
for(var j = 0; j < oCurData.paragraphs.length; ++j){
var oCurParagraph = oCurData.paragraphs[j];
sScript += '\noParagraph = Api.CreateParagraph();';
sScript += '\narrInsertResult.push(oParagraph);';
for(var t = 0; t < oCurParagraph.lines.length; ++t){
var oCurLine = oCurParagraph.lines[t];
if(t > 0 && t < oCurParagraph.lines.length - 1){
//sScript += '\noParagraph.AddLineBreak();';
}
for(var k = 0; k < oCurLine.words.length; ++k){
var oWord = oCurLine.words[k];
var sText = oWord.text + (k < oCurLine.words.length - 1 ? ' ' : '');
sText = escapeHtml(sText);
sScript += '\noRun = oParagraph.AddText(\'' + sText + '\');';
sScript += '\noTextPr = oRun.GetTextPr();';
var arrFontName = oWord.font_name.split('_');
var sFontName = '';
for(var s = 0; s < arrFontName.length; ++s ){
if(arrFontName[s] === 'Bold'){
sScript += '\noTextPr.SetBold(true);';
}
else if(arrFontName[s] === 'Italic'){
sScript += '\noTextPr.SetItalic(true);';
}
else if(arrFontName[s] === 'Strikeout'){
sScript += '\noTextPr.SetStrikeout(true);';
}
else{
if(sFontName != ''){
sFontName += ' ';
}
sFontName += arrFontName[s];
}
}
sScript += '\noTextPr.SetFontFamily(\'' + sFontName + '\');';
sScript += '\noTextPr.SetFontSize(' + ((oWord.font_size * 5 )>> 0) + ');';
}
}
}
}
sScript += '\noDocument.InsertContent(arrInsertResult);';
window.Asc.plugin.info.recalculate = true;
this.executeCommand("close", sScript);
}
else{
this.executeCommand("close", "");
}
};
window.Asc.plugin.onTranslate = function(){
var elem = document.getElementById("label1");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Tesseract.js lets recognize text in pictures (png, jpg)");
}
elem = document.getElementById("load-file-button-id");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Load File");
}
elem = document.getElementById("label2");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Choose language");
}
elem = document.getElementById("recognize-button");
if (elem){
elem.innerHTML = window.Asc.plugin.tr("Recognize");
}
elem = document.getElementById("lang-select");
if(elem){
var sInnerHtml = "";
for(var key in oLangMap){
if(oLangMap.hasOwnProperty(key)){
sInnerHtml += "<option value = \'" + key + "'>" + window.Asc.plugin.tr(oLangMap[key]) + "</option>";
}
}
elem.innerHTML = sInnerHtml;
}
};
})(window, undefined);

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -0,0 +1,123 @@
Select2
=======
[![Build Status][travis-ci-image]][travis-ci-status]
Select2 is a jQuery-based replacement for select boxes. It supports searching,
remote data sets, and pagination of results.
To get started, checkout examples and documentation at
https://select2.org/
Use cases
---------
* Enhancing native selects with search.
* Enhancing native selects with a better multi-select interface.
* Loading data from JavaScript: easily load items via AJAX and have them
searchable.
* Nesting optgroups: native selects only support one level of nesting. Select2
does not have this restriction.
* Tagging: ability to add new items on the fly.
* Working with large, remote datasets: ability to partially load a dataset based
on the search term.
* Paging of large datasets: easy support for loading more pages when the results
are scrolled to the end.
* Templating: support for custom rendering of results and selections.
Browser compatibility
---------------------
* IE 8+
* Chrome 8+
* Firefox 10+
* Safari 3+
* Opera 10.6+
Select2 is automatically tested on the following browsers.
[![Sauce Labs Test Status][saucelabs-matrix]][saucelabs-status]
Usage
-----
You can source Select2 directly from a CDN like [JSDliver][jsdelivr] or
[CDNJS][cdnjs], [download it from this GitHub repo][releases], or use one of
the integrations below.
Integrations
------------
Third party developers have created plugins for platforms which allow Select2 to be integrated more natively and quickly. For many platforms, additional plugins are not required because Select2 acts as a standard `<select>` box.
Plugins
* [Django]
- [django-autocomplete-light]
- [django-easy-select2]
- [django-select2]
* [Meteor] - [meteor-select2]
* [Ruby on Rails][ruby-on-rails] - [select2-rails]
* [Wicket] - [wicketstuff-select2]
* [Yii 2][yii2] - [yii2-widget-select2]
Themes
- [Bootstrap 3][bootstrap3] - [select2-bootstrap-theme]
- [Flat UI][flat-ui] - [select2-flat-theme]
- [Metro UI][metro-ui] - [select2-metro]
Missing an integration? Modify this `README` and make a pull request back here to Select2 on GitHub.
Internationalization (i18n)
---------------------------
Select2 supports multiple languages by simply including the right language JS
file (`dist/js/i18n/it.js`, `dist/js/i18n/nl.js`, etc.) after
`dist/js/select2.js`.
Missing a language? Just copy `src/js/select2/i18n/en.js`, translate it, and
make a pull request back to Select2 here on GitHub.
Documentation
-------------
The documentation for Select2 is available
[through GitHub Pages][documentation] and is located within this repository
in the [`docs` folder][documentation-folder].
Community
---------
You can find out about the different ways to get in touch with the Select2
community at the [Select2 community page][community].
Copyright and license
---------------------
The license is available within the repository in the [LICENSE][license] file.
[cdnjs]: http://www.cdnjs.com/libraries/select2
[community]: https://select2.org/getting-help
[documentation]: https://select2.org
[documentation-folder]: https://github.com/select2/select2/tree/master/docs
[freenode]: https://freenode.net/
[jsdelivr]: http://www.jsdelivr.com/#!select2
[license]: LICENSE.md
[releases]: https://github.com/select2/select2/releases
[saucelabs-matrix]: https://saucelabs.com/browser-matrix/select2.svg
[saucelabs-status]: https://saucelabs.com/u/select2
[travis-ci-image]: https://img.shields.io/travis/select2/select2/master.svg
[travis-ci-status]: https://travis-ci.org/select2/select2
[bootstrap3]: https://getbootstrap.com/
[django]: https://www.djangoproject.com/
[django-autocomplete-light]: https://github.com/yourlabs/django-autocomplete-light
[django-easy-select2]: https://github.com/asyncee/django-easy-select2
[django-select2]: https://github.com/applegrew/django-select2
[flat-ui]: http://designmodo.github.io/Flat-UI/
[meteor]: https://www.meteor.com/
[meteor-select2]: https://github.com/nate-strauser/meteor-select2
[metro-ui]: http://metroui.org.ua/
[select2-metro]: http://metroui.org.ua/select2.html
[ruby-on-rails]: http://rubyonrails.org/
[select2-bootstrap-theme]: https://github.com/select2/select2-bootstrap-theme
[select2-flat-theme]: https://github.com/techhysahil/select2-Flat_Theme
[select2-rails]: https://github.com/argerim/select2-rails
[vue.js]: http://vuejs.org/
[select2-vue]: http://vuejs.org/examples/select2.html
[wicket]: https://wicket.apache.org/
[wicketstuff-select2]: https://github.com/wicketstuff/core/tree/master/select2-parent
[yii2]: http://www.yiiframework.com/
[yii2-widget-select2]: https://github.com/kartik-v/yii2-widget-select2

489
select2-4.0.6-rc.1/dist/css/select2.css vendored Normal file
View File

@ -0,0 +1,489 @@
.select2-container {
box-sizing: border-box;
display: inline-block;
margin: 0;
position: relative;
vertical-align: middle; }
.select2-container .select2-selection--single {
box-sizing: border-box;
cursor: pointer;
display: block;
height: 22px;
user-select: none;
-webkit-user-select: none; }
.select2-container .select2-selection--single .select2-selection__rendered {
font-size: 12px;
display: block;
padding-left: 8px;
padding-right: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.select2-container .select2-selection--single .select2-selection__clear {
position: relative; }
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
padding-right: 8px;
padding-left: 20px; }
.select2-container .select2-selection--multiple {
box-sizing: border-box;
cursor: pointer;
display: block;
min-height: 32px;
user-select: none;
-webkit-user-select: none; }
.select2-container .select2-selection--multiple .select2-selection__rendered {
display: inline-block;
overflow: hidden;
padding-left: 8px;
text-overflow: ellipsis;
white-space: nowrap; }
.select2-container .select2-search--inline {
float: left; }
.select2-container .select2-search--inline .select2-search__field {
box-sizing: border-box;
border: none;
font-size: 100%;
margin-top: 5px;
padding: 0; }
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
.select2-dropdown {
background-color: white;
border: 1px solid #aaa;
border-radius: 2px;
box-sizing: border-box;
display: block;
position: absolute;
left: -100000px;
width: 100%;
z-index: 1051; }
.select2-results {
display: block; }
.select2-results__options {
font-size: 12px;
list-style: none;
margin: 0;
padding: 0; }
.select2-results__option {
padding: 6px;
user-select: none;
-webkit-user-select: none; }
.select2-results__option[aria-selected] {
cursor: pointer; }
.select2-container--open .select2-dropdown {
left: 0; }
.select2-container--open .select2-dropdown--above {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--open .select2-dropdown--below {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-search--dropdown {
display: block;
padding: 4px; }
.select2-search--dropdown .select2-search__field {
padding: 4px;
width: 100%;
box-sizing: border-box; }
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
.select2-search--dropdown.select2-search--hide {
display: none; }
.select2-close-mask {
border: 0;
margin: 0;
padding: 0;
display: block;
position: fixed;
left: 0;
top: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
opacity: 0;
z-index: 99;
background-color: #fff;
filter: alpha(opacity=0); }
.select2-hidden-accessible {
border: 0 !important;
clip: rect(0 0 0 0) !important;
-webkit-clip-path: inset(50%) !important;
clip-path: inset(50%) !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
white-space: nowrap !important; }
.select2-container--default .select2-selection--single {
outline: none;
background-color: #fff;
border: 1px solid #aaa;
border-radius: 2px; }
.select2-container--default .select2-selection--single .select2-selection__rendered {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #444;
line-height: 22px; }
.select2-container--default .select2-selection--single .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold; }
.select2-container--default .select2-selection--single .select2-selection__placeholder {
color: #999; }
.select2-container--default .select2-selection--single .select2-selection__arrow {
height: 20px;
position: absolute;
top: 1px;
right: 1px;
width: 20px; }
.select2-container--default .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
border-width: 5px 4px 0 4px;
height: 0;
left: 50%;
margin-left: -4px;
margin-top: -2px;
position: absolute;
top: 50%;
width: 0; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
left: 1px;
right: auto; }
.select2-container--default.select2-container--disabled .select2-selection--single {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
display: none; }
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--default .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
border-radius: 2px;
cursor: text; }
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
box-sizing: border-box;
list-style: none;
margin: 0;
padding: 0 5px;
width: 100%; }
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
list-style: none; }
.select2-container--default .select2-selection--multiple .select2-selection__placeholder {
color: #999;
margin-top: 5px;
float: left; }
.select2-container--default .select2-selection--multiple .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold;
margin-top: 5px;
margin-right: 10px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice {
background-color: #e4e4e4;
border: 1px solid #aaa;
border-radius: 2px;
cursor: default;
float: left;
margin-right: 5px;
margin-top: 5px;
padding: 0 5px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
color: #999;
cursor: pointer;
display: inline-block;
font-weight: bold;
margin-right: 2px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #333; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
float: right; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--default.select2-container--focus .select2-selection--multiple {
border: solid black 1px;
outline: 0; }
.select2-container--default.select2-container--disabled .select2-selection--multiple {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
display: none; }
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--default .select2-search--dropdown .select2-search__field {
outline-color: #7d858c;
border: 1px solid #aaa; }
.select2-container--default .select2-search--inline .select2-search__field {
background: transparent;
border: none;
outline: 0;
box-shadow: none;
-webkit-appearance: textfield; }
.select2-container--default .select2-results > .select2-results__options {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
max-height: 200px;
overflow-y: auto; }
.select2-container--default .select2-results__option[role=group] {
padding: 0; }
.select2-container--default .select2-results__option[aria-disabled=true] {
color: #999; }
.select2-container--default .select2-results__option[aria-selected=true] {
background-color: #7d858c; }
.select2-container--default .select2-results__option .select2-results__option {
padding-left: 1em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
padding-left: 0; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
margin-left: -1em;
padding-left: 2em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -2em;
padding-left: 3em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -3em;
padding-left: 4em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -4em;
padding-left: 5em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -5em;
padding-left: 6em; }
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: rgba(200, 200, 200, 0.5);}
.select2-container--default .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic .select2-selection--single {
background-color: #f7f7f7;
border: 1px solid #aaa;
border-radius: 2px;
outline: 0;
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic .select2-selection--single:focus {
border: 1px solid #5897fb; }
.select2-container--classic .select2-selection--single .select2-selection__rendered {
color: #444;
line-height: 22px; }
.select2-container--classic .select2-selection--single .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold;
margin-right: 10px; }
.select2-container--classic .select2-selection--single .select2-selection__placeholder {
color: #999; }
.select2-container--classic .select2-selection--single .select2-selection__arrow {
background-color: #ddd;
border: none;
border-left: 1px solid #aaa;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
height: 20px;
position: absolute;
top: 1px;
right: 1px;
width: 20px;
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
border-width: 5px 4px 0 4px;
height: 0;
left: 50%;
margin-left: -4px;
margin-top: -2px;
position: absolute;
top: 50%;
width: 0; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
border: none;
border-right: 1px solid #aaa;
border-radius: 0;
border-top-left-radius: 2px;
border-bottom-left-radius: 2px;
left: 1px;
right: auto; }
.select2-container--classic.select2-container--open .select2-selection--single {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
background: transparent;
border: none; }
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
.select2-container--classic .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
border-radius: 2px;
cursor: text;
outline: 0; }
.select2-container--classic .select2-selection--multiple:focus {
border: 1px solid #5897fb; }
.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
list-style: none;
margin: 0;
padding: 0 5px; }
.select2-container--classic .select2-selection--multiple .select2-selection__clear {
display: none; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice {
background-color: #e4e4e4;
border: 1px solid #aaa;
border-radius: 2px;
cursor: default;
float: left;
margin-right: 5px;
margin-top: 5px;
padding: 0 5px; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
color: #888;
cursor: pointer;
display: inline-block;
font-weight: bold;
margin-right: 2px; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #555; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
float: right;
margin-left: 5px;
margin-right: auto; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--classic.select2-container--open .select2-selection--multiple {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--classic .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa;
outline: 0; }
.select2-container--classic .select2-search--inline .select2-search__field {
outline: 0;
box-shadow: none; }
.select2-container--classic .select2-dropdown {
background-color: white;
border: 1px solid transparent; }
.select2-container--classic .select2-dropdown--above {
border-bottom: none; }
.select2-container--classic .select2-dropdown--below {
border-top: none; }
.select2-container--classic .select2-results > .select2-results__options {
max-height: 200px;
overflow-y: auto; }
.select2-container--classic .select2-results__option[role=group] {
padding: 0; }
.select2-container--classic .select2-results__option[aria-disabled=true] {
color: grey; }
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
background-color: #3875d7;
color: white; }
.select2-container--classic .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic.select2-container--open .select2-dropdown {
border-color: #5897fb; }

File diff suppressed because one or more lines are too long

6559
select2-4.0.6-rc.1/dist/js/select2.full.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

5847
select2-4.0.6-rc.1/dist/js/select2.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
Effective beginning September 10, 2017, the Select2 documentation repository is now available at [`select2/docs`](https://github.com/select2/docs).

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org/upgrading/new-in-40';
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org/getting-help';
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org/getting-started/basic-usage';
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org';
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org/configuration';
</script>
</body>
</html>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>select2</title>
</head>
<body>
<script>
window.location = 'https://select2.org/configuration';
</script>
</body>
</html>

70
translations/de-DE.json Normal file
View File

@ -0,0 +1,70 @@
{
"Tesseract.js lets recognize text in pictures (png, jpg)": "Tesseract.js lässt Text in Bildern erkennen (png, jpg)",
"Choose language": "Sprache wählen",
"Load File": "Datei laden",
"English": "Englisch",
"Chinese": "Chinesisch",
"Russian": "Russisch",
"Meme": "Mem",
"Thai": "Thailändisch",
"German": "Deutsch",
"Japanese": "Japanisch",
"Spanish": "Spanisch",
"French": "Französisch",
"Portuguese": "Portugiesisch",
"Italian": "Italienisch",
"Polish": "Polnisch",
"Turkish": "Türkisch",
"Dutch": "Niederländisch",
"Arabic": "Arabisch",
"Czech": "Tschechisch",
"Korean": "Koreanisch",
"Swedish": "Schwedisch",
"Vietnamese": "Vietnamesisch",
"Romanian": "Rumänisch",
"Greek": "Griechisch",
"Indonesian": "Indonesisch",
"Hungarian": "Ungarisch",
"Danish": "Dänisch",
"Bulgarian": "Bulgarisch",
"Finnish": "Finnisch",
"Norwegian": "Norwegisch",
"Ukrainian": "Ukrainisch",
"Catalan": "Katalanisch",
"Croatian": "Kroatisch",
"Hebrew": "Hebräisch",
"Lithuanian": "Litauisch",
"Slovenian": "Slowenisch",
"Hindi": "Hindi",
"Bengali": "Bengali",
"Telugu": "Telugu",
"Tamil": "Tamil",
"Kannada": "Kanaresisch",
"Malayalam": "Malayalam",
"Tagalog": "Tagalog",
"Swahili": "Suaheli",
"Azerbaijani": "Aserbaidschanisch",
"Belarusian": "Belarussisch",
"Afrikaans": "Afrikanisch",
"Albanian": "Albanisch",
"Basque": "Baskisch",
"Esperanto": "Esperanto",
"Estonian": "Estonisch",
"Galician": "Galicisch",
"Icelandic": "Isländisch",
"Latvian": "Lettisch",
"Macedonian": "Mazedonisch",
"Malay": "Malaiisch",
"Maltese": "Maltesisch",
"Ancient Greek": "Altgriechisch",
"Cherokee": "Cherokee",
"English (Old)": "Englisch (alt)",
"Frankish": "Fränkisch",
"Math": "Mathematik",
"Serbian (Latin)": "Serbisch (lateinisch)",
"Slovak": "Slowakisch",
"Recognize": "Erkennen",
"Tesseract.js Add-on": "Tesseract.js Add-on",
"Tesseract.js is a pure javascript version of the <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages.": "Tesseract.js ist eine reine Javascript-Version der <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract-OCR-Engine </a>, die Englisch, Chinesisch, Russisch, Meme und 60 andere Sprachen erkennt.",
"Source code": "Quellcode"
}

70
translations/es-ES.json Normal file
View File

@ -0,0 +1,70 @@
{
"Tesseract.js lets recognize text in pictures (png, jpg)": "Complemento Tesseract.js permite reconocer texto en imágenes (png, jpg)",
"Choose language": "Seleccionar idioma",
"Load File": "Cargar el archivo",
"English": "Inglés",
"Chinese": "Chino",
"Russian": "Ruso",
"Meme": "Meme",
"Thai": "Tailandés",
"German": "Alemán",
"Japanese": "Japonés",
"Spanish": "Español",
"French": "Francés",
"Portuguese": "Portugués",
"Italian": "Italiano",
"Polish": "Polonés",
"Turkish": "Turco",
"Dutch": "Holandés",
"Arabic": "Árabe",
"Czech": "Checo",
"Korean": "Coreano",
"Swedish": "Sueco",
"Vietnamese": "Vietnamita",
"Romanian": "Rumano",
"Greek": "Griego",
"Indonesian": "Indonesio",
"Hungarian": "Húngaro",
"Danish": "Danés",
"Bulgarian": "Búlgaro",
"Finnish": "Finlandés",
"Norwegian": "Noruego",
"Ukrainian": "Ucraniano",
"Catalan": "Catalán",
"Croatian": "Croata",
"Hebrew": "Hebreo",
"Lithuanian": "Lituano",
"Slovenian": "Esloveno",
"Hindi": "Hindi",
"Bengali": "Bengalí",
"Telugu": "Télugu",
"Tamil": "Tamil",
"Kannada": "Kannada",
"Malayalam": "Malayam",
"Tagalog": "Tagalo",
"Swahili": "Suajili",
"Azerbaijani": "Azerí",
"Belarusian": "Bielorruso",
"Afrikaans": "Afrikáans",
"Albanian": "Albanés",
"Basque": "Vasco",
"Esperanto": "Esperanto",
"Estonian": "Estonio",
"Galician": "Gallego",
"Icelandic": "Islandés",
"Latvian": "Letón",
"Macedonian": "Macedonio",
"Malay": "Malayo",
"Maltese": "Maltés",
"Ancient Greek": "Griego antiguo",
"Cherokee": "Cheroqui",
"English (Old)": "Inglés antiguo",
"Frankish": "Fráncico",
"Math": "Matemáticas",
"Serbian (Latin)": "Serbio (latino)",
"Slovak": "Eslovaco",
"Recognize": "Reconocer",
"Tesseract.js Add-on": "Complemento Tesseract.js",
"Tesseract.js is a pure javascript version of the <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages.": "Tesseract.js es una versión pura de javascript del <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> que reconoce Inglés, Chino, Ruso, Meme y 60 otros idiomas.",
"Source code": "Código fuente"
}

70
translations/fr-FR.json Normal file
View File

@ -0,0 +1,70 @@
{
"Tesseract.js lets recognize text in pictures (png, jpg)": "Extension Tesseract.js permet de reconnaître le texte dans les images (png, jpg)",
"Choose language": "Choisir la langue",
"Load File": "Charger fichier",
"English": "Anglais",
"Chinese": "Chinois",
"Russian": "Russe",
"Meme": "Meme",
"Thai": "Thaïlandais",
"German": "Allemand",
"Japanese": "Japonais",
"Spanish": "Espagnol",
"French": "Français",
"Portuguese": "Portugais",
"Italian": "Italien",
"Polish": "Polonais",
"Turkish": "Turc",
"Dutch": "Néerlandais",
"Arabic": "Arabe",
"Czech": "Tchèque",
"Korean": "Coréen",
"Swedish": "Suédois",
"Vietnamese": "Vietnamien",
"Romanian": "Roumain",
"Greek": "Grec",
"Indonesian": "Indonésien",
"Hungarian": "Hongrois",
"Danish": "Danois",
"Bulgarian": "Bulgare",
"Finnish": "Finlandais",
"Norwegian": "Norvégien",
"Ukrainian": "Ukrainien",
"Catalan": "Catalan",
"Croatian": "Croate",
"Hebrew": "Hébreu",
"Lithuanian": "Lituanien",
"Slovenian": "Slovène",
"Hindi": "Hindi",
"Bengali": "Bengali",
"Telugu": "Télougou",
"Tamil": "Tamoul",
"Kannada": "Kannada",
"Malayalam": "Malayalam",
"Tagalog": "Tagalog",
"Swahili": "Swahili",
"Azerbaijani": "Azéri",
"Belarusian": "Biélorusse",
"Afrikaans": "Afrikaans",
"Albanian": "Albanais",
"Basque": "Basque",
"Esperanto": "Esperanto",
"Estonian": "Estonien",
"Galician": "Galicien",
"Icelandic": "Islandais",
"Latvian": "Letton",
"Macedonian": "Macédonien",
"Malay": "Malais",
"Maltese": "Maltais",
"Ancient Greek": "Ancien Grec",
"Cherokee": "Cherokee",
"English (Old)": "Ancien Anglais",
"Frankish": "Francs",
"Math": "Mathématiques",
"Serbian (Latin)": "Serbe (alphabet latin)",
"Slovak": "Slovaque",
"Recognize": "Reconnaître",
"Tesseract.js Add-on": "Extension Tesseract.js",
"Tesseract.js is a pure javascript version of the <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages.": "Tesseract.js c'est une version javascript pure de <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> qui reconnais le texte en Anglais, Chinois, Russe, Meme et 60 d'autres langues.",
"Source code": "Code source"
}

70
translations/ru-RU.json Normal file
View File

@ -0,0 +1,70 @@
{
"Tesseract.js lets recognize text in pictures (png, jpg)": "Плагин Tesseract.js позволяет распознавать текст в изображениях (png, jpg)",
"Choose language": "Выбрать язык",
"Load File": "Загрузить файл",
"English": "Английский",
"Chinese": "Китайский",
"Russian": "Русский",
"Meme": "Интернет-мемы",
"Thai": "Тайский",
"German": "Немецкий",
"Japanese": "Японский",
"Spanish": "Испанский",
"French": "Французский",
"Portuguese": "Португальский",
"Italian": "Итальянский",
"Polish": "Польский",
"Turkish": "Турецкий",
"Dutch": "Нидерландский",
"Arabic": "Арабский",
"Czech": "Чешский",
"Korean": "Корейский",
"Swedish": "Шведский",
"Vietnamese": "Вьетнамский",
"Romanian": "Румынский",
"Greek": "Греческий",
"Indonesian": "Индонезийский",
"Hungarian": "Венгерский",
"Danish": "Датский",
"Bulgarian": "Болгарский",
"Finnish": "Финский",
"Norwegian": "Норвежский",
"Ukrainian": "Украинский",
"Catalan": "Каталанский",
"Croatian": "Хорватский",
"Hebrew": "Иврит",
"Lithuanian": "Литовский",
"Slovenian": "Словенский",
"Hindi": "Хинди",
"Bengali": "Бенгальский",
"Telugu": "Телугу",
"Tamil": "Тамильский",
"Kannada": "Каннада",
"Malayalam": "Малаялам",
"Tagalog": "Тагальский",
"Swahili": "Суахили",
"Azerbaijani": "Азербайджанский",
"Belarusian": "Белорусский",
"Afrikaans": "Африкаанс",
"Albanian": "Албанский",
"Basque": "Баскский",
"Esperanto": "Эсперанто",
"Estonian": "Эстонский",
"Galician": "Галисийский",
"Icelandic": "Исландский",
"Latvian": "Латышский",
"Macedonian": "Македонский",
"Malay": "Малайский",
"Maltese": "Мальтийский",
"Ancient Greek": "Древнегреческий",
"Cherokee": "Чероки",
"English (Old)": "Древнеанглийский",
"Frankish": "Франкский",
"Math": "Математические знаки",
"Serbian (Latin)": "Сербский (латиница)",
"Slovak": "Словацкий",
"Recognize": "Распознать",
"Tesseract.js Add-on": "Плагин Tesseract.js",
"Tesseract.js is a pure javascript version of the <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a> that recognize English, Chinese, Russian, Meme and 60 other languages." : "Tesseract.js - это javascript-версия движка <a href=\"http://tesseract.projectnaptha.com\" target=\"_blank\">Tesseract OCR Engine</a>, позволяющая распознавать текст более чем на 60 языках: английском, китайском, русском, языке интернет-мемов и др.",
"Source code": "Исходный код"
}