Compare commits

...

234 Commits

Author SHA1 Message Date
Vilius
4f4ca0c96c
Update README.md 2025-08-19 21:23:41 +03:00
Vilius
6d0b95e50c
Merge pull request #414 from emresaracoglu/patch-1
Update README.md
2024-11-14 22:07:59 +02:00
Emre Saraçoğlu
c48593190f
Update README.md
Same fix
2024-11-14 10:00:05 +03:00
Vilius
054d89cccd
Merge pull request #408 from arthurdeka/master
Update pt.json
2024-06-30 19:44:58 +03:00
Arthur
d32e925125 Update pt.json
Fixing portuguese grammatical errors.
2024-06-28 18:58:43 -03:00
Vilius
352a231973
Merge pull request #403 from Seayouth/fix_zh_trans
Fix Chinese translation problem
2024-04-11 22:56:15 +03:00
Skyyouth
e38f1040c0 Fix Manually check and supplement some missing Chinese translations 2024-04-11 10:28:06 +08:00
Skyyouth
faf9a2afc4 Fix Chinese translation problem 2024-04-10 16:44:48 +08:00
Vilius
c47dcbf6e5
Merge pull request #399 from new-sankaku/master
Improved Japanese translation
2024-03-20 21:58:06 +02:00
new-sankaku
96d9e12017 Improved Japanese translation 2024-03-20 23:34:34 +09:00
viliusle
9e57e09371 version 4.14.2 2024-03-19 22:05:16 +02:00
viliusle
2ba14fe4ef #396 - IME input compatible 2024-03-19 22:01:39 +02:00
viliusle
df0f259172 v4.14.1 2023-12-01 15:42:41 +02:00
viliusle
f4aba673d4 XSS fix update 2023-12-01 15:40:32 +02:00
viliusle
7c2c056642 version 4.14.0 2023-12-01 15:07:17 +02:00
viliusle
f22cb46515 XSS fix (layers name) 2023-12-01 15:05:05 +02:00
viliusle
1fce319dc9 updated nl translations 2023-12-01 14:49:47 +02:00
viliusle
1fed01dde0 updated tool to extract translations 2023-12-01 14:49:21 +02:00
viliusle
1e11f8d590 added nl translation 2023-12-01 14:31:08 +02:00
viliusle
b34b031f3d auto focus fields on some modal dialogs 2023-12-01 14:24:02 +02:00
Vilius
85e850b40d
Merge pull request #378 from bit9labs/master
Switch to select tool after choosing a media clip
2023-12-01 13:56:01 +02:00
viliusle
cf894ac34a npm update (libraries update) & audit 2023-12-01 13:55:45 +02:00
viliusle
79c79ca4a5 added latest translations, updated base transaltion file 2023-12-01 13:40:11 +02:00
viliusle
95b496c480 updated translation tool to extract translations 2023-12-01 12:55:13 +02:00
viliusle
1032804da4 fixed PR-386 2023-12-01 12:54:30 +02:00
Vilius
8189d9c4a6
Merge pull request #386 from phpony/master
Multiple translation issues + RU lang file
2023-12-01 12:25:47 +02:00
Volkov Maksim
153134809b
Corrected and completed Russian lang file 2023-11-27 00:41:35 +03:00
Volkov Maksim
b3cb94e7bd
Make "details" box translatable 2023-11-27 00:18:11 +03:00
Volkov Maksim
dcc3d08d33
Make color box and color dialog translatable 2023-11-27 00:13:58 +03:00
Volkov Maksim
8f255597e4
Make "Infromation" box translatable 2023-11-27 00:02:21 +03:00
Volkov Maksim
eff3ce5894
Enabling translation in "Layers" interface block 2023-11-26 23:59:39 +03:00
Volkov Maksim
cef7e6f79c
Unnecessary spaces in toolbar labels
We don't need space symbols at the end of label HTML. Spacing is done in CSS anyway.
2023-11-26 23:00:37 +03:00
Volkov Maksim
48bda1d41f
Untranslated menu fix
Menu is not being translated from page load till first interaction with it. Should call translate after render_main().
2023-11-26 22:52:38 +03:00
Volkov Maksim
53d3ef7f83
Make labels in toolbar translatable
<label> elements in toolbar should have "tr" class to be translatable too.
2023-11-26 22:24:31 +03:00
Bit9Labs
7ca23d9e07 Switch to select tool after choosing a media clip 2023-07-28 16:46:50 -04:00
Vilius
d36fbadd86
Merge pull request #370 from parse-g/master
Update russian translate
2023-07-23 21:15:57 +03:00
Mihail
9522fd4343 Update russian translate
In this update fixed some inaccuracies, letters registers and some untranslatable words, like language names or font names.
2023-06-09 14:21:11 +03:00
viliusle
7b8ad8b6ac version 4.13.0 2023-04-21 19:47:20 +03:00
viliusle
9dd908c390 change canvas size with "in proportion" feature (resize and move all layers) 2023-04-21 19:22:18 +03:00
viliusle
e5af391390 information window update, fixed issues when formatting numbers 2023-04-21 13:30:47 +03:00
viliusle
39f8d5ed52 resolution small update while saving 2023-04-21 13:27:25 +03:00
viliusle
b71c64b227 better error messages when tryng to do forbidden actions on rotated objects 2023-04-21 11:43:48 +03:00
viliusle
e5022921e2 translations strings update 2023-04-21 11:40:48 +03:00
viliusle
f5f79d055f show resolution during save dialog 2023-04-21 11:39:42 +03:00
Vilius
69b08a1326
security.md file 2023-04-21 10:44:52 +03:00
viliusle
bf0b62e6c5 webpack version update 2023-04-21 10:33:10 +03:00
viliusle
f9015fe58d npm audit 2023-04-21 10:29:19 +03:00
Vilius
736aea47e2
Merge pull request #367 from wklkejw239/patch-1
add contributors in README.md
2023-04-21 10:12:19 +03:00
vincivermeer
b424482e4d
add contributors in README.md
Hello everyone!

I added the contributors in the readme.md file in the repository: viliusle/miniPaint. I would like to contribute to this pull-request and I hope you all accept it.

what do you all think of this idea?
2023-04-06 01:37:37 -03:00
viliusle
35acc344a8 version 4.12.0 2023-02-07 00:08:37 +02:00
viliusle
fe020842b0 ability to edit tools (shapes) attributes like color, size after object is created 2023-02-07 00:07:22 +02:00
viliusle
0bc28fcbc4 fixed layer details section styles 2023-02-05 17:45:23 +02:00
viliusle
abc3704c9a npm audit 2023-02-05 17:37:03 +02:00
viliusle
ee7d8325cd fixed keypoints tool, when layer is smaller than canvas 2023-02-04 23:15:53 +02:00
viliusle
790c1e100e 4.11.0 version bundle 2023-01-31 22:30:18 +02:00
viliusle
f1eb954087 bezier tool update: support for CTRL modifier ke 2023-01-26 13:33:49 +02:00
viliusle
b9693d21db #314: fixed Gaussian Blur & shadow filters (it was affected by zoom level) 2023-01-08 22:58:52 +02:00
viliusle
ddf97ca4c4 #333: dynamically change theme based on OS preferences (disabled) 2023-01-08 22:45:30 +02:00
viliusle
62ca359776 #310: fixed content fill 2023-01-08 22:09:43 +02:00
viliusle
bbb17d5dc3 #311 polygons 2023-01-07 23:28:14 +02:00
viliusle
fc0ccf3fa7 #311 fixed bezier undo states 2023-01-07 22:25:55 +02:00
viliusle
3df83776c7 #311 bezier curve 2023-01-07 21:31:40 +02:00
viliusle
5350803089 better duplicated layer name 2022-12-23 23:18:25 +02:00
viliusle
b3ca4dbd49 #311 - star24 shape migrated to star, old star object updated to general star with parameters 2022-12-23 23:18:02 +02:00
viliusle
92975b2dca #288 - fixed undo on rotated objects 2022-12-23 18:15:01 +02:00
viliusle
59f80c16bc service-worker.js comment 2022-08-29 20:09:24 +03:00
viliusle
342086f3f0 fixed CSS comment 2022-08-29 20:05:25 +03:00
viliusle
a72e3f12a3 v4.10.1 2022-08-06 22:32:00 +03:00
viliusle
ce570658f7 npm update 2022-08-06 22:30:14 +03:00
viliusle
1a9ea280e4 #328 fixed JSON import (canvas size, version check) 2022-08-06 22:28:33 +03:00
Vilius
b249e2b70b
Merge pull request #316 from parse-g/ru-fix
some russian languages fixes
2022-04-28 22:18:14 +03:00
Mihail
ec27681450
more fixes 2022-04-28 20:52:48 +03:00
Mihail
caf9f03f1a
some languages fixes 2022-04-27 23:19:36 +03:00
Vilius
9556235502
Merge pull request #309 from viliusle/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-04-01 21:26:54 +03:00
dependabot[bot]
797f946aa8
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-01 17:43:34 +00:00
Vilius
885a162558
Merge pull request #306 from viliusle/dependabot/npm_and_yarn/node-forge-1.3.0
Bump node-forge from 1.2.1 to 1.3.0
2022-04-01 20:43:04 +03:00
viliusle
7e75b4c353 #304 base layers class fixes related to width, height and export, 308 PR by Giwayume 2022-04-01 20:41:32 +03:00
dependabot[bot]
f1be2f3145
Bump node-forge from 1.2.1 to 1.3.0
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-22 13:11:02 +00:00
viliusle
81afb22a39 version 4.10.0 2022-03-17 22:54:10 +02:00
viliusle
0855adb797 fixed layers list style (related to source-atop composition) 2022-03-16 23:18:20 +02:00
viliusle
7c5b8101e6 #179 - pencil update (pressure activation/deactivation UI) 2022-03-16 22:58:38 +02:00
viliusle
dae340d0ea pencil tool update: size and pressure support 2022-03-14 21:21:06 +02:00
viliusle
7d54a2d73e fixed preview buttons 2022-03-13 21:43:14 +02:00
viliusle
a596d2e59b disable right click on drawable area (it is browser menu, not related to app) 2022-03-13 19:20:18 +02:00
viliusle
e37651a4d9 flatten update: allow to flatten 1 layer 2022-03-13 18:53:00 +02:00
viliusle
35adb236ad button titles, duplicate and raster buttons 2022-02-23 00:06:54 +02:00
viliusle
b9ab37497a #297 - fix for PR (layers GUI was not updated automatically) 2022-02-22 22:45:54 +02:00
viliusle
7b1fac9fb5 Merge remote-tracking branch 'origin/master' 2022-02-22 22:44:36 +02:00
Vilius
170124f041
Merge pull request #298 from kmanaseryan/feature/indicate-layer-c-masked
Issue #297 - Indicate when the layer has clipping mask applied
2022-02-22 22:44:25 +02:00
viliusle
e8c784e2bd Merge branch 'feature/indicate-layer-c-masked' of https://github.com/kmanaseryan/miniPaint 2022-02-22 22:34:06 +02:00
Vilius
ff82f90435
Merge pull request #296 from kmanaseryan/fix/clipping-mask-2nd-layer-295
Issue #295 - Fix the bug related to 2nd clipped layer
2022-02-22 22:32:26 +02:00
Vilius
db8d0af14f
Merge pull request #293 from kmanaseryan/fix/rotate-imprv-286
Issue #286 - Rotation handle improvements
2022-02-22 22:23:00 +02:00
viliusle
2fa0c079e9 Merge remote-tracking branch 'origin/master' 2022-02-22 22:16:59 +02:00
viliusle
5f32f3797e npm audit 2022-02-22 22:15:17 +02:00
Karlen Manaseryan
e2a7446725 Issue #297 - Indicate when the layer has clipping mask applied 2022-02-20 22:30:45 +04:00
Karlen Manaseryan
82f641631b Issue #295 - Fix the bug related to 2nd clipped layer 2022-02-20 19:00:55 +04:00
Karlen Manaseryan
70938e3452 Issue #286 - Rotation handle improvements 2022-02-13 21:27:42 +04:00
Vilius
7cc20aaaa6
Merge pull request #281 from kmanaseryan/fix/rotate-bug-279
Issue #279 - Fix resize bug on certain rotate degree
2022-02-07 21:12:30 +02:00
Vilius
72647e4d0a
Merge pull request #282 from kmanaseryan/fix/source-atop-280
Fix: Clipped layers should respect the layers on top of it
2022-02-02 22:57:02 +02:00
Karlen Manaseryan
46928a2b18 Fix: Clipped layers should respect the layers on top of it 2022-02-02 20:23:45 +04:00
Karlen Manaseryan
877d35ebfb Issue #279 - Fix rotate bug 2022-02-01 17:48:28 +04:00
viliusle
0ea34e8997 version 4.9.3 2022-01-16 18:07:27 +02:00
viliusle
5658ae0684 npm audit 2022-01-16 18:05:25 +02:00
viliusle
45103ef618 trim fix: stop jumping layer to old coordinates, if image is big 2022-01-10 21:36:58 +02:00
viliusle
4c6204224d trim update: power parameter 2022-01-10 21:17:59 +02:00
viliusle
d71629e49a disabled rotation on brush, pencil 2022-01-10 20:54:27 +02:00
Vilius
c2aa4594e3
Merge pull request #276 from kmanaseryan/feature/rotate-text
Issue #185 - Allow text rotation
2022-01-03 23:59:20 +02:00
Karlen Manaseryan
f1e512ae2f Issue #185 - Allow text rotation 2021-12-24 18:09:29 +04:00
Vilius
d23b5e83fb
Merge pull request #275 from kmanaseryan/feature/clipped-layer-shadow-192
Issue #192 - Isolate shadow from clipped layer
2021-11-28 21:08:39 +02:00
Karlen Manaseryan
ee53f86e83 Issue #192 - formatting 2021-11-28 22:01:17 +04:00
Karlen Manaseryan
c07d9f8c9f Merge branch 'master' of https://github.com/viliusle/miniPaint into feature/clipped-layer-shadow-192 2021-11-28 21:56:03 +04:00
Karlen Manaseryan
2c4717a9f9 Issue #192 - Isolated shadow from clipped layer 2021-11-22 11:12:37 +04:00
Karlen Manaseryan
68b6835c54
Merge pull request #3 from kmanaseryan/feature/source-atop-231
Issue #231 - Feature/source atop
2021-10-27 20:35:10 +04:00
viliusle
1951006cf9 version 4.9.2 2021-10-24 20:30:57 +03:00
viliusle
e32e7d6a6e fixed issue, where opening big image + json would end with wrong preview in main canvas 2021-10-24 20:22:28 +03:00
viliusle
076ceae74e fixes for opening files on FireFix (fixed double file opening, fixed directory opening) 2021-10-24 16:32:50 +03:00
viliusle
aa48644325 fixed cog shape color 2021-10-24 16:10:22 +03:00
viliusle
c9f93538df #228 - manifest disabled forever - even it may work before this commit, still too much troubles to maintain (worker) and test everything. 2021-10-23 23:27:23 +03:00
viliusle
47dbbea3bc #228 - last attempt to add manifest, npm update 2021-10-23 23:14:09 +03:00
viliusle
ae900ac17e code format (reverting required PR #272) 2021-10-19 22:20:06 +03:00
Vilius
dde4ab4f26
Merge pull request #271 from kmanaseryan/feature/source-atop-231
Issue #231 - Feature source atop
2021-10-19 22:18:20 +03:00
Vilius
e062b421da
Merge pull request #272 from kmanaseryan/feature/source-atop-231-formatting
Issue #231 - Code formatting
2021-10-19 22:18:06 +03:00
Karlen Manaseryan
5d489738f6 Issue #231 - Implement Clipping Mask for render() method 2021-10-17 18:16:43 +04:00
Karlen Manaseryan
e6923445dc Issue #231 - Changes in main render funciton for the clipping mask 2021-09-28 20:29:50 +04:00
Karlen Manaseryan
497b0054a5 Issue #231 - Code refactoring for render_object() method 2021-09-28 18:37:02 +04:00
Karlen Manaseryan
a6e52102d2 Issue #231 - remove extra if condition which will never be entered 2021-09-27 18:55:49 +04:00
Karlen Manaseryan
6b22b1f80b
Merge pull request #2 from kmanaseryan/feature/source-atop-231-formatting
Issue #231 - Code formatting
2021-09-27 18:28:45 +04:00
Karlen Manaseryan
c720c768bc Issue #231 - Code formatting 2021-09-27 18:26:33 +04:00
viliusle
8b8aa3cd38 version 4.9.1 2021-08-03 00:12:57 +03:00
viliusle
b528b5d9d2 menu small change 2021-08-03 00:11:07 +03:00
viliusle
12e2e37a8a fix for saving as GIF 2021-08-02 23:51:27 +03:00
viliusle
cd2bd75804 version 4.9.0 2021-06-22 23:50:36 +03:00
viliusle
997089d506 fixed search shortcut on Mac 2021-06-22 23:47:07 +03:00
viliusle
fa6d7b69c7 #204 - global search 2021-06-21 23:38:55 +03:00
viliusle
b7a8e5eb9a #230: rotate with mouse 2021-06-20 20:57:15 +03:00
viliusle
28671d130c improved layers details GUI 2021-06-20 18:59:56 +03:00
viliusle
baba50ab7c improved mouse cursors on resize and move 2021-06-20 17:00:32 +03:00
viliusle
1c67672af5 bundle license 2021-06-20 12:03:24 +03:00
viliusle
2fe3781be0 version 4.8.0 2021-06-20 12:02:32 +03:00
viliusle
6008e723fc fixed select tool + coposition modal windows issue 2021-06-20 11:37:44 +03:00
viliusle
50b5c29e0e non destructive color corrections (when possible) 2021-06-20 11:13:49 +03:00
viliusle
f8689b180f color corrections code improvements 2021-06-20 01:44:01 +03:00
viliusle
3ba9005fbb #244: rendering improvements, if zoom in, sharpness is disabled and images will be rendered smoothly. 2021-06-20 01:03:04 +03:00
viliusle
8884e13a9b undo button for mobile 2021-06-20 00:31:03 +03:00
viliusle
43088b19c2 button to toggle left sidebar 2021-06-19 23:55:21 +03:00
viliusle
1c3568079d Landscape and Portrait layouts 2021-06-19 23:31:58 +03:00
viliusle
0fa15bd180 better parameters possibility on config-menu.js 2021-06-19 22:46:43 +03:00
viliusle
16f19baf47 fixed broken build 2021-06-19 21:27:09 +03:00
viliusle
e52df1c649 small fixes to brush and paint 2021-06-19 20:04:21 +03:00
viliusle
8a27ce1656 #240: borders type migrated to effects. 2021-06-19 20:04:03 +03:00
viliusle
1dab3914a2 guides small improvements 2021-06-19 17:11:17 +03:00
viliusle
7c4455f3d9 updated shapes default settings (activated borders) 2021-06-19 16:53:44 +03:00
viliusle
7e0d519e3c updated shortcuts (H fro shape, better list, also sorted) 2021-06-19 16:36:42 +03:00
viliusle
1699063904 new shapes: callout, cog, moon, tear 2021-06-19 15:58:17 +03:00
viliusle
6bb57b1590 ability to always force safe search 2021-06-13 22:16:10 +03:00
viliusle
433d702b0b editable filters (only if non-destructive) 2021-06-13 22:00:34 +03:00
viliusle
dc0c5de453 shadow filter improvements 2021-06-13 19:28:54 +03:00
viliusle
87bc43970c new translation language: English (UK) 2021-06-13 18:25:54 +03:00
viliusle
d680289719 fixed error during text drag 2021-06-11 22:41:43 +03:00
viliusle
4dcdb0fcbc npm udpate (upgrade to latest versions) 2021-06-11 22:41:11 +03:00
viliusle
928dcc218a npm update 2021-06-10 23:56:52 +03:00
viliusle
13c8912343 ability to drag directory 2021-06-10 23:43:54 +03:00
viliusle
4241260361 sprites update 2021-06-10 22:22:27 +03:00
viliusle
98730c226d shortcuts for both save and export 2021-06-10 21:53:57 +03:00
viliusle
b47682c93a trim fix 2021-06-10 21:47:31 +03:00
viliusle
6f56d1ba35 brush and undo fix 2021-06-10 21:38:02 +03:00
viliusle
4567f00493 fixed button hover color on top tools menu 2021-05-10 23:19:03 +03:00
viliusle
28dd0ffa6a updated zoom example 2021-05-10 23:05:30 +03:00
viliusle
91d2b8e9d0 #247 - vulnerability fix 2021-04-24 17:49:03 +03:00
viliusle
d9364248ef #251 - Update iframe examples to add feature policy for camera access 2021-04-24 17:33:40 +03:00
viliusle
6b7fd928f3 .gitignore update 2021-04-24 17:31:26 +03:00
viliusle
a4e4d3aef5 translations changes (order, new exclusions) 2021-04-24 17:31:26 +03:00
Vilius
5f83a58ef8
Merge pull request #252 from viliusle/dependabot/npm_and_yarn/ssri-6.0.2
Bump ssri from 6.0.1 to 6.0.2
2021-04-24 17:31:18 +03:00
viliusle
c02f662932 Greek language 2021-04-24 17:17:38 +03:00
dependabot[bot]
450c4db2e8
Bump ssri from 6.0.1 to 6.0.2
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-19 16:31:30 +00:00
viliusle
9e2cdac358 version 4.7.1 2021-04-15 21:02:59 +03:00
Vilius
d4a48230d7
Merge pull request #248 from lionel0806/master
Fix switch language error because of some strings not translation
2021-04-15 20:08:44 +03:00
lixian
08aa91d82b Fix switch language error because of some strings not translation 2021-04-15 09:24:01 +08:00
viliusle
cdc51cbfce version 4.7.0 2021-04-12 00:05:14 +03:00
viliusle
0e5bc1219c fixed file > save 2021-04-11 23:48:10 +03:00
viliusle
ad0558f71d fixed opening multiple various sizes images 2021-04-11 23:10:36 +03:00
viliusle
994552c387 ability to export multiple images with original type 2021-04-11 23:08:11 +03:00
viliusle
97872d230e fixed initial layer name 2021-04-11 22:27:57 +03:00
viliusle
d471fc41fc ability to have thick guides 2021-04-11 22:18:02 +03:00
viliusle
67aae07781 #243 - "File > new" will auto fit to screen 2021-04-11 22:08:01 +03:00
viliusle
e6901014c6 safe image search by default 2021-04-11 22:02:14 +03:00
viliusle
b346e60e90 trim fixes, it required to apply trim 2 times in some cases 2021-04-11 21:55:57 +03:00
viliusle
f0d3d06f7b more units (pixels, inches, cm, mm) 2021-04-11 21:19:06 +03:00
viliusle
ae39fd5f0b fixed few effects bugs 2021-04-06 23:12:39 +03:00
viliusle
f2cf1b6737 menu item rename (image > size, layers) 2021-04-06 21:24:14 +03:00
viliusle
ef6e45caa3 popup lib small fix () 2021-04-05 16:54:55 +03:00
viliusle
481fd5ae4c exit confirmation 2021-04-03 23:06:56 +03:00
viliusle
7e7454087a guide color update, was not clearly visible 2021-04-03 22:40:21 +03:00
viliusle
02bcee0e6a pagination on media search 2021-04-03 22:34:15 +03:00
viliusle
17b410fe44 safe search feature 2021-04-03 21:51:40 +03:00
viliusle
5ba3fbe4aa fixed loading last resolution 2021-04-03 21:50:51 +03:00
viliusle
2cd9227e4d optimized settings reading and saving. 2021-04-03 21:03:05 +03:00
viliusle
7507599d72 fixed current zoom level - was always showing 100% 2021-04-03 19:57:52 +03:00
viliusle
80ad57f7a8 fixed color on zoom button (hover state) 2021-04-03 19:55:53 +03:00
viliusle
c64af51d1c pencil tool update - removed antialiasing, brush should be used here instead 2021-04-03 19:25:55 +03:00
Vilius
ea86375ed4
Merge pull request #238 from viliusle/dependabot/npm_and_yarn/y18n-4.0.1
Bump y18n from 4.0.0 to 4.0.1
2021-04-03 18:44:41 +03:00
dependabot[bot]
7f545c5ed1
Bump y18n from 4.0.0 to 4.0.1
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 16:29:03 +00:00
Vilius
4eb75b3b26
Merge pull request #235 from viliusle/dependabot/npm_and_yarn/elliptic-6.5.4
Bump elliptic from 6.5.3 to 6.5.4
2021-03-12 23:02:05 +02:00
Vilius
4b0bf4a781
Merge pull request #234 from Giwayume/feature/google-font
Add google font search
2021-03-12 23:00:02 +02:00
viliusle
3b16567be5 fixed demo with importing image 2021-03-11 18:26:11 +02:00
viliusle
c77ce6aa54 fixed color #ffffffff handling (last commit was wrong) 2021-03-11 18:15:33 +02:00
dependabot[bot]
6c80a30e51
Bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-08 16:49:40 +00:00
viliusle
5ee74e261f fixed color #ffffffff handling 2021-03-07 23:47:18 +02:00
acer
07c03377e5 Fix for user font same as default font 2021-02-27 22:40:33 -05:00
acer
b79bf2b020 Add google font search 2021-02-27 21:46:49 -05:00
viliusle
fdaac09784 version update - 4.6.1 2021-02-23 23:00:57 +02:00
viliusle
23c9f40bda popup lib code validation 2021-02-23 22:58:04 +02:00
viliusle
d398cd7117 fixed issue with saving big image, changing name and clicking "OK" to save (was working from second OK click) 2021-02-23 22:57:39 +02:00
viliusle
5948e6bb8a #232 - fixed rotate 2021-02-23 22:08:32 +02:00
viliusle
59b19f69a8 Arabic language 2021-02-14 18:32:02 +02:00
viliusle
3f8b4f4058 #228 - completely disabled manifest 2021-02-14 18:24:29 +02:00
viliusle
0dfd4b8db3 #228 - manifest.json disabled - development on local ENV was totally broken. 2021-02-14 18:19:22 +02:00
viliusle
fa14d98d58 #228 - Web app manifests (for offline usage) 2021-02-14 17:21:17 +02:00
Vilius
5831aac2ef
Merge pull request #227 from Giwayume/feature/color-picker-dialogs
Add new color selection to popups
2021-02-14 15:55:27 +02:00
acer
8034826180 Block user from clicking in background while popup is open 2021-02-11 12:43:16 -05:00
acer
c2c21f4d54 Add abiility to have multiple popup overlays, add new color picker to popups 2021-02-11 12:24:42 -05:00
viliusle
f837b0c40c updated text modal windows 2021-02-07 19:16:49 +02:00
viliusle
7f1e7e6242 save as TIFF 2021-02-07 18:31:08 +02:00
viliusle
10dd17363e #174 - color block items reorder, toggle colros on color small preview field click 2021-02-07 17:34:15 +02:00
viliusle
6f7829ceb1 version 4.6.0 2021-01-31 18:51:48 +02:00
viliusle
6867e4edca ruler 2021-01-31 18:50:34 +02:00
viliusle
bee177d4aa fixed layer details block if layer is text 2021-01-31 15:33:05 +02:00
viliusle
f737c2779d full-screen feature 2021-01-31 15:24:16 +02:00
viliusle
4a150c7d53 Menu items update: translations moved to tools, add "View" menu 2021-01-31 15:18:36 +02:00
viliusle
203185f0ef #223 - guides 2021-01-27 00:44:35 +02:00
viliusle
f30040f359 #222 #176 ability to work with tools outside of canvas 2021-01-25 00:18:22 +02:00
viliusle
052f1ac301 "save as" changed to "save" and "export" 2021-01-24 23:26:47 +02:00
viliusle
14813e1993 Translations, strings 2021-01-24 23:00:19 +02:00
viliusle
38d334251a draw ellipse from begin to end, not from center 2021-01-24 20:45:58 +02:00
188 changed files with 21513 additions and 9412 deletions

8
.babelrc Normal file
View File

@ -0,0 +1,8 @@
{
"presets": ["@babel/preset-env"],
"plugins": [
["@babel/plugin-transform-runtime", {
"regenerator": true
}]
]
}

2
.gitignore vendored
View File

@ -13,3 +13,5 @@ nbproject/
*.log
/node_modules/
*.js.ignore

View File

@ -1,12 +1,8 @@
# miniPaint
Online image editor lets you create, edit images using HTML5 technologies.
No need to buy, download, install or have obsolete flash. No ads.
Key features: layers, filters, HTML5, open source, Photoshop alternative.
Online image editor lets you create and edit images using HTML5 technologies. No need to buy, download, install, or have outdated flash. No ads. Key features: layers, filters, open source Photoshop alternative.
miniPaint operates directly in the browser. You can create images, paste from the clipboard (ctrl+v)
or upload from the computer (using menu or drag & drop). Nothing will be sent to any server. Everything stays in your
browser.
miniPaint operates directly in the browser. You can create images by pasting from the clipboard (ctrl+v) or uploading from the computer (_using menu or drag & drop_). Nothing will be sent to any server. Everything stays in your browser.
## URL:
**https://viliusle.github.io/miniPaint/**
@ -23,27 +19,28 @@ browser.
- Opera
- Edge
- Safari
- Yandex
## Features
- **Files**: open images, directories, URL, data URL, drag and drop, save (PNG, JPG, BMP, WEBP, animated GIF, JSON
(layers data), print.
- **Edit**: Undo, cut, copy, paste, selection, paste from clipboard.
- **Image**: information, EXIF, trim, zoom, resize (Hermite resample, default resize), rotate, flip,
color corrections (brightness, contrast, hue, saturation, luminance), auto adjust colors, grid, histogram, negative.
- **Layers**: multiple layers system, differences, merge, flatten, Transparency support.
- **Effects**: Black and White, Blur (box, Gaussian, stack, zoom), Bulge/Pinch, Denoise, Desaturate, Dither, Dot Screen,
Edge, Emboss, Enrich, Gamma, Grains, GrayScale, Heatmap, JPG Compression, Mosaic, Oil, Sepia, Sharpen, Solarize,
Tilt Shift, Vignette, Vibrance, Vintage, Blueprint, Night Vision, Pencil, also Instagram Filters: 1977, Aden, Clarendon,
Gingham, Inkwell, Lo-fi, Toaster, Valencia, X-Pro II.
- **Tools**: pencil, brush, magic wand, erase, fill, color picker, letters, crop, blur, sharpen, desaturate, clone,
borders, sprites, key-points, color zoom, replace color, restore alpha, content fill.
- **Help**: keyboard shortcuts, translations.
**Files**: open images, directories, URLs, data URLs, drag and drop, save (PNG, JPG, BMP, WEBP, animated GIF, TIFF, JSON (layers data), print.
**Edit**: undo, cut, copy, paste, selection, paste from the clipboard.
**Image**: information, EXIF, trim, zoom, resize (Hermite resample, default resize), rotate, flip, color corrections (brightness, contrast, hue, saturation, luminance), automatic color adjustment, grid, histogram, negative.
**Layers**: multi-layer system, differences, merging, flattening, transparency support.
**Effects**: black and white, blur (box, gaussian, stack, zoom), bulge/pinch, denoise, desaturation, dither, dot screen, edge, emboss, enrich, gamma, grains, grayscale, heatmap, jpg compression, mosaic, oil, sepia, sharpen, solarize, tilt shift, vignette, vibrance, vintage, blueprint, night vision, pencil, also instagram filters: 1977, aden, clarendon, gingham, inkwell, lo-fi, toaster, valencia, x-pro ii.
**Tools**: pencil, brush, magic wand, eraser, fill, color picker, letter, crop, blur, sharpener, desaturation, clone, borders, sprites, keypoints, color zoom, change color, restore transparency, content fill.
**Help**: keyboard shortcuts, translation.
## Embed
To embed this app in the other page, use this HTML code:
To embed this app on another page, use the following HTML code:
<iframe style="width:100%; height:1000px;" id="miniPaint" src="https://viliusle.github.io/miniPaint/"></iframe>
<iframe style="box-sizing:border-box; width:100%; height:100vh;" id="miniPaint" src="https://viliusle.github.io/miniPaint/" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
## Build instructions
See [Wiki > Build instructions](https://github.com/viliusle/miniPaint/wiki/Build-instructions)
@ -51,8 +48,13 @@ See [Wiki > Build instructions](https://github.com/viliusle/miniPaint/wiki/Build
## Wiki
See [Wiki](https://github.com/viliusle/miniPaint/wiki)
## Contributors
<a align="center" href="https://github.com/viliusle/miniPaint/graphs/contributors">
<img src="https://contrib.rocks/image?repo=viliusle/miniPaint" />
</a>
## License
MIT License
## Support
Please use the GitHub issues for support, features, issues or use mail www.viliusl@gmail.com for contacts.
Please use the GitHub issues for support, feature requests and bug reports, or contact us by sending an email to www.viliusl@gmail.com.

15
SECURITY.md Normal file
View File

@ -0,0 +1,15 @@
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| latest | :white_check_mark: |
| < latest | :x: |
## Reporting a Vulnerability
Please send details to www.viliusl@gmail.com

72
dist/bundle.js vendored

File diff suppressed because one or more lines are too long

47
dist/bundle.js.LICENSE.txt vendored Normal file
View File

@ -0,0 +1,47 @@
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/*!
pica
https://github.com/nodeca/pica
*/
/*!
* Block below copied from Protovis: http://mbostock.github.com/protovis/
* Copyright 2010 Stanford Visualization Group
* Licensed under the BSD License: http://www.opensource.org/licenses/bsd-license.php
* @license
*/
/*!
* jQuery JavaScript Library v3.7.1
* https://jquery.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2023-08-28T13:37Z
*/
/*!
* quantize.js Copyright 2008 Nick Rabinowitz.
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
* @license
*/
/*! alertifyjs - v1.13.1 - Mohammad Younes <Mohammad@alertifyjs.com> (http://alertifyjs.com) */
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
/**
* hermite-resize - Canvas image resize/resample using Hermite filter with JavaScript.
* @version v2.2.10
* @link https://github.com/viliusle/miniPaint
* @license MIT
*/

2
dist/bundle.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"bundle.js","sources":["webpack:///bundle.js"],"mappings":"AAAA;;;;;;;;;;;;;AA+wMA;;;;;;;;;;;AAogBA;;;;;;;;;;;;;;;;;;;AAmp7CA;;;;;;;;;;;;AAyKA;;;;;;;AA4/BA;;;;;;AAm8CA","sourceRoot":""}
{"version":3,"file":"bundle.js","sources":["webpack://miniPaint/bundle.js"],"mappings":";AAAA","sourceRoot":""}

View File

@ -1,7 +1,7 @@
<html>
<body style="margin:0;">
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../"></iframe>
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../" allow="camera"></iframe>
<script>
window.addEventListener('load', function (e) {

View File

@ -1,7 +1,7 @@
<html>
<body style="margin:0;">
<iframe id="myFrame" style="width:100%;height:70vh;border:0;" src="../"></iframe>
<iframe id="myFrame" style="width:100%;height:70vh;border:0;" src="../" allow="camera"></iframe>
<div style="height:20vh;margin:10px;">
Click on image to edit.

View File

@ -1,56 +1,70 @@
<html>
<body style="margin:0;">
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../"></iframe>
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../" allow="camera"></iframe>
<script>
window.addEventListener('load', function (e) {
main();
}, false);
function main() {
async function main() {
var Layers = document.getElementById('myFrame').contentWindow.Layers;
var config = document.getElementById('myFrame').contentWindow.AppConfig;
var canvas_width = 800;
var canvas_height = 600;
//set size
Layers.Base_gui.set_size(1000, 1000);
Layers.Base_gui.set_size(canvas_width, canvas_height);
//add rectangle
this.layer = {
name: 'layer1',
type: 'rectangle',
params: {fill: true, size: 2 },
params: {
fill: true,
square: false,
border_size: 2,
border: false,
border_color: "#1b1bd8",
fill_color: "#1b1bd8"
},
color: '#ff0000',
render_function: ['rectangle', 'render'],
x: 500,
y: 500,
x: canvas_width/2 - 25,
y: canvas_height/2 - 25,
width: 50,
height: 50,
};
Layers.insert(this.layer);
await Layers.insert(this.layer);
//zoom to 500%
Layers.Base_gui.GUI_preview.zoom(500); //change zoom power
setTimeout(function () {
Layers.Base_gui.GUI_preview.zoom_to_position(0, 0);
Layers.Base_gui.GUI_preview.zoom(500);
}, 100);
//do this after system changed zoom position
setTimeout(function () {
//move visible area to begin of rectangle
Layers.Base_gui.GUI_preview.zoom_to_position(500, 500); //change zoom position
}, 200);
}, 500);
//action after 1 s - for preview purpose
setTimeout(function () {
//move visible area so rect is in center
var visible_area = Layers.Base_gui.get_visible_area_size();
//center of rect
var cx = 500 + 50/2;
var cy = 500 + 50/2;
var cx = canvas_width/2;
var cy = canvas_height/2;
//calc needed coords
var x = cx - visible_area.width / 2;
var y = cy - visible_area.height / 2;
Layers.Base_gui.GUI_preview.zoom_to_position(x, y); //change zoom position
}, 1000);
}

View File

@ -0,0 +1,5 @@
<svg width="124" height="150" viewBox="0 0 124 150" xmlns="http://www.w3.org/2000/svg">
<rect x="55" y="14" width="14" height="63"/>
<rect x="116" width="14" height="61" transform="rotate(90 116 0)"/>
<path d="M62 150L8.30643 75L115.694 75L62 150Z"/>
</svg>

After

Width:  |  Height:  |  Size: 258 B

1
images/icons/undo.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M18.885 3.515c-4.617-4.618-12.056-4.676-16.756-.195l-2.129-2.258v7.938h7.484l-2.066-2.191c2.82-2.706 7.297-2.676 10.073.1 4.341 4.341 1.737 12.291-5.491 12.291v4.8c3.708 0 6.614-1.244 8.885-3.515 4.686-4.686 4.686-12.284 0-16.97z"/></svg>

After

Width:  |  Height:  |  Size: 330 B

BIN
images/manifest/144x144.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
images/manifest/168x168.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
images/manifest/192x192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
images/manifest/48x48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
images/manifest/72x72.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
images/manifest/96x96.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,11 +1,16 @@
{
"info": {
"width": 1000,
"height": 700,
"height": 750,
"about": "Image data with multi-layers. Can be opened using miniPaint - https://github.com/viliusle/miniPaint",
"date": "2021-01-02",
"version": "4.5.0",
"layer_active": 1
"date": "2021-06-16",
"version": "4.7.1",
"layer_active": 1,
"guides": [
{ "x": null, "y": 400},
{ "x": null, "y": 600},
{ "x": null, "y": 650}
]
},
"layers": [
{
@ -63,7 +68,7 @@
"opacity": 100,
"order": 2,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": null,
"params": {
"size": 45,
@ -119,7 +124,7 @@
"opacity": 100,
"order": 3,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": null,
"params": {
"size": 30,
@ -175,7 +180,7 @@
"opacity": 100,
"order": 4,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": [
[
{
@ -346,7 +351,7 @@
"opacity": 100,
"order": 5,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": [
[
{
@ -394,7 +399,7 @@
"opacity": 100,
"order": 6,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": [
[
{
@ -442,7 +447,7 @@
"opacity": 100,
"order": 7,
"composition": "source-over",
"rotate": null,
"rotate": 0,
"data": [
[
{
@ -696,7 +701,7 @@
"y": 0,
"width": 1000,
"width_original": null,
"height": 700,
"height": 750,
"height_original": null,
"visible": true,
"is_vector": false,
@ -707,7 +712,7 @@
"rotate": 0,
"data": null,
"params": {
"size": 7,
"size": 15,
"shadow": false
},
"status": null,
@ -1579,6 +1584,220 @@
"human",
"render"
]
},
{
"id": 43,
"parent_id": 0,
"name": "Cog",
"type": "cog",
"link": null,
"x": 50,
"y": 650,
"width": 77,
"width_original": null,
"height": 77,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": false,
"opacity": 100,
"order": 43,
"composition": "source-over",
"rotate": 0,
"data": null,
"params": {
"fill_color": "#555555"
},
"status": null,
"color": null,
"filters": [],
"render_function": [
"cog",
"render"
]
},
{
"id": 44,
"parent_id": 0,
"name": "Tear",
"type": "tear",
"link": null,
"x": 140,
"y": 650,
"width": 61,
"width_original": null,
"height": 76.25,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": false,
"opacity": 100,
"order": 44,
"composition": "source-over",
"rotate": 0,
"data": null,
"params": {
"border_size": 4,
"border": true,
"fill": true,
"border_color": "#555555",
"fill_color": "#aaaaaa"
},
"status": null,
"color": null,
"filters": [],
"render_function": [
"tear",
"render"
]
},
{
"id": 45,
"parent_id": 0,
"name": "Moon",
"type": "moon",
"link": null,
"x": 220,
"y": 650,
"width": 58,
"width_original": null,
"height": 72.5,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": false,
"opacity": 100,
"order": 45,
"composition": "source-over",
"rotate": 0,
"data": null,
"params": {
"border_size": 4,
"border": true,
"fill": true,
"border_color": "#555555",
"fill_color": "#aaaaaa"
},
"status": null,
"color": null,
"filters": [],
"render_function": [
"moon",
"render"
]
},
{
"id": 46,
"parent_id": 0,
"name": "Callout",
"type": "callout",
"link": null,
"x": 300,
"y": 650,
"width": 81.60000000000001,
"width_original": null,
"height": 69,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": false,
"opacity": 100,
"order": 46,
"composition": "source-over",
"rotate": 0,
"data": null,
"params": {
"border_size": 4,
"border": true,
"fill": true,
"border_color": "#555555",
"fill_color": "#aaaaaa"
},
"status": null,
"color": null,
"filters": [],
"render_function": [
"callout",
"render"
]
},
{
"id": 48,
"parent_id": 0,
"name": "Bezier_curve #48",
"type": "bezier_curve",
"link": null,
"x": 0,
"y": 0,
"width": null,
"width_original": null,
"height": null,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": true,
"opacity": 100,
"order": 48,
"composition": "source-over",
"rotate": null,
"data": {
"start": {"x": 400, "y": 660.5},
"cp1": {"x": 477.5, "y": 661.5},
"cp2": {"x": 400, "y": 708},
"end": {"x": 480, "y": 707.5}
},
"params": {
"size": 4
},
"status": null,
"color": "#ff0000",
"filters": [],
"render_function": [
"bezier_curve",
"render"
]
},
{
"id": 49,
"parent_id": 0,
"name": "Polygon #49",
"type": "polygon",
"link": null,
"x": 0,
"y": 0,
"width": null,
"width_original": null,
"height": null,
"height_original": null,
"visible": true,
"is_vector": true,
"hide_selection_if_active": true,
"opacity": 100,
"order": 49,
"composition": "source-over",
"rotate": null,
"data": [
{"x": 950, "y": 551},
{"x": 950, "y": 599},
{"x": 900, "y": 599},
{"x": 935, "y": 586},
{"x": 915, "y": 533.2}
],
"params": {
"size": 4,
"border_size": 4,
"border": true,
"fill": true,
"border_color": "#555555",
"fill_color": "#aaaaaa"
},
"status": "draft",
"color": "#ff0000",
"filters": [],
"render_function": [
"polygon",
"render"
]
}
],
"data": [

View File

@ -8,6 +8,7 @@
<meta name="keywords" content="photo, image, picture, transparent, layers, free, edit, html5, canvas, javascript, online, photoshop, gimp, effects, sharpen, blur, magic eraser tool, clone tool, rotate, resize, photoshop online, online tools, tilt shift, sprites, keypoints" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0" />
<link rel="icon" sizes="192x192" href="images/favicon.png">
<!-- <link rel="manifest" href="dist/manifest.json"> -->
<!-- Google -->
<meta itemprop="name" content="miniPaint" />
<meta itemprop="description" content="miniPaint is free online image editor using HTML5. Edit, adjust your images, add effects online in your browser, without installing anything..." />
@ -36,19 +37,29 @@
<div class="submenu">
<a class="logo" href="#">miniPaint</a>
<div class="block attributes" id="action_attributes"></div>
<button class="undo_button" id="undo_button" type="button">
<span class="sr_only">Undo</span>
</button>
</div>
<div class="sidebar_left" id="tools_container"></div>
<div class="main_wrapper" id="main_wrapper">
<div class="canvas_wrapper" id="canvas_wrapper">
<div id="mouse"></div>
<div class="transparent-grid" id="canvas_minipaint_background"></div>
<canvas id="canvas_minipaint">
<div class="trn error">
Your browser does not support canvas or JavaScript is not enabled.
</div>
</canvas>
<div class="middle_area" id="middle_area">
<canvas class="ruler_left" id="ruler_left"></canvas>
<canvas class="ruler_top" id="ruler_top"></canvas>
<div class="main_wrapper" id="main_wrapper">
<div class="canvas_wrapper" id="canvas_wrapper">
<div id="mouse"></div>
<div class="transparent-grid" id="canvas_minipaint_background"></div>
<canvas id="canvas_minipaint">
<div class="trn error">
Your browser does not support canvas or JavaScript is not enabled.
</div>
</canvas>
</div>
</div>
</div>
@ -70,7 +81,7 @@
<div class="details block" id="details_base">
<h2 class="trn toggle toggle-full" data-target="toggle_details">Layer details</h2>
<div class="content" id="toggle_details"></div>
<div class="content details-content" id="toggle_details"></div>
</div>
<div class="layers block">
@ -80,11 +91,14 @@
</div>
</div>
<div class="mobile_menu">
<button class="left_mobile_menu" id="left_mobile_menu_button" type="button">
<span class="sr_only">Toggle Menu</span>
</button>
<button class="right_mobile_menu" id="mobile_menu_button" type="button">
<span class="sr_only">Toggle Menu</span>
</button>
</div>
<div class="hidden" id="tmp"></div>
<div id="popup"></div>
<div id="popups"></div>
</body>
</html>

41
manifest-disabled.json Normal file
View File

@ -0,0 +1,41 @@
{
"name": "miniPaint",
"short_name": "miniPaint",
"start_url": "/",
"display": "standalone",
"orientation": "landscape",
"background_color": "#666d6f",
"description": "miniPaint is free online image editor using HTML5.",
"icons": [
{
"src": "images/manifest/48x48.png",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "images/manifest/72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "images/manifest/96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "images/manifest/144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "images/manifest/168x168.png",
"sizes": "168x168",
"type": "image/png"
},
{
"src": "images/manifest/192x192.png",
"sizes": "192x192",
"type": "image/png"
}
]
}

16042
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "miniPaint",
"version": "4.5.0",
"version": "4.14.2",
"author": "Vilius L.",
"description": "Online graphics editing tool lets create, edit images using HTML5 technologies.",
"keywords": [
@ -11,7 +11,7 @@
"effects"
],
"scripts": {
"server": "webpack-dev-server --mode development --open",
"server": "webpack serve --mode development --env development --open",
"dev": "webpack --mode development",
"build": "webpack --mode production"
},
@ -22,27 +22,29 @@
"homepage": "https://github.com/viliusle/miniPaint",
"license": "MIT",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"css-loader": "^3.6.0",
"source-map-loader": "^0.2.4",
"style-loader": "^0.21.0",
"webpack": "^4.44.2",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"
"@babel/core": "^7.14.5",
"@babel/plugin-transform-runtime": "^7.14.5",
"@babel/preset-env": "^7.14.5",
"babel-loader": "^8.2.2",
"css-loader": "^5.2.6",
"source-map-loader": "^3.0.0",
"style-loader": "^2.0.0",
"webpack": "^5.76.0",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^4.3.1"
},
"dependencies": {
"@babel/runtime": "^7.14.5",
"alertifyjs": "^1.13.1",
"babel-polyfill": "^6.26.0",
"blueimp-canvas-to-blob": "^3.28.0",
"exif-js": "^2.3.0",
"file-saver": "^1.3.3",
"file-saver": "^2.0.5",
"fuzzysort": "^1.1.4",
"gif.js.optimized": "^1.0.1",
"hermite-resize": "git+https://github.com/viliusle/Hermite-resize.git",
"jquery": "^3.5.1",
"pica": "^5.3.0",
"terser": "^3.17.0",
"pica": "^7.0.0",
"semver-compare": "^1.0.0",
"uuid": "^8.3.2",
"webfontloader": "^1.6.28"
}

68
service-worker.js Normal file
View File

@ -0,0 +1,68 @@
//IMPORTANT - this file is not used !!!
// use a cacheName for cache versioning
var cacheName = 'v1:static';
// during the install phase you usually want to cache static assets
self.addEventListener('install', function(e) {
// once the SW is installed, go ahead and fetch the resources to make this work offline
e.waitUntil(
caches.open(cacheName).then(function(cache) {
return cache.addAll([
'./',
'./dist/bundle.js',
'./images/favicon.png',
'./images/logo.svg',
'./images/logo-colors.png',
'./images/icons/animation.svg',
'./images/icons/blur.svg',
'./images/icons/bold.svg',
'./images/icons/brush.svg',
'./images/icons/bulge_pinch.svg',
'./images/icons/clone.svg',
'./images/icons/crop.svg',
'./images/icons/delete.svg',
'./images/icons/desaturate.svg',
'./images/icons/erase.svg',
'./images/icons/external.png',
'./images/icons/fill.svg',
'./images/icons/gradient.png',
'./images/icons/grid.png',
'./images/icons/italic.svg',
'./images/icons/magic_erase.svg',
'./images/icons/media.svg',
'./images/icons/menu.svg',
'./images/icons/pencil.svg',
'./images/icons/pick_color.svg',
'./images/icons/refresh.svg',
'./images/icons/select.svg',
'./images/icons/selection.svg',
'./images/icons/shape.svg',
'./images/icons/sharpen.svg',
'./images/icons/strikethrough.svg',
'./images/icons/text.svg',
'./images/icons/underline.svg',
'./images/icons/view.svg'
]).then(function() {
self.skipWaiting();
});
})
);
});
// when the browser fetches a url
self.addEventListener('fetch', function(event) {
// either respond with the cached object or go ahead and fetch the actual url
event.respondWith(
caches.match(event.request).then(function(response) {
if (response) {
// retrieve from cache
return response;
}
// fetch as normal
return fetch(event.request);
})
);
});

View File

@ -692,4 +692,41 @@ button img{
.ui_toggle_button[aria-pressed="true"]:before {
background-color: var(--button-text-color-active);
background-image: url('data:image/svg+xml;utf8,<svg width="0.7em" height="1em" viewBox="0 0 16 16" class="bi bi-check2" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg>');
}
/* media */
.media-paging{
width: 100%;
margin: 10px 0;
text-align: center;
}
.media-paging button{
background-color: var(--button-background-color);
color: var(--text-color);
}
.media-paging button.selected{
background-color: var(--background-color-active);
color: var(--text-color-active);
}
/* global search */
#global_search_results{
padding-top: 10px;
font-size: 14px;
}
#global_search_results .search-result {
padding: 3px 5px;
}
#global_search_results .search-result.active{
background-color: var(--background-color-active);
color: var(--text-color-active);
border-radius: 2px;
}
#global_search_results b{
color: var(--text-color-red);
}
.popup.shortcuts table{
line-height: 1;
}

View File

@ -174,6 +174,27 @@ body .sp-preview{
font-size:15px;
font-weight:bold;
}
.undo_button {
display: none;
width: 50px;
height: 50px;
top: 0;
border: 0;
outline: none;
cursor: pointer;
filter: var(--mobile-menu-toggle-filter);
background: url(images/icons/undo.svg) no-repeat center center;
background-size: auto 25px;
margin-left: 10px;
}
.undo_button:hover {
background-color: transparent;
}
@media screen and (max-width: 700px){
.undo_button {
display: block;
}
}
/* ========== sub-header ==================================================== */
@ -278,6 +299,9 @@ body .sp-preview{
filter: var(--menu-icons-filter-active);
}
/*
IMPORTANT: any new icon should also must be added on /service-worker.js + its version should be updated - FEATURE DISABLED
*/
.sidebar_left .select:after{ background-image: url('images/icons/select.svg'); }
.sidebar_left .selection:after{ background-image: url('images/icons/selection.svg'); }
.sidebar_left .brush:after{ background-image: url('images/icons/brush.svg'); }
@ -288,15 +312,8 @@ body .sp-preview{
.sidebar_left .fill:after{ background-image: url('images/icons/fill.svg'); }
.sidebar_left .media:after{ background-image: url('images/icons/media.svg'); }
.sidebar_left .shape:after{ background-image: url('images/icons/shape.svg'); }
.sidebar_left .text:after{
background-image: url('images/icons/text.svg');
background-size: 16px auto;
}
.sidebar_left .gradient:after{
background-image: url('images/icons/gradient.png');
background-size: 18px 12px;
filter: none;
}
.sidebar_left .text:after{ background-image: url('images/icons/text.svg'); background-size: 16px auto; }
.sidebar_left .gradient:after{ background-image: url('images/icons/gradient.png'); background-size: 18px 12px; filter: none; }
.sidebar_left .clone:after{ background-image: url('images/icons/clone.svg'); }
.sidebar_left .crop:after{ background-image: url('images/icons/crop.svg'); }
.sidebar_left .blur:after{ background-image: url('images/icons/blur.svg'); }
@ -320,8 +337,6 @@ body .sp-preview{
z-index: 2;
display: flex;
flex-direction: column;
background-color: #424F5A;
background-color: var(--background-color);
transition: 0.2s;
overflow-x: hidden;
overflow-y: scroll;
@ -347,6 +362,9 @@ body .sp-preview{
.canvas_preview_details{
padding: 0 5px;
}
.canvas_preview_details button{
margin: 0;
}
.preview canvas{
cursor: pointer;
}
@ -381,6 +399,7 @@ body .sp-preview{
.layer_add{
display:inline-block;
padding:1px 8px;
margin-right: 10px;
background-color: #419147;
background-color: var(--background-color-active);
border:1px solid #444;
@ -396,6 +415,8 @@ body .sp-preview{
display:block;
padding:1px 5px 3px 5px;
height:19px;
width: calc(100% - 44px);
text-align: left;
overflow:hidden;
background-color:#989898;
background-color: var(--area-background-color);
@ -408,10 +429,32 @@ body .sp-preview{
color:var(--text-color);
white-space: nowrap;
}
.layers_list .item.shorter .layer_name{
width: calc(100% - 63px);
}
.layers_list .item.active .layer_name{
background-color: var(--background-color-active);
color: var(--text-color-active);
}
.layers_list .arrow_down{
position: relative;
float:left;
margin-right: 5px;
width:10px;
height:19px;
opacity: 0.4;
}
.layers_list .arrow_down:after{
position: absolute;
content: '';
left:0;
top:0;
bottom:0;
right:0;
filter: var(--menu-icons-filter);
background: url('images/icons/arrow-down.svg') no-repeat center center;
background-size: 12px auto;
}
.layers_list .visibility{
position: relative;
float:left;
@ -421,6 +464,9 @@ body .sp-preview{
width:20px;
height:19px;
opacity:0.1;
border: none;
background: transparent;
box-shadow: none;
}
.layers_list .visibility:after{
position: absolute;
@ -441,8 +487,10 @@ body .sp-preview{
width:12px;
height:19px;
margin-left: 5px;
background: url(images/icons/delete.svg) no-repeat center center;
background: transparent url(images/icons/delete.svg) no-repeat center center;
background-size: 10px 10px;
border: none;
box-shadow: none;
}
/* filters */
.layers_list .filters{
@ -466,22 +514,36 @@ body .sp-preview{
}
.sidebar_right .label{
display: inline-block;
width: 60px;
}
.info .toggle.toggled{
margin-bottom: -3px;
}
.block.details .row{
clear:both;
margin-bottom: 2px;
margin-bottom: 4px;
min-height: 23px;
}
.block.details input[type="number"]{
width: 70px;
padding: 3px 5px;
float: right;
}
.block.details .ui_color_input{
width: 70px;
float: right;
}
.block.details .ui_color_input input{
width: 100%;
height: 23px;
}
.block.details button.ui_toggle_button{
width: 90px;
float: right;
}
.block.details select{
width: calc(100% - 70px);
height: 23px;
float: right;
}
.block.details button{
width: calc(100% - 70px);
@ -491,6 +553,8 @@ body .sp-preview{
.block.details button.reset{
position: relative;
width: 25px;
float: right;
margin-right: 3px;
overflow: hidden;
opacity: 0.5;
color: transparent;
@ -510,8 +574,28 @@ body .sp-preview{
background-color: var(--background-color-active);
color: var(--text-color-active);
}
.details-content{
height: 206px;
overflow-y: auto;
}
@media screen and (max-width:700px){
body{
padding-top:50px;
}
.wrapper{
top: 50px;
}
.sidebar_left{
position: absolute;
left: -90px;
background: var(--background);
}
.sidebar_left.active{
box-shadow: -5px 0px 10px 0px rgba(0,0,0,0.75);
left: 0;
z-index: 3;
}
.sidebar_right{
position: absolute;
height: 100%;
@ -527,15 +611,41 @@ body .sp-preview{
/* ========== content ======================================================= */
.main_wrapper{
.ruler_left{
display: none;
position: absolute;
left:0;
top: 20px;
background-color: #ccc;
}
.ruler_top{
display: none;
position: absolute;
left: 20px;
top:0;
background-color: #ccc;
}
.middle_area{
position: relative;
-ms-grid-row: 2;
-ms-grid-column: 2;
grid-area: main;
}
.main_wrapper{
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
.middle_area.has-ruler .main_wrapper{
top: 20px;
left: 20px;
}
.canvas_wrapper{
position:relative;
}
@ -569,13 +679,7 @@ body .sp-preview{
/*background: url(images/icons/grid.png) repeat top left;*/
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAQElEQVQ4T2N89+7dfwYigKCgIBGqGBgYRw3EGU6jYYgzaIZAsvn//z9ROeX9+/fE5ZRRA3GG02gY4s4pgz7ZAAAnSWvHPkHXaAAAAABJRU5ErkJggg==') repeat top left;
z-index:1;
/* disable antialiasing */
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: -o-crisp-edges;
image-rendering: pixelated;
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated; /* disable antialiasing */
}
.transparent-grid.white{
background:white;
@ -624,20 +728,12 @@ canvas{
background-color: #ddd;
}
@media screen and (max-width:700px){
body{
padding-top:50px;
}
.wrapper{
top: 50px;
}
}
@media screen and (max-width:550px){
.canvas_wrapper{
margin-left: 0px;
}
}
@media screen and (max-height: 740px){
@media screen and (max-height: 690px){
.sidebar_left{
width: 75px;
}

View File

@ -194,12 +194,9 @@
.mobile_menu {
display: block;
}
.left_mobile_menu {
display: none;
}
.main_menu > ul.menu_bar {
height: 50px;
padding-left: 0;
padding-left: 50px;
padding-right: 50px;
}
}

View File

@ -1,4 +1,11 @@
#popup {
#popups:not(:empty) {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
#popups .popup {
position:fixed;
display:none;
top: 15vh;
@ -18,13 +25,13 @@
font-size: 13px;
overflow: hidden;
}
#popup.wide{
#popups .popup.wide{
max-width: 840px;
}
#popup a{
#popups .popup a{
color: var(--link-color);
}
#popup h2{
#popups .popup h2{
display: block;
position: absolute;
top: 0;
@ -40,12 +47,12 @@
z-index: 0;
cursor:move;
}
#popup #dialog_content {
#popups .popup .dialog_content {
overflow-y: auto;
max-height: calc(80vh - 9rem);
max-height: calc(80vh - 11rem);
padding: 1rem;
}
#popup .buttons{
#popups .popup .buttons{
position: absolute;
background-color: var(--block-background-color);
bottom: 0;
@ -59,7 +66,7 @@
border-top: 1px solid var(--header-background-color);
z-index: 3;
}
#popup .close{
#popups .popup .close{
position: absolute;
right: 0;
top: 0;
@ -73,32 +80,32 @@
background: none;
z-index: 1;
}
#popup input[type="range"]{
#popups .popup input[type="range"]{
margin:0;
width: 100%;
}
#popup table{
#popups .popup table{
box-sizing: border-box;
width: 100%;
}
#popup td, #popup th{
#popups .popup td, #popups .popup th{
height: 25px;
}
#popup td{
#popups .popup td{
vertical-align: middle;
}
#popup th{
#popups .popup th{
text-align:left;
padding: 5px 5px 5px 0;
width: 130px;
}
#popup textarea{
#popups .popup textarea{
color: var(--input-text-color);
width:100%;
border:1px solid #393939;
padding-left:5px;
}
#popup .button{
#popups .popup .button{
margin: 0 3px;
background-color: rgba(255, 255, 255, 0.2);
background-color: var(--button-background-color);
@ -107,85 +114,158 @@
border:1px solid var(--border-color);
padding: 5px 10px;
}
#popup input[type="text"], #popup input[type="number"], #popup textarea{
#popups .popup input[type="text"], #popups .popup input[type="number"], #popups .popup textarea{
width:100%;
}
#popup input[type="number"]{
#popups .popup input[type="number"]{
width:100px;
}
#popup input[type="radio"], #popup input[type="checkbox"]{
#popups .popup input[type="radio"], #popups .popup input[type="checkbox"]{
margin-left: 0;
}
#popup label span{
#popups .popup label span{
color:var(--text-color-muted);
}
#popup .checkbox label{
#popups .popup .checkbox label{
margin-top: 5px;
color:var(--text-color-muted);
}
#popup .preview_container{
#popups .popup .preview_container{
margin-top:10px;
margin-bottom:15px;
text-align: center;
}
#popup .preview_canvas_left{
#popups .popup .preview_canvas_left{
position:relative;
margin:0 5px 5px 0;
border:1px solid #393939;
display: inline-block;
vertical-align: top;
}
#popup .preview_canvas_post_back{
#popups .popup .preview_canvas_post_back{
position:absolute;
border:1px solid #393939;
background-color:#ffffff;
}
#popup .preview_canvas_post{
#popups .popup .preview_canvas_post{
position:relative;
border:1px solid #393939;
}
#popup .canvas_preview_container{
#popups .popup .canvas_preview_container{
position:relative;
display: inline-block;
vertical-align: top;
}
#popup .radios label{
#popups .popup .radios label{
display: inline-block;
margin-right: 10px;
}
#popup .range_value{
#popups .popup .range_value{
padding-left:10px;
width:50px;
}
#popup .long_text_value{
#popups .popup .long_text_value{
font-size: 12px;
}
#popup .preview-item-title{
#popups .popup .preview-item-title{
text-align: center;
max-width: 150px;
}
#popups .popup .field_comment{
display: inline-block;
margin-left: 10px;
opacity: 0.5;
}
#popups .popup .selection_card {
background: var(--input-background-color);
display: block;
width: 100%;
padding: 0;
border-bottom: 0.1rem solid var(--input-border-color);
overflow: hidden;
position: relative;
}
#popups .popup .selection_card:first-child {
margin-top: 1rem;
border-radius: var(--input-border-radius) var(--input-border-radius) 0 0;
}
#popups .popup .selection_card:last-child {
border-radius: 0 0 var(--input-border-radius) var(--input-border-radius);
border-bottom: none;
}
#popups .popup .selection_card > input[type="checkbox"] {
flex-grow: 0;
flex-shrink: 0;
margin: 0;
cursor: pointer;
position: absolute;
top: 50%;
left: 1.5rem;
transform: translateY(-50%) scale(1.5);
}
#popups .popup .selection_card > input[type="checkbox"] + label {
display: block;
width: 100%;
flex-grow: 1;
flex-shrink: 1;
margin: 0;
padding: 1rem 0.5rem 1rem 5.5rem;
cursor: pointer;
}
#popups .popup .selection_card > input[type="checkbox"] + label:hover {
background: var(--input-background-color-hover);
}
#popups .popup .selection_card .font_preview {
font-size: 1.6rem;
height: 2.5rem;
line-height: 2.5rem;
white-space: nowrap;
}
#popups .popup .pagination {
display: flex;
text-align: center;
margin: 1rem 0 0 0;
}
#popups .popup .pagination button {
flex-grow: 0;
height: 2.8rem;
line-height: 2.8rem;
border-radius: 0;
margin-left: -1px;
min-width: 3.3rem;
}
#popups .popup .pagination button:first-child {
border-radius: var(--button-border-radius) 0 0 var(--button-border-radius);
margin-left: auto;
}
#popups .popup .pagination button:last-child {
border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;
margin-right: auto;
}
@media screen and (max-width:500px){
#popup {
#popups .popup {
max-height: calc(80vh - 20px); /* mobile phones has bottom menu */
}
#popup tr{
#popups .popup tr{
display: block;
margin-bottom: 10px;
}
#popup td, #popup th{
#popups .popup td, #popups .popup th{
display: block;
width: 100%;
height: auto;
padding: 5px;
}
#popup th{
#popups .popup th{
padding: 5px 5px 0px 5px;
}
#popup td{
#popups .popup td{
padding: 5px 5px 5px 5px;
}
#popup .range_value{
#popups .popup .range_value{
display: none;
}
}

View File

@ -12,13 +12,15 @@
--block-background-color: #464d4f;
--header-background-color: #373d3f;
--button-background-color: #2f3739;
--button-background-color-hover: #575f62;
--button-background-color-hover: #75df72;
--button-background-color-active: #4d5153;
--button-shadow-color: rgba(0, 0, 0, 0.3);
--button-text-color-active: #adecab;
--button-border-radius: .4rem;
--button-toggle-background-color: #575f62;
--button-toggle-background-color-hover: #575f62;
--input-background-color: #2f3739;
--input-background-color-hover: #383f44;
--input-text-color: #f4f3f3;
--input-border-color: #0f0f0f;
--input-border-color-active: #70996e;
@ -56,7 +58,9 @@ body.theme-light{
--button-text-color-active: #59aed8;
--button-shadow-color: rgba(0, 0, 0, 0.1);
--button-toggle-background-color: #b7b7b7;
--button-toggle-background-color-hover: #b7b7b7;
--input-background-color: #ffffff;
--input-background-color-hover: #ddd;
--input-text-color: #0c0c0d;
--input-border-color: #ccc;
--input-border-color-active: #59aed8;
@ -90,7 +94,9 @@ body.theme-green{
--button-background-color-active:#2b460f;
--button-text-color-active: #ccc;
--button-toggle-background-color: #243e05;
--button-toggle-background-color-hover: #243e05;
--input-background-color: #ffffff;
--input-background-color-hover: #ddd;
--input-text-color: #0c0c0d;
--input-border-color: #ccc;
--menu-background-color: #1c2e04;
@ -114,14 +120,12 @@ html {
font-size: 10px; /* Base is 10px for easy REM calculation */
}
body{
margin: 0px;
padding: 0px;
padding-top: 30px;
margin: 0;
padding: 30px 0 0 0;
background-color: #424F5A;
background: var(--background);
font-size: 1.3rem;
font-family: Arial, Helvetica, sans-serif;
color: #000000;
color: var(--text-color);
line-height: 1.4;
font-weight: normal;
@ -131,19 +135,9 @@ canvas{
outline: none;
/* disable select canvas */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
/* disable antialiasing */
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: -o-crisp-edges;
image-rendering: pixelated;
-ms-interpolation-mode: nearest-neighbor;
}
img{
border: none;
@ -179,7 +173,7 @@ select{
padding: 2px 4px;
}
input[type="range"]{
margin-left:0px;
margin-left: 0;
width:100%;
}
button, input[type="button"]{
@ -188,7 +182,7 @@ button, input[type="button"]{
cursor: pointer;
border: 1px solid var(--border-color);
background-color: var(--button-background-color);
color: var(--color-text);
color: var(--text-color);
}
button:hover, input[type="button"]:hover{
background-color: var(--button-background-color-hover);
@ -204,6 +198,9 @@ button[aria-pressed="true"], input[type="button"][aria-pressed="true"]{
button[aria-pressed="true"]:hover, input[type="button"][aria-pressed="true"]:hover{
background-color: var(--button-background-color-hover);
}
button.ui_toggle_button:hover{
background-color: var(--button-toggle-background-color-hover);
}
label{
display: inline-block;
vertical-align: top;
@ -227,6 +224,7 @@ label{
@supports not (zoom:2) {
input[type="radio"], input[type=checkbox]{
transform: scale(1.5);
margin: 8px;
transform-origin: left center;
margin: 8px 12px 8px 0;
}
}

View File

@ -10,14 +10,14 @@ export class Add_layer_filter_action extends Base_action {
* @param {string} name
* @param {object} params
*/
constructor(layer_id, name, params) {
constructor(layer_id, name, params, filter_id) {
super('add_layer_filter', 'Add Layer Filter');
if (layer_id == null)
layer_id = config.layer.id;
this.layer_id = parseInt(layer_id);
this.filter_id = Math.floor(Math.random() * 999999999) + 1; // A good UUID library would
this.name = name;
this.params = params;
this.filter_id = filter_id;
this.reference_layer = null;
}
@ -32,8 +32,20 @@ export class Add_layer_filter_action extends Base_action {
name: this.name,
params: this.params,
};
this.reference_layer.filters.push(filter);
if(this.filter_id) {
//update
for(var i in this.reference_layer.filters) {
if(this.reference_layer.filters[i].id == this.filter_id){
this.reference_layer.filters[i] = filter;
break;
}
}
}
else{
//insert
filter.id = Math.floor(Math.random() * 999999999) + 1; // A good UUID library would
this.reference_layer.filters.push(filter);
}
config.need_render = true;
app.GUI.GUI_layers.render_layers();
}

View File

@ -1,6 +1,7 @@
import app from '../app.js';
import config from '../config.js';
import { Base_action } from './base.js';
import Tools_settings_class from './../modules/tools/settings.js';
export class Autoresize_canvas_action extends Base_action {
/**
@ -13,6 +14,7 @@ export class Autoresize_canvas_action extends Base_action {
*/
constructor(width, height, layer_id, can_automate = true, ignore_same_size = false) {
super('autoresize_canvas', 'Auto-resize Canvas');
this.Tools_settings = new Tools_settings_class();
this.width = width;
this.height = height;
this.layer_id = layer_id;
@ -30,6 +32,11 @@ export class Autoresize_canvas_action extends Base_action {
let need_fit = false;
let new_config_width = config.WIDTH;
let new_config_height = config.HEIGHT;
var enable_autoresize = this.Tools_settings.get_setting('enable_autoresize');
if(enable_autoresize == false){
return;
}
// Resize up
if (width > new_config_width || height > new_config_height) {

View File

@ -11,6 +11,7 @@ export { Insert_layer_action } from './insert-layer.js';
export { Prepare_canvas_action } from './prepare-canvas.js';
export { Reorder_layer_action } from './reorder-layer.js';
export { Reset_layers_action } from './reset-layers.js';
export { Refresh_action_attributes_action } from './refresh-action-attributes.js';
export { Refresh_layers_gui_action } from './refresh-layers-gui.js';
export { Reset_selection_action } from './reset-selection.js';
export { Select_layer_action } from './select-layer.js';

View File

@ -95,8 +95,8 @@ export class Insert_layer_action extends Base_action {
config.need_render = true;
};
layer.data = null;
autoresize_as = [config.layer.width, config.layer.height, null, true, true];
need_autoresize = true;
autoresize_as = [layer.width, layer.height, null, true, true];
//need_autoresize = true;
}
else if (typeof layer.data == 'string') {
image_load_promise = new Promise((resolve, reject) => {
@ -136,7 +136,6 @@ export class Insert_layer_action extends Base_action {
&& (config.layer.width == 0 || config.layer.width === null) && (config.layer.height == 0 || config.layer.height === null)
&& config.layer.data == null && layer.type != 'image' && this.can_automate !== false) {
// Update existing layer, because it's empty
delete layer.name;
this.update_layer_action = new app.Actions.Update_layer_action(config.layer.id, layer);
await this.update_layer_action.do();
}

View File

@ -0,0 +1,29 @@
import app from '../app.js';
import config from '../config.js';
import { Base_action } from './base.js';
export class Refresh_action_attributes_action extends Base_action {
/**
* Resizes/renders the canvas at the specified step. Usually used on both sides of a config update action.
*
* @param {boolean} call_when
*/
constructor(call_when = 'undo') {
super('refresh_action_attributes', 'Refresh Action Attributes');
this.call_when = call_when;
}
async do() {
super.do();
if (this.call_when === 'do') {
app.GUI.GUI_tools.show_action_attributes();
}
}
async undo() {
super.undo();
if (this.call_when === 'undo') {
app.GUI.GUI_tools.show_action_attributes();
}
}
}

View File

@ -14,7 +14,7 @@ const menuDefinition = [
children: [
{
name: 'Open File',
shortcut: 'O/Drag&Drop',
shortcut: 'O',
ellipsis: true,
target: 'file/open.open_file'
},
@ -52,9 +52,15 @@ const menuDefinition = [
divider: true
},
{
name: 'Save As',
name: 'Export',
ellipsis: true,
shortcut: 'S',
target: 'file/save.export'
},
{
name: 'Save As',
ellipsis: true,
shortcut: 'Shift + S',
target: 'file/save.save'
},
{
@ -65,7 +71,7 @@ const menuDefinition = [
{
name: 'Print',
ellipsis: true,
shortcut: 'Ctrl-P',
shortcut: 'Ctrl+P',
target: 'file/print.print'
},
{
@ -128,6 +134,69 @@ const menuDefinition = [
}
]
},
{
name: 'View',
children: [
{
name: 'Zoom',
children: [
{
name: 'Zoom In',
target: 'view/zoom.in'
},
{
name: 'Zoom Out',
target: 'view/zoom.out'
},
{
divider: true
},
{
name: 'Original Size',
target: 'view/zoom.original'
},
{
name: 'Fit Window',
target: 'view/zoom.auto'
}
]
},
{
name: 'Grid',
shortcut: 'G',
target: 'view/grid.grid'
},
{
name: 'Guides',
children: [
{
name: 'Insert',
ellipsis: true,
target: 'view/guides.insert'
},
{
name: 'Update',
target: 'view/guides.update'
},
{
name: 'Remove all',
target: 'view/guides.remove'
}
]
},
{
name: 'Ruler',
target: 'view/ruler.ruler'
},
{
divider: true
},
{
name: 'Full Screen',
target: 'view/full_screen.fs'
}
]
},
{
name: 'Image',
children: [
@ -138,7 +207,7 @@ const menuDefinition = [
target: 'image/information.information'
},
{
name: 'Size',
name: 'Canvas Size',
ellipsis: true,
target: 'image/size.size'
},
@ -148,30 +217,6 @@ const menuDefinition = [
shortcut: 'T',
target: 'image/trim.trim'
},
{
name: 'Zoom',
children: [
{
name: 'Zoom In',
target: 'image/zoom.in'
},
{
name: 'Zoom Out',
target: 'image/zoom.out'
},
{
divider: true
},
{
name: 'Original Size',
target: 'image/zoom.original'
},
{
name: 'Fit Window',
target: 'image/zoom.auto'
}
]
},
{
divider: true
},
@ -231,25 +276,18 @@ const menuDefinition = [
ellipsis: true,
target: 'image/palette.palette'
},
{
name: 'Grid',
ellipsis: true,
shortcut: 'G',
target: 'image/grid.grid'
},
{
divider: true
},
{
name: 'Histogram',
ellipsis: true,
shortcut: 'H',
target: 'image/histogram.histogram'
}
]
},
{
name: 'Layers',
name: 'Layer',
children: [
{
name: 'New',
@ -434,6 +472,11 @@ const menuDefinition = [
ellipsis: true,
target: 'effects/black_and_white.black_and_white'
},
{
name: 'Borders',
ellipsis: true,
target: 'effects/borders.borders'
},
{
name: 'Blueprint',
target: 'effects/blueprint.blueprint'
@ -537,11 +580,6 @@ const menuDefinition = [
{
name: 'Tools',
children: [
{
name: 'Borders',
ellipsis: true,
target: 'tools/borders.borders'
},
{
name: 'Sprites',
target: 'tools/sprites.sprites'
@ -597,6 +635,104 @@ const menuDefinition = [
{
divider: true
},
{
name: 'Language',
children: [
{
name: 'English',
target: 'tools/translate.translate',
parameter: 'en',
},
{
divider: true
},
{
//Arabic
name: 'عربي',
target: 'tools/translate.translate',
parameter: 'ar',
},
{
//Chinese simplified
name: '简体中文',
target: 'tools/translate.translate',
parameter: 'zh',
},
{
name: 'Deutsch',
target: 'tools/translate.translate',
parameter: 'de',
},
{
name: 'Dutch',
target: 'tools/translate.translate',
parameter: 'nl',
},
{
name: 'English (UK)',
target: 'tools/translate.translate',
parameter: 'uk',
},
{
name: 'Español',
target: 'tools/translate.translate',
parameter: 'es',
},
{
name: 'Français',
target: 'tools/translate.translate',
parameter: 'fr',
},
{
name: 'Greek',
target: 'tools/translate.translate',
parameter: 'el',
},
{
name: 'Italiano',
target: 'tools/translate.translate',
parameter: 'it',
},
{
//Japanese
name: '日本語',
target: 'tools/translate.translate',
parameter: 'ja',
},
{
//Korean
name: '한국어',
target: 'tools/translate.translate',
parameter: 'ko',
},
{
name: 'Lietuvių',
target: 'tools/translate.translate',
parameter: 'lt',
},
{
name: 'Português',
target: 'tools/translate.translate',
parameter: 'pt',
},
{
name: 'русский язык',
target: 'tools/translate.translate',
parameter: 'ru',
},
{
name: 'Türkçe',
target: 'tools/translate.translate',
parameter: 'tr',
}
]
},
{
name: 'Search',
shortcut: 'F3',
ellipsis: true,
target: 'tools/search.search'
},
{
name: 'Settings',
ellipsis: true,
@ -616,67 +752,12 @@ const menuDefinition = [
name: 'Report Issues',
href: 'https://github.com/viliusle/miniPaint/issues'
},
{
name: 'Language',
children: [
{
name: 'English',
target: 'help/translate.translate.en'
},
{
divider: true
},
{
name: '简体中文',
target: 'help/translate.translate.zh'
},
{
name: 'Español',
target: 'help/translate.translate.es'
},
{
name: 'Français',
target: 'help/translate.translate.fr'
},
{
name: 'Deutsch',
target: 'help/translate.translate.de'
},
{
name: 'Italiano',
target: 'help/translate.translate.it'
},
{
name: '日本語',
target: 'help/translate.translate.ja'
},
{
name: '한국어',
target: 'help/translate.translate.ko'
},
{
name: 'Lietuvių',
target: 'help/translate.translate.lt'
},
{
name: 'Português',
target: 'help/translate.translate.pt'
},
{
name: 'русский язык',
target: 'help/translate.translate.ru'
},
{
name: 'Türkçe',
target: 'help/translate.translate.tr'
}
]
},
{
divider: true
},
{
name: 'About',
ellipsis: true,
target: 'help/about.about'
}
]

View File

@ -14,14 +14,22 @@ config.ALPHA = 255;
config.ZOOM = 1;
config.SNAP = true;
config.pixabay_key = '3ca2cd8af3fde33af218bea02-9021417';
config.safe_search_can_be_disabled = true;
config.google_webfonts_key = 'AIzaSyAC_Tx8RKkvN235fXCUyi_5XhSaRCzNhMg';
config.layers = [];
config.layer = null;
config.need_render = false;
config.need_render_changed_params = false; // Set specifically when param change in layer details triggered render
config.mouse = {};
config.mouse_lock = null;
config.swatches = {
default: [] // Only default used right now, object format for swatch swapping in future.
};
config.user_fonts = {};
config.guides_enabled = true;
config.guides = [];
config.ruler_active = false;
config.enable_autoresize_by_default = true;
//requires styles in reset.css
config.themes = [
@ -30,13 +38,14 @@ config.themes = [
'green',
];
//no-translate BEGIN
config.FONTS = [
"Arial",
"Courier",
"Impact",
"Impact",
"Helvetica",
"Monospace",
"Tahoma",
"Monospace",
"Tahoma",
"Times New Roman",
"Verdana",
"Amatic SC",
@ -68,6 +77,7 @@ config.FONTS = [
"Titillium Web",
"Ubuntu"
];
//no-translate END
config.TOOLS = [
{
@ -91,10 +101,9 @@ config.TOOLS = [
},
{
name: 'pencil',
on_update: 'on_params_update',
attributes: {
antialiasing: true,
size: 2,
size: 1,
pressure: false,
},
},
{
@ -132,6 +141,7 @@ config.TOOLS = [
{
name: 'shape',
on_activate: 'on_activate',
title: 'Shapes (H)',
attributes: {
size: 3,
stroke: '#00aa00',
@ -156,7 +166,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -172,7 +182,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -192,7 +202,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -203,7 +213,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -214,7 +224,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -225,7 +235,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -236,7 +246,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -247,7 +257,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -258,7 +268,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -269,7 +279,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -280,19 +290,9 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
},
},
{
name: 'star24',
title: '24-Points star',
visible: false,
attributes: {
border_size: 4,
border: false,
corners: 5,
inner_radius: 40,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -303,7 +303,7 @@ config.TOOLS = [
visible: false,
attributes: {
border_size: 4,
border: false,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
@ -330,13 +330,63 @@ config.TOOLS = [
fill_color: '#aaaaaa',
},
},
{
name: 'tear',
visible: false,
attributes: {
border_size: 4,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
},
},
{
name: 'cog',
visible: false,
attributes: {
fill_color: '#555555',
},
},
{
name: 'bezier_curve',
visible: false,
attributes: {
size: 4,
},
},
{
name: 'moon',
visible: false,
attributes: {
border_size: 4,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
},
},
{
name: 'callout',
visible: false,
attributes: {
border_size: 4,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
},
},
{
name: 'text',
on_update: 'on_params_update',
attributes: {
font: {
value: 'Arial',
values: ['', ...config.FONTS.sort()],
values() {
const user_font_names = Object.keys(config.user_fonts);
return ['', '[Add Font...]', ...Array.from(new Set([...config.FONTS, ...user_font_names].sort()))];
}
},
size: 40,
bold: {
@ -427,7 +477,7 @@ config.TOOLS = [
},
{
name: 'bulge_pinch',
title: 'Bulge/Pinch tool',
title: 'Bulge/Pinch Tool',
attributes: {
radius: 80,
power: 50,
@ -444,6 +494,17 @@ config.TOOLS = [
delay: 400,
},
},
{
name: 'polygon',
visible: false,
attributes: {
border_size: 4,
border: true,
fill: true,
border_color: '#555555',
fill_color: '#aaaaaa',
},
},
];
//link to active tool

View File

@ -4,6 +4,7 @@
*/
import config from './../config.js';
import Base_layers_class from './base-layers.js';
import GUI_tools_class from './gui/gui-tools.js';
import GUI_preview_class from './gui/gui-preview.js';
import GUI_colors_class from './gui/gui-colors.js';
@ -11,7 +12,8 @@ import GUI_layers_class from './gui/gui-layers.js';
import GUI_information_class from './gui/gui-information.js';
import GUI_details_class from './gui/gui-details.js';
import GUI_menu_class from './gui/gui-menu.js';
import Help_translate_class from './../modules/help/translate.js';
import Tools_translate_class from './../modules/tools/translate.js';
import Tools_settings_class from './../modules/tools/settings.js';
import Helper_class from './../libs/helpers.js';
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
@ -30,6 +32,7 @@ class Base_gui_class {
instance = this;
this.Helper = new Helper_class();
this.Base_layers = new Base_layers_class();
//last used menu id
this.last_menu = '';
@ -61,10 +64,18 @@ class Base_gui_class {
this.GUI_information = new GUI_information_class(this);
this.GUI_details = new GUI_details_class(this);
this.GUI_menu = new GUI_menu_class();
this.Help_translate = new Help_translate_class();
this.Tools_translate = new Tools_translate_class();
this.Tools_settings = new Tools_settings_class();
this.modules = {};
}
init() {
this.load_modules();
this.load_default_values();
this.render_main_gui();
this.init_service_worker();
}
load_modules() {
var _this = this;
var modules_context = require.context("./../modules/", true, /\.js$/);
@ -110,6 +121,16 @@ class Base_gui_class {
else{
config.SNAP = Boolean(snap_cookie);
}
//guides
var guides_cookie = this.Helper.getCookie('guides');
if (guides_cookie === null) {
//default
config.guides_enabled = true;
}
else{
config.guides_enabled = Boolean(guides_cookie);
}
}
render_main_gui() {
@ -130,15 +151,25 @@ class Base_gui_class {
this.load_translations();
}
init_service_worker() {
/*if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./service-worker.js').then(function(reg) {
//Successfully registered service worker
}).catch(function(err) {
console.warn('Error registering service worker', err);
});
}*/
}
set_events() {
var _this = this;
//menu events
this.GUI_menu.on('select_target', (target) => {
this.GUI_menu.on('select_target', (target, object) => {
var parts = target.split('.');
var module = parts[0];
var function_name = parts[1];
var param = parts[2];
var param = object.parameter ??= null;
//call module
if (this.modules[module] == undefined) {
@ -169,6 +200,9 @@ class Base_gui_class {
});
}
document.getElementById('left_mobile_menu_button').addEventListener('click', function (event) {
document.querySelector('.sidebar_left').classList.toggle('active');
});
document.getElementById('mobile_menu_button').addEventListener('click', function (event) {
document.querySelector('.sidebar_right').classList.toggle('active');
});
@ -178,6 +212,20 @@ class Base_gui_class {
config.need_render = true;
}, false);
this.check_canvas_offset();
//confirmation on exit
var exit_confirm = this.Tools_settings.get_setting('exit_confirm');
window.addEventListener('beforeunload', function (e) {
if(exit_confirm && (config.layers.length > 1 || _this.Base_layers.is_layer_empty(config.layer.id) == false)){
e.preventDefault();
e.returnValue = '';
}
return undefined;
});
document.getElementById('canvas_minipaint').addEventListener('contextmenu', function (e) {
e.preventDefault();
}, false);
}
check_canvas_offset() {
@ -205,10 +253,12 @@ class Base_gui_class {
config.visible_width = w;
config.visible_height = h;
ctx.webkitImageSmoothingEnabled = false;
ctx.oImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
if(config.ZOOM >= 1) {
ctx.imageSmoothingEnabled = false;
}
else{
ctx.imageSmoothingEnabled = true;
}
this.render_canvas_background('canvas_minipaint');
@ -245,7 +295,7 @@ class Base_gui_class {
if (lang != null && lang != config.LANG) {
config.LANG = lang.replace(/([^a-z]+)/gi, '');
this.Help_translate.translate(config.LANG);
this.Tools_translate.translate(config.LANG);
}
}
@ -255,34 +305,23 @@ class Base_gui_class {
var page_h = wrapper.clientHeight;
var auto_size = false;
var save_resolution_cookie = this.Helper.getCookie('save_resolution');
var last_resolution = this.Helper.getCookie('last_resolution');
if (save_resolution_cookie != null && save_resolution_cookie != ''
&& last_resolution != null && last_resolution != '') {
//load last saved resolution
last_resolution = JSON.parse(last_resolution);
config.WIDTH = parseInt(last_resolution[0]);
config.HEIGHT = parseInt(last_resolution[1]);
//use largest possible
for (var i = this.common_dimensions.length - 1; i >= 0; i--) {
if (this.common_dimensions[i][0] > page_w
|| this.common_dimensions[i][1] > page_h) {
//browser size is too small
continue;
}
config.WIDTH = parseInt(this.common_dimensions[i][0]);
config.HEIGHT = parseInt(this.common_dimensions[i][1]);
auto_size = true;
break;
}
else {
//use largest possible
for (var i = this.common_dimensions.length - 1; i >= 0; i--) {
if (this.common_dimensions[i][0] > page_w
|| this.common_dimensions[i][1] > page_h) {
//browser size is too small
continue;
}
config.WIDTH = parseInt(this.common_dimensions[i][0]);
config.HEIGHT = parseInt(this.common_dimensions[i][1]);
auto_size = true;
break;
}
if (auto_size == false) {
//screen size is smaller then 400x300
config.WIDTH = parseInt(page_w) - 15;
config.HEIGHT = parseInt(page_h) - 10;
}
if (auto_size == false) {
//screen size is smaller then 400x300
config.WIDTH = parseInt(page_w) - 15;
config.HEIGHT = parseInt(page_h) - 10;
}
}
@ -360,6 +399,41 @@ class Base_gui_class {
ctx.stroke();
}
}
draw_guides(ctx){
if(config.guides_enabled == false){
return;
}
var thick_guides = this.Tools_settings.get_setting('thick_guides');
for(var i in config.guides) {
var guide = config.guides[i];
if (guide.x === 0 || guide.y === 0) {
continue;
}
//set styles
ctx.strokeStyle = '#00b8b8';
if(thick_guides == false)
ctx.lineWidth = 1;
else
ctx.lineWidth = 3;
ctx.beginPath();
if (guide.y === null) {
//vertical
ctx.moveTo(guide.x, 0);
ctx.lineTo(guide.x, config.HEIGHT);
}
if (guide.x === null) {
//horizontal
ctx.moveTo(0, guide.y);
ctx.lineTo(config.WIDTH, guide.y);
}
ctx.stroke();
}
}
/**
* change draw area size
@ -405,7 +479,7 @@ class Base_gui_class {
theme_name = theme_cookie;
}
else {
theme_name = config.themes[0];
theme_name = this.Tools_settings.get_setting('theme');
}
}

View File

@ -3,14 +3,15 @@
* author: Vilius L.
*/
import app from './../app.js';
import config from './../config.js';
import Base_gui_class from './base-gui.js';
import Base_selection_class from './base-selection.js';
import Image_trim_class from './../modules/image/trim.js';
import zoomView from './../libs/zoomView.js';
import Helper_class from './../libs/helpers.js';
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
import app from "./../app.js";
import config from "./../config.js";
import Base_gui_class from "./base-gui.js";
import Base_selection_class from "./base-selection.js";
import Image_trim_class from "./../modules/image/trim.js";
import View_ruler_class from "./../modules/view/ruler.js";
import zoomView from "./../libs/zoomView.js";
import Helper_class from "./../libs/helpers.js";
import alertify from "./../../../node_modules/alertifyjs/build/alertify.min.js";
var instance = null;
@ -42,7 +43,6 @@ var instance = null;
* - render_function (function)
*/
class Base_layers_class {
constructor() {
//singleton
if (instance) {
@ -53,15 +53,19 @@ class Base_layers_class {
this.Base_gui = new Base_gui_class();
this.Helper = new Helper_class();
this.Image_trim = new Image_trim_class();
this.View_ruler = new View_ruler_class();
this.canvas = document.getElementById('canvas_minipaint');
this.ctx = document.getElementById('canvas_minipaint').getContext("2d");
this.ctx_preview = document.getElementById('canvas_preview').getContext("2d");
this.canvas = document.getElementById("canvas_minipaint");
this.ctx = document.getElementById("canvas_minipaint").getContext("2d");
this.ctx_preview = document
.getElementById("canvas_preview")
.getContext("2d");
this.last_zoom = 1;
this.auto_increment = 1;
this.stable_dimensions = [];
this.debug_rendering = false;
this.render_success = null;
this.disabled_filter_id = null;
}
/**
@ -76,11 +80,17 @@ class Base_layers_class {
enable_background: false,
enable_borders: true,
enable_controls: false,
enable_rotation: false,
enable_move: false,
data_function: function () {
return config.layer;
},
};
this.Base_selection = new Base_selection_class(this.ctx, sel_config, 'main');
this.Base_selection = new Base_selection_class(
this.ctx,
sel_config,
"main"
);
this.render(true);
}
@ -88,16 +98,18 @@ class Base_layers_class {
init_zoom_lib() {
zoomView.setBounds(0, 0, config.WIDTH, config.HEIGHT);
zoomView.setContext(this.ctx);
this.stable_dimensions = [
config.WIDTH,
config.HEIGHT
];
this.stable_dimensions = [config.WIDTH, config.HEIGHT];
}
pre_render() {
this.ctx.save();
zoomView.canvasDefault();
this.ctx.clearRect(0, 0, config.WIDTH * config.ZOOM, config.HEIGHT * config.ZOOM);
this.ctx.clearRect(
0,
0,
config.WIDTH * config.ZOOM,
config.HEIGHT * config.ZOOM
);
}
after_render() {
@ -120,7 +132,10 @@ class Base_layers_class {
return;
}
if (this.stable_dimensions[0] != config.WIDTH || this.stable_dimensions[1] != config.HEIGHT) {
if (
this.stable_dimensions[0] != config.WIDTH ||
this.stable_dimensions[1] != config.HEIGHT
) {
//dimensions changed - re-init zoom lib
this.init_zoom_lib();
}
@ -128,8 +143,8 @@ class Base_layers_class {
if (config.need_render == true) {
this.render_success = null;
if(this.debug_rendering === true){
console.log('Rendering...');
if (this.debug_rendering === true) {
console.log("Rendering...");
}
if (this.last_zoom != config.ZOOM) {
@ -139,8 +154,7 @@ class Base_layers_class {
this.Base_gui.GUI_preview.zoom_data.y,
config.ZOOM / this.last_zoom
);
}
else if (this.Base_gui.GUI_preview.zoom_data.move_pos != null) {
} else if (this.Base_gui.GUI_preview.zoom_data.move_pos != null) {
//move visible window
var pos = this.Base_gui.GUI_preview.zoom_data.move_pos;
var pos_global = zoomView.toScreen(pos);
@ -156,18 +170,22 @@ class Base_layers_class {
zoomView.apply();
//render main canvas
for (var i = layers_sorted.length - 1; i >= 0; i--) {
var value = layers_sorted[i];
this.ctx.globalAlpha = value.opacity / 100;
this.ctx.globalCompositeOperation = value.composition;
const newCanvas = this.create_new_canvas(
null,
config.WIDTH,
config.HEIGHT
);
this.render_object(this.ctx, value);
}
this.render_objects(this.ctx, newCanvas, layers_sorted, ()=>{
this.ctx.save();
});
//grid
this.Base_gui.draw_grid(this.ctx);
//guides
this.Base_gui.draw_guides(this.ctx);
//render selected object controls
this.Base_selection.draw_selection();
@ -179,12 +197,14 @@ class Base_layers_class {
//reset
this.after_render();
this.last_zoom = config.ZOOM;
this.Base_gui.GUI_details.render_details();
this.View_ruler.render_ruler();
if(this.render_success === false){
alertify.error('Rendered with errors.');
if (this.render_success === false) {
alertify.error("Rendered with errors.");
}
}
@ -193,15 +213,134 @@ class Base_layers_class {
});
}
render_overlay(){
render_overlay() {
var render_class = config.TOOL.name;
var render_function = 'render_overlay';
var render_function = "render_overlay";
if(typeof this.Base_gui.GUI_tools.tools_modules[render_class].object[render_function] != "undefined") {
this.Base_gui.GUI_tools.tools_modules[render_class].object[render_function](this.ctx);
if (
typeof this.Base_gui.GUI_tools.tools_modules[render_class].object[
render_function
] != "undefined"
) {
this.Base_gui.GUI_tools.tools_modules[render_class].object[
render_function
](this.ctx);
}
}
/**
* LEGACY: use create_new_canvas();
*/
createNewCanvas(ctx, h, w) {
this.create_new_canvas(ctx, w, h);
}
/**
* Creates a fresh new canvas with the same height and width as the provided one
* @param {canvas.context|null} ctx
* @param {number} [width]
* @param {number} [height]
*/
create_new_canvas(ctx, width, height) {
const newCanvas = document.createElement("canvas");
if(width){
newCanvas.width = width;
}
else{
newCanvas.width = ctx.canvas.width;
}
if(height){
newCanvas.height = height;
}
else{
newCanvas.height = ctx.canvas.height;
}
return newCanvas;
}
/**
* LEGACY: use render_objects()
*/
renderObjects(ctx, tempCanvas, layers, prepare, shouldSkip) {
this.render_objects(ctx, tempCanvas, layers, prepare, shouldSkip);
}
/**
* Renders objects based on the provided layers
* @param {canvas.context} ctx - Main canvas context where it needs to be rendered
* @param {canvas} tempCanvas - A temporary canvas which is a copy of the original canvas, but will be used if there will be needed to isolate an effect from others
* @param {Object[]} layers - Array of layers
* @param {Function} prepare - An optional function to prepare temporary and main canvases before the render if needed
* @param {Function} shouldSkip - An optional boolean function for skipping those layers which are not needed to be rendered
*/
render_objects(ctx, tempCanvas, layers, prepare, shouldSkip) {
const tempCtx = tempCanvas.getContext("2d");
// Prepare the temporary canvas if needed
prepare && prepare();
for (var i = layers.length - 1; i >= 0; i--) {
var layer = layers[i];
const nextLayer = layers[i - 1];
// If the previous layer has clip masking effect and the current one is not the other end of the pair,
// then render the temporary canvas for clip masking on top of the current.
// Skip the layer if not needed to be rendered
if (shouldSkip && shouldSkip(layer)) {
continue;
}
// If the layer or next layer has clip masking effect (source-atop).
// If there are such layers, this will make sure that layers will be rendered
// in an isolated temporary canvas
if (
layer.composition === "source-atop" ||
(nextLayer && nextLayer.composition === "source-atop")
) {
// Apply the effect in a isolated temporary canvas
tempCtx.globalAlpha = layer.opacity / 100;
tempCtx.globalCompositeOperation = layer.composition;
// If the next layer has the clip masking effect then
// isolated the shadow filter from temporary canvas and keep that in the original canvas
if (nextLayer?.composition === "source-atop") {
// Render the layer
this.render_object(ctx, layer);
// Then remove the shadow (if it exists) from the render process in the temporary canvas
const filters = layer.filters.filter((filter) => {
return filter.name !== "shadow";
});
this.render_object(tempCtx, {
...layer,
filters,
});
} else {
// If we are in this condition, then it means this is the last layer of clipped layers pair.
// Render clipped layers on the temporary canvas
this.render_object(tempCtx, layer);
// Render the clipped layers on top of the current canvas
ctx.restore();
ctx.drawImage(tempCanvas, 0, 0);
// Prepare canvas to since we called restore
prepare && prepare();
// Clear temporary canvas
tempCtx.globalCompositeOperation = null;
tempCtx.clearRect(0, 0, tempCanvas.width, tempCanvas.height);
}
} else {
ctx.globalAlpha = layer.opacity / 100;
ctx.globalCompositeOperation = layer.composition;
this.render_object(ctx, layer);
}
}
}
render_preview(layers) {
var w = this.Base_gui.GUI_preview.PREVIEW_SIZE.w;
var h = this.Base_gui.GUI_preview.PREVIEW_SIZE.h;
@ -209,26 +348,13 @@ class Base_layers_class {
this.ctx_preview.save();
this.ctx_preview.clearRect(0, 0, w, h);
//prepare scale
this.ctx_preview.scale(w / config.WIDTH, h / config.HEIGHT);
for (var i = layers.length - 1; i >= 0; i--) {
var value = layers[i];
if (value.visible == false) {
//not visible
continue;
}
if (value.type == null) {
//empty type
continue;
}
this.ctx_preview.globalAlpha = value.opacity / 100;
this.ctx_preview.globalCompositeOperation = value.composition;
this.render_object(this.ctx_preview, value);
}
const newCanvas = this.create_new_canvas(this.ctx_preview);
newCanvas.getContext("2d").scale(w / config.WIDTH, h / config.HEIGHT);
this.render_objects(this.ctx_preview, newCanvas, layers, () => {
this.ctx_preview.save();
//prepare scale
this.ctx_preview.scale(w / config.WIDTH, h / config.HEIGHT);
});
this.ctx_preview.restore();
this.Base_gui.GUI_preview.render_preview_active_zone();
@ -242,101 +368,113 @@ class Base_layers_class {
* @param {boolean} is_preview
*/
render_object(ctx, object, is_preview) {
if (object.visible == false || object.type == null)
return;
if (object.visible == false || object.type == null) return;
this.pre_render_object(ctx, object);
//example with canvas object - other types should overwrite this method
if (object.type == "image") {
//image - default behavior
ctx.save();
ctx.translate(object.x + object.width / 2, object.y + object.height / 2);
ctx.rotate((object.rotate * Math.PI) / 180);
// TODO - Not sure why the check should be with null,
// if nothing will break, then better to check if it's just truthy
ctx.drawImage(
object.link_canvas != null ? object.link_canvas : object.link,
-object.width / 2,
-object.height / 2,
object.width,
object.height
);
ctx.restore();
} else {
//call render function from other module
var render_class = object.render_function[0];
var render_function = object.render_function[1];
if (
typeof this.Base_gui.GUI_tools.tools_modules[render_class] !=
"undefined"
) {
this.Base_gui.GUI_tools.tools_modules[render_class].object[
render_function
](ctx, object, is_preview);
} else {
this.render_success = false;
console.log("Error: unknown layer type: " + object.type);
}
}
this.after_render_object(ctx, object);
}
/**
* Gets called before render_object starts it's job
* @param {canvas.context} ctx
* @param {object} object
*/
pre_render_object(ctx, object) {
//apply pre-filters
for (var i in object.filters) {
var filter = object.filters[i];
filter.name = filter.name.replace('drop-shadow', 'shadow');
if (filter.id == this.disabled_filter_id) {
continue;
}
filter.name = filter.name.replace("drop-shadow", "shadow");
//find filter
var found = false;
for (var i in this.Base_gui.modules) {
if (i.indexOf("effects") == -1 || i.indexOf("abstract") > -1)
continue;
if (i.indexOf("effects") == -1 || i.indexOf("abstract") > -1) continue;
var filter_class = this.Base_gui.modules[i];
var module_name = i.split("/").pop();
if(module_name == filter.name){
if (module_name == filter.name) {
//found it
found = true;
filter_class.render_pre(ctx, filter, object);
}
}
if(found == false){
if (found == false) {
this.render_success = false;
console.log('Error: can not find filter: ' + filter.name);
}
}
//example with canvas object - other types should overwrite this method
if (object.type == 'image') {
//image - default behavior
var rotateSupport = true;
if (rotateSupport == false) {
if (object.link_canvas != null) {
//we have draft canvas - use it
ctx.drawImage(object.link_canvas, object.x, object.y, object.width, object.height);
}
else {
ctx.drawImage(object.link, object.x, object.y, object.width, object.height);
}
}
else {
ctx.save();
ctx.translate(object.x + object.width / 2, object.y + object.height / 2);
ctx.rotate(object.rotate * Math.PI / 180);
if (object.link_canvas != null) {
//we have draft canvas - use it
ctx.drawImage(object.link_canvas, -object.width / 2, -object.height / 2,
object.width, object.height);
}
else {
ctx.drawImage(object.link, -object.width / 2, -object.height / 2,
object.width, object.height);
}
ctx.restore();
}
}
else {
//call render function from other module
var render_class = object.render_function[0];
var render_function = object.render_function[1];
if(typeof this.Base_gui.GUI_tools.tools_modules[render_class] != "undefined") {
this.Base_gui.GUI_tools.tools_modules[render_class].object[render_function](ctx, object, is_preview);
}
else{
this.render_success = false;
console.log('Error: unknown layer type: ' + object.type);
console.log("Error: can not find filter: " + filter.name);
}
}
}
/**
* Gets called after when render_object finishes it's job
* @param {canvas.context} ctx
* @param {object} object
*/
after_render_object(ctx, object) {
//apply post-filters
for (var i in object.filters) {
var filter = object.filters[i];
filter.name = filter.name.replace('drop-shadow', 'shadow');
if (filter.id == this.disabled_filter_id) {
continue;
}
filter.name = filter.name.replace("drop-shadow", "shadow");
//find filter
var found = false;
for (var i in this.Base_gui.modules) {
if (i.indexOf("effects") == -1 || i.indexOf("abstract") > -1)
continue;
if (i.indexOf("effects") == -1 || i.indexOf("abstract") > -1) continue;
var filter_class = this.Base_gui.modules[i];
var module_name = i.split("/").pop();
if(module_name == filter.name){
if (module_name == filter.name) {
//found it
found = true;
filter_class.render_post(ctx, filter, object);
}
}
if(found == false){
if (found == false) {
this.render_success = false;
console.log('Error: can not find filter: ' + filter.name);
console.log("Error: can not find filter: " + filter.name);
}
}
}
@ -363,7 +501,12 @@ class Base_layers_class {
*/
async autoresize(width, height, layer_id, can_automate = true) {
return app.State.do_action(
new app.Actions.Autoresize_canvas_action(width, height, layer_id, can_automate)
new app.Actions.Autoresize_canvas_action(
width,
height,
layer_id,
can_automate
)
);
}
@ -374,7 +517,7 @@ class Base_layers_class {
* @returns {object}
*/
get_layer(id) {
if(id == undefined){
if (id == undefined) {
id = config.layer.id;
}
for (var i in config.layers) {
@ -382,7 +525,7 @@ class Base_layers_class {
return config.layers[i];
}
}
alertify.error('Error: can not find layer with id:' + id);
alertify.error("Error: can not find layer with id:" + id);
return null;
}
@ -393,9 +536,7 @@ class Base_layers_class {
* @param {boolean} force - Force to delete first layer?
*/
async delete(id, force) {
return app.State.do_action(
new app.Actions.Delete_layer_action(id, force)
);
return app.State.do_action(new app.Actions.Delete_layer_action(id, force));
}
/*
@ -431,9 +572,7 @@ class Base_layers_class {
* @param {int} id
*/
async select(id) {
return app.State.do_action(
new app.Actions.Select_layer_action(id)
);
return app.State.do_action(new app.Actions.Select_layer_action(id));
}
/**
@ -449,7 +588,9 @@ class Base_layers_class {
value = 100;
}
return app.State.do_action(
new app.Actions.Update_layer_action(id, { opacity: value })
new app.Actions.Update_layer_action(id, {
opacity: value,
})
);
}
@ -459,9 +600,7 @@ class Base_layers_class {
* @param {int} id
*/
async layer_clear(id) {
return app.State.do_action(
new app.Actions.Clear_layer_action(id)
);
return app.State.do_action(new app.Actions.Clear_layer_action(id));
}
/**
@ -482,8 +621,8 @@ class Base_layers_class {
get_sorted_layers() {
return config.layers.concat().sort(
//sort function
(a, b) => b.order - a.order
);
(a, b) => b.order - a.order
);
}
/**
@ -495,7 +634,11 @@ class Base_layers_class {
is_layer_empty(id) {
var link = this.get_layer(id);
if (link.width == 0 && link.height == 0 && link.data == null) {
if (
(link.width == 0 || link.width === null) &&
(link.height == 0 || link.height === null) &&
link.data == null
) {
return true;
}
@ -551,7 +694,8 @@ class Base_layers_class {
}
/**
* returns global position, for example if canvas is zoomed, it will convert relative mouse position to absolute at 100% zoom.
* returns global position, for example if canvas is zoomed, it will convert relative mouse position to absolute
* at 100% zoom.
*
* @param {int} x
* @param {int} y
@ -594,22 +738,18 @@ class Base_layers_class {
* @param {boolean} is_preview Optional
*/
convert_layers_to_canvas(ctx, layer_id = null, is_preview = true) {
var layers_sorted = this.get_sorted_layers();
for (var i = layers_sorted.length - 1; i >= 0; i--) {
var value = layers_sorted[i];
const newCanvas = this.create_new_canvas(ctx);
const layers_sorted = this.get_sorted_layers();
this.render_objects(ctx, newCanvas, layers_sorted, ()=>{
ctx.save();
}, (value) => {
if (value.visible == false || value.type == null) {
continue;
return true;
}
if (layer_id != null && value.id != layer_id) {
continue;
return true;
}
ctx.globalAlpha = value.opacity / 100;
ctx.globalCompositeOperation = value.composition;
this.render_object(ctx, value, is_preview);
}
});
}
/**
* exports (active) layer to canvas for saving
@ -620,44 +760,45 @@ class Base_layers_class {
* @returns {canvas}
*/
convert_layer_to_canvas(layer_id, actual_area = false, can_trim) {
if(actual_area == null)
actual_area = false;
if (layer_id == null)
layer_id = config.layer.id;
if (actual_area == null) actual_area = false;
if (layer_id == null) layer_id = config.layer.id;
var link = this.get_layer(layer_id);
var offset_x = 0;
var offset_y = 0;
//create tmp canvas
var canvas = document.createElement('canvas');
if (actual_area === true && link.type == 'image') {
var canvas = document.createElement("canvas");
if (actual_area === true && link.type == "image") {
canvas.width = link.width_original;
canvas.height = link.height_original;
can_trim = false;
}
else {
} else {
canvas.width = Math.max(link.width, config.WIDTH);
canvas.height = Math.max(link.height, config.HEIGHT);
}
//add data
if (actual_area === true && link.type == 'image') {
if (actual_area === true && link.type == "image") {
canvas.getContext("2d").drawImage(link.link, 0, 0);
}
else {
} else {
this.render_object(canvas.getContext("2d"), link);
}
//trim
if ((can_trim == true || can_trim == undefined) && link.type != null) {
var trim_info = this.Image_trim.get_trim_info(layer_id);
if (trim_info.left > 0 || trim_info.top > 0 || trim_info.right > 0 || trim_info.bottom > 0) {
if (
trim_info.left > 0 ||
trim_info.top > 0 ||
trim_info.right > 0 ||
trim_info.bottom > 0
) {
offset_x = trim_info.left;
offset_y = trim_info.top;
var w = canvas.width - trim_info.left - trim_info.right;
var h = canvas.height - trim_info.top - trim_info.bottom;
if(w > 1 && h > 1) {
if (w > 1 && h > 1) {
this.Helper.change_canvas_size(canvas, w, h, offset_x, offset_y);
}
}
@ -693,6 +834,51 @@ class Base_layers_class {
};
}
/**
* returns all layers
*
* @returns {array}
*/
get_layers() {
return config.layers;
}
/**
* disabled filter by id
*
* @param filter_id
*/
disable_filter(filter_id) {
this.disabled_filter_id = filter_id;
}
/**
* finds layer filter by filter ID
*
* @param filter_id
* @param filter_name
* @param layer_id
* @returns {object}
*/
find_filter_by_id(filter_id, filter_name, layer_id) {
if (typeof layer_id == "undefined") {
var layer = config.layer;
} else {
var layer = this.get_layer(layer_id);
}
var filter = {};
for (var i in layer.filters) {
if (
layer.filters[i].name == filter_name &&
layer.filters[i].id == filter_id
) {
return layer.filters[i].params;
}
}
return filter;
}
}
export default Base_layers_class;

166
src/js/core/base-search.js Normal file
View File

@ -0,0 +1,166 @@
/*
* miniPaint - https://github.com/viliusle/miniPaint
* author: Vilius L.
*/
import config from './../config.js';
import Dialog_class from './../libs/popup.js';
import Base_gui_class from './base-gui.js';
const fuzzysort = require('fuzzysort');
var instance = null;
class Base_search_class {
constructor() {
//singleton
if (instance) {
return instance;
}
instance = this;
this.POP = new Dialog_class();
this.Base_gui = new Base_gui_class();
this.db = null;
this.events();
}
events() {
document.addEventListener('keydown', (event) => {
if (this.POP.get_active_instances() > 0) {
return;
}
var code = event.key;
if (code == "F3" || ( (event.ctrlKey == true || event.metaKey) && code == "f")) {
//open
this.search();
event.preventDefault();
}
}, false);
document.addEventListener('input', (event) => {
if(document.querySelector('#pop_data_search') == null){
return;
}
var node = document.querySelector('#global_search_results');
node.innerHTML = '';
var query = event.target.value;
if(query == ''){
return;
}
let results = fuzzysort.go(query, this.db, {
keys: ['title'],
limit: 10,
threshold: -50000,
});
//show
for(var i = 0; i < results.length; i++) {
var item = results[i];
var className = "search-result n" + (i+1);
if(i == 0){
className += " active";
}
node.innerHTML += "<div class='"+className+"' data-key='"+item.obj.key+"'>"
+ fuzzysort.highlight(item[0]) + "</div>";
}
}, false);
//allow to select with arrow keys
document.addEventListener('keydown', function (e) {
if(document.querySelector('#global_search_results') == null
|| document.querySelector('.search-result') == null){
return;
}
var k = e.key;
if (k == "ArrowUp") {
var target = document.querySelector('.search-result.active');
var index = Array.from(target.parentNode.children).indexOf(target);
if(index > 0){
index--;
}
target.classList.remove('active');
var target2 =document.querySelector('#global_search_results').childNodes[index];
target2.classList.add('active');
e.preventDefault();
}
else if (k == "ArrowDown") {
var target = document.querySelector('.search-result.active');
var index = Array.from(target.parentNode.children).indexOf(target);
var total = target.parentNode.childElementCount;
if(index < total - 1){
index++;
}
target.classList.remove('active');
var target2 = document.querySelector('#global_search_results').childNodes[index];
target2.classList.add('active');
e.preventDefault();
}
}, false);
}
search() {
var _this = this;
//init DB
if(this.db === null) {
this.db = Object.keys(this.Base_gui.modules);
for(var i in this.db){
this.db[i] = {
key: this.db[i],
title: this.db[i].replace(/_/i, ' '),
};
}
}
var settings = {
title: 'Search',
params: [
{name: "search", title: "Search:", value: ""},
],
on_load: function (params, popup) {
var node = document.createElement("div");
node.id = 'global_search_results';
node.innerHTML = '';
popup.el.querySelector('.dialog_content').appendChild(node);
},
on_finish: function (params) {
//execute
var target = document.querySelector('.search-result.active');
if(target){
//execute
var key = target.dataset.key;
var class_object = this.Base_gui.modules[key];
var function_name = _this.get_function_from_path(key);
_this.POP.hide();
class_object[function_name]();
}
},
};
this.POP.show(settings);
//on input change
document.getElementById("pop_data_search").select();
}
get_function_from_path(path){
var parts = path.split("/");
var result = parts[parts.length - 1];
result = result.replace(/-/, '_');
return result;
}
}
export default Base_search_class;

View File

@ -25,6 +25,9 @@ class Base_selection_class {
* - enable_background
* - enable_borders
* - enable_controls
* - enable_rotation
* - enable_move
* - keep_ratio
*
* @param {ctx} ctx
* @param {object} settings
@ -44,11 +47,13 @@ class Base_selection_class {
this.ctx = ctx;
this.mouse_lock = null;
this.selected_obj_positions = {};
this.selected_obj_rotate_position = {};
this.selected_object_drag_type = null;
this.click_details = {};
this.is_touch = false;
// True if dragging from inside canvas area
this.is_drag = false;
this.current_angle = null;
this.events();
}
@ -143,6 +148,14 @@ class Base_selection_class {
return settings;
}
calcRotateDistanceFromX(layerW) {
const block_size = handle_size / config.ZOOM;
return Math.max(
Math.min(layerW * 0.9, Math.abs(layerW - 2 * block_size)),
layerW / 2 - block_size / 2
);
}
/**
* marks object as selected, and draws corners
*/
@ -188,7 +201,7 @@ class Base_selection_class {
x = Math.round(-data.width / 2);
y = Math.round(-data.height / 2);
}
//fill
if (settings.enable_background == true) {
this.ctx.fillStyle = "rgba(0, 255, 0, 0.3)";
@ -250,20 +263,12 @@ class Base_selection_class {
const hitsBottomEdge = isRotated ? false : y + h > config.HEIGHT - handle_size;
//draw corners
var corner = (x, y, dx, dy, drag_type) => {
// var block_size = Math.round(block_size_default / 2) * 2;
var corner = (x, y, dx, dy, drag_type, cursor) => {
var angle = 0;
if (settings.data.rotate != null && settings.data.rotate != 0) {
angle = settings.data.rotate;
}
//register position
this.selected_obj_positions[drag_type] = {
x: x + dx * block_size,
y: y + dy * block_size,
size: block_size,
};
if (settings.enable_controls == false || angle != 0) {
this.ctx.strokeStyle = "rgba(0, 0, 0, 0.4)";
this.ctx.fillStyle = "rgba(255, 255, 255, 0.8)";
@ -272,31 +277,78 @@ class Base_selection_class {
this.ctx.strokeStyle = "#000000";
this.ctx.fillStyle = "#ffffff";
}
//borders
this.ctx.lineWidth = wholeLineWidth;
this.ctx.beginPath();
this.ctx.arc(x + dx * block_size, y + dy * block_size, block_size / 2, 0, 2 * Math.PI);
this.ctx.fill();
this.ctx.stroke();
//create path
const circle = new Path2D();
circle.arc(x + dx * block_size, y + dy * block_size, block_size / 2, 0, 2 * Math.PI);
//draw
this.ctx.fill(circle);
this.ctx.stroke(circle);
//register position
this.selected_obj_positions[drag_type] = {
cursor: cursor,
path: circle,
};
};
//draw rotation
var draw_rotation = () => {
var settings = this.find_settings();
if (settings.data === null
|| settings.data.status == 'draft'
|| settings.data.rotate === null
|| (settings.data.hide_selection_if_active === true && settings.data.type == config.TOOL.name)) {
return;
}
var r_x = x + this.calcRotateDistanceFromX(w) + corner_offset + wholeLineWidth;
var r_y = y - corner_offset - wholeLineWidth;
var r_dx = hitsRightEdge ? -0.5 : 0;
var r_dy = hitsTopEdge ? 0.5 : 0;
this.ctx.strokeStyle = "#000000";
this.ctx.fillStyle = "#d0d62a";
this.ctx.lineWidth = wholeLineWidth;
//create path
const circle = new Path2D();
circle.arc(r_x + r_dx * block_size, r_y + r_dy * block_size, block_size / 2, 0, 2 * Math.PI);
//draw
this.ctx.fill(circle);
this.ctx.stroke(circle);
//register position
this.selected_obj_rotate_position = {
cursor: "pointer",
path: circle,
};
};
if (settings.enable_rotation == true) {
draw_rotation();
}
if (settings.enable_controls == true) {
corner(x - corner_offset - wholeLineWidth, y - corner_offset - wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_TOP);
corner(x + w + corner_offset + wholeLineWidth, y - corner_offset - wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_TOP);
corner(x - corner_offset - wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_BOTTOM);
corner(x + w + corner_offset + wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_BOTTOM);
corner(x - corner_offset - wholeLineWidth, y - corner_offset - wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_TOP, 'nwse-resize');
corner(x + w + corner_offset + wholeLineWidth, y - corner_offset - wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_TOP, 'nesw-resize');
corner(x - corner_offset - wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_BOTTOM, 'nesw-resize');
corner(x + w + corner_offset + wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_BOTTOM, 'nwse-resize');
}
if (settings.enable_controls == true) {
//draw centers
if (Math.abs(w) > block_size * 5) {
corner(x + w / 2, y - middle_offset - wholeLineWidth, 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_TOP);
corner(x + w / 2, y + h + middle_offset + wholeLineWidth, 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_BOTTOM);
corner(x + w / 2, y - middle_offset - wholeLineWidth, 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_TOP, 'ns-resize');
corner(x + w / 2, y + h + middle_offset + wholeLineWidth, 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_BOTTOM, 'ns-resize');
}
if (Math.abs(h) > block_size * 5) {
corner(x - middle_offset - wholeLineWidth, y + h / 2, hitsLeftEdge ? 0.5 : 0, 0, DRAG_TYPE_LEFT);
corner(x + w + middle_offset + wholeLineWidth, y + h / 2, hitsRightEdge ? -0.5 : 0, 0, DRAG_TYPE_RIGHT);
corner(x - middle_offset - wholeLineWidth, y + h / 2, hitsLeftEdge ? 0.5 : 0, 0, DRAG_TYPE_LEFT, 'ew-resize');
corner(x + w + middle_offset + wholeLineWidth, y + h / 2, hitsRightEdge ? -0.5 : 0, 0, DRAG_TYPE_RIGHT, 'ew-resize');
}
}
@ -306,6 +358,22 @@ class Base_selection_class {
selected_object_actions(e) {
var settings = this.find_settings();
var data = settings.data;
if(data == null){
return;
}
this.ctx.save();
if (data.rotate != null && data.rotate != 0) {
this.ctx.translate(data.x + data.width / 2, data.y + data.height / 2);
this.ctx.rotate(data.rotate * Math.PI / 180);
}
var x = settings.data.x;
var y = settings.data.y;
var w = settings.data.width;
var h = settings.data.height;
//simplify checks
var event_type = e.type;
@ -324,10 +392,6 @@ class Base_selection_class {
if (event_type == 'mousedown' && config.mouse.valid == false || settings.enable_controls == false) {
return;
}
if (settings.data != null && settings.data.rotate != null && settings.data.rotate > 0) {
//controls on rotated object disabled
return;
}
var mouse = config.mouse;
const drag_type = this.selected_object_drag_type;
@ -339,6 +403,7 @@ class Base_selection_class {
width: settings.data.width,
height: settings.data.height,
};
this.current_angle = null;
}
if (event_type == 'mousemove' && this.mouse_lock == 'selected_object_actions' && this.is_drag) {
@ -356,8 +421,32 @@ class Base_selection_class {
const is_drag_type_right = Math.floor(drag_type / DRAG_TYPE_RIGHT) % 2 === 1;
const is_drag_type_top = Math.floor(drag_type / DRAG_TYPE_TOP) % 2 === 1;
const is_drag_type_bottom = Math.floor(drag_type / DRAG_TYPE_BOTTOM) % 2 === 1;
if (e.buttons == 1 || typeof e.buttons == "undefined") {
if(is_drag_type_left && is_drag_type_top) mainWrapper.style.cursor = "nwse-resize";
else if(is_drag_type_top && is_drag_type_right) mainWrapper.style.cursor = "nesw-resize";
else if(is_drag_type_right && is_drag_type_bottom) mainWrapper.style.cursor = "nwse-resize";
else if(is_drag_type_bottom && is_drag_type_left) mainWrapper.style.cursor = "nesw-resize";
else if(is_drag_type_top) mainWrapper.style.cursor = "ns-resize";
else if(is_drag_type_right) mainWrapper.style.cursor = "ew-resize";
else if(is_drag_type_bottom) mainWrapper.style.cursor = "ns-resize";
else if(is_drag_type_left) mainWrapper.style.cursor = "ew-resize";
if(drag_type == 'rotate'){
//rotate
var dx = x + this.calcRotateDistanceFromX(w) - (x + w / 2);
var dy = h / 2;
var original_angle = Math.atan2(dy, dx) / Math.PI * 180; //compensate rotation icon angle
var dx = mouse.x - (x + w / 2);
var dy = mouse.y - (y + h / 2);
var angle = Math.atan2(dy, dx) / Math.PI * 180 + original_angle;
//settings.data.rotate = angle;
this.current_angle = angle;
config.need_render = true;
}
else if (e.buttons == 1 || typeof e.buttons == "undefined") {
// Do transformations
var dx = Math.round(mouse.x - mouse.click_x);
var dy = Math.round(mouse.y - mouse.click_y);
@ -394,7 +483,7 @@ class Base_selection_class {
settings.data.width = width;
if (is_drag_type_top || is_drag_type_bottom)
settings.data.height = height;
// Don't allow negative width/height on most layers
if (!allowNegativeDimensions) {
if (settings.data.width <= 0) {
@ -424,13 +513,15 @@ class Base_selection_class {
}
if (!this.mouse_lock) {
//set mouse move cursor
if(settings.enable_move && mouse.x > x && mouse.x < x + w && mouse.y > y && mouse.y < y + h){
mainWrapper.style.cursor = "move";
}
for (let current_drag_type in this.selected_obj_positions) {
const position = this.selected_obj_positions[current_drag_type];
if (mouse.x >= position.x - position.size / 2 && mouse.x <= position.x + position.size / 2
&& mouse.y >= position.y - position.size / 2 && mouse.y <= position.y + position.size / 2
) {
//match
if (position.path && this.ctx.isPointInPath(position.path, mouse.x, mouse.y)) {
// match
if (event_type == 'mousedown') {
if (e.buttons == 1 || typeof e.buttons == "undefined") {
this.mouse_lock = 'selected_object_actions';
@ -438,10 +529,27 @@ class Base_selection_class {
}
}
if (event_type == 'mousemove') {
mainWrapper.style.cursor = "pointer";
mainWrapper.style.cursor = position.cursor;
}
}
}
//rotate?
const position = this.selected_obj_rotate_position;
if (position.path && this.ctx.isPointInPath(position.path, mouse.x, mouse.y)) {
//match
if (event_type == 'mousedown') {
if (e.buttons == 1 || typeof e.buttons == "undefined") {
this.mouse_lock = 'selected_object_actions';
this.selected_object_drag_type = "rotate";
}
}
if (event_type == 'mousemove') {
mainWrapper.style.cursor = position.cursor;
}
}
this.ctx.restore();
}
}

View File

@ -125,7 +125,7 @@ class Base_tools_class {
var eventType = event.type;
if (event.target.id != "canvas_minipaint") {
if (event.target.id != 'canvas_minipaint' && event.target.id != 'main_wrapper') {
//outside canvas
this.mouse_valid = false;
}
@ -134,10 +134,12 @@ class Base_tools_class {
}
if (eventType === 'mousedown' || eventType === 'touchstart') {
if (event.target.id != "canvas_minipaint" || (event.which != 1 && eventType !== 'touchstart'))
if ((event.target.id != 'canvas_minipaint' && event.target.id != 'main_wrapper') || (event.which != 1 && eventType !== 'touchstart')) {
this.mouse_click_valid = false;
else
}
else {
this.mouse_click_valid = true;
}
this.mouse_valid = true;
}
@ -390,7 +392,7 @@ class Base_tools_class {
shape_mousedown(e) {
var mouse = this.get_mouse_info(e);
if (mouse.valid == false || mouse.click_valid == false)
if (mouse.click_valid == false)
return;
var mouse_x = mouse.x;
@ -434,7 +436,7 @@ class Base_tools_class {
if (mouse.is_drag == false)
return;
if (mouse.valid == false || mouse.click_valid == false) {
if (mouse.click_valid == false) {
return;
}
@ -487,7 +489,7 @@ class Base_tools_class {
var mouse = this.get_mouse_info(e);
var params = this.getParams();
if (mouse.valid == false || mouse.click_valid == false) {
if (mouse.click_valid == false) {
config.layer.status = null;
return;
}
@ -585,6 +587,16 @@ class Base_tools_class {
config.HEIGHT,
],
};
if(config.guides_enabled == true){
//use guides
for(var i in config.guides){
var guide = config.guides[i];
if(guide.y === null)
snap_positions.x.push(guide.x);
else
snap_positions.y.push(guide.y);
}
}
for(var i in config.layers){
if(exclude_id != null && exclude_id == config.layers[i].id){
continue;

View File

@ -3,7 +3,6 @@ import Dialog_class from './../../libs/popup.js';
import GUI_colors_class from './../gui/gui-colors.js';
const Helper = new Helper_class();
let POP;
/**
* This input opens a custom color picker dialog that is more tightly integrated with the application (swatch selection, etc).
@ -33,9 +32,7 @@ let POP;
event.preventDefault();
const $el = $(event.target.closest('.ui_color_input'));
const { value } = $el.data();
if (!POP) {
POP = new Dialog_class();
}
const POP = new Dialog_class();
let colorsDialog = new GUI_colors_class();
var settings = {
title: 'Color Picker',
@ -112,6 +109,7 @@ let POP;
const classList = el.className;
const id = definition.id != null ? definition.id : el.getAttribute('id');
const inputId = definition.inputId || '';
const disabled = definition.disabled != null ? definition.disabled : el.hasAttribute('disabled') ? true : false;
const value = definition.value != null ? definition.value : el.value || 0;
const ariaLabeledBy = el.getAttribute('aria-labelledby');
@ -139,6 +137,9 @@ let POP;
if (id) {
el.setAttribute('id', id);
}
if (inputId) {
input.setAttribute('id', inputId);
}
if (ariaLabeledBy) {
input.setAttribute('aria-labelledby', ariaLabeledBy);
}

View File

@ -5,6 +5,7 @@
import config from './../../config.js';
import Helper_class from './../../libs/helpers.js';
import Tools_translate_class from './../../modules/tools/translate.js';
const Helper = new Helper_class();
@ -12,25 +13,18 @@ const sidebarTemplate = `
<div class="ui_flex_group justify_content_space_between stacked">
<div id="selected_color_sample" class="ui_color_sample" title="Current Color Preview"></div>
<div class="ui_button_group">
<button id="toggle_color_swatches_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Swatches">
<span class="sr_only">Toggle Swatches</span>
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-grid-3x2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5v-8zM1.5 3a.5.5 0 0 0-.5.5V7h4V3H1.5zM5 8H1v3.5a.5.5 0 0 0 .5.5H5V8zm1 0h4v4H6V8zm4-1H6V3h4v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8h-4zm0-1V3h3.5a.5.5 0 0 1 .5.5V7h-4z"/>
</svg>
</button>
<button id="toggle_color_picker_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Color Picker">
<button id="toggle_color_picker_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Color Picker">
<span class="sr_only">Toggle Color Picker</span>
<svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<rect width="24" height="24" opacity="0" />
<path
d="M19.54 5.08A10.61 10.61 0 0 0 11.91 2a10 10 0 0 0-.05 20 2.58 2.58 0 0 0 2.53-1.89 2.52 2.52 0 0 0-.57-2.28.5.5 0 0 1 .37-.83h1.65A6.15 6.15 0 0 0 22 11.33a8.48 8.48 0 0 0-2.46-6.25zM15.88 15h-1.65a2.49 2.49 0 0 0-1.87 4.15.49.49 0 0 1 .12.49c-.05.21-.28.34-.59.36a8 8 0 0 1-7.82-9.11A8.1 8.1 0 0 1 11.92 4H12a8.47 8.47 0 0 1 6.1 2.48 6.5 6.5 0 0 1 1.9 4.77A4.17 4.17 0 0 1 15.88 15z" />
<path d="M19.54 5.08A10.61 10.61 0 0 0 11.91 2a10 10 0 0 0-.05 20 2.58 2.58 0 0 0 2.53-1.89 2.52 2.52 0 0 0-.57-2.28.5.5 0 0 1 .37-.83h1.65A6.15 6.15 0 0 0 22 11.33a8.48 8.48 0 0 0-2.46-6.25zM15.88 15h-1.65a2.49 2.49 0 0 0-1.87 4.15.49.49 0 0 1 .12.49c-.05.21-.28.34-.59.36a8 8 0 0 1-7.82-9.11A8.1 8.1 0 0 1 11.92 4H12a8.47 8.47 0 0 1 6.1 2.48 6.5 6.5 0 0 1 1.9 4.77A4.17 4.17 0 0 1 15.88 15z" />
<circle cx="12" cy="6.5" r="1.5" />
<path d="M15.25 7.2a1.5 1.5 0 1 0 2.05.55 1.5 1.5 0 0 0-2.05-.55z" />
<path d="M8.75 7.2a1.5 1.5 0 1 0 .55 2.05 1.5 1.5 0 0 0-.55-2.05z" />
<path d="M6.16 11.26a1.5 1.5 0 1 0 2.08.4 1.49 1.49 0 0 0-2.08-.4z" />
</svg>
</button>
<button id="toggle_color_channels_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Color Channels">
<button id="toggle_color_channels_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Color Channels">
<span class="sr_only">Toggle Color Channels</span>
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-card-list" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M14.5 3h-13a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z"/>
@ -40,6 +34,12 @@ const sidebarTemplate = `
<circle cx="3.5" cy="10.5" r=".5"/>
</svg>
</button>
<button id="toggle_color_swatches_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Swatches">
<span class="sr_only">Toggle Swatches</span>
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-grid-3x2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5v-8zM1.5 3a.5.5 0 0 0-.5.5V7h4V3H1.5zM5 8H1v3.5a.5.5 0 0 0 .5.5H5V8zm1 0h4v4H6V8zm4-1H6V3h4v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8h-4zm0-1V3h3.5a.5.5 0 0 1 .5.5V7h-4z"/>
</svg>
</button>
</div>
</div>
<div id="color_section_swatches" class="block_section">
@ -47,12 +47,12 @@ const sidebarTemplate = `
</div>
<div id="color_section_picker" class="block_section">
<input id="color_picker_gradient" type="color" aria-label="Color Selection">
</div>
<div id="color_section_channels" class="block_section color_section_channels">
<div class="ui_input_group stacked">
<label id="color_hex_label" title="Hex" class="label_width_small">Hex</label>
<label id="color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
<input id="color_hex" aria-labelledby="color_hex_label" value="#000000" maxlength="7" type="text" />
</div>
</div>
<div id="color_section_channels" class="block_section color_section_channels">
<div class="ui_input_grid stacked">
<div class="ui_input_group">
<label id="rgb_r_label" title="Red" class="label_width_character text_red"><strong>R<span class="sr_only">ed</span></strong></label>
@ -102,11 +102,11 @@ const dialogTemplate = `
<div class="block_section">
<div class="ui_input_grid stacked">
<div class="ui_input_group">
<label class="label_width_medium">Current</label>
<label class="label_width_medium trn">Current</label>
<div id="dialog_selected_color_sample" class="ui_color_sample"></div>
</div>
<div class="ui_input_group">
<label class="label_width_medium">Previous</label>
<label class="label_width_medium trn">Previous</label>
<div id="dialog_previous_color_sample" class="ui_color_sample"></div>
</div>
</div>
@ -114,7 +114,7 @@ const dialogTemplate = `
</div>
<div id="dialog_color_channel_group">
<div class="ui_input_group stacked">
<label id="dialog_color_hex_label" title="Hex" class="label_width_small">Hex</label>
<label id="dialog_color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
<input id="dialog_color_hex" aria-labelledby="dialog_color_hex_label" value="#000000" maxlength="7" type="text" />
</div>
<div class="ui_input_grid stacked">
@ -178,6 +178,7 @@ class GUI_colors_class {
this.sections = null;
this.inputs = null;
this.Helper = new Helper_class();
this.Tools_translate = new Tools_translate_class();
}
render_main_colors(uiType) {
@ -191,11 +192,15 @@ class GUI_colors_class {
this.el = document.getElementById('toggle_colors');
this.el.innerHTML = sidebarTemplate;
}
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, this.el);
}
this.init_components();
this.render_ui_deferred = Helper.throttle(this.render_ui_deferred, 50);
}
init_components() {
// Store button references
this.buttons = {
toggleColorSwatches: $('#toggle_color_swatches_section_button', this.el),
@ -288,6 +293,10 @@ class GUI_colors_class {
}
Helper.setCookie('toggle_color_picker', isPressed ? 1 : 0);
});
this.inputs.sample.on('click', (event) => {
this.buttons.toggleColorPicker.click();
});
// Restore toggle preference, default to visible for picker
const saved_toggle_color_picker = Helper.getCookie('toggle_color_picker');
if (saved_toggle_color_picker === 0) {

View File

@ -8,43 +8,48 @@ import config from './../../config.js';
import Dialog_class from './../../libs/popup.js';
import Text_class from './../../tools/text.js';
import Base_layers_class from "../base-layers";
import Tools_settings_class from './../../modules/tools/settings.js';
import Helper_class from './../../libs/helpers.js';
import Tools_translate_class from './../../modules/tools/translate.js';
var template = `
<div class="row">
<span class="trn label">X</span>
<input type="number" id="detail_x" />
<button class="extra reset" type="button" id="reset_x" title="Reset">Reset</button>
<input type="number" id="detail_x" step="any" />
<button class="extra reset trn" type="button" id="reset_x" title="Reset">Reset</button>
</div>
<div class="row">
<span class="trn label">Y:</span>
<input type="number" id="detail_y" />
<button class="extra reset" type="button" id="reset_y" title="Reset">Reset</button>
<input type="number" id="detail_y" step="any" />
<button class="extra reset trn" type="button" id="reset_y" title="Reset">Reset</button>
</div>
<div class="row">
<span class="trn label">Width:</span>
<input type="number" id="detail_width" />
<button class="extra reset" type="button" id="reset_size" title="Reset">Reset</button>
<input type="number" id="detail_width" step="any" />
<button class="extra reset trn" type="button" id="reset_size" title="Reset">Reset</button>
</div>
<div class="row">
<span class="trn label">Height:</span>
<input type="number" id="detail_height" />
<input type="number" id="detail_height" step="any" />
</div>
<hr />
<div class="row">
<span class="trn label">Rotate:</span>
<input type="number" min="-360" max="360" id="detail_rotate" />
<button class="extra reset trn" type="button" id="reset_rotate" title="Reset">Reset</button>
</div>
<div class="row">
<span class="trn label">Opacity:</span>
<input type="number" min="0" max="100" id="detail_opacity" />
<button class="extra reset trn" type="button" id="reset_opacity" title="Reset">Reset</button>
</div>
<div class="row">
<span class="trn label">Color:</span>
<input style="padding: 0px;" type="color" id="detail_color" />
</div>
<div id="parameters_container"></div>
<div id="text_detail_params">
<hr />
<div class="row">
<div class="row center">
<span class="trn label">&nbsp;</span>
<button type="button" class="trn dots" id="detail_param_text">Edit text...</button>
</div>
@ -115,11 +120,17 @@ class GUI_details_class {
this.POP = new Dialog_class();
this.Text = new Text_class();
this.Base_layers = new Base_layers_class();
this.Tools_settings = new Tools_settings_class();
this.Helper = new Helper_class();
this.layer_details_active = false;
this.Tools_translate = new Tools_translate_class();
}
render_main_details() {
document.getElementById('toggle_details').innerHTML = template;
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, document.getElementById('toggle_details'));
}
this.render_details(true);
}
@ -139,14 +150,22 @@ class GUI_details_class {
document.getElementById('text_detail_params').style.display = 'block';
document.getElementById('detail_color').closest('.row').style.display = 'none';
}
else if (config.layer != undefined && (config.layer.color === null || config.layer.type == 'image')) {
//hide color
document.getElementById('detail_color').closest('.row').style.display = 'none';
}
else {
else{
document.getElementById('text_detail_params').style.display = 'none';
document.getElementById('detail_color').closest('.row').style.display = 'block';
if (config.layer != undefined && (config.layer.color === null || config.layer.type == 'image')) {
//hide color
document.getElementById('detail_color').closest('.row').style.display = 'none';
}
else {
//show color
document.getElementById('detail_color').closest('.row').style.display = 'block';
}
}
//add params
this.render_more_parameters();
this.render_text(events);
this.render_general_select_param('boundary', events);
this.render_general_select_param('kerning', events);
@ -160,6 +179,8 @@ class GUI_details_class {
render_general(key, events) {
var layer = config.layer;
var _this = this;
var units = this.Tools_settings.get_setting('default_units');
var resolution = this.Tools_settings.get_setting('resolution');
if (layer != undefined) {
var target = document.getElementById('detail_' + key);
@ -169,7 +190,18 @@ class GUI_details_class {
target.disabled = true;
}
else {
target.value = Math.round(layer[key]);
var value = layer[key];
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
//convert units
value = this.Helper.get_user_unit(value, units, resolution);
}
else {
value = Math.round(value);
}
//set
target.value = value;
target.disabled = false;
}
}
@ -183,10 +215,16 @@ class GUI_details_class {
}
let focus_value = null;
target.addEventListener('focus', function (e) {
focus_value = parseInt(this.value);
focus_value = parseFloat(this.value);
});
target.addEventListener('blur', function (e) {
var value = parseInt(this.value);
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
//convert units
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
}
else {
var value = parseInt(this.value);
}
var layer = _this.Base_layers.get_layer(e.target.dataset.layer);
layer[key] = focus_value;
if (focus_value !== value) {
@ -200,7 +238,13 @@ class GUI_details_class {
}
});
target.addEventListener('change', function (e) {
var value = parseInt(this.value);
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
//convert units
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
}
else {
var value = parseInt(this.value);
}
if(this.min != undefined && this.min != '' && value < this.min){
document.getElementById('detail_opacity').value = value;
@ -216,9 +260,17 @@ class GUI_details_class {
});
target.addEventListener('keyup', function (e) {
//for edge....
if (e.keyCode != 13)
if (e.keyCode != 13) {
return;
var value = parseInt(this.value);
}
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
//convert units
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
}
else {
var value = parseInt(this.value);
}
if(this.min != undefined && this.min != '' && value < this.min){
document.getElementById('detail_opacity').value = value;
@ -303,13 +355,13 @@ class GUI_details_class {
});
}
}
render_general_select_param(key, events){
var layer = config.layer;
if (layer != undefined) {
var target = document.getElementById('detail_param_' + key);
if (layer.params[key] == null) {
target.value = '';
target.disabled = true;
@ -434,7 +486,8 @@ class GUI_details_class {
}
});
document.getElementById('reset_size').addEventListener('click', function (e) {
if (config.layer.width !== config.layer.width_original || config.layer.height !== config.layer.height_original) {
if (config.layer.width !== config.layer.width_original
|| config.layer.height !== config.layer.height_original) {
app.State.do_action(
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
new app.Actions.Update_layer_action(config.layer.id, {
@ -445,6 +498,28 @@ class GUI_details_class {
);
}
});
document.getElementById('reset_rotate').addEventListener('click', function (e) {
if (config.layer.rotate) {
app.State.do_action(
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
new app.Actions.Update_layer_action(config.layer.id, {
rotate: 0
})
])
);
}
});
document.getElementById('reset_opacity').addEventListener('click', function (e) {
if (config.layer.opacity != 100) {
app.State.do_action(
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
new app.Actions.Update_layer_action(config.layer.id, {
opacity: 100
})
])
);
}
});
}
}
@ -462,6 +537,183 @@ class GUI_details_class {
}
}
render_more_parameters() {
var _this = this;
var target_id = "parameters_container";
const itemContainer = document.getElementById(target_id);
if(this.layer_details_active == true){
return;
}
itemContainer.innerHTML = "";
if(!config.layer || typeof config.layer.params == 'undefined' || config.layer.type == 'text') {
return;
}
//find layer parameters settings
var params_config = null;
for (var i in config.TOOLS) {
if (config.TOOLS[i].name == config.layer.type) {
params_config = config.TOOLS[i];
}
}
if(params_config == null){
return;
}
for (var k in params_config.attributes) {
var item = params_config.attributes[k];
//hide some fields, in future name should start with underscore
if(params_config.name == 'rectangle' && k == 'square'
|| params_config.name == 'ellipse' && k == 'circle'
|| params_config.name == 'pencil' && k == 'pressure'
|| params_config.name == 'pencil' && k == 'size'){
continue;
}
//row
let item_row = document.createElement('div');
item_row.className = 'row';
itemContainer.appendChild(item_row);
//title
var title = k[0].toUpperCase() + k.slice(1);
title = title.replace("_", " ");
let item_title = document.createElement('span');
item_title.className = 'trn label';
item_title.innerHTML = title;
item_row.appendChild(item_title);
//value
if (typeof item == 'boolean' || (typeof item == 'object' && typeof item.value == 'boolean')) {
//boolean - true, false
const elementInput = document.createElement('button');
elementInput.type = 'button';
elementInput.className = 'trn ui_toggle_button';
elementInput.innerHTML = title;
elementInput.dataset.key = k;
item_row.appendChild(elementInput);
let value = config.layer.params[k];
elementInput.setAttribute('aria-pressed', value);
//events
elementInput.addEventListener('click', function (e) {
//on leave
let layer = config.layer;
let key = this.dataset.key;
let new_value = elementInput.getAttribute('aria-pressed') !== 'true';
let params = JSON.parse(JSON.stringify(config.layer.params));
params[key] = new_value;
app.State.do_action(
new app.Actions.Update_layer_action(layer.id, {
params: params
})
);
});
}
else if (typeof item == 'number' || (typeof item == 'object' && typeof item.value == 'number')) {
//numbers
const elementInput = document.createElement('input');
elementInput.type = 'number';
elementInput.dataset.key = k;
item_row.appendChild(elementInput);
let min = 1;
let max = k === 'power' ? 100 : 999;
let step = null;
let value = config.layer.params[k];
if (typeof item == 'object') {
value = item.value;
if (item.min != null) {
min = item.min;
}
if (item.max != null) {
max = item.max;
}
if (item.step != null) {
step = item.step;
}
}
elementInput.setAttribute('min', min);
elementInput.setAttribute('max', max);
if (item.step != null) {
elementInput.setAttribute('step', step);
}
elementInput.setAttribute('value', config.layer.params[k]);
//events
let focus_value = null;
elementInput.addEventListener('focus', function (e) {
focus_value = parseFloat(this.value);
_this.layer_details_active = true;
});
elementInput.addEventListener('blur', function (e) {
//on leave
_this.layer_details_active = false;
let layer = config.layer;
let key = this.dataset.key;
let new_value = parseInt(this.value);
let params = JSON.parse(JSON.stringify(config.layer.params));
params[key] = new_value;
if (focus_value !== new_value) {
app.State.do_action(
new app.Actions.Update_layer_action(layer.id, {
params: params
})
);
}
});
elementInput.addEventListener('change', function (e) {
//on change - lots of events here in short time
let key = this.dataset.key;
let new_value = parseInt(this.value);
config.layer.params[key] = new_value;
config.need_render = true;
});
}
else if (typeof item == 'string' && item[0] == '#') {
//color
var elementInput = document.createElement('input');
elementInput.type = 'color';
let focus_value = null;
const $colorInput = $(elementInput).uiColorInput({
id: k,
value: item
})
.on('change', () => {
let layer = config.layer;
let key = $colorInput.uiColorInput('get_id');
let new_value = $colorInput.uiColorInput('get_value');
let params = JSON.parse(JSON.stringify(config.layer.params));
params[key] = new_value;
app.State.do_action(
new app.Actions.Update_layer_action(layer.id, {
params: params
})
);
});
$colorInput.uiColorInput('set_value', config.layer.params[k]);
item_row.appendChild($colorInput[0]);
}
else {
alertify.error('Error: unsupported attribute type:' + typeof item + ', ' + k);
}
}
}
}
export default GUI_details_class;

View File

@ -5,13 +5,21 @@
import config from './../../config.js';
import Base_layers_class from './../base-layers.js';
import Tools_settings_class from './../../modules/tools/settings.js';
import Helper_class from './../../libs/helpers.js';
import Tools_translate_class from './../../modules/tools/translate.js';
var template = `
<span class="trn label">Size:</span>
<span id="mouse_info_size">-</span>
<span id="mouse_info_size">-</span>
<span class="id-mouse_info_units"></span>
<br />
<span class="trn label">Mouse:</span>
<span id="mouse_info_mouse">-</span>
<span class="id-mouse_info_units"></span>
<br />
<span class="trn label">Resolution:</span>
<span id="mouse_info_resolution">-</span>
`;
/**
@ -21,12 +29,20 @@ class GUI_information_class {
constructor(ctx) {
this.Base_layers = new Base_layers_class();
this.Tools_settings = new Tools_settings_class();
this.Helper = new Helper_class();
this.Tools_translate = new Tools_translate_class();
this.last_width = null;
this.last_height = null;
this.units = this.Tools_settings.get_setting('default_units');
this.resolution = this.Tools_settings.get_setting('resolution');
}
render_main_information() {
document.getElementById('toggle_info').innerHTML = template;
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, document.getElementById('toggle_info'));
}
this.set_events();
this.show_size();
}
@ -47,15 +63,39 @@ class GUI_information_class {
var mouse_x = Math.ceil(global_pos.x);
var mouse_y = Math.ceil(global_pos.y);
mouse_x = _this.Helper.get_user_unit(mouse_x, _this.units, _this.resolution);
mouse_y = _this.Helper.get_user_unit(mouse_y, _this.units, _this.resolution);
target.innerHTML = mouse_x + ', ' + mouse_y;
}, false);
}
show_size() {
if(this.last_width == config.WIDTH && this.last_height == config.HEIGHT)
return;
update_units(){
this.units = this.Tools_settings.get_setting('default_units');
this.resolution = this.Tools_settings.get_setting('resolution');
this.show_size(true);
}
show_size(force) {
if(force == undefined && this.last_width == config.WIDTH && this.last_height == config.HEIGHT) {
return;
}
var width = this.Helper.get_user_unit(config.WIDTH, this.units, this.resolution);
var height = this.Helper.get_user_unit(config.HEIGHT, this.units, this.resolution);
document.getElementById('mouse_info_size').innerHTML = width + ' x ' + height;
var resolution = this.Tools_settings.get_setting('resolution');
document.getElementById('mouse_info_resolution').innerHTML = resolution;
//show units
var default_units = this.Tools_settings.get_setting('default_units_short');
var targets = document.querySelectorAll('.id-mouse_info_units');
for (var i = 0; i < targets.length; i++) {
targets[i].innerHTML = default_units;
}
document.getElementById('mouse_info_size').innerHTML = config.WIDTH + ' x ' + config.HEIGHT;
this.last_width = config.WIDTH;
this.last_height = config.HEIGHT;
}

View File

@ -8,13 +8,18 @@ import config from './../../config.js';
import Base_layers_class from './../base-layers.js';
import Helper_class from './../../libs/helpers.js';
import Layer_rename_class from './../../modules/layer/rename.js';
import Effects_browser_class from './../../modules/effects/browser.js';
import Layer_duplicate_class from './../../modules/layer/duplicate.js';
import Layer_raster_class from './../../modules/layer/raster.js';
import Tools_translate_class from './../../modules/tools/translate.js';
var template = `
<span class="trn">Insert:</span>
<button type="button" class="layer_add" id="insert_layer">+</button>
<button type="button" class="layer_add trn" id="insert_layer" title="Insert new layer">+</button>
<button type="button" class="layer_duplicate trn" id="layer_duplicate" title="Duplicate layer">D</button>
<button type="button" class="layer_raster trn" id="layer_raster" title="Convert layer to raster">R</button>
<button type="button" class="layers_arrow" title="Move down" id="layer_down">&darr;</button>
<button type="button" class="layers_arrow" title="Move up" id="layer_up">&uarr;</button>
<button type="button" class="layers_arrow trn" title="Move layer down" id="layer_down">&darr;</button>
<button type="button" class="layers_arrow trn" title="Move layer up" id="layer_up">&uarr;</button>
<div class="layers_list" id="layers"></div>
`;
@ -28,12 +33,18 @@ class GUI_layers_class {
this.Base_layers = new Base_layers_class();
this.Helper = new Helper_class();
this.Layer_rename = new Layer_rename_class();
this.Effects_browser = new Effects_browser_class();
this.Layer_duplicate = new Layer_duplicate_class();
this.Layer_raster = new Layer_raster_class();
this.Tools_translate = new Tools_translate_class();
}
render_main_layers() {
document.getElementById('layers_base').innerHTML = template;
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, document.getElementById('layers_base'));
}
this.render_layers();
this.set_events();
}
@ -48,6 +59,14 @@ class GUI_layers_class {
new app.Actions.Insert_layer_action()
);
}
else if (target.id == 'layer_duplicate') {
//duplicate
_this.Layer_duplicate.duplicate();
}
else if (target.id == 'layer_raster') {
//raster
_this.Layer_raster.raster();
}
else if (target.id == 'layer_up') {
//move layer up
app.State.do_action(
@ -86,6 +105,18 @@ class GUI_layers_class {
new app.Actions.Delete_layer_filter_action(target.dataset.pid, target.dataset.id)
);
}
else if (target.id == 'filter_name') {
//edit filter
var effects = _this.Effects_browser.get_effects_list();
var key = target.dataset.filter.toLowerCase();
for (var i in effects) {
if(effects[i].title.toLowerCase() == key){
_this.Base_layers.select(target.dataset.pid);
var function_name = _this.Effects_browser.get_function_from_path(key);
effects[i].object[function_name](target.dataset.id);
}
}
}
});
document.getElementById('layers_base').addEventListener('dblclick', function (event) {
@ -114,17 +145,28 @@ class GUI_layers_class {
if (config.layer) {
for (var i in layers) {
var value = layers[i];
var class_extra = '';
if(value.composition === 'source-atop'){
class_extra += ' shorter';
}
if (value.id == config.layer.id){
class_extra += ' active';
}
if (value.id == config.layer.id)
html += '<div class="item active">';
else
html += '<div class="item">';
html += '<div class="item ' + class_extra + '">';
if (value.visible == true)
html += ' <span class="visibility visible" id="visibility" data-id="' + value.id + '" title="hide"></span>';
html += ' <button class="visibility visible trn" id="visibility" data-id="' + value.id + '" title="Hide"></button>';
else
html += ' <span class="visibility" id="visibility" data-id="' + value.id + '" title="show"></span>';
html += ' <span class="delete" id="delete" data-id="' + value.id + '" title="delete"></span>';
html += ' <span class="layer_name" id="layer_name" data-id="' + value.id + '">' + value.name + '</span>';
html += ' <button class="visibility trn" id="visibility" data-id="' + value.id + '" title="Show"></button>';
html += ' <button class="delete trn" id="delete" data-id="' + value.id + '" title="Delete"></button>';
if(value.composition === 'source-atop'){
html += ' <button class="arrow_down" data-id="' + value.id + '" ></button>';
}
var layer_title = this.Helper.escapeHtml(value.name);
html += ' <button class="layer_name" id="layer_name" data-id="' + value.id + '">' + layer_title + '</button>';
html += ' <div class="clear"></div>';
html += '</div>';
@ -138,7 +180,7 @@ class GUI_layers_class {
html += '<div class="filter">';
html += ' <span class="delete" id="delete_filter" data-pid="' + layers[i].id + '" data-id="' + filter.id + '" title="delete"></span>';
html += ' <span class="layer_name" id="filter_name" data-pid="' + layers[i].id + '" data-id="' + filter.id + '">' + title + '</span>';
html += ' <span class="layer_name" id="filter_name" data-pid="' + layers[i].id + '" data-id="' + filter.id + '" data-filter="' + filter.name + '">' + title + '</span>';
html += ' <div class="clear"></div>';
html += '</div>';
}
@ -149,6 +191,9 @@ class GUI_layers_class {
//register
document.getElementById(target_id).innerHTML = html;
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, document.getElementById(target_id));
}
}
}

View File

@ -5,7 +5,7 @@
import config from './../../config.js';
import menuDefinition from './../../config-menu.js';
import Help_translate_class from './../../modules/help/translate.js';
import Tools_translate_class from './../../modules/tools/translate.js';
/**
* class responsible for rendering main menu
@ -20,7 +20,7 @@ class GUI_menu_class {
this.lastFocusedMenuBarLink = 0;
this.dropdownStack = [];
this.Help_translate = new Help_translate_class();
this.Tools_translate = new Tools_translate_class();
}
render_main() {
@ -46,8 +46,12 @@ class GUI_menu_class {
document.body.addEventListener('mousedown', (event) => { return this.on_mouse_down_body(event); }, true);
document.body.addEventListener('touchstart', (event) => { return this.on_mouse_down_body(event); }, true);
window.addEventListener('resize', (event) => { return this.on_resize_window(event); }, true);
document.body.classList.add('loaded');
if (config.LANG != 'en') {
this.Tools_translate.translate(config.LANG, this.menuContainer);
}
}
on(eventName, callback) {
@ -59,10 +63,10 @@ class GUI_menu_class {
}
}
emit(eventName, payload) {
emit(eventName, payload, object) {
if (this.eventSubscriptions[eventName]) {
for (let callback of this.eventSubscriptions[eventName]) {
callback(payload);
callback(payload, object);
}
}
}
@ -297,10 +301,10 @@ class GUI_menu_class {
// Emit callback events for triggered links
if (definition.target) {
this.emit('select_target', definition.target);
this.emit('select_target', definition.target, definition);
}
else if (definition.href) {
this.emit('select_href', definition.href);
this.emit('select_href', definition.href, null);
}
}
@ -339,7 +343,7 @@ class GUI_menu_class {
this.menuContainer.appendChild(dropdownElement);
if (config.LANG != 'en') {
this.Help_translate.translate(config.LANG, this.menuContainer);
this.Tools_translate.translate(config.LANG, this.menuContainer);
}
if (focusAfterCreation) {

View File

@ -15,10 +15,10 @@ var template = `
</div>
<div class="canvas_preview_details">
<div class="details">
<input title="Zoom out" class="layer_add" id="zoom_less" type="button" value="-" />
<input title="Reset zoom level" class="layer_add" id="zoom_100" type="button" value="100%" />
<input title="Zoom in" class="layer_add" id="zoom_more" type="button" value="+" />
<input class="layer_add" id="zoom_fit" type="button" value="Fit" />
<button title="Zoom out" class="layer_add trn" id="zoom_less"">-</button>
<button title="Reset zoom level" class="layer_add trn" id="zoom_100">100%</button>
<button title="Zoom in" class="layer_add trn" id="zoom_more"">+</button>
<button title="Fit window" class="layer_add trn" id="zoom_fit">Fit</button>
</div>
<input id="zoom_range" type="range" value="100" min="50" max="1000" step="50" />
</div>
@ -209,7 +209,7 @@ class GUI_preview_class {
this.canvas_preview.stroke();
}
zoom(recalc) {
async zoom(recalc) {
if (recalc != undefined) {
//zoom-in or zoom-out
if (recalc == 1 || recalc == -1) {
@ -270,11 +270,15 @@ class GUI_preview_class {
config.ZOOM = Math.min(config.ZOOM, 500);
}
document.getElementById("zoom_100").value = Math.round(config.ZOOM * 100) + '%';
document.getElementById("zoom_100").innerHTML = Math.round(config.ZOOM * 100) + '%';
document.getElementById("zoom_range").value = (config.ZOOM * 100);
config.need_render = true;
this.GUI.prepare_canvas();
//sleep after last image import, it maybe not be finished yet
await new Promise(r => setTimeout(r, 10));
return true;
}

View File

@ -6,7 +6,7 @@
import app from './../../app.js';
import config from './../../config.js';
import Helper_class from './../../libs/helpers.js';
import Help_translate_class from './../../modules/help/translate.js';
import Tools_translate_class from './../../modules/tools/translate.js';
import alertify from './../../../../node_modules/alertifyjs/build/alertify.min.js';
import Base_gui_class from '../base-gui.js';
@ -25,7 +25,7 @@ class GUI_tools_class {
instance = this;
this.Helper = new Helper_class();
this.Help_translate = new Help_translate_class();
this.Tools_translate = new Tools_translate_class();
this.Base_gui = new Base_gui_class();
//active tool
@ -200,6 +200,7 @@ class GUI_tools_class {
element.classList.add('ui_icon_button');
element.classList.add('input_height');
element.innerHTML = icon;
element.title = k;
element.innerHTML = '<img style="width:16px;height:16px;" alt="'+title+'" src="images/icons/'+icon+'" />';
} else {
element.classList.add('ui_toggle_button');
@ -251,8 +252,9 @@ class GUI_tools_class {
}
var elementTitle = document.createElement('label');
elementTitle.innerHTML = title + ': ';
elementTitle.innerHTML = title + ':';
elementTitle.id = 'attribute_label_' + k;
elementTitle.className = 'trn';
const elementInput = document.createElement('input');
elementInput.type = 'number';
@ -292,34 +294,45 @@ class GUI_tools_class {
//select
var elementTitle = document.createElement('label');
elementTitle.innerHTML = title + ': ';
elementTitle.innerHTML = title + ':';
elementTitle.for = k;
elementTitle.className = 'trn';
var selectList = document.createElement("select");
selectList.id = k;
for (var j in item.values) {
const values = typeof item.values === 'function' ? item.values() : item.values;
for (let j in values) {
var option = document.createElement("option");
if (item.value == item.values[j]) {
if (item.value == values[j]) {
option.selected = 'selected';
}
option.className = 'trn';
option.name = item.values[j];
option.value = item.values[j];
option.text = item.values[j];
option.name = values[j];
option.value = values[j];
option.text = values[j];
selectList.appendChild(option);
}
//event
selectList.addEventListener('change', (event) => {
const actionData = this.action_data();
actionData.attributes[event.target.id].value = event.target.value;
this.show_action_attributes();
if (actionData.on_update != undefined) {
//send event
var moduleKey = actionData.name;
var functionName = actionData.on_update;
this.tools_modules[moduleKey].object[functionName]({ key: event.target.id, value: event.target.value });
const result = this.tools_modules[moduleKey].object[functionName]({ key: event.target.id, value: event.target.value });
if (result) {
// Allow the on_update function to modify the attribute value if necessary.
if (result.new_values) {
for (let key in result.new_values) {
actionData.attributes[key].value = result.new_values[key];
}
}
}
}
this.show_action_attributes();
});
itemDom.appendChild(elementTitle);
@ -329,8 +342,9 @@ class GUI_tools_class {
//color
var elementTitle = document.createElement('label');
elementTitle.innerHTML = title + ': ';
elementTitle.innerHTML = title + ':';
elementTitle.for = k;
elementTitle.className = 'trn';
var colorInput = document.createElement('input');
colorInput.type = 'color';
@ -362,7 +376,7 @@ class GUI_tools_class {
if (config.LANG != 'en') {
//retranslate
this.Help_translate.translate(config.LANG);
this.Tools_translate.translate(config.LANG);
}
}

513
src/js/languages/ar.json Normal file
View File

@ -0,0 +1,513 @@
{
"A problem occurred while removing undo history. It": "حدثت مشكلة أثناء إزالة محفوظات التراجع. هو - هي",
"About": "حول",
"Active": "نشيط",
"Aden": "عدن",
"Advanced": "متقدم",
"All": "الجميع",
"Alpha": "ألفا",
"Alpha:": "ألفا:",
"Anonymous": "مجهول",
"Anti aliasing": "مكافحة التعرج",
"Application markup may have changed,": "ربما تم تغيير ترميز التطبيق،",
"Arial": "اريال",
"Arrow": "سهم",
"ArrowDown": "السهم للاسفل",
"ArrowLeft": "السهم لليسار",
"ArrowRight": "السهم الأيمن",
"ArrowUp": "ارووب",
"Author:": "مؤلف:",
"Auto Adjust Colors": "ضبط تلقائي للألوان",
"Auto Kerning": "تقنين تلقائي لتقنين الأحرف",
"Average:": "متوسط:",
"Backspace": "مسافة للخلف",
"Base": "يتمركز",
"Basic": "أساسي",
"Black and White": "اسود و ابيض",
"Blue": "أزرق",
"Blue channel:": "القناة الزرقاء:",
"Blueprint": "مخطط",
"Blur Radius:": "نصف قطر التمويه:",
"Blur Tool": "أداة طمس",
"Blur power:": "قوة طمس:",
"Borders": "الحدود",
"Bottom": "قاع",
"Bottom to Top": "من الأسفل للأعلى",
"Bounds:": "الحدود:",
"Box": "علبة",
"Box Blur": "مربع طمس",
"Box blur": "مربع طمس",
"Brightness": "سطوع",
"Brightness:": "سطوع:",
"Bulge\/Pinch Tool": "أداة انتفاخ \/ قرصة",
"Burn": "حرق",
"Can not animate 1 layer.": "لا يمكن تحريك طبقة واحدة.",
"Can not find previous layer.": "لا يمكن العثور على الطبقة السابقة.",
"Can not use this tool on current layer: image already takes all area.": "لا يمكن استخدام هذه الأداة على الطبقة الحالية: الصورة تشغل المساحة بأكملها بالفعل.",
"Cancel": "يلغي",
"Canvas Size": "حجم قماش",
"Center": "مركز",
"Center x:": "المركز x:",
"Center y:": "مركز ص:",
"Center:": "مركز:",
"Change Composition": "تغيير التكوين",
"Change Layer Details": "تغيير تفاصيل الطبقة",
"Change Opacity": "تغيير التعتيم",
"Channel:": "قناة:",
"Circle": "دائرة",
"Clarendon": "كلاريندون",
"Clear": "واضح",
"Clear Selection": "التحديد الواضح",
"Clone Tool": "أداة استنساخ",
"Clone count:": "عدد النسخ:",
"Clone tool disabled for resized image. Please rasterize first.": "تم تعطيل أداة النسخ للصورة التي تم تغيير حجمها. يرجى التنقيط أولا.",
"Cloned edges": "حواف مستنسخة",
"Close": "يغلق",
"Color #": "اللون #",
"Color Corrections": "تصحيحات اللون",
"Color Palette": "لوحة الألوان",
"Color Zoom": "تكبير اللون",
"Color alpha value can not be zero.": "لا يمكن أن تكون قيمة ألفا للون صفراً.",
"Color to Alpha": "لون ألفا",
"Color zoom": "تكبير اللون",
"Color:": "اللون:",
"Colors": "الألوان",
"Colors:": "الألوان:",
"Common Filters": "مرشحات مشتركة",
"Composition": "تكوين",
"Composition:": "تكوين:",
"Content Fill": "تعبئة المحتوى",
"Contrast": "مقابلة",
"Contrast:": "مقابلة:",
"Convert layer to raster": "تحويل الطبقة إلى النقطية",
"Convert to Raster": "تحويل إلى نقطي",
"Copy Selection": "نسخ التحديد",
"Copy to Clipboard": "نسخ إلى الحافظة",
"Courier": "ساعي",
"Crop Tool": "أداة المحاصيل",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "القص على الطبقة التي تم تدويرها غير مدعوم. قم بتحويله إلى خطوط المسح للمتابعة.",
"Ctrl + C": "السيطرة + ج",
"Ctrl+A": "السيطرة + أ",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "السيطرة+P",
"Ctrl+V": "السيطرة + V.",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "السيطرة + Z",
"Current": "تيار",
"Current Color Preview": "معاينة اللون الحالي",
"Custom": "مخصص",
"Data URL": "URL البيانات",
"Data URL:": "URL البيانات:",
"Decrease": "تخفيض",
"Decrease Color Depth": "تقليل عمق اللون",
"Degree:": "درجة:",
"Del": "ديل",
"Delete": "حذف",
"Delete Selection": "حذف التحديد",
"Denoise": "يقلل الضوضاء",
"Desaturate Tool": "أداة إزالة التشبع",
"Description:": "وصف:",
"Deutsch": "الألمانية",
"Differences": "اختلافات",
"Differences Down": "الخلافات أسفل",
"Direction:": "اتجاه:",
"Dither": "ثبات",
"Dithering:": "التردد:",
"Dominant color:": "اللون السائد:",
"Dot Screen": "شاشة نقطية",
"Down": "أسفل",
"Duplicate": "ينسخ",
"Duplicate Layer": "طبقة مكررة",
"Duplicate layer": "طبقة مكررة",
"Dynamic": "متحرك",
"Edge": "حافة",
"Edit": "يحرر",
"Edit text...": "تحرير النص...",
"Effect browser": "متصفح التأثير",
"Effects": "تأثيرات",
"Effects browser": "متصفح التأثيرات",
"Email:": "بريد الالكتروني:",
"Emboss": "زخرف",
"Empty selection": "اختيار فارغ",
"Empty selection or type not image.": "اختيار فارغ أو اكتب ليس صورة.",
"Enable autoresize:": "تمكين إعادة الحجم التلقائي:",
"End": "نهاية",
"English": "الإنجليزية",
"English (UK)": "الإنجليزية (المملكة المتحدة)",
"Enrich": "يثرى",
"Enter": "يدخل",
"Erase Tool": "أداة المحو",
"Erase on rotate object is disabled. Please rasterize first.": "تم تعطيل المسح عند تدوير الكائن. يرجى التنقيط أولا.",
"Error": "خطأ",
"Error connecting to service.": "خطأ في الاتصال بالخدمة.",
"Error loading the list of fonts from Google.": "حدث خطأ أثناء تحميل قائمة الخطوط من Google.",
"Error registering service worker": "خطأ في تسجيل عامل الخدمة",
"Error: can not find filter:": "خطأ: لا يمكن العثور على عامل التصفية:",
"Error: can not find layer with id:": "خطأ: لا يمكن العثور على طبقة بالمعرف:",
"Error: missing details event target": "خطأ: تفاصيل الهدف حدث مفقود",
"Error: unknown layer type:": "خطأ: نوع طبقة غير معروف:",
"Error: unsupported attribute type:": "خطأ: نوع السمة غير مدعوم:",
"Esc": "خروج",
"Escape": "يهرب",
"Español": "الاسبانية",
"Expand edges": "قم بتوسيع الحواف",
"Exponent:": "الأس:",
"Export": "يصدر",
"External": "خارجي",
"Factor:": "عامل:",
"File": "ملف",
"File name:": "اسم الملف:",
"File size:": "حجم الملف:",
"Fill": "ملء",
"Fill Tool": "أداة التعبئة",
"Fit": "ملائم",
"Fit Window": "تناسب النافذة",
"Fit window": "نافذة مناسبة",
"Flatten Image": "تسطيح الصورة",
"Flip": "يواجه",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
"Font": "الخط",
"Français": "الفرنسية",
"Full HD, 1080p": "دقة Full HD ، 1080 بكسل",
"Full Screen": "تكبير الشاشة",
"Full layers data": "بيانات الطبقات الكاملة",
"Gap:": "الفارق:",
"Gaussian Blur": "التمويه الضبابي",
"Gif delay:": "تأخير Gif:",
"Gingham": "القماش القطني",
"GitHub:": "جيثب:",
"Gradient Radius:": "نصف قطر التدرج:",
"Grains": "بقوليات",
"Graphics Interchange Format": "تنسيق تبادل الرسومات",
"Gray": "رمادي",
"Grayscale": "تدرج الرمادي",
"Greek": "اليونانية",
"Green": "لون أخضر",
"Green channel:": "القناة الخضراء:",
"Greyscale:": "الرمادي:",
"Grid": "شبكة",
"Grid on\/off": "الشبكة على \/ قبالة",
"Guides": "خطوط إرشاد",
"Guides enabled.": "تم تمكين الأدلة.",
"H Radius:": "نصف قطر H:",
"H. Align:": "ح. محاذاة:",
"Heatmap": "خريطة الحرارة",
"Height (%):": "ارتفاع (٪):",
"Height:": "ارتفاع:",
"Help": "مساعدة",
"Helvetica": "هيلفيتيكا",
"Hermite": "هيرمايت",
"Hex": "عرافة",
"Hide": "يخفي",
"Histogram": "الرسم البياني",
"Histogram:": "الرسم البياني:",
"Home": "الصفحة الرئيسية",
"Horizontal": "أفقي",
"Horizontal Alignment": "المحاذاة الأفقية",
"Horizontal blur:": "طمس أفقي:",
"Horizontal:": "أفقي:",
"Hue": "مسحة",
"Hue Rotate": "تدوير هوى",
"Hue:": "مسحة:",
"Image": "صورة",
"Image data with multi-layers. Can be opened using miniPaint -": "بيانات الصورة متعددة الطبقات. يمكن فتحه باستخدام miniPaint -",
"Impact": "تأثير",
"In proportion:": "في نسبة:",
"Increase": "زيادة",
"Information": "معلومة",
"Inkwell": "محبرة",
"Insert": "إدراج",
"Insert guides": "أدلة إدراج",
"Insert new layer": "أدخل طبقة جديدة",
"Instagram Filters": "مرشحات Instagram",
"Invalid Hex Code": "رمز سداسي عشري غير صالح",
"Italiano": "ايطالي",
"JPG\/JPEG Format": "تنسيق JPG \/ JPEG",
"Kerning:": "تقنين الأحرف:",
"Key-Points": "النقاط الرئيسية",
"KeyU": "KeyU",
"Keyboard Shortcuts": "اختصارات لوحة المفاتيح",
"Keyword:": "الكلمة الرئيسية:",
"Lanczos": "لانكوز",
"Landscape": "منظر جمالي",
"Language": "لغة",
"Last modified": "آخر تعديل",
"Layer": "طبقة",
"Layer details": "تفاصيل الطبقة",
"Layer is empty.": "الطبقة فارغة.",
"Layer is not compatible with resize": "الطبقة غير متوافقة مع تغيير الحجم",
"Layer is vector, convert it to raster to apply this tool.": "الطبقة متجهية ، قم بتحويلها إلى خطوط نقطية لتطبيق هذه الأداة.",
"Layers": "طبقات",
"Layers:": "طبقات:",
"Layout:": "تَخطِيط:",
"Left": "اليسار",
"Left to Right": "من اليسار إلى اليمين",
"Level:": "مستوى:",
"Levels:": "المستويات:",
"Lietuvių": "ليتوفيتش",
"Lo-fi": "Lo-fi",
"Luminance:": "الانارة:",
"Luminosity": "لمعان",
"Magic Eraser Tool": "أداة ماجيك ممحاة",
"Merge Down": "دمج أسفل",
"Merge Layers": "دمج الطبقات",
"Merged": "مندمجة",
"Metrics": "المقاييس",
"Middle": "وسط",
"Missing at least 1 size parameter.": "معلمة حجم واحدة مفقودة على الأقل.",
"Missing permissions to write to Clipboard.cc": "أذونات مفقودة للكتابة إلى Clipboard.cc",
"Mode:": "الوضع:",
"Module function not found.": "لم يتم العثور على وظيفة الوحدة النمطية.",
"Modules class not found:": "فئة الوحدات غير موجودة:",
"Monospace": "مونوسبيس",
"Mosaic": "فسيفساء",
"Mouse:": "الفأر:",
"Move": "يتحرك",
"Move Layer": "تحريك الطبقة",
"Move layer down": "انقل الطبقة إلى الأسفل",
"Move layer up": "حرك الطبقة لأعلى",
"Name:": "اسم:",
"Negative": "سلبي",
"New": "جديد",
"New Bezier Layer": "طبقة بيزيير جديدة",
"New Brush Layer": "طبقة فرشاة جديدة",
"New Ellipse Layer": "طبقة Ellipse جديدة",
"New File": "ملف جديد",
"New Gradient Layer": "طبقة متدرجة جديدة",
"New Layer": "طبقة جديدة",
"New Line Layer": "طبقة خط جديدة",
"New Pencil Layer": "طبقة قلم رصاص جديدة",
"New Polygon Layer": "طبقة مضلعة جديدة",
"New Rectangle Layer": "طبقة مستطيل جديدة",
"New Text Layer": "طبقة نص جديدة",
"New file": "ملف جديد",
"New from Selection": "جديد من التحديد",
"New layer": "طبقة جديدة",
"Next": "التالي",
"Night Vision": "الرؤية الليلية",
"None": "لا أحد",
"Nothing is selected.": "لم يتم اختيار شيء.",
"Offset X:": "تعويض X:",
"Offset Y:": "تعويض ص:",
"Oil": "زيت",
"Ok": "موافق",
"Online image editor.": "محرر الصور على الإنترنت.",
"Opacity": "العتامة",
"Opacity:": "العتامة:",
"Open": "فتح",
"Open Data URL": "فتح URL البيانات",
"Open Directory": "الدليل المفتوح",
"Open File": "افتح ملف",
"Open File Data URL": "فتح ملف بيانات URL",
"Open File URL": "فتح ملف URL",
"Open File Webcam": "افتح ملف كاميرا الويب",
"Open Image": "صورة مفتوحة",
"Open JSON File": "افتح ملف JSON",
"Open Test Template": "افتح نموذج الاختبار",
"Open URL": "رابط مفتوح",
"Open data URL": "فتح URL البيانات",
"Open from Webcam": "افتح من كاميرا الويب",
"Original Size": "الحجم الأصلي",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - تحويل الصورة إلى SVG",
"PageDown": "اسفل الصفحة",
"PageUp": "PageUp",
"Palette": "لوحة",
"Parameter #1:": "المعلمة # 1:",
"Parameter #2:": "المعلمة # 2:",
"Paste": "معجون",
"Pencil": "قلم",
"Percentage:": "النسبة المئوية:",
"Pixels:": "بكسل:",
"Placeholder comment for color channels": "تعليق العنصر النائب لقنوات الألوان",
"Placeholder comment for color picker": "تعليق العنصر النائب لمنتقي الألوان",
"Placeholder comment for color swatches": "تعليق العنصر النائب لحوامل اللون",
"Portable Network Graphics": "رسومات الشبكة المحمولة",
"Portrait": "لَوحَة",
"Português": "البرتغالية",
"Position:": "موقع:",
"Power:": "قوة:",
"Preview": "معاينة",
"Previous": "سابق",
"Previous layer must be image, convert it to raster to apply this tool.": "يجب أن تكون الطبقة السابقة صورة ، قم بتحويلها إلى نقطية لتطبيق هذه الأداة.",
"Print": "مطبعة",
"Quality:": "جودة:",
"Quick Load": "تحميل سريع",
"Quick Save": "حفظ سريع",
"REMOVE.BG - Remove Image Background": "؛ REMOVE.BG - إزالة خلفية الصورة",
"Radial": "شعاعي",
"Radial gradient": "شعاعي التدرج",
"Radius:": "نصف القطر:",
"Range:": "نطاق:",
"Red": "أحمر",
"Red channel:": "القناة الحمراء:",
"Redo": "إعادة",
"Remove all": "حذف الكل",
"Rename": "إعادة تسمية",
"Rename Layer": "إعادة تسمية الطبقة",
"Rendered with errors.": "قدمت مع وجود أخطاء.",
"Rendering...": "استدعاء...",
"Replace Color": "استبدل اللون",
"Replace color": "استبدل اللون",
"Replacement:": "إستبدال:",
"Report Issues": "الإبلاغ عن المشكلات",
"Reset": "إعادة ضبط",
"Resize": "تغيير الحجم",
"Resize Boundary": "تغيير حجم الحدود",
"Resize Layer": "طبقة تغيير الحجم",
"Resize Layers": "تغيير حجم الطبقات",
"Resize Text Layer": "تغيير حجم طبقة النص",
"Resized as background": "تم تغيير الحجم كخلفية",
"Resized:": "تم تغيير الحجم:",
"Resolution:": "القرار:",
"Restore Alpha": "استعادة ألفا",
"Right": "حق",
"Right angle:": "زاوية مستقيمة:",
"Right to Left": "من اليمين الى اليسار",
"Rotate": "استدارة",
"Rotate Layer": "تدوير طبقة",
"Rotate is not supported on this type of object. Convert to raster?": "التدوير غير مدعوم في هذا النوع من الكائنات. تحويل إلى نقطية؟",
"Rotate left": "استدر يسارا",
"Rotate:": "استدارة:",
"Ruler": "مسطرة",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - ضغط ومقارنة الصور",
"Saturate": "تشبع",
"Saturation": "التشبع",
"Saturation:": "التشبع:",
"Save As": "حفظ باسم",
"Save As Data URL": "حفظ باسم URL البيانات",
"Save as": "حفظ باسم",
"Save as type:": "حفظ كنوع:",
"Save layers:": "حفظ الطبقات:",
"Scaling up is not supported in Hermite, using Lanczos.": "التوسع غير مدعوم في Hermite ، باستخدام Lanczos.",
"Scroll down": "حرك الفأرة لأسفل",
"Scroll up": "انتقل إلى أعلى",
"Search": "بحث",
"Search Images": "البحث عن الصور",
"Search for Font": "البحث عن الخط",
"Search:": "يبحث:",
"Select All": "اختر الكل",
"Select Text Layer": "حدد طبقة النص",
"Select object tool": "حدد أداة الكائن",
"Selected": "المحدد",
"Selection Tool": "آلة الاختيار",
"Sensitivity:": "حساسية:",
"Separated": "منفصل",
"Separated (original types)": "منفصل (الأنواع الأصلية)",
"Sepia": "بني داكن",
"Set Image Size": "ضبط حجم الصورة",
"Settings": "إعدادات",
"Shadow": "ظل",
"Shapes": "الأشكال",
"Shapes (H)": "الأشكال (ح)",
"Sharpen": "شحذ",
"Sharpen Tool": "أداة شحذ",
"Sharpen:": "شحذ:",
"Shift + S": "التحول + س",
"Shortcut Key:": "مفتاح الاختصار:",
"Show": "يعرض",
"Show \/ Hide": "اظهر المخفي",
"Show file size:": "إظهار حجم الملف:",
"Simple": "بسيط",
"Size is too big, max": "الحجم كبير جدًا ، الحد الأقصى",
"Size:": "مقاس:",
"Skip - layer must be image.": "تخطي - يجب أن تكون الطبقة عبارة عن صورة.",
"Solarize": "شمسي",
"Sorry, cold not load getUserMedia() data:": "عذرا ، لا تقم بتحميل بيانات getUserMedia ():",
"Sorry, image could not be loaded.": "عذرا ، الصورة لا يمكن تحميلها.",
"Sorry, image could not be loaded. Try copy image and paste it.": "عذرا ، الصورة لا يمكن تحميلها. حاول نسخ الصورة ولصقها.",
"Sorry, image is too big, max 5 MB.": "عذرًا ، الصورة كبيرة جدًا ، بحد أقصى 5 ميجا بايت.",
"Source coordinates saved.": "تم حفظ إحداثيات المصدر.",
"Source is empty, right click on image or use long press to save source position.": "المصدر فارغ ، انقر بزر الماوس الأيمن على الصورة أو استخدم الضغط لفترة طويلة لحفظ موضع المصدر.",
"Sprites": "العفاريت",
"Square": "مربع",
"Stream:": "مجرى:",
"Strength:": "قوة:",
"Strict": "صارم",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - ضغط PNG و JPEG",
"Tab": "فاتورة غير مدفوعة",
"Tag Image File Format": "تنسيق ملف صورة العلامة",
"Tahoma": "تاهوما",
"Target:": "استهداف:",
"The quick brown fox jumps over the lazy dog.": "الثعلب البني السريع يقفز فوق الكلب الكسول.",
"There": "هناك",
"There are no layers behind.": "لا توجد طبقات خلف.",
"There is only 1 layer.": "هناك طبقة واحدة فقط.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "يجب أن تحتوي هذه الطبقة على صورة. يرجى تحويله إلى نقطية لتطبيق هذه الأداة.",
"Tilt Shift": "تحول الإمالة",
"Times New Roman": "تايمز نيو رومان",
"Toaster": "محمصة",
"Toggle": "تبديل",
"Toggle Color Channels": "تبديل قنوات الألوان",
"Toggle Color Picker": "تبديل منتقي الألوان",
"Toggle Menu": "تبديل القائمة",
"Toggle Swatches": "تبديل العينات",
"Tools": "أدوات",
"Top": "قمة",
"Top to Bottom": "من اعلى لاسفل",
"Total pixels:": "إجمالي وحدات البكسل:",
"Translate": "ترجمة",
"Translate Layer": "طبقة الترجمة",
"Translate error, can not find dictionary:": "خطأ في الترجمة ، لا يمكن العثور على القاموس:",
"Transparent:": "شفاف:",
"Trim": "تقليم",
"Trim Layers": "طبقات القطع",
"Trim borders:": "تقليم الحدود:",
"Trim layer:": "طبقة القطع:",
"Trim white color?": "تقليم اللون الأبيض؟",
"Type:": "اكتب:",
"Türkçe": "Türkçe",
"Undo": "الغاء التحميل",
"Unique colors:": "ألوان فريدة:",
"Up": "فوق",
"Update": "تحديث",
"Update Brush Layer": "تحديث طبقة الفرشاة",
"Update Pencil Layer": "تحديث طبقة القلم الرصاص",
"Update guides": "أدلة التحديث",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "استخدم اختصار لوحة المفاتيح Ctrl + V للصق من الحافظة.",
"V Radius:": "نصف القطر الخامس:",
"V. Align:": "V. محاذاة:",
"Valencia": "فالنسيا",
"Verdana": "فيردانا",
"Version:": "الإصدار:",
"Vertical": "رأسي",
"Vertical Alignment": "انحياز عمودي",
"Vertical blur:": "التمويه العمودي:",
"Vertical:": "رأسي:",
"Vibrance": "حيوية",
"View": "رأي",
"Vignette": "المقالة القصيرة",
"ViliusL": "ViliusL",
"Vintage": "كلاسيكي",
"Webcam": "كاميرا ويب",
"Webcam #": "كاميرا ويب #",
"Website:": "موقع الكتروني:",
"Weppy File Format": "تنسيق ملف Weppy",
"Width (%):": "عرض (٪):",
"Width:": "عرض:",
"Windows Bitmap": "Windows Bitmap",
"Word": "كلمة",
"Word + Letter": "كلمة + حرف",
"Wrap At:": "التفاف في:",
"Wrap:": "لف:",
"Wrong dimensions": "أبعاد خاطئة",
"Wrong file type, must be image or json.": "نوع الملف غير صحيح ، يجب أن يكون صورة أو json.",
"X end:": "نهاية X:",
"X position:": "المركز العاشر:",
"X start:": "بداية X:",
"X-Pro II": "اكس برو الثاني",
"Y end:": "نهاية ص:",
"Y position:": "موقف ص:",
"Y start:": "بداية Y:",
"You can also drag and drop items into browser.": "يمكنك أيضًا سحب العناصر وإفلاتها في المتصفح.",
"Your browser does not support canvas or JavaScript is not enabled.": "لا يدعم المستعرض الخاص بك اللوحة القماشية أو لم يتم تمكين JavaScript.",
"Your browser does not support this format.": "متصفحك لا يدعم هذا التنسيق.",
"Your search did not match any images.": "بحثك لم يطابق أي صور.",
"Zoom": "تكبير",
"Zoom Blur": "زووم بلور",
"Zoom In": "تكبير",
"Zoom Out": "تصغير",
"Zoom blur": "زووم طمس",
"Zoom in": "تكبير",
"Zoom out": "تصغير",
"Zoom:": "تكبير:"
}

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Beim Entfernen des Rückgängig-Verlaufs ist ein Problem aufgetreten. Es",
"About": "Über",
"Active": "Aktiv",
"Aden": "Aden",
"Advanced": "Fortgeschritten",
"All": "Alle",
"Alpha": "Alpha",
"Alpha:": "Alpha:",
"Anonymous": "Anonym",
"Anti aliasing": "Kantenglättung",
"Application markup may have changed,": "Das Anwendungs-Markup hat sich möglicherweise geändert.",
"Arial": "Arial",
"Arrow": "Pfeil",
"ArrowDown": "Pfeil nach unten",
"ArrowLeft": "Pfeil links",
"ArrowRight": "Pfeil rechts",
"ArrowUp": "Pfeil nach oben",
"Author:": "Autor:",
"Auto Adjust Colors": "Automatische Farbeinstellung",
"Auto Kerning": "Auto Kerning",
"Average:": "Durchschnitt:",
"BMP - Windows Bitmap": "BMP - Windows-Bitmap",
"Backspace": "Rücktaste",
"Base": "Basis",
"Basic": "Basic",
"Black and White": "Schwarz und weiß",
"Blue": "Blau",
"Blue channel:": "Blauer Kanal:",
"Blue:": "Blau:",
"Blueprint": "Entwurf",
"Blur Radius:": "Weichzeichner-Radius:",
"Blur Tool": "Unschärfewerkzeug",
"Blur power:": "Weichzeichner-Stärke:",
"Blur tool": "Weichzeichner",
"Bold": "Fett gedruckt",
"Bold Italic": "Fett Kursiv",
"Borders": "Grenzen",
"Bottom": "Unterseite",
"Bottom to Top": "Unten nach oben",
"Bounds:": "Grenzen:",
"Box": "Box",
"Box Blur": "Box Unschärfe",
"Box blur": "Box Unschärfe",
"Brightness": "Helligkeit",
"Brightness:": "Helligkeit:",
"Brush": "Pinsel",
"Bulge\/Pinch tool": "Ausbuchtung \/ Pinch-Werkzeug",
"Bulge\/Pinch Tool": "Ausbuchtungs- \/ Quetschwerkzeug",
"Burn": "Brennen",
"CSS Filters": "CSS-Filter",
"Can not animate 1 layer.": "1 Ebene kann nicht animiert werden.",
"Can not find previous layer.": "Die vorherige Ebene kann nicht gefunden werden.",
"Can not use this tool on current layer: image already takes all area.": "Dieses Werkzeug kann auf der aktuellen Ebene nicht verwendet werden: Das Bild nimmt bereits den gesamten Bereich ein.",
"Cancel": "Abbrechen",
"Canvas Size": "Leinwandgröße",
"Center": "Zentrum",
"Center x:": "Mitte x:",
"Center y:": "Mitte y:",
"Center:": "Zentrum:",
"Change Composition": "Zusammensetzung ändern",
"Change Layer Details": "Layerdetails ändern",
"Change Opacity": "Deckkraft ändern",
"Channel:": "Kanal:",
"Circle": "Kreis",
"Clarendon": "Clarendon",
"Clear": "Löschen",
"Clear Selection": "Auswahl löschen",
"Clone Tool": "Klon-Tool",
"Clone count:": "Klonanzahl:",
"Clone tool": "Klonwerkzeug",
"Clone tool disabled for resized image. Please rasterize first.": "Das Klon-Tool ist für das in der Größe geänderte Bild deaktiviert. Bitte zuerst rastern.",
"Cloned edges": "Klonierte Kanten",
"Close": "Schließen",
"Color #": "Farbe #",
"Color Zoom": "Farbzoom",
"Color alpha value can not be zero.": "Farb-Alpha-Wert kann nicht Null sein.",
"Color Corrections": "Farbkorrekturen",
"Color Palette": "Farbpalette",
"Color Zoom": "Farbzoom",
"Color alpha value can not be zero.": "Farb-Alpha-Wert kann nicht Null sein.",
"Color to Alpha": "Farbe zu Alpha",
"Color zoom": "Farbzoom",
"Color:": "Farbe:",
"Colors": "Farben",
"Colors:": "Farben:",
"Common Filters": "Allgemeine Filter",
"Composition": "Zusammensetzung",
"Composition:": "Zusammensetzung:",
"Content Fill": "Inhalt ausfüllen",
"Contrast": "Kontrast",
"Contrast:": "Kontrast:",
"Convert layer to raster": "Konvertieren Sie die Ebene in ein Raster",
"Convert to Raster": "In Raster konvertieren",
"Copy Selection": "Auswahl kopieren",
"Copy:": "Kopieren:",
"Copy to Clipboard": "In die Zwischenablage kopieren",
"Courier": "Kurier",
"Crop": "Zuschneiden",
"Crop Tool": "Freistellungswerkzeug",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Das Zuschneiden auf einer gedrehten Ebene wird nicht unterstützt. Konvertieren Sie es in Raster, um fortzufahren.",
"Ctrl + C": "Strg + C",
"Ctrl+A": "Strg + A.",
"Ctrl+C": "Strg + C.",
"Ctrl+P": "Strg+P",
"Ctrl+V": "Strg + V",
"Ctrl-P": "Strg-P",
"Ctrl+Y": "Strg + Y.",
"Ctrl+Z": "Strg + Z.",
"Current": "Aktuell",
"Curve": "Kurve",
"Current Color Preview": "Aktuelle Farbvorschau",
"Custom": "Individuell",
"Data URL": "Daten-URL",
"Data URL:": "Daten-URL:",
"Decrease": "Verringern",
"Decrease Color Depth": "Farbtiefe verringern",
"Default": "Standard",
"Degree:": "Grad:",
"Del": "Del",
"Delete": "Löschen",
"Delete Selection": "Auswahl löschen",
"Denoise": "Denoise",
"Desaturate": "Entsättigen",
"Desaturate Tool": "Entsättigtes Werkzeug",
"Description:": "Beschreibung:",
"Deutsch": "Deutsch",
"Differences": "Unterschiede",
"Differences Down": "Unterschiede nach unten",
"Direction:": "Richtung:",
"Dither": "Dither",
"Dithering:": "Dithering:",
"Dominant color:": "Dominierende Farbe:",
"Dot Screen": "Punkt-Bildschirm",
"Down": "Runter",
"Duplicate": "Duplikat",
"Duplicate Layer": "Ebene duplizieren",
"Duplicate layer": "Ebene duplizieren",
"Dynamic": "Dynamisch",
"Edge": "Kante",
"Edit": "Bearbeiten",
"Edit text": "Text bearbeiten",
"Edit text...": "Text bearbeiten...",
"Effect browser": "Effektbrowser",
"Effects": "Filter",
"Effects browser": "Effektbrowser",
"Email:": "Email:",
"Emboss": "Prägen",
"Empty selection": "Leere Auswahl",
"Empty selection or type not image.": "Leere Auswahl oder kein Bildtyp.",
"Enable autoresize:": "Automatische Größenänderung aktivieren:",
"End": "Ende",
"English": "Englisch",
"English (UK)": "Englisch UK)",
"Enrich": "Bereichern",
"Erase": "Löschen",
"Erase on rotate object is disabled. Sorry.": "Das Objekt \"Erase on rotate\" ist deaktiviert. Es tut uns leid.",
"Enter": "Eingeben",
"Erase Tool": "Löschwerkzeug",
"Erase on rotate object is disabled. Please rasterize first.": "„Löschen beim Drehen des Objekts“ ist deaktiviert. Bitte zuerst rastern.",
"Error": "Fehler",
"Error connecting to service.": "Fehler beim Verbinden mit dem Dienst.",
"Error: can not load image.": "Fehler: Bild kann nicht geladen werden.",
"Error loading the list of fonts from Google.": "Fehler beim Laden der Schriftartenliste von Google.",
"Error registering service worker": "Fehler beim Registrieren des Servicemitarbeiters",
"Error: can not find filter:": "Fehler: Filter kann nicht gefunden werden:",
"Error: can not find layer with id:": "Fehler: Layer mit ID kann nicht gefunden werden:",
"Error: missing details event target": "Fehler: Details zum Ereignis fehlen",
"Error: unknown layer type:": "Fehler: unbekannter Layertyp:",
"Error: unsupported attribute type:": "Fehler: nicht unterstützter Attributtyp:",
"Error: wrong key:": "Fehler: falscher Schlüssel:",
"Esc": "Esc",
"Escape": "Flucht",
"Español": "Spanisch",
"Expand edges": "Kanten erweitern",
"Exponent:": "Exponent:",
"Export": "Export",
"External": "Extern",
"Factor:": "Faktor:",
"File": "Datei",
"File name:": "Dateiname:",
"File size:": "Dateigröße:",
"Fill": "Füllen",
"Fill Tool": "Füllwerkzeug",
"Fit": "Passen",
"Fit Window": "Fenster einpassen",
"Fit window": "Fenster einbauen",
"Flatten Image": "Zu einer Ebene vereinigen",
"Flip": "Spiegeln",
"FloydSteinberg-serpentine": "FloydSteinberg-Serpentin",
"French": "Französisch",
"Font": "Schriftart",
"Français": "Français",
"Full HD, 1080p": "Volles HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
"Full Screen": "Ganzer Bildschirm",
"Full layers data": "Vollständige Layer-Daten",
"Gap:": "Spalt:",
"Gaussian Blur": "Gaußscher Weichzeichner",
"German": "Deutsch",
"Gif delay:": "Gif Verzögerung:",
"Gingham": "Gingham",
"GitHub:": "GitHub:",
"Gradient": "Gradient",
"Gradient Radius:": "Gradient Radius:",
"Grains": "Körner",
"Graphics Interchange Format": "Grafikaustauschformat",
"Gray": "Grau",
"Grayscale": "Graustufen",
"Greek": "griechisch",
"Green": "Grün",
"Green channel:": "Grüner Kanal:",
"Green:": "Grün:",
"Greyscale:": "Graustufen:",
"Grid": "Raster",
"Grid on\/off": "Raster ein \/ aus",
"Guides": "Führer",
"Guides enabled.": "Anleitungen aktiviert.",
"H Radius:": "H Radius:",
"H. Align:": "H. Ausrichten:",
"Heatmap": "Heatmap",
"Height (%):": "Höhe (%):",
"Height:": "Höhe:",
"Help": "Hilfe",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex:": "Hex:",
"Hex": "Verhexen",
"Hide": "Verstecken",
"Histogram": "Histogramm",
"Histogram:": "Histogramm:",
"Home": "Zuhause",
"Horizontal": "Horizontal",
"Horizontal Alignment": "Horizontale Ausrichtung",
"Horizontal blur:": "Horizontale Unschärfe:",
"Horizontal:": "Horizontal:",
"Hue": "Farbton",
"Hue Rotate": "Farbton drehen",
"Hue:": "Farbton:",
"Image": "Bild",
"Image data with multi-layers. Can be opened using miniPaint -": "Bilddaten mit mehreren Ebenen. Kann mit miniPaint geöffnet werden -",
"Impact": "Auswirkung",
"In proportion:": "Im Verhältnis:",
"Increase": "Erhöhen, ansteigen",
"Information": "Information",
"Insert:": "Einfügen:",
"Inkwell": "Tintenfass",
"Insert": "Einfügen",
"Insert guides": "Führungen einfügen",
"Insert new layer": "Neue Ebene einfügen",
"Instagram Filters": "Instagram Filter",
"Invalid Hex Code": "Ungültiger Hex-Code",
"Italiano": "Italienisch",
"Italic": "Kursiv",
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG Format",
"JPG, WEBP quality:": "JPG, WEBP Qualität:",
"JSON - Full layers data": "JSON - Vollständige Ebenen-Daten",
"Japanese": "Japanisch",
"JPG\/JPEG Format": "JPG \/ JPEG-Format",
"Kerning:": "Kerning:",
"Key-Points": "Schlüsselpunkte",
"KeyU": "KeyU",
"Keyboard Shortcuts": "Tastatürkürzel",
"Keyword:": "Stichwort:",
"Korean": "Koreanisch",
"Lanczos": "Lanczos",
"Landscape": "Landschaft",
"Language": "Sprache",
"Last modified": "Zuletzt bearbeitet",
"Layer": "Schicht",
"Layer details": "Ebenendetails",
"Layer is already image.": "Die Ebene ist bereits ein Bild.",
"Layer must be image, convert it to raster to apply this tool.": "Die Ebene muss ein Bild sein, wandeln Sie sie in ein Raster um, um dieses Werkzeug anzuwenden.",
"Layer is empty.": "Die Ebene ist leer.",
"Layer is not compatible with resize": "Die Ebene ist nicht mit der Größenänderung kompatibel",
"Layer is vector, convert it to raster to apply this tool.": "Die Ebene ist ein Vektor. Konvertieren Sie sie in ein Raster, um dieses Werkzeug anzuwenden.",
"Layers": "Ebenen",
"Layers:": "Ebenen:",
"Layout:": "Layout:",
"Left": "Links",
"Left to Right": "Links nach rechts",
"Level:": "Niveau:",
"Levels:": "Stufen:",
"Lietuvių": "Litauisch",
"Line": "Linie",
"Lum:": "Lum:",
"Lo-fi": "Lo-Fi",
"Luminance:": "Leuchtdichte:",
"Magic Wand Tool": "Zauberstab-Werkzeug",
"Luminosity": "Helligkeit",
"Magic Eraser Tool": "Magic Eraser Tool",
"Merge Down": "Nach unten vereinigen",
"Merge Layers": "Ebenen zusammenführen",
"Merged": "Zusammengeführt",
"Metrics": "Metriken",
"Middle": "Mitte",
"Missing at least 1 size parameter.": "Mindestens 1 Größenparameter fehlt.",
"Missing permissions to write to Clipboard.cc": "Fehlende Berechtigungen zum Schreiben in Clipboard.cc",
"Mode:": "Modus:",
"Module function not found.": "Modulfunktion nicht gefunden.",
"Modules class not found:": "Modulklasse nicht gefunden:",
"Monospace": "Monospace",
"Mosaic": "Mosaik",
"Mouse:": "Maus:",
"Move": "Bewegung",
"Move down": "Nach unten schieben",
"Move up": "Nach oben schieben",
"Move Layer": "Ebene verschieben",
"Move layer down": "Ebene nach unten verschieben",
"Move layer up": "Ebene nach oben verschieben",
"Name:": "Name:",
"Needs at least 2 layers.": "Benötigt mindestens 2 Ebenen.",
"Negative": "Negativ",
"New": "Neu",
"New Bezier Layer": "Neue Bezier-Ebene",
"New Brush Layer": "Neue Pinselschicht",
"New Ellipse Layer": "Neue Ellipsenebene",
"New File": "Neue Datei",
"New Gradient Layer": "Neue Verlaufsebene",
"New Layer": "Neue Schicht",
"New Line Layer": "Neue Linienebene",
"New Pencil Layer": "Neue Bleistiftebene",
"New Polygon Layer": "Neue Polygonebene",
"New Rectangle Layer": "Neue Rechteckschicht",
"New Text Layer": "Neue Textebene",
"New file": "Neue Datei",
"New from Selection": "Neu von Auswahl",
"New layer": "Neue Ebene",
"New width can not be smaller then current width": "Die neue Breite darf nicht kleiner als die aktuelle Breite sein",
"Normal": "Normal",
"Next": "Nächste",
"Night Vision": "Nachtsicht",
"None": "Keiner",
"Nothing is selected.": "Nichts ausgewählt.",
"Offset X:": "Offset X:",
"Offset Y:": "Offset Y:",
@ -217,23 +298,34 @@
"Open Data URL": "Öffnen Sie die Daten-URL",
"Open Directory": "Verzeichnis öffnen",
"Open File": "Datei öffnen",
"Open File Data URL": "Öffnen Sie die Dateidaten-URL",
"Open File URL": "Öffnen Sie die Datei-URL",
"Open File Webcam": "Öffnen Sie die Datei-Webcam",
"Open Image": "Bild öffnen",
"Open JSON File": "Öffnen Sie die JSON-Datei",
"Open Test Template": "Öffnen Sie die Testvorlage",
"Open URL": "Öffne URL",
"Open data URL": "Öffnen Sie die Daten-URL",
"Open from Webcam": "Von der Webcam öffnen",
"Original Size": "Originalgröße",
"PNG - Portable Network Graphics": "PNG - Portable Netzwerkgrafik",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Bild in SVG konvertieren",
"PageDown": "Bild nach unten",
"PageUp": "PageUp",
"Palette": "Palette",
"Parameter #1:": "Parameter # 1:",
"Parameter #2:": "Parameter # 2:",
"Paste": "Einfügen",
"Pencil": "Bleistift",
"Percentage:": "Prozentsatz:",
"Pick Color": "Farbe wählen",
"Pixels:": "Pixel:",
"Play animation": "Animation abspielen",
"Portuguese": "Portugiesisch",
"Placeholder comment for color channels": "Platzhalterkommentar für Farbkanäle",
"Placeholder comment for color picker": "Platzhalterkommentar für Farbwähler",
"Placeholder comment for color swatches": "Platzhalterkommentar für Farbfelder",
"Portable Network Graphics": "Tragbare Netzwerkgrafiken",
"Portrait": "Porträt",
"Português": "Português",
"Position:": "Position:",
"Power:": "Leistung:",
"Powred by pixabay.com .": "Powred von pixabay.com.",
"Pre-Blur:": "Vor Weichzeichnen:",
"Preview": "Vorschau",
"Previous": "Bisherige",
"Previous layer must be image, convert it to raster to apply this tool.": "Die vorherige Ebene muss ein Bild sein, wandeln Sie sie in ein Raster um, um dieses Werkzeug anzuwenden.",
@ -241,123 +333,168 @@
"Quality:": "Qualität:",
"Quick Load": "Schnell laden",
"Quick Save": "Schnellspeichern",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Bildhintergrund entfernen",
"Radial": "Radial",
"Radial gradient": "Radialer Verlauf",
"Radius:": "Radius:",
"Range:": "Angebot:",
"Rectangle": "Rechteck",
"Red": "Rot",
"Red channel:": "Roter Kanal:",
"Red:": "Rot:",
"Redo": "Wiederholen",
"Remove all": "Alles entfernen",
"Rename": "Umbenennen",
"Rename Layer": "Ebene umbenennen",
"Rendered with errors.": "Mit Fehlern gerendert.",
"Rendering...": "Rendern ...",
"Replace Color": "Farbe ersetzen",
"Replace color": "Farbe ersetzen",
"Replacement:": "Ersatz:",
"Report Issues": "Probleme melden",
"Resample - Hermite": "Resample - Hermite",
"Reset": "Zurücksetzen",
"Reset zoom level": "Zoomstufe zurücksetzen",
"Resize": "Größe ändern",
"Resize Boundary": "Größe der Grenze ändern",
"Resize Layer": "Ändern Sie die Größe der Ebene",
"Resize Layers": "Ändern Sie die Größe von Ebenen",
"Resize Text Layer": "Ändern Sie die Größe der Textebene",
"Resized as background": "Größe als Hintergrund",
"Resized:": "Größe geändert:",
"Resolution:": "Auflösung:",
"Restore Alpha": "Alpha wiederherstellen",
"Right": "Recht",
"Right angle:": "Rechter Winkel:",
"Right to Left": "Rechts nach links",
"Rotate": "Drehen",
"Rotate Layer": "Ebene drehen",
"Rotate is not supported on this type of object. Convert to raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?",
"Rotate left": "Nach links drehen",
"Rotate:": "Drehen:",
"Russian": "Russisch",
"Sat:": "Sat:",
"Ruler": "Herrscher",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Bilder komprimieren und vergleichen",
"Saturate": "Sättigen",
"Saturation": "Sättigung",
"Saturation:": "Sättigung:",
"Save": "Speichern",
"Save As": "Speichern als",
"Save As Data URL": "Als Daten-URL speichern",
"Save as": "Speichern als",
"Save as type:": "Speichern unter:",
"Save layers:": "Ebenen speichern:",
"Save resolution:": "Auflösung speichern:",
"Scaling up is not supported in Hermite, using Lanczos.": "Das Skalieren wird in Hermite mit Lanczos nicht unterstützt.",
"Scroll down": "Runterscrollen",
"Scroll up": "Hochscrollen",
"Search": "Suche",
"Search Images": "Bilder suchen",
"Search for Font": "Suchen Sie nach Schriftart",
"Search:": "Suchen:",
"Select All": "Alles auswählen",
"Select Text Layer": "Wählen Sie Textebene",
"Select object tool": "Wählen Sie das Objektwerkzeug aus",
"Selected": "Ausgewählt",
"Selection": "Auswahl",
"Selection Tool": "Auswahlwerkzeug",
"Sensitivity:": "Empfindlichkeit:",
"Separated": "Getrennt",
"Separated (original types)": "Getrennt (Originaltypen)",
"Sepia": "Sepia",
"Set Image Size": "Stellen Sie die Bildgröße ein",
"Settings": "Einstellungen",
"Shadow": "Schatten",
"Shadow:": "Schatten:",
"Shapes": "Formen",
"Shapes (H)": "Formen (H)",
"Sharpen": "Schärfen",
"Sharpen tool": "Werkzeug schärfen",
"Sharpen Tool": "Werkzeug schärfen",
"Sharpen:": "Schärfen:",
"Shift + S": "Umschalt + S",
"Shortcut Key:": "Tastenkürzel:",
"Show": "Zeigen",
"Show \/ Hide": "Anzeigen Ausblenden",
"Show file size:": "Dateigröße anzeigen:",
"Simple": "Einfach",
"Size": "Größe",
"Size is too big, max": "Größe ist zu groß, max",
"Size:": "Größe:",
"Skip - layer must be image.": "Überspringen - Ebene muss ein Bild sein.",
"Solarize": "Solarisieren",
"Sorry, cold not load getUserMedia() data:": "Sorry, kalt getUserMedia () Daten nicht laden:",
"Sorry, image could not be loaded.": "Das Bild konnte leider nicht geladen werden.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Entschuldigung, Bild konnte nicht geladen werden. Versuchen Sie, das Bild zu kopieren und einzufügen.",
"Sorry, image is too big, max 5 MB.": "Entschuldigung, das Bild ist zu groß, maximal 5 MB.",
"Source is empty, right click on image to save source position.": "Die Quelle ist leer, klicken Sie mit der rechten Maustaste auf das Bild, um die Quellposition zu speichern.",
"Source coordinates saved.": "Quellkoordinaten gespeichert.",
"Source is empty, right click on image or use long press to save source position.": "Quelle ist leer, klicken Sie mit der rechten Maustaste auf das Bild oder drücken Sie lange, um die Position der Quelle zu speichern.",
"Sprites": "Sprites",
"Square": "Rechteck",
"Stream:": "Strom:",
"Strength:": "Stärke:",
"Strict": "Streng",
"Stroke": "Strich",
"Stroke:": "Strich:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Komprimiert PNG und JPEG",
"Tab": "Tab",
"Tag Image File Format": "Markieren Sie das Bilddateiformat",
"Tahoma": "Tahoma",
"Target:": "Ziel:",
"Text": "Text",
"Text example": "Textbeispiel",
"Text:": "Text:",
"The quick brown fox jumps over the lazy dog.": "Der schnelle Braunfuchs springt über den faulen Hund.",
"There": "Dort",
"There are no layers behind.": "Es gibt keine Ebenen dahinter.",
"There is only 1 layer.": "Es gibt nur 1 Ebene.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Diese Ebene muss ein Bild enthalten. Bitte konvertieren Sie es in ein Raster, um dieses Tool anzuwenden.",
"Tilt Shift": "Neigung Verschiebung",
"Times New Roman": "Times New Roman",
"Toaster": "Toaster",
"Toggle": "Umschalten",
"Toggle Color Channels": "Farbkanäle umschalten",
"Toggle Color Picker": "Farbwähler umschalten",
"Toggle Menu": "Menü umschalten",
"Toggle Swatches": "Farbfelder umschalten",
"Tools": "Werkzeuge",
"Tools class not found:": "Tools-Klasse nicht gefunden:",
"Top": "oben",
"Top to Bottom": "Oben nach unten",
"Total pixels:": "Gesamtpixel:",
"Translate": "Übersetzen",
"Translate Layer": "Ebene übersetzen",
"Translate error, can not find dictionary:": "Fehler beim Übersetzen, Wörterbuch nicht gefunden:",
"Transparency background:": "Transparenz Hintergrund:",
"Transparent:": "Transparent:",
"Trim": "Trimmen",
"Trim everything:": "Alles zurechtschneiden:",
"Trim Layers": "Schichten schneiden",
"Trim borders:": "Rand schneiden:",
"Trim layer:": "Trim-Ebene:",
"Trim white color?": "Trim weiße Farbe?",
"Turkish": "Türkisch",
"Type:": "Typ:",
"Türkçe": "Türkçe",
"Undo": "Rückgängig machen",
"Undo disabled.": "Rückgängig deaktiviert",
"Undo enabled.": "Rückgängig machen",
"Undo is not available.": "Rückgängig ist nicht verfügbar.",
"Undo levels changed to 1.": "Stufen rückgängig machen, die auf 1 geändert wurden.",
"Undo levels restored to": "Rückgängigmachen von Stufen, auf die wiederhergestellt wird",
"Unique colors:": "Einzigartige Farben:",
"Up": "Oben",
"Update": "Aktualisieren",
"Update Brush Layer": "Pinselebene aktualisieren",
"Update Pencil Layer": "Bleistiftebene aktualisieren",
"Update guides": "Update-Anleitungen",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Verwenden Sie die Tastenkombination Strg + V zum Einfügen aus der Zwischenablage.",
"V Radius:": "V-Radius:",
"V. Align:": "V. Ausrichten:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Ausführung:",
"Vertical": "Vertikal",
"Vertical Alignment": "Vertikale Ausrichtung",
"Vertical blur:": "Vertikale Unschärfe:",
"Vertical:": "Vertikal:",
"Vibrance": "Dynamik",
"View": "Sicht",
"Vignette": "Vignette",
"ViliusL": "ViliusL",
"Vintage": "Vintage",
"Visible:": "Sichtbar:",
"WEBP - Weppy File Format": "WEBP - Weppy Dateiformat",
"Webcam": "Webcam",
"Webcam #": "Webcam #",
"Website:": "Webseite:",
"Weppy File Format": "Weppy Dateiformat",
"Width (%):": "Breite (%):",
"Width:": "Breite:",
"Windows Bitmap": "Windows Bitmap",
"Word": "Wort",
"Word + Letter": "Wort + Brief",
"Wrap At:": "Wrap At:",
"Wrap:": "Wickeln:",
"Wrong dimensions": "Falsche Abmessungen",
"Wrong file type, must be image or json.": "Falscher Dateityp, muss image oder json sein.",
"X end:": "X Ende:",
"X position:": "X-Position:",
"X start:": "X Start:",
"X-Pro II": "X-Pro II",
"Y end:": "Y Ende:",
"Y position:": "Y-Position:",
"Y start:": "Y Start:",

513
src/js/languages/el.json Normal file
View File

@ -0,0 +1,513 @@
{
"A problem occurred while removing undo history. It": "Προέκυψε ένα πρόβλημα κατά την αφαίρεση του ιστορικού αναίρεσης",
"About": "Σχετικά",
"Active": "Ενεργό",
"Aden": "Άντεν",
"Advanced": "Προχωρημένα",
"All": "Όλα",
"Alpha": "Άλφα",
"Alpha:": "Άλφα:",
"Anonymous": "Ανώνυμο",
"Anti aliasing": "Εξομάλυνση",
"Application markup may have changed,": "Η σήμανση της εφαρμογής μπορεί να έχει αλλάξει,",
"Arial": "Άριαλ",
"Arrow": "Βέλος",
"ArrowDown": "Κάτω βέλος",
"ArrowLeft": "Αριστερό βέλος",
"ArrowRight": "Δεξί βέλος",
"ArrowUp": "Πάνω βέλος",
"Author:": "Δημιουργός",
"Auto Adjust Colors": "Αυτόματη ρύθμιση χρωμάτων",
"Auto Kerning": "Αυτόματο διάστημα χαρακτήρων",
"Average:": "Μέσο",
"Backspace": "Οπισθοδρόμηση",
"Base": "Βάση",
"Basic": "Βασικό",
"Black and White": "Μαύρο και Άσπρο",
"Blue": "Μπλε",
"Blue channel:": "Μπλε κανάλι",
"Blueprint": "αποτύπωμα",
"Blur Radius:": "Ακτίνα θολούρας",
"Blur Tool": "Εργαλείο θολούρας",
"Blur power:": "Δύναμη θολούρας",
"Borders": "Όρια",
"Bottom": "Κάτω",
"Bottom to Top": "Κάτω προς πάνω",
"Bounds:": "Περιορισμοί",
"Box": "Κουτί",
"Box Blur": "Κουτί θόλωσης",
"Box blur": "Κουτί θόλωσης",
"Brightness": "Φωτεινότητα",
"Brightness:": "Φωτεινότητα",
"Bulge\/Pinch Tool": "Εργαλείο εξογκώματος \/ Τσιμπήματος",
"Burn": "Καίω",
"Can not animate 1 layer.": "Δεν μπορεί να αναπαράγει ένα επίπεδο",
"Can not find previous layer.": "Δεν μπορεί να βρεί το προηγούμενο επίπεδο",
"Can not use this tool on current layer: image already takes all area.": "Δεν είναι δυνατή η χρήση αυτού του εργαλείου στο τρέχον επίπεδο: η εικόνα καταλαμβάνει ήδη όλη την περιοχή.",
"Cancel": "Ακύρωση",
"Canvas Size": "Μέγεθος καμβά",
"Center": "Κέντρο",
"Center x:": "Κέντρο Χ",
"Center y:": "Κέντρο Υ",
"Center:": "Κέντρο",
"Change Composition": "Αλλαγή Σύνθεσης",
"Change Layer Details": "Λεπτομέρειες αλλαγής επιπέδου",
"Change Opacity": "Αλλαγή αδιαφάνειας",
"Channel:": "Κανάλια",
"Circle": "Κύκλος",
"Clarendon": "Κλαρεντόν",
"Clear": "Καθαρισμός",
"Clear Selection": "Καθαρισμός επιλογής",
"Clone Tool": "Εργαλείο κλωνοποίησης",
"Clone count:": "Μετρητής Κλώνων",
"Clone tool disabled for resized image. Please rasterize first.": "Το εργαλείο κλωνοποίησης απενεργοποιήθηκε για αλλαγή μεγέθους εικόνας. Παρακαλώ ραστεροποιήστε πρώτα.",
"Cloned edges": "Άκρες κλώνου",
"Close": "Κλείσε",
"Color #": "Χρώμα #",
"Color Corrections": "Διορθώσεις χρώματος",
"Color Palette": "Παλέτα χρώματος",
"Color Zoom": "Εστίαση χρώματος",
"Color alpha value can not be zero.": "Η τιμή ΑΛΦΑ στο χρώμα δεν μπορεί να είναι μηδέν",
"Color to Alpha": "Χρώμα σε ΑΛΦΑ",
"Color zoom": "Εστίαση χρώματος",
"Color:": "Χρώμα",
"Colors": "Χρώματα",
"Colors:": "Χρώματα",
"Common Filters": "Κοινά φίλτρα",
"Composition": "Σύνθεση",
"Composition:": "Σύνθεση",
"Content Fill": "Γέμισμα περιεχομένου",
"Contrast": "Αντίθεση",
"Contrast:": "Αντίθεση",
"Convert layer to raster": "Μετατροπή στρώματος σε ράστερ",
"Convert to Raster": "Μετατροπή σε πίνακα τιμών",
"Copy Selection": "Αντιγραφή επιλογής",
"Copy to Clipboard": "Αντιγραφή στο πρόχειρο",
"Courier": "Μεταφορέας",
"Crop Tool": "Εργαλείο αποκοπής",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Η αποκοπή σε περιστραμμένο επίπεδο δεν υποστηρίζεται. Μετατρέψτε το σε πίνακα τιμών για να συνεχίσετε",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl+A",
"Ctrl+C": "Ctrl+C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl+V",
"Ctrl+Y": "Ctrl+Y",
"Ctrl+Z": "Ctrl+Z",
"Current": "Τρέχον",
"Current Color Preview": "Τρέχουσα προεπισκόπηση χρώματος",
"Custom": "Προεπιλεγμένο",
"Data URL": "Δεδομένα URL",
"Data URL:": "Δεδομένα URL",
"Decrease": "Μείωση",
"Decrease Color Depth": "Μείωση βάθους χρώματος",
"Degree:": "Βαθμός",
"Del": "Διαγρ",
"Delete": "Διαγραφή",
"Delete Selection": "Διαγραφή επιλογής",
"Denoise": "Αφαίρεση θορύβου",
"Desaturate Tool": "Εργαλείο αποκορεσμού",
"Description:": "Περιγραφή",
"Deutsch": "Γερμανικά",
"Differences": "Διαφορές",
"Differences Down": "Διαφορές κάτω",
"Direction:": "Κατεύθυνση",
"Dither": "Μείωση παραμόρφωσης σήματος χαμηλού πλάτους",
"Dithering:": "Μείωση παραμόρφωσης σήματος χαμηλού πλάτους",
"Dominant color:": "Κυρίαρχο χρώμα:",
"Dot Screen": "Στίγμα οθόνης",
"Down": "Κάτω",
"Duplicate": "Διπλασίασε",
"Duplicate Layer": "Διπλασίασε επίπεδο",
"Duplicate layer": "Διπλότυπο στρώμα",
"Dynamic": "Δυναμικό",
"Edge": "Αιχμή",
"Edit": "Επεξεργασία",
"Edit text...": "Επεξεργασία κειμένου",
"Effect browser": "Κατάλογος εφέ",
"Effects": "εφέ",
"Effects browser": "Κατάλογος εφέ",
"Email:": "μέιλ",
"Emboss": "Στάμπα",
"Empty selection": "Κενή επιλογή",
"Empty selection or type not image.": "Κενή επιλογή ή όχι τύπος εικόνας",
"Enable autoresize:": "Ενεργοποίηση αυτόματου μεγέθους:",
"End": "Τέλος",
"English": "Αγγλικά",
"English (UK)": "Αγγλικά (Ηνωμένο Βασίλειο)",
"Enrich": "Εμπλουτισμός",
"Enter": "Εισαγωγή",
"Erase Tool": "Εργαλείο διαγραφής",
"Erase on rotate object is disabled. Please rasterize first.": "Η διαγραφή στο περιστρεφόμενο αντικείμενο είναι απενεργοποιημένη. Παρακαλώ ραστεροποιήστε πρώτα.",
"Error": "Σφάλμα",
"Error connecting to service.": "Σφάλμα σύνδεσης σε υπηρεσία",
"Error loading the list of fonts from Google.": "Σφάλμα κατά τη φόρτωση της λίστας γραμματοσειρών από την Google.",
"Error registering service worker": "Σφάλμα εγγραφής σε υπηρεσία",
"Error: can not find filter:": "Σφάλμα: Δεν βρίσκεται το φίλτρο",
"Error: can not find layer with id:": "Σφάλμα: Δεν βρίσκεται το επίπεδο",
"Error: missing details event target": "Σφάλμα: Λείπουν λεπτομέρειες στόχου γεγονότων",
"Error: unknown layer type:": "Σφάλμα: Άγνωστος τύπος επιπέδου",
"Error: unsupported attribute type:": "Σφάλμα: μη υποστηριζόμενος τύπος χαρακτηριστικού:",
"Esc": "Διαφ",
"Escape": "Διαφυγή",
"Español": "Ισπανικά",
"Expand edges": "Διεύρυνση άκρων",
"Exponent:": "Εκθέτης:Ν",
"Export": "Εξαγωγή",
"External": "Εξωτερικός",
"Factor:": "Παράγοντας",
"File": "Αρχείο",
"File name:": "Όνομα αρχείου",
"File size:": "Μέγεθος Αρχείου",
"Fill": "Γέμισμα",
"Fill Tool": "Εργαλείο Γεμίσματος",
"Fit": "Ταίριασμα",
"Fit Window": "Ταίριασμα στο παράθυρο",
"Fit window": "Κατάλληλο παράθυρο",
"Flatten Image": "Επιπεδοποίηση εικόνας",
"Flip": "Αναποδογύρισμα",
"FloydSteinberg-serpentine": "Σερπατίνα Φλόυντ - Στάινμπεργκ",
"Font": "Γραμματοσειρά",
"Français": "Γαλλικά",
"Full HD, 1080p": "Υψηλή ανάλυση 1080ρ",
"Full Screen": "Πλήρης Οθόνη",
"Full layers data": "Πλήρη δεδομένα επιπέδου",
"Gap:": "Κενό",
"Gaussian Blur": "Γκαουσσιανή Θόλωση",
"Gif delay:": "Καθυστέρηση gif",
"Gingham": "Gingham",
"GitHub:": "Github",
"Gradient Radius:": "Ακτίνα κλίσης",
"Grains": "Κόκκοι",
"Graphics Interchange Format": "Μορφή Μεταβαλλόμενων Γραφικών",
"Gray": "Γκρι",
"Grayscale": "Κλίμακα του Γκρι",
"Greek": "Ελληνικά",
"Green": "Πράσινο",
"Green channel:": "Πράσινο Κανάλι",
"Greyscale:": "Κλίμακα του Γκρι",
"Grid": "Πλέγμα",
"Grid on\/off": "Πλέγμα ανοικτό \/ κλειστό",
"Guides": "Οδηγοί",
"Guides enabled.": "Οδηγοί ενεργοί",
"H Radius:": "Οριζόντια Ακτίνα",
"H. Align:": "Οριζόντια Ευθυγράμμιση",
"Heatmap": "Χάρτης θερμότητας",
"Height (%):": "Ύψος (%)",
"Height:": "Ύψος",
"Help": "Βοήθεια",
"Helvetica": "Ελβετικά",
"Hermite": "Ερμητιανό",
"Hex": "Δεκαεξαδικό",
"Hide": "Κρύβω",
"Histogram": "Ιστόγραμμα",
"Histogram:": "Ιστόγραμμα",
"Home": "Αρχική",
"Horizontal": "Οριζόντιο",
"Horizontal Alignment": "Οριζόντια ευθυγράμμιση",
"Horizontal blur:": "Οριζόντια Θόλωση",
"Horizontal:": "Οριζόντιο",
"Hue": "Απόχρωση",
"Hue Rotate": "Περιστροφή απόχρωσης",
"Hue:": "Απόχρωση",
"Image": "Εικόνα",
"Image data with multi-layers. Can be opened using miniPaint -": "Δεδομένα εικόνας με πολλά επίπεδα. Δεν μπορεί να ανοιχτεί με το minipaint",
"Impact": "Επίδραση",
"In proportion:": "Σε αναλογία:",
"Increase": "Αύξηση",
"Information": "Πληροφορίες",
"Inkwell": "Πηγή μελανιού",
"Insert": "Εισαγωγή",
"Insert guides": "Οδηγοί εισαγωγής",
"Insert new layer": "Εισαγάγετε νέο στρώμα",
"Instagram Filters": "Φίλτρα ίνσταγκραμ",
"Invalid Hex Code": "Άκυρος δεκαεξαδικός κωδικός",
"Italiano": "Ιταλικά",
"JPG\/JPEG Format": "Μορφή JPG \/ JPEG",
"Kerning:": "Διάστημα χαρακτήρων",
"Key-Points": "Σημεία - κλειδί",
"KeyU": "Κλειδί υ",
"Keyboard Shortcuts": "Συντομεύσεις πληκτρολογίου",
"Keyword:": "Λέξη - κλειδί",
"Lanczos": "Ζώνη Γλώσσας",
"Landscape": "Τοπίο",
"Language": "Γλώσσα",
"Last modified": "Τελευταία τροποποίηση",
"Layer": "Επίπεδο",
"Layer details": "Λεπτομέρειες επιπέδου",
"Layer is empty.": "Το επίπεδο είναι κενό.",
"Layer is not compatible with resize": "Επίπεδο μη συμβατό με αλλαγή μεγέθους",
"Layer is vector, convert it to raster to apply this tool.": "Το επίπεδο είναι διάνυσμα. Μετατροπή πρώτα σε πίνακα, για εφαρμογή με αυτό το εργαλείο.",
"Layers": "Επίπεδα",
"Layers:": "Επίπεδα:",
"Layout:": "Διάταξη:",
"Left": "Αριστερά",
"Left to Right": "Αριστερά προς δεξιά",
"Level:": "Επίπεδο",
"Levels:": "Επίπεδα",
"Lietuvių": "Lietuviu",
"Lo-fi": "Χαμηλής συχνότητας",
"Luminance:": "Φωτισμός",
"Luminosity": "Ψωτεινότητα",
"Magic Eraser Tool": "Εργαλείο μαγικής σβήστρας",
"Merge Down": "Συγχώνευση προς τα κάτω",
"Merge Layers": "Συγχώνευση επιπέδων",
"Merged": "Συγχωνευμένος",
"Metrics": "Μετρικό",
"Middle": "Μέσαίο",
"Missing at least 1 size parameter.": "Λείπει τουλάχιστον μία παράμετρος μεγέθους",
"Missing permissions to write to Clipboard.cc": "Δεν επιτρέπεται η εγγραφή στο αρχείο πρόχειρου",
"Mode:": "Λειτουργία",
"Module function not found.": "Δεν βρέθηκε η λειτουργία της προσθήκης",
"Modules class not found:": "Δεν βρέθηκε η κλάση της προσθήκης",
"Monospace": "Μονοδιάστημα",
"Mosaic": "Μωσαικό",
"Mouse:": "Ποντίκι",
"Move": "Μετακίνησε",
"Move Layer": "Επίπεδο μετακίνησης",
"Move layer down": "Μετακινήστε το στρώμα προς τα κάτω",
"Move layer up": "Μετακινήστε το στρώμα προς τα πάνω",
"Name:": "Όνομα",
"Negative": "Αρνιτικό",
"New": "Νέο",
"New Bezier Layer": "Νέο στρώμα Bezier",
"New Brush Layer": "Νέο επίπεδο πινέλου",
"New Ellipse Layer": "Νέο επίπεδο έλλειψης",
"New File": "Νέο αρχείο",
"New Gradient Layer": "Νέο επίπεδο κλίσης",
"New Layer": "Νέο επίπεδο",
"New Line Layer": "Νέο επίπεδο γραμμής",
"New Pencil Layer": "Νέο επίπεδο μολυβιού",
"New Polygon Layer": "Νέο στρώμα πολυγώνου",
"New Rectangle Layer": "Νέο επίπεδο ορθογωνίου",
"New Text Layer": "Νέο επίπεδο κειμένου",
"New file": "Νέο αρχείο",
"New from Selection": "Νέο από επιλογή...",
"New layer": "Νέο επίπεδο",
"Next": "Επόμενο",
"Night Vision": "Νυχτερινή όραση",
"None": "Κανένα",
"Nothing is selected.": "Δεν επιλέχθηκε τίποτα",
"Offset X:": "Αντιστάθμισμα Χ",
"Offset Y:": "Αντιστάθμισμα Υ",
"Oil": "Λάδι",
"Ok": "ΟΚ",
"Online image editor.": "Διαδικτυακός Επεξεργαστής εικόνας",
"Opacity": "Αδιαφάνεια",
"Opacity:": "Αδιαφανές",
"Open": "Άνοιγμα",
"Open Data URL": "Άνοιγμα URL δεδομένων",
"Open Directory": "Άνοιγμα καταλόγου",
"Open File": "Άνοιγμα αρχείου",
"Open File Data URL": "Άνοιγμα URL αρχείου δεδομένων",
"Open File URL": "Άνοιγμα URL αρχείου",
"Open File Webcam": "Άνοιγμα αρχείου από κάμερα",
"Open Image": "Άνοιγμα εικόνας",
"Open JSON File": "Άνοιγμα αρχείου JSON",
"Open Test Template": "Άνοιγμα Δοκιμαστικού Υποδείγματος",
"Open URL": "Άνοιγμα URL",
"Open data URL": "Άνοιγμα URL δεδομένων",
"Open from Webcam": "Άνοιγμα από κάμερα",
"Original Size": "Αρχικό μέγεθος",
"PNGTOSVG - Convert Image to SVG": "Μετατροπή εικόνας από PNG σε SVG",
"PageDown": "Σελίδα παρακάτω",
"PageUp": "Σελίδα παραπάνω",
"Palette": "Παλέτα",
"Parameter #1:": "Παράμετρος #1",
"Parameter #2:": "Παράμετρος #2",
"Paste": "Επικόλληση",
"Pencil": "Μολύβι",
"Percentage:": "Ποσοστό:",
"Pixels:": "Πίξελ",
"Placeholder comment for color channels": "Σχόλιο Κατόχου για κανάλια χρωμάτων",
"Placeholder comment for color picker": "Σχόλιο Κατόχου για επιλογέα χρωμάτων",
"Placeholder comment for color swatches": "Σχόλιο Κατόχου για δείγματα χρωμάτων",
"Portable Network Graphics": "Γραφικά φορητού δικτύου",
"Portrait": "Πορτρέτο",
"Português": "Πορτογαλικά",
"Position:": "Θέση",
"Power:": "Δύναμη",
"Preview": "Προεπισκόπηση",
"Previous": "Προηγούμενο",
"Previous layer must be image, convert it to raster to apply this tool.": "Το προηγούμενο επίπεδο πρέπει να είναι εικόνα. Μετατρέψτε το σε πίνακα, για να εφαρμοστεί αυτό το εργαλείο",
"Print": "Εκτύπωση",
"Quality:": "Ποιότητα",
"Quick Load": "Γρήγορο φόρτωμα",
"Quick Save": "Γρήγορη αποθήκευση",
"REMOVE.BG - Remove Image Background": "Αφαίρεση φόντου εικόνας",
"Radial": "Ακτινικό",
"Radial gradient": "Ακτινική κλίση",
"Radius:": "Ακτίνα",
"Range:": "Εύρος",
"Red": "Κόκκινο",
"Red channel:": "Κόκκινο κανάλι",
"Redo": "Επανάλαβε",
"Remove all": "Αφαίρεσε τα όλα",
"Rename": "Μετονομασία",
"Rename Layer": "Μετονομασία επιπέδου",
"Rendered with errors.": "Διεκπεραιώθηκε με σφάλματα",
"Rendering...": "Διεκπεραίωση...",
"Replace Color": "Αντικατάσταση χρώματος",
"Replace color": "Αντικατάσταση χρώματος",
"Replacement:": "Αντικατάσταση",
"Report Issues": "Αναφορά προβλημάτων",
"Reset": "Επαναφορά",
"Resize": "Αλλαγή μεγέθους",
"Resize Boundary": "Αλλαγή μεγέθους ορίων",
"Resize Layer": "Αλλαγή μεγέθους επιπέδου",
"Resize Layers": "Αλλαγή μεγέθους επιπέδων",
"Resize Text Layer": "Αλλαγή μεγέθους επιπέδου κειμένου",
"Resized as background": "Αλλαγή μεγέθους ως φόντο",
"Resized:": "Αλλαγή μεγέθους:",
"Resolution:": "Ανάλυση",
"Restore Alpha": "Επαναφορά τιμής ΑΛΦΑ",
"Right": "Δεξιά",
"Right angle:": "Ορθή γωνία",
"Right to Left": "Δεξιά προς αριστερά",
"Rotate": "Περιστροφή",
"Rotate Layer": "Επίπεδο περιστροφής",
"Rotate is not supported on this type of object. Convert to raster?": "Η περιστροφή δεν υποστηρίζεται σε αυτού του τύπου αντικείμενο. Μετατροπή σε πίνακα;",
"Rotate left": "Περιστροφή αριστερά",
"Rotate:": "Περιστροφή",
"Ruler": "Χάρακας",
"SQUOOSH - Compress and Compare Images": "Συμπίεση και σύγκριση εικόνων",
"Saturate": "Κορεσμός",
"Saturation": "Κορεσμός",
"Saturation:": "Κορεσμός",
"Save As": "Αποθήκευση ως",
"Save As Data URL": "Αποθήκευση ως δεδομένα URL",
"Save as": "Αποθήκευση ως...",
"Save as type:": "Αποθήκευση ως τύπος...",
"Save layers:": "Αποθήκευση επιπέδων",
"Scaling up is not supported in Hermite, using Lanczos.": "Η κλιμάκωση δεν υποστηρίζεται σε ερμητιανό πίνακα, χρησιμοποιόντας LancZos",
"Scroll down": "Κύλιση κάτω",
"Scroll up": "Κύλιση πάνω",
"Search": "Αναζήτηση",
"Search Images": "Αναζήτηση εικόνων",
"Search for Font": "Αναζήτηση γραμματοσειράς",
"Search:": "Αναζήτηση:",
"Select All": "Επιλογή όλων",
"Select Text Layer": "Επιλογή επιπέδου κειμένου",
"Select object tool": "Επιλογή εργαλειου αντικειμένου",
"Selected": "Επιλεγμένο",
"Selection Tool": "Εργαλείο επιλογής ",
"Sensitivity:": "Ευαισθησία",
"Separated": "Διαχωρισμένο",
"Separated (original types)": "Διαχωρισμένοι (πρωτότυποι τύποι)",
"Sepia": "Σέπια",
"Set Image Size": "Θέσε μέγεθος εικόνας",
"Settings": "Ρυθμίσεις",
"Shadow": "Σκιά",
"Shapes": "Σχήματα",
"Shapes (H)": "Σχήματα (Η)",
"Sharpen": "Όξυνση",
"Sharpen Tool": "Εργαλείο όξυνσης",
"Sharpen:": "Όξυνση",
"Shift + S": "Shift + S",
"Shortcut Key:": "Πλήκτρο συντόμευσης",
"Show": "προβολή",
"Show \/ Hide": "Εμφάνισε \/ Κρύψε",
"Show file size:": "Δείξε μέγεθος αρχείου",
"Simple": "Απλό",
"Size is too big, max": "Μέγεθος πέρα του μέγιστου επιτρεπτού",
"Size:": "Μέγεθος",
"Skip - layer must be image.": "Παράλειψη - Το επίπεδο πρέπει να είναι εικόνα",
"Solarize": "Ηλίαση",
"Sorry, cold not load getUserMedia() data:": "Λυπάμαι, δεν μπορώ να φορτώσω τα δεδομένα",
"Sorry, image could not be loaded.": "Λυπάμαι, η εικόνα δεν μπόρεσε να φορτωθεί",
"Sorry, image could not be loaded. Try copy image and paste it.": "Λυπάμαι, η εικόνα δεν μπόρεσε να φορτωθεί. Δοκιμάστε αντιγραφή - επικόλληση.",
"Sorry, image is too big, max 5 MB.": "Λυπάμαι. Πολύ μεγάλη εικόνα. Μέγιστο μέγεθος 5 ΜΒ",
"Source coordinates saved.": "Αποθηκεύτηκαν οι συντεταγμένες της πηγής.",
"Source is empty, right click on image or use long press to save source position.": "Η πηγή είναι άδεια. Κάντε δεξί κλικ στην εικόνα ή πατήστε το παρατεταμένα για να αποθηκεύσετε την θέση της πηγής.",
"Sprites": "Αντικείμενα.",
"Square": "Τετράγωνο",
"Stream:": "Ροή",
"Strength:": "Δύναμη",
"Strict": "Περιορισμός",
"TINYPNG - Compress PNG and JPEG": "Συμπίεση PNG και JPEG",
"Tab": "Στηλοθέτης",
"Tag Image File Format": "Μορφή αρχείου εικόνας",
"Tahoma": "Ταχόμα",
"Target:": "Στόχος",
"The quick brown fox jumps over the lazy dog.": "Η γρήγορη καφέ αλεπού πηδάει πάνω από το τεμπέλικο σκυλί.",
"There": "Εκεί",
"There are no layers behind.": "Δεν υπάρχουν επίπεδα από πίσω",
"There is only 1 layer.": "Υπάρχει μόνο ένα επίπεδο",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Αυτό το επίπεδο πρέπει να περιέχει μια εικόνα. Παρακαλώ μετατρέψτε την σε πίνακα για να εφαρμόσετε αυτό το εργαλέιο.",
"Tilt Shift": "Μετατόπιση κλίσης",
"Times New Roman": "Τimes New Roman",
"Toaster": "Τοστιέρα",
"Toggle": "Εναλλαγή",
"Toggle Color Channels": "Εναλλαγή καναλιών χρώματος",
"Toggle Color Picker": "Εναλλαγή διαλογέα χρώματος",
"Toggle Menu": "Εναλλαγή στο μενού",
"Toggle Swatches": "Εναλλαγή δειγμάτων",
"Tools": "Εργαλεία",
"Top": "Κορυφή",
"Top to Bottom": "Από πάνω προς τα κάτω",
"Total pixels:": "Συνολικά πίξελς",
"Translate": "Μετάφρασε",
"Translate Layer": "Μετάφρασε το επίπεδο",
"Translate error, can not find dictionary:": "Σφάλμα μετάφρασης. Δεν βρίσκεται (σ)το λεξικό ",
"Transparent:": "Διαφανές",
"Trim": "Κούρεμα",
"Trim Layers": "Κούρεμα επιπέδων",
"Trim borders:": "Κούρεμα ορίων",
"Trim layer:": "Κούρεμα επιπέδου",
"Trim white color?": "Κούρεμα λευκού χρώματος;",
"Type:": "Τύπος",
"Türkçe": "Τούρκικα",
"Undo": "Αναίρεση",
"Unique colors:": "Μοναδικά χρώματα",
"Up": "Πάνω",
"Update": "Ενημέρωση",
"Update Brush Layer": "Ενημέρωση επιπέδου πινέλου",
"Update Pencil Layer": "Ενημέρωση επιπέδου μολυβιού",
"Update guides": "Ενημέρωση οδηγιών",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Χρησιμοποίησε τη συντόμευση Ctrl+V για να επικολλήσεις από το πρόχειρο.",
"V Radius:": "Κατακόρυφη ακτίνα",
"V. Align:": "Κατακόρυφη ευθυγράμμιση",
"Valencia": "Βαλένθια",
"Verdana": "Βερντάνα",
"Version:": "Έκδοση",
"Vertical": "Κατακόρυφο",
"Vertical Alignment": "Κατακόρυφη ευθυγράμμιση",
"Vertical blur:": "Κατακόρυφη Θόλωση",
"Vertical:": "Κατακόρυφη",
"Vibrance": "Δόνηση",
"View": "Επισκόπηση",
"Vignette": "Βινιέτα",
"ViliusL": "ViliusL",
"Vintage": "Παλιομοδίτικο",
"Webcam": "Κάμερα",
"Webcam #": "Κάμερα #",
"Website:": "Ιστότοπος",
"Weppy File Format": "Μορφή αρχείου",
"Width (%):": "Πλάτος (%)",
"Width:": "Πλάτος",
"Windows Bitmap": "Windows bitmap (χάρτης bit)",
"Word": "Λέξη",
"Word + Letter": "Λέξη + Γράμμα",
"Wrap At:": "Τύλιξε στο:",
"Wrap:": "Τύλιξε",
"Wrong dimensions": "Λάθος διαστάσεις",
"Wrong file type, must be image or json.": "Λάθος τύπος αρχείου. Πρέπει να είναι εικόνα ή JSON",
"X end:": "Χ τέλος",
"X position:": "Χ θέση",
"X start:": "Χ αρχή",
"X-Pro II": "Χ Προ ΙΙ",
"Y end:": "Υ τέλος",
"Y position:": "Υ θέση",
"Y start:": "Υ αρχή",
"You can also drag and drop items into browser.": "Μπορείς επίσης να σύρεις αντικείμενα μέσα στο φυλλομετρητή",
"Your browser does not support canvas or JavaScript is not enabled.": "Ο φυλλομετρητής σου δεν υποστηρίζει καμβά ή Javascript.",
"Your browser does not support this format.": "Ο φυλλομετρηρής σου δεν υποστηρίζει αυτή τη μορφή",
"Your search did not match any images.": "Η αναζήτηση σου δεν ταίριαξε με καμία εικόνα",
"Zoom": "Ζούμ (μεγένθυση - σμίκρυνση)",
"Zoom Blur": "Εστίαση Θολούρας",
"Zoom In": "Μεγένθυση",
"Zoom Out": "Σμίκρυνση",
"Zoom blur": "Εστίαση Θολούρας",
"Zoom in": "Μεγένθυση",
"Zoom out": "Σμίκρυνση",
"Zoom:": "Εστίαση (Ζούμ)"
}

View File

@ -1,211 +1,291 @@
{
"2d": "",
"480p": "",
"A problem occurred while removing undo history. It": "",
"About": "",
"Active": "",
"Aden": "",
"Advanced": "",
"All": "",
"Alpha": "",
"Alpha:": "",
"Anonymous": "",
"Anti aliasing": "",
"Application markup may have changed,": "",
"Arial": "",
"Arrow": "",
"ArrowDown": "",
"ArrowLeft": "",
"ArrowRight": "",
"ArrowUp": "",
"Author:": "",
"Auto Adjust Colors": "",
"Auto Kerning": "",
"Average:": "",
"AVIF - AV1 Image File Format": "",
"BMP - Windows Bitmap": "",
"Backspace": "",
"Base": "",
"Basic": "",
"Black and White": "",
"Blue": "",
"Blue channel:": "",
"Blue:": "",
"Blueprint": "",
"Blur Radius:": "",
"Blur Tool": "",
"Blur power:": "",
"Blur tool": "",
"Bold": "",
"Bold Italic": "",
"Borders": "",
"Bottom": "",
"Bottom to Top": "",
"Bounds:": "",
"Box": "",
"Box Blur": "",
"Box blur": "",
"Brightness": "",
"Brightness:": "",
"Brush": "",
"Bulge\/Pinch tool": "",
"Bulge\/Pinch Tool": "",
"Burn": "",
"CSS Filters": "",
"Can not animate 1 layer.": "",
"Can not find previous layer.": "",
"Can not use this tool on current layer: image already takes all area.": "",
"Cancel": "",
"Canvas Size": "",
"Center": "",
"Center x:": "",
"Center y:": "",
"Center:": "",
"Change Composition": "",
"Change Layer Details": "",
"Change Opacity": "",
"Channel:": "",
"Circle": "",
"Clarendon": "",
"Clear": "",
"Clear Selection": "",
"Clone Tool": "",
"Clone count:": "",
"Clone tool": "",
"Clone tool disabled for resized image. Please rasterize first.": "",
"Cloned edges": "",
"Close": "",
"Color #": "",
"Color Zoom": "",
"Color alpha value can not be zero.": "",
"Color Corrections": "",
"Color Palette": "",
"Color Zoom": "",
"Color alpha value can not be zero.": "",
"Color to Alpha": "",
"Color zoom": "",
"Color:": "",
"Colors": "",
"Colors:": "",
"Common Filters": "",
"Composition": "",
"Composition:": "",
"Content Fill": "",
"Contrast": "",
"Contrast:": "",
"Convert layer to raster": "",
"Convert to Raster": "",
"Copy Selection": "",
"Copy:": "",
"Copy to Clipboard": "",
"Courier": "",
"Crop": "",
"Crop Tool": "",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "",
"Ctrl + C": "",
"Ctrl+A": "",
"Ctrl+C": "",
"Ctrl+P": "",
"Ctrl+V": "",
"Ctrl-P": "",
"Ctrl+Y": "",
"Ctrl+Z": "",
"Current": "",
"Curve": "",
"Current Color Preview": "",
"Custom": "",
"Data URL": "",
"Data URL:": "",
"Decrease": "",
"Decrease Color Depth": "",
"Default": "",
"Degree:": "",
"Del": "",
"Delete": "",
"Delete Selection": "",
"Denoise": "",
"Desaturate": "",
"Desaturate Tool": "",
"Description:": "",
"Deutsch": "",
"Differences": "",
"Differences Down": "",
"Direction:": "",
"Dither": "",
"Dithering:": "",
"Dominant color:": "",
"Dot Screen": "",
"Down": "",
"Duplicate": "",
"Duplicate Layer": "",
"Duplicate layer": "",
"Dynamic": "",
"Edge": "",
"Edit": "",
"Edit text": "",
"Edit text...": "",
"Effect browser": "",
"Effects": "",
"Effects browser": "",
"Email:": "",
"Emboss": "",
"Empty selection": "",
"Empty selection or type not image.": "",
"Enable autoresize:": "",
"End": "",
"English": "",
"English (UK)": "",
"Enrich": "",
"Erase": "",
"Erase on rotate object is disabled. Sorry.": "",
"Enter": "",
"Erase Tool": "",
"Erase on rotate object is disabled. Please rasterize first.": "",
"Error": "",
"Error connecting to service.": "",
"Error: can not load image.": "",
"Error loading the list of fonts from Google.": "",
"Error registering service worker": "",
"Error: can not find filter:": "",
"Error: can not find layer with id:": "",
"Error: missing details event target": "",
"Error: unknown layer type:": "",
"Error: unsupported attribute type:": "",
"Error: wrong key:": "",
"Esc": "",
"Escape": "",
"Español": "",
"Expand edges": "",
"Exponent:": "",
"Export": "",
"External": "",
"Factor:": "",
"File": "",
"File name:": "",
"File size:": "",
"Fill": "",
"Fill Tool": "",
"Fit": "",
"Fit Window": "",
"Fit window": "",
"Flatten Image": "",
"Flip": "",
"FloydSteinberg-serpentine": "",
"French": "",
"Font": "",
"Français": "",
"Full HD, 1080p": "",
"GIF - Graphics Interchange Format": "",
"Full Screen": "",
"Full layers data": "",
"Gap:": "",
"Gaussian Blur": "",
"German": "",
"Gif delay:": "",
"Gingham": "",
"GitHub:": "",
"Gradient": "",
"Gradient Radius:": "",
"Grains": "",
"Graphics Interchange Format": "",
"Gray": "",
"Grayscale": "",
"Greek": "",
"Green": "",
"Green channel:": "",
"Green:": "",
"Greyscale:": "",
"Grid": "",
"Grid on\/off": "",
"Guides": "",
"Guides enabled.": "",
"H Radius:": "",
"H. Align:": "",
"Heatmap": "",
"Height (%):": "",
"Height:": "",
"Help": "",
"Helvetica": "",
"Hermite": "",
"Hex:": "",
"Hex": "",
"Hide": "",
"Histogram": "",
"Histogram:": "",
"Home": "",
"Horizontal": "",
"Horizontal Alignment": "",
"Horizontal blur:": "",
"Horizontal:": "",
"Hue": "",
"Hue Rotate": "",
"Hue:": "",
"Image": "",
"Image data with multi-layers. Can be opened using miniPaint -": "",
"Impact": "",
"In proportion:": "",
"Increase": "",
"Information": "",
"Insert:": "",
"Inkwell": "",
"Insert": "",
"Insert guides": "",
"Insert new layer": "",
"Instagram Filters": "",
"Invalid Hex Code": "",
"Italiano": "",
"Italic": "",
"JPG - JPG\/JPEG Format": "",
"JPG, WEBP quality:": "",
"JSON - Full layers data": "",
"Japanese": "",
"JPG\/JPEG Format": "",
"Kerning:": "",
"Key-Points": "",
"KeyU": "",
"Keyboard Shortcuts": "",
"Keyword:": "",
"Korean": "",
"Lanczos": "",
"Landscape": "",
"Language": "",
"Last modified": "",
"Layer": "",
"Layer details": "",
"Layer is already image.": "",
"Layer must be image, convert it to raster to apply this tool.": "",
"Layer is empty.": "",
"Layer is not compatible with resize": "",
"Layer is vector, convert it to raster to apply this tool.": "",
"Layers": "",
"Layers:": "",
"Layout:": "",
"Left": "",
"Left to Right": "",
"Level:": "",
"Levels:": "",
"Lietuvių": "",
"Line": "",
"Lum:": "",
"Lo-fi": "",
"Luminance:": "",
"Magic Wand Tool": "",
"Luminosity": "",
"Magic Eraser Tool": "",
"Merge Down": "",
"Merge Layers": "",
"Merged": "",
"Metrics": "",
"Middle": "",
"Missing at least 1 size parameter.": "",
"Missing permissions to write to Clipboard.cc": "",
"Mode:": "",
"Module function not found.": "",
"Modules class not found:": "",
"Monospace": "",
"Mosaic": "",
"Mouse:": "",
"Move": "",
"Move down": "",
"Move up": "",
"Move Layer": "",
"Move layer down": "",
"Move layer up": "",
"Name:": "",
"Needs at least 2 layers.": "",
"Negative": "",
"New": "",
"New Bezier Layer": "",
"New Brush Layer": "",
"New Ellipse Layer": "",
"New File": "",
"New Gradient Layer": "",
"New Layer": "",
"New Line Layer": "",
"New Pencil Layer": "",
"New Polygon Layer": "",
"New Rectangle Layer": "",
"New Text Layer": "",
"New file": "",
"New from Selection": "",
"New layer": "",
"New width can not be smaller then current width": "",
"Normal": "",
"Next": "",
"Night Vision": "",
"None": "",
"Nothing is selected.": "",
"Offset X:": "",
"Offset Y:": "",
@ -218,23 +298,34 @@
"Open Data URL": "",
"Open Directory": "",
"Open File": "",
"Open File Data URL": "",
"Open File URL": "",
"Open File Webcam": "",
"Open Image": "",
"Open JSON File": "",
"Open Test Template": "",
"Open URL": "",
"Open data URL": "",
"Open from Webcam": "",
"Original Size": "",
"PNG - Portable Network Graphics": "",
"PNGTOSVG - Convert Image to SVG": "",
"PageDown": "",
"PageUp": "",
"Palette": "",
"Parameter #1:": "",
"Parameter #2:": "",
"Paste": "",
"Pencil": "",
"Percentage:": "",
"Pick Color": "",
"Pixels:": "",
"Play animation": "",
"Portuguese": "",
"Placeholder comment for color channels": "",
"Placeholder comment for color picker": "",
"Placeholder comment for color swatches": "",
"Portable Network Graphics": "",
"Portrait": "",
"Português": "",
"Position:": "",
"Power:": "",
"Powred by pixabay.com .": "",
"Pre-Blur:": "",
"Preview": "",
"Previous": "",
"Previous layer must be image, convert it to raster to apply this tool.": "",
@ -242,123 +333,168 @@
"Quality:": "",
"Quick Load": "",
"Quick Save": "",
"REMOVE.BG - Remove Image Background": "",
"Radial": "",
"Radial gradient": "",
"Radius:": "",
"Range:": "",
"Rectangle": "",
"Red": "",
"Red channel:": "",
"Red:": "",
"Redo": "",
"Remove all": "",
"Rename": "",
"Rename Layer": "",
"Rendered with errors.": "",
"Rendering...": "",
"Replace Color": "",
"Replace color": "",
"Replacement:": "",
"Report Issues": "",
"Resample - Hermite": "",
"Reset": "",
"Reset zoom level": "",
"Resize": "",
"Resize Boundary": "",
"Resize Layer": "",
"Resize Layers": "",
"Resize Text Layer": "",
"Resized as background": "",
"Resized:": "",
"Resolution:": "",
"Restore Alpha": "",
"Right": "",
"Right angle:": "",
"Right to Left": "",
"Rotate": "",
"Rotate Layer": "",
"Rotate is not supported on this type of object. Convert to raster?": "",
"Rotate left": "",
"Rotate:": "",
"Russian": "",
"Sat:": "",
"Ruler": "",
"SQUOOSH - Compress and Compare Images": "",
"Saturate": "",
"Saturation": "",
"Saturation:": "",
"Save": "",
"Save As": "",
"Save As Data URL": "",
"Save as": "",
"Save as type:": "",
"Save layers:": "",
"Save resolution:": "",
"Scaling up is not supported in Hermite, using Lanczos.": "",
"Scroll down": "",
"Scroll up": "",
"Search": "",
"Search Images": "",
"Search for Font": "",
"Search:": "",
"Select All": "",
"Select Text Layer": "",
"Select object tool": "",
"Selected": "",
"Selection": "",
"Selection Tool": "",
"Sensitivity:": "",
"Separated": "",
"Separated (original types)": "",
"Sepia": "",
"Set Image Size": "",
"Settings": "",
"Shadow": "",
"Shadow:": "",
"Shapes": "",
"Shapes (H)": "",
"Sharpen": "",
"Sharpen tool": "",
"Sharpen Tool": "",
"Sharpen:": "",
"Shift + S": "",
"Shortcut Key:": "",
"Show": "",
"Show \/ Hide": "",
"Show file size:": "",
"Simple": "",
"Size": "",
"Size is too big, max": "",
"Size:": "",
"Skip - layer must be image.": "",
"Solarize": "",
"Sorry, cold not load getUserMedia() data:": "",
"Sorry, image could not be loaded.": "",
"Sorry, image could not be loaded. Try copy image and paste it.": "",
"Sorry, image is too big, max 5 MB.": "",
"Source is empty, right click on image to save source position.": "",
"Source coordinates saved.": "",
"Source is empty, right click on image or use long press to save source position.": "",
"Sprites": "",
"Square": "",
"Stream:": "",
"Strength:": "",
"Strict": "",
"Stroke": "",
"Stroke:": "",
"TINYPNG - Compress PNG and JPEG": "",
"Tab": "",
"Tag Image File Format": "",
"Tahoma": "",
"Target:": "",
"Text": "",
"Text example": "",
"Text:": "",
"The quick brown fox jumps over the lazy dog.": "",
"There": "",
"There are no layers behind.": "",
"There is only 1 layer.": "",
"This layer must contain an image. Please convert it to raster to apply this tool.": "",
"Tilt Shift": "",
"Times New Roman": "",
"Toaster": "",
"Toggle": "",
"Toggle Color Channels": "",
"Toggle Color Picker": "",
"Toggle Menu": "",
"Toggle Swatches": "",
"Tools": "",
"Tools class not found:": "",
"Top": "",
"Top to Bottom": "",
"Total pixels:": "",
"Translate": "",
"Translate Layer": "",
"Translate error, can not find dictionary:": "",
"Transparency background:": "",
"Transparent:": "",
"Trim": "",
"Trim everything:": "",
"Trim Layers": "",
"Trim borders:": "",
"Trim layer:": "",
"Trim white color?": "",
"Turkish": "",
"Type:": "",
"Türkçe": "",
"Undo": "",
"Undo disabled.": "",
"Undo enabled.": "",
"Undo is not available.": "",
"Undo levels changed to 1.": "",
"Undo levels restored to": "",
"Unique colors:": "",
"Up": "",
"Update": "",
"Update Brush Layer": "",
"Update Pencil Layer": "",
"Update guides": "",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "",
"V Radius:": "",
"V. Align:": "",
"Valencia": "",
"Verdana": "",
"Version:": "",
"Vertical": "",
"Vertical Alignment": "",
"Vertical blur:": "",
"Vertical:": "",
"Vibrance": "",
"View": "",
"Vignette": "",
"ViliusL": "",
"Vintage": "",
"Visible:": "",
"WEBP - Weppy File Format": "",
"Webcam": "",
"Webcam #": "",
"Website:": "",
"Weppy File Format": "",
"Width (%):": "",
"Width:": "",
"Windows Bitmap": "",
"Word": "",
"Word + Letter": "",
"Wrap At:": "",
"Wrap:": "",
"Wrong dimensions": "",
"Wrong file type, must be image or json.": "",
"X end:": "",
"X position:": "",
"X start:": "",
"X-Pro II": "",
"Y end:": "",
"Y position:": "",
"Y start:": "",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Ocurrió un problema al eliminar el historial de deshacer. Eso",
"About": "Acerca de",
"Active": "Activo",
"Aden": "Adén",
"Advanced": "Avanzado",
"All": "Todas",
"Alpha": "Alfa",
"Alpha:": "Alfa:",
"Anonymous": "Anónimo",
"Anti aliasing": "Anti aliasing",
"Application markup may have changed,": "Es posible que el marcado de la aplicación haya cambiado,",
"Arial": "Arial",
"Arrow": "Flecha",
"ArrowDown": "ArrowDown",
"ArrowLeft": "Flecha Izquierda",
"ArrowRight": "Flecha Derecha",
"ArrowUp": "Flecha arriba",
"Author:": "Autor:",
"Auto Adjust Colors": "Ajuste automático de colores",
"Auto Kerning": "Kerning automático",
"Average:": "Promedio:",
"BMP - Windows Bitmap": "BMP - Mapa de bits de Windows",
"Backspace": "Retroceso",
"Base": "Base",
"Basic": "BASIC",
"Black and White": "En blanco y negro",
"Blue": "Azul",
"Blue channel:": "Canal azul:",
"Blue:": "Azul:",
"Blueprint": "Plano",
"Blur Radius:": "Blur Radio:",
"Blur Tool": "Herramienta de desenfoque",
"Blur power:": "Desenfoque de poder:",
"Blur tool": "Herramienta de desenfoque",
"Bold": "Negrita",
"Bold Italic": "Negrita cursiva",
"Borders": "Bordes",
"Bottom": "Fondo",
"Bottom to Top": "Abajo hacia arriba",
"Bounds:": "Límites:",
"Box": "Caja",
"Box Blur": "Caja de desenfoque",
"Box blur": "Caja de desenfoque",
"Brightness": "Brillo",
"Brightness:": "Brillo:",
"Brush": "Cepillo",
"Bulge\/Pinch tool": "Herramienta de abombamiento \/ pellizco",
"Bulge\/Pinch Tool": "Herramienta de abultamiento \/ pellizco",
"Burn": "Quemar",
"CSS Filters": "Filtros CSS",
"Can not animate 1 layer.": "No se puede animar 1 capa.",
"Can not find previous layer.": "No se puede encontrar la capa anterior.",
"Can not use this tool on current layer: image already takes all area.": "No se puede utilizar esta herramienta en la capa actual: la imagen ya ocupa toda el área.",
"Cancel": "Cancelar",
"Canvas Size": "Tamaño del lienzo",
"Center": "Centrar",
"Center x:": "Centro x:",
"Center y:": "Centro y:",
"Center:": "Centrar:",
"Change Composition": "Cambiar composición",
"Change Layer Details": "Cambiar los detalles de la capa",
"Change Opacity": "Cambiar la opacidad",
"Channel:": "Canal:",
"Circle": "Circulo",
"Clarendon": "Letras gruesas a la media",
"Clear": "Claro",
"Clear Selection": "Selección clara",
"Clone Tool": "Herramienta de clonación",
"Clone count:": "Recuento de clones",
"Clone tool": "Herramienta de clonación",
"Clone tool disabled for resized image. Please rasterize first.": "Herramienta de clonación deshabilitada para imágenes redimensionadas. Rasterice primero.",
"Cloned edges": "Bordes clonados",
"Close": "Cerca",
"Color #": "Color #",
"Color Zoom": "Zoom de color",
"Color alpha value can not be zero.": "El valor alfa del color no puede ser cero.",
"Color Corrections": "Correcciones de color",
"Color Palette": "Paleta de color",
"Color Zoom": "Zoom de color",
"Color alpha value can not be zero.": "El valor alfa del color no puede ser cero.",
"Color to Alpha": "Color a alfa",
"Color zoom": "Zoom a color",
"Color:": "Color:",
"Colors": "Colores",
"Colors:": "Colores:",
"Common Filters": "Filtros comunes",
"Composition": "Composición",
"Composition:": "Composición:",
"Content Fill": "Relleno de contenido",
"Contrast": "Contraste",
"Contrast:": "Contraste:",
"Convert layer to raster": "Convertir capa a ráster",
"Convert to Raster": "Convertir a trama",
"Copy Selection": "Copiar selección",
"Copy:": "Dupdo:",
"Copy to Clipboard": "Copiar al portapapeles",
"Courier": "mensajero",
"Crop": "Cultivo",
"Crop Tool": "Herramienta de recorte",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "No se admite el recorte en la capa rotada. Conviértalo en ráster para continuar.",
"Ctrl + C": "Ctrl+C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "Corriente",
"Curve": "Curva",
"Current Color Preview": "Vista previa del color actual",
"Custom": "Personalizado",
"Data URL": "URL de datos",
"Data URL:": "URL de datos:",
"Decrease": "Disminución",
"Decrease Color Depth": "Disminuir la profundidad de color",
"Default": "Defecto",
"Degree:": "La licenciatura:",
"Del": "Del",
"Delete": "Borrar",
"Delete Selection": "Eliminar selección",
"Denoise": "Denoise",
"Desaturate": "Desaturar",
"Desaturate Tool": "Herramienta de desaturar",
"Description:": "Descripción:",
"Deutsch": "Alemán",
"Differences": "Diferencias",
"Differences Down": "Diferencias hacia abajo",
"Direction:": "Dirección:",
"Dither": "Vacilar",
"Dithering:": "Dithering:",
"Dominant color:": "Color dominante:",
"Dot Screen": "Pantalla de puntos",
"Down": "Abajo",
"Duplicate": "Duplicar",
"Duplicate Layer": "Duplicar capa",
"Duplicate layer": "Duplicar capa",
"Dynamic": "Dinámica",
"Edge": "Borde",
"Edit": "Editar",
"Edit text": "Editar texto",
"Edit text...": "Editar texto...",
"Effect browser": "Navegador de efectos",
"Effects": "Efectos",
"Effects browser": "Navegador de efectos",
"Email:": "Email:",
"Emboss": "Realzar",
"Empty selection": "Selección vacía",
"Empty selection or type not image.": "Vaciar selección o escribir no imagen.",
"Enable autoresize:": "Habilitar tamaño automático:",
"End": "Fin",
"English": "Inglés",
"English (UK)": "Inglés del Reino Unido)",
"Enrich": "Enriquecer",
"Erase": "Borrar",
"Erase on rotate object is disabled. Sorry.": "Borrar en rotar objeto está deshabilitado. Lo siento.",
"Enter": "Entrar",
"Erase Tool": "Herramienta de borrado",
"Erase on rotate object is disabled. Please rasterize first.": "Borrar al rotar objeto está deshabilitado. Rasterice primero.",
"Error": "Error",
"Error connecting to service.": "Error al conectarse al servicio.",
"Error: can not load image.": "Error: no se puede cargar la imagen.",
"Error loading the list of fonts from Google.": "Error al cargar la lista de fuentes de Google.",
"Error registering service worker": "Error al registrar al trabajador del servicio",
"Error: can not find filter:": "Error: no se puede encontrar el filtro:",
"Error: can not find layer with id:": "Error: no se puede encontrar la capa con id:",
"Error: missing details event target": "Error: falta el objetivo del evento de detalles",
"Error: unsupported attribute type:": "Error: tipo de atributo no soportado:",
"Error: wrong key:": "Error: clave incorrecta:",
"Error: unknown layer type:": "Error: tipo de capa desconocido:",
"Error: unsupported attribute type:": "Error: tipo de atributo no admitido:",
"Esc": "Esc",
"Escape": "Escapar",
"Español": "English",
"Expand edges": "Expandir bordes",
"Exponent:": "Exponente:",
"Export": "Exportar",
"External": "Externo",
"Factor:": "Factor:",
"File": "Archivo",
"File name:": "Nombre del archivo:",
"File size:": "Tamaño del archivo:",
"Fill": "Llenar",
"Fill Tool": "Herramienta de relleno",
"Fit": "Ajuste",
"Fit Window": "Ajustar ventana",
"Fit window": "Ajustar ventana",
"Flatten Image": "Imagen aplanada",
"Flip": "Dar la vuelta",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentina",
"French": "francés",
"Font": "Fuente",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Formato de intercambio de gráficos",
"Full Screen": "Pantalla completa",
"Full layers data": "Datos de capas completas",
"Gap:": "Brecha:",
"Gaussian Blur": "Desenfoque gaussiano",
"German": "alemán",
"Gif delay:": "Retraso Gif:",
"Gingham": "Guingán",
"GitHub:": "GitHub:",
"Gradient": "Gradiente",
"Gradient Radius:": "Radio de gradiente:",
"Grains": "Granos",
"Graphics Interchange Format": "formato de gráficos intercambeable",
"Gray": "gris",
"Grayscale": "Escala de grises",
"Greek": "Griego",
"Green": "Verde",
"Green channel:": "Canal verde:",
"Green:": "Verde:",
"Greyscale:": "Escala de grises:",
"Grid": "Cuadrícula",
"Grid on\/off": "Grid on \/ off",
"Guides": "Guías",
"Guides enabled.": "Guías habilitadas.",
"H Radius:": "H Radio:",
"H. Align:": "H. Alinear:",
"Heatmap": "Mapa de calor",
"Height (%):": "Altura (%):",
"Height:": "Altura:",
"Help": "Ayuda",
"Helvetica": "Helvética",
"Hermite": "Hermite",
"Hex:": "Maleficio:",
"Hex": "Maleficio",
"Hide": "Esconder",
"Histogram": "Histograma",
"Histogram:": "Histograma:",
"Home": "Casa",
"Horizontal": "Horizontal",
"Horizontal Alignment": "Alineación horizontal",
"Horizontal blur:": "Desenfoque horizontal:",
"Horizontal:": "Horizontal:",
"Hue": "Matiz",
"Hue Rotate": "Hue Rotate",
"Hue:": "Matiz:",
"Image": "Imagen",
"Image data with multi-layers. Can be opened using miniPaint -": "Datos de imagen con varias capas. Se puede abrir usando miniPaint -",
"Impact": "Impacto",
"In proportion:": "En proporción:",
"Increase": "Incrementar",
"Information": "Información",
"Insert:": "Insertar:",
"Inkwell": "Tintero",
"Insert": "Insertar",
"Insert guides": "Insertar guías",
"Insert new layer": "Insertar nueva capa",
"Instagram Filters": "Filtros de Instagram",
"Invalid Hex Code": "Código hexadecimal no válido",
"Italiano": "Italiano",
"Italic": "Itálico",
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
"JPG, WEBP quality:": "JPG, calidad de WEBP:",
"JSON - Full layers data": "JSON: datos de capas completas",
"Japanese": "japonés",
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
"Kerning:": "Interletrado:",
"Key-Points": "Puntos clave",
"KeyU": "ClaveU",
"Keyboard Shortcuts": "Atajos de teclado",
"Keyword:": "Palabra clave:",
"Korean": "coreano",
"Lanczos": "Lanczos",
"Landscape": "Paisaje",
"Language": "Idioma",
"Last modified": "Última modificación",
"Layer": "Capa",
"Layer details": "Detalles de la capa",
"Layer is already image.": "Layer ya es imagen.",
"Layer must be image, convert it to raster to apply this tool.": "La capa debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
"Layer is empty.": "La capa está vacía.",
"Layer is not compatible with resize": "La capa no es compatible con el cambio de tamaño",
"Layer is vector, convert it to raster to apply this tool.": "La capa es vectorial, conviértala en ráster para aplicar esta herramienta.",
"Layers": "Capas",
"Layers:": "Capas:",
"Layout:": "Disposición:",
"Left": "Izquierda",
"Left to Right": "De izquierda a derecha",
"Level:": "Nivel:",
"Levels:": "Niveles:",
"Lietuvių": "Lietuvių",
"Line": "Línea",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Luminancia:",
"Magic Wand Tool": "Varita mágica",
"Luminosity": "Luminosidad",
"Magic Eraser Tool": "Herramienta de borrador mágico",
"Merge Down": "Fusionar",
"Merge Layers": "Fusionar capas",
"Merged": "Fusionado",
"Metrics": "Métrica",
"Middle": "Medio",
"Missing at least 1 size parameter.": "Falta al menos 1 parámetro de tamaño.",
"Missing permissions to write to Clipboard.cc": "Permisos faltantes para escribir en Clipboard.cc",
"Mode:": "Modo:",
"Module function not found.": "Función del módulo no encontrada.",
"Modules class not found:": "Clase de módulos no encontrada:",
"Monospace": "Monoespacio",
"Mosaic": "Mosaico",
"Mouse:": "Ratón:",
"Move": "Movimiento",
"Move down": "Mover hacia abajo",
"Move up": "Ascender",
"Move Layer": "Mover capa",
"Move layer down": "Mover capa hacia abajo",
"Move layer up": "Mover capa hacia arriba",
"Name:": "Nombre:",
"Needs at least 2 layers.": "Necesita al menos 2 capas",
"Negative": "Negativo",
"New": "Nuevo",
"New Bezier Layer": "Nueva capa Bézier",
"New Brush Layer": "Nueva capa de pincel",
"New Ellipse Layer": "Nueva capa de elipse",
"New File": "Archivo nuevo",
"New Gradient Layer": "Nueva capa de degradado",
"New Layer": "Nueva capa",
"New Line Layer": "Nueva capa de línea",
"New Pencil Layer": "Nueva capa de lápiz",
"New Polygon Layer": "Nueva capa de polígono",
"New Rectangle Layer": "Nueva capa de rectángulo",
"New Text Layer": "Nueva capa de texto",
"New file": "Archivo nuevo",
"New from Selection": "Nuevo de la selección",
"New layer": "Nueva capa",
"New width can not be smaller then current width": "El nuevo ancho no puede ser más pequeño que el ancho actual",
"Normal": "Normal",
"Next": "Próximo",
"Night Vision": "Vision nocturna",
"None": "Ninguna",
"Nothing is selected.": "Nada está seleccionado.",
"Offset X:": "Compensación X:",
"Offset Y:": "Desplazamiento Y:",
@ -217,23 +298,34 @@
"Open Data URL": "URL de datos abiertos",
"Open Directory": "Directorio abierto",
"Open File": "Abrir documento",
"Open File Data URL": "Abrir URL de datos de archivo",
"Open File URL": "Abrir URL de archivo",
"Open File Webcam": "Cámara web de archivos abiertos",
"Open Image": "Abrir imagen",
"Open JSON File": "Abrir archivo JSON",
"Open Test Template": "Plantilla de prueba abierta",
"Open URL": "URL abierta",
"Open data URL": "URL de datos abiertos",
"Open from Webcam": "Abrir desde la webcam",
"Original Size": "Tamaño original",
"PNG - Portable Network Graphics": "PNG - Gráficos de red portátiles",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir imagen a SVG",
"PageDown": "Página abajo",
"PageUp": "Página arriba",
"Palette": "Paleta",
"Parameter #1:": "Parámetro # 1:",
"Parameter #2:": "Parámetro # 2:",
"Paste": "Pegar",
"Pencil": "Lápiz",
"Percentage:": "Porcentaje:",
"Pick Color": "Elegir color",
"Pixels:": "Píxeles:",
"Play animation": "Reproducir animación",
"Portuguese": "portugués",
"Placeholder comment for color channels": "Comentario de marcador de posición para canales de color",
"Placeholder comment for color picker": "Comentario de marcador de posición para el selector de color",
"Placeholder comment for color swatches": "Comentario de marcador de posición para muestras de color",
"Portable Network Graphics": "Gráficos de red portátiles",
"Portrait": "Retrato",
"Português": "Português",
"Position:": "Posición:",
"Power:": "Poder:",
"Powred by pixabay.com .": "Desarrollado por pixabay.com.",
"Pre-Blur:": "Pre-desenfoque:",
"Preview": "Avance",
"Previous": "Anterior",
"Previous layer must be image, convert it to raster to apply this tool.": "La capa anterior debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
@ -241,123 +333,168 @@
"Quality:": "Calidad:",
"Quick Load": "Carga rápida",
"Quick Save": "Guardado rápido",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Eliminar fondo de imagen",
"Radial": "Radial",
"Radial gradient": "Gradiente radial",
"Radius:": "Radio:",
"Range:": "Distancia:",
"Rectangle": "Rectángulo",
"Red": "rojo",
"Red channel:": "Canal rojo:",
"Red:": "Rojo:",
"Redo": "Rehacer",
"Remove all": "Eliminar todo",
"Rename": "Rebautizar",
"Rename Layer": "Cambiar nombre de capa",
"Rendered with errors.": "Rendido con errores.",
"Rendering...": "Representación...",
"Replace Color": "Reemplazar color",
"Replace color": "Reemplazar color",
"Replacement:": "Reemplazo:",
"Report Issues": "Informar problemas",
"Resample - Hermite": "Remuestreo - Hermite",
"Reset": "Reiniciar",
"Reset zoom level": "Restablecer nivel de zoom",
"Resize": "Cambiar el tamaño",
"Resize Boundary": "Cambiar tamaño de límite",
"Resize Layer": "Cambiar el tamaño de la capa",
"Resize Layers": "Cambiar el tamaño de las capas",
"Resize Text Layer": "Cambiar el tamaño de la capa de texto",
"Resized as background": "Redimensionado como fondo",
"Resized:": "Redimensionado:",
"Resolution:": "Resolución:",
"Restore Alpha": "Restaurar alfa",
"Right": "Derecha",
"Right angle:": "Ángulo recto:",
"Right to Left": "De derecha a izquierda",
"Rotate": "Girar",
"Rotate Layer": "Girar capa",
"Rotate is not supported on this type of object. Convert to raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?",
"Rotate left": "Girar a la izquierda",
"Rotate:": "Girar:",
"Russian": "ruso",
"Sat:": "Sab:",
"Ruler": "Gobernante",
"SQUOOSH - Compress and Compare Images": "SQUOOSH: comprime y compara imágenes",
"Saturate": "Saturar",
"Saturation": "Saturación",
"Saturation:": "Saturación:",
"Save": "Salvar",
"Save As": "Guardar como",
"Save As Data URL": "Guardar como URL de datos",
"Save as": "Guardar como",
"Save as type:": "Guardar como tipo:",
"Save layers:": "Guardar capas:",
"Save resolution:": "Guardar resolución:",
"Scaling up is not supported in Hermite, using Lanczos.": "Hermite no admite la ampliación mediante Lanczos.",
"Scroll down": "Desplazarse hacia abajo",
"Scroll up": "Desplazarse hacia arriba",
"Search": "Buscar",
"Search Images": "Buscar imágenes",
"Search for Font": "Buscar fuente",
"Search:": "Buscar:",
"Select All": "Seleccionar todo",
"Select Text Layer": "Seleccionar capa de texto",
"Select object tool": "Seleccionar herramienta de objeto",
"Selected": "Seleccionado",
"Selection": "Selección",
"Selection Tool": "Herramienta de selección",
"Sensitivity:": "Sensibilidad:",
"Separated": "Apartado",
"Separated (original types)": "Separados (tipos originales)",
"Sepia": "Sepia",
"Set Image Size": "Establecer tamaño de imagen",
"Settings": "Configuraciones",
"Shadow": "Sombra",
"Shadow:": "Sombra:",
"Shapes": "Formas",
"Shapes (H)": "Formas (H)",
"Sharpen": "Afilar",
"Sharpen tool": "Afilar la herramienta",
"Sharpen Tool": "Herramienta de afilado",
"Sharpen:": "Afilar:",
"Shift + S": "Mayús + S",
"Shortcut Key:": "Tecla de acceso directo:",
"Show": "Espectáculo",
"Show \/ Hide": "Mostrar ocultar",
"Show file size:": "Mostrar tamaño de archivo:",
"Simple": "Sencillo",
"Size": "tamaño",
"Size is too big, max": "El tamaño es demasiado grande, máximo",
"Size:": "Tamaño:",
"Skip - layer must be image.": "Omitir: la capa debe ser una imagen.",
"Solarize": "Solarizar",
"Sorry, cold not load getUserMedia() data:": "Lo sentimos, no se cargan los datos de getUserMedia () en frío:",
"Sorry, image could not be loaded.": "Lo sentimos, no se pudo cargar la imagen.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Lo sentimos, la imagen no se pudo cargar. Intenta copiar la imagen y pégala.",
"Sorry, image is too big, max 5 MB.": "Lo sentimos, la imagen es demasiado grande, máximo 5 MB.",
"Source is empty, right click on image to save source position.": "La fuente está vacía, haga clic derecho en la imagen para guardar la posición de la fuente.",
"Source coordinates saved.": "Se guardaron las coordenadas de origen.",
"Source is empty, right click on image or use long press to save source position.": "La fuente está vacía, haga clic con el botón derecho en la imagen o presione prolongadamente para guardar la posición de la fuente.",
"Sprites": "Sprites",
"Square": "Cuadrado",
"Stream:": "Corriente:",
"Strength:": "Fuerza:",
"Strict": "Estricto",
"Stroke": "Carrera",
"Stroke:": "Carrera:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimir PNG y JPEG",
"Tab": "Lengüeta",
"Tag Image File Format": "Formato de archivo de imagen de etiqueta",
"Tahoma": "Tahoma",
"Target:": "Objetivo:",
"Text": "Texto",
"Text example": "Ejemplo de texto",
"Text:": "Texto:",
"The quick brown fox jumps over the lazy dog.": "El veloz zorro marrón salta sobre el perro perezoso.",
"There": "Allí",
"There are no layers behind.": "No hay capas detrás",
"There is only 1 layer.": "Solo hay 1 capa",
"This layer must contain an image. Please convert it to raster to apply this tool.": "La capa debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
"Tilt Shift": "Cambio de inclinación",
"Times New Roman": "Times New Roman",
"Toaster": "Tostadora",
"Toggle": "Palanca",
"Toggle Color Channels": "Alternar canales de color",
"Toggle Color Picker": "Alternar selector de color",
"Toggle Menu": "Alternar menú",
"Toggle Swatches": "Alternar muestras",
"Tools": "Herramientas",
"Tools class not found:": "Clase de herramientas no encontradas:",
"Top": "Parte superior",
"Top to Bottom": "De arriba hacia abajo",
"Total pixels:": "Píxeles totales:",
"Translate": "Traducir",
"Translate Layer": "Traducir capa",
"Translate error, can not find dictionary:": "Error de traducción, no se puede encontrar el diccionario:",
"Transparency background:": "Fondo de transparencia:",
"Transparent:": "Transparente:",
"Trim": "Recortar",
"Trim everything:": "Recortar todo:",
"Trim Layers": "Recortar capas",
"Trim borders:": "Recortar bordes:",
"Trim layer:": "Capa de ajuste:",
"Trim white color?": "Recortar el color blanco?",
"Turkish": "turco",
"Type:": "Tipo:",
"Türkçe": "Türkçe",
"Undo": "Deshacer",
"Undo disabled.": "Deshabilitar.",
"Undo enabled.": "Deshacer habilitado.",
"Undo is not available.": "Deshacer no está disponible.",
"Undo levels changed to 1.": "Los niveles de deshacer cambiaron a 1.",
"Undo levels restored to": "Deshace los niveles restaurados a",
"Unique colors:": "Colores únicos:",
"Up": "Arriba",
"Update": "Actualizar",
"Update Brush Layer": "Actualizar capa de pincel",
"Update Pencil Layer": "Actualizar capa de lápiz",
"Update guides": "Guías de actualización",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Use el atajo de teclado Ctrl + V para pegar desde el Portapapeles.",
"V Radius:": "V Radio:",
"V. Align:": "V. Alinear:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Versión:",
"Vertical": "Vertical",
"Vertical Alignment": "Alineamiento vertical",
"Vertical blur:": "Desenfoque vertical:",
"Vertical:": "Vertical:",
"Vibrance": "Vibrance",
"View": "Vista",
"Vignette": "Viñeta",
"ViliusL": "ViliusL",
"Vintage": "Vendimia",
"Visible:": "Visible:",
"WEBP - Weppy File Format": "WEBP - Formato de archivo Weppy",
"Webcam": "Cámara web",
"Webcam #": "Cámara web #",
"Website:": "Sitio web:",
"Weppy File Format": "Formato de archivo Weppy",
"Width (%):": "Ancho (%):",
"Width:": "Anchura:",
"Windows Bitmap": "Mapa de bits de Windows",
"Word": "Palabra",
"Word + Letter": "Palabra + Letra",
"Wrap At:": "Envolver en:",
"Wrap:": "Envolver:",
"Wrong dimensions": "Dimensiones incorrectas",
"Wrong file type, must be image or json.": "Tipo de archivo incorrecto, debe ser imagen o json.",
"X end:": "X final:",
"X position:": "Posición X:",
"X start:": "X inicio:",
"X-Pro II": "X-Pro II",
"Y end:": "Final de Y:",
"Y position:": "Posición Y:",
"Y start:": "Y comienza:",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Un problème est survenu lors de la suppression de l'historique des annulations. Il",
"About": "A propos",
"Active": "actif",
"Aden": "Aden",
"Advanced": "Avancé",
"All": "Tout",
"Alpha": "Alpha",
"Alpha:": "Alpha :",
"Anonymous": "Anonyme",
"Anti aliasing": "Anticrénelage",
"Application markup may have changed,": "Le balisage de l'application peut avoir changé,",
"Arial": "Arial",
"Arrow": "Flèche",
"ArrowDown": "Flèche vers le bas",
"ArrowLeft": "Flèche Gauche",
"ArrowRight": "FlècheDroite",
"ArrowUp": "Flèche vers le haut",
"Author:": "Auteur :",
"Auto Adjust Colors": "Ajuster automatiquement les couleurs",
"Auto Kerning": "Crénage automatique",
"Average:": "Moyenne :",
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
"Backspace": "Retour arrière",
"Base": "Base",
"Basic": "Basique",
"Black and White": "Noir et blanc",
"Blue": "Bleu",
"Blue channel:": "Niveau de bleu :",
"Blue:": "Bleu:",
"Blueprint": "Plan",
"Blur Radius:": "Rayon de floutage :",
"Blur Tool": "Outil de floutage",
"Blur power:": "Puissance de flou:",
"Blur tool": "Flou",
"Bold": "Gras",
"Bold Italic": "Gras Italique",
"Borders": "Cadres",
"Bottom": "Bas",
"Bottom to Top": "De bas en haut",
"Bounds:": "Bornes:",
"Box": "Boîte",
"Box Blur": "Box Blur",
"Box blur": "Box flou",
"Brightness": "Luminosité",
"Brightness:": "Luminosité :",
"Brush": "Pinceau",
"Bulge\/Pinch tool": "Déformer \/ Bosse",
"Bulge\/Pinch Tool": "Outil de renflement \/ pincement",
"Burn": "Brûler",
"CSS Filters": "Filtres CSS",
"Can not animate 1 layer.": "Impossible d'animer une couche.",
"Can not find previous layer.": "Impossible de trouver la couche précédente.",
"Can not use this tool on current layer: image already takes all area.": "Impossible d'utiliser cet outil sur le calque actuel : l'image occupe déjà toute la zone.",
"Cancel": "Annuler",
"Canvas Size": "Taille de la toile",
"Center": "Centre",
"Center x:": "Centrage x :",
"Center y:": "Centrage y :",
"Center:": "Centre :",
"Change Composition": "Changer la composition",
"Change Layer Details": "Modifier les détails du calque",
"Change Opacity": "Changer l'opacité",
"Channel:": "Niveau :",
"Circle": "Cercle",
"Clarendon": "Clarendon",
"Clear": "Effacer",
"Clear Selection": "Effacer la sélection",
"Clone Tool": "Outil de clonage",
"Clone count:": "Nombre de clones:",
"Clone tool": "Tampon de clonage",
"Clone tool disabled for resized image. Please rasterize first.": "Outil de clonage désactivé pour l'image redimensionnée. Veuillez d'abord pixelliser.",
"Cloned edges": "Bords clonés",
"Close": "Fermer",
"Color #": "Couleur #",
"Color Zoom": "Eclat",
"Color alpha value can not be zero.": "La valeur alpha de la couleur ne peut pas être nulle.",
"Color Corrections": "Correction des couleurs",
"Color Palette": "Palette de couleurs",
"Color Zoom": "Eclat",
"Color alpha value can not be zero.": "La valeur alpha de la couleur ne peut pas être nulle.",
"Color to Alpha": "Rendre transparent",
"Color zoom": "Zoom couleur",
"Color:": "Couleur :",
"Colors": "Couleurs",
"Colors:": "Couleurs :",
"Common Filters": "Filtres communs",
"Composition": "Composition",
"Composition:": "Composition :",
"Content Fill": "Remplissage de contenu",
"Contrast": "Contraste",
"Contrast:": "Contraste :",
"Convert layer to raster": "Convertir le calque en raster",
"Convert to Raster": "Convertir en raster",
"Copy Selection": "Copier",
"Copy:": "Copie:",
"Copy to Clipboard": "Copier dans le presse-papier",
"Courier": "Courier",
"Crop": "Rogner selon la sélection",
"Crop Tool": "Outil de recadrage",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Le recadrage sur le calque pivoté n'est pas pris en charge. Convertissez-le en raster pour continuer.",
"Ctrl + C": "Ctrl+C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "Actuel",
"Curve": "Courbe",
"Current Color Preview": "Aperçu de la couleur actuelle",
"Custom": "Personnalisé",
"Data URL": "URL de données",
"Data URL:": "URL de données:",
"Decrease": "Diminution",
"Decrease Color Depth": "Postériser",
"Default": "Défaut",
"Degree:": "Degré:",
"Del": "Supp",
"Delete": "Supprimer",
"Delete Selection": "Effacer la sélection",
"Denoise": "Réduire le bruit",
"Desaturate": "Désaturer",
"Desaturate Tool": "Outil de désaturation",
"Description:": "Description :",
"Deutsch": "Deutsch",
"Differences": "Détection des bords",
"Differences Down": "Détection des bords...",
"Direction:": "Direction:",
"Dither": "Ajouter du bruit",
"Dithering:": "Trame :",
"Dominant color:": "Couleur dominante:",
"Dot Screen": "Demi-teinte",
"Down": "Vers le bas",
"Duplicate": "Dupliquer",
"Duplicate Layer": "Dupliquer le calque",
"Duplicate layer": "Dupliquer le calque",
"Dynamic": "Dynamique",
"Edge": "Détection des bords",
"Edit": "Edition",
"Edit text": "Éditer le texte",
"Edit text...": "Éditer le texte...",
"Effect browser": "Navigateur d'effets",
"Effects": "Effets",
"Effects browser": "Navigateur d'effets",
"Email:": "Email :",
"Emboss": "Embossage",
"Empty selection": "Sélection vide",
"Empty selection or type not image.": "Sélection vide ou tapez pas d'image.",
"Enable autoresize:": "Activer le redimensionnement automatique :",
"End": "Fin",
"English": "Anglais",
"English (UK)": "Anglais Royaume-Uni)",
"Enrich": "Améliorer la netteté",
"Erase": "Gomme",
"Erase on rotate object is disabled. Sorry.": "L'effacement à la rotation de l'objet est désactivé. Pardon.",
"Enter": "Entrer",
"Erase Tool": "Outil d'effacement",
"Erase on rotate object is disabled. Please rasterize first.": "L'effacement lors de la rotation de l'objet est désactivé. Veuillez d'abord pixelliser.",
"Error": "Erreur",
"Error connecting to service.": "Erreur lors de la connexion au service.",
"Error: can not load image.": "Erreur: impossible de charger l'image.",
"Error loading the list of fonts from Google.": "Erreur lors du chargement de la liste des polices de Google.",
"Error registering service worker": "Erreur lors de l'enregistrement du technicien de service",
"Error: can not find filter:": "Erreur: impossible de trouver le filtre:",
"Error: can not find layer with id:": "Erreur: impossible de trouver la couche avec l'ID:",
"Error: missing details event target": "Erreur: cible des événements manquants de détails",
"Error: unsupported attribute type:": "Erreur: type d'attribut non pris en charge:",
"Error: wrong key:": "Erreur: mauvaise clé:",
"Error: unknown layer type:": "Erreur: type de couche inconnu:",
"Error: unsupported attribute type:": "Erreur : type d'attribut non pris en charge :",
"Esc": "Esc",
"Escape": "Échapper",
"Español": "Espagnol",
"Expand edges": "Développer les bords",
"Exponent:": "Exposant :",
"Export": "Exporter",
"External": "Externe",
"Factor:": "Facteur :",
"File": "Fichier",
"File name:": "Nom de fichier :",
"File size:": "Taille du fichier :",
"Fill": "Remplir",
"Fill Tool": "Outil de remplissage",
"Fit": "Fenêtre",
"Fit Window": "Remplir la fenêtre",
"Fit window": "Ajuster la fenêtre",
"Flatten Image": "Fusionner tous les calques",
"Flip": "Retourner",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
"French": "Français",
"Font": "Police de caractère",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Format d'échange de graphiques",
"Full Screen": "Plein écran",
"Full layers data": "Données de couches complètes",
"Gap:": "Ecart :",
"Gaussian Blur": "Flou gaussien",
"German": "Allemand",
"Gif delay:": "Gif délai:",
"Gingham": "Vichy",
"GitHub:": "GitHub :",
"Gradient": "Dégradé",
"Gradient Radius:": "Rayon du dégradé :",
"Grains": "Grains",
"Graphics Interchange Format": "Format d'échange graphique",
"Gray": "Gris",
"Grayscale": "Niveaux de gris",
"Greek": "grec",
"Green": "Vert",
"Green channel:": "Niveau de vert :",
"Green:": "Vert:",
"Greyscale:": "Noir et blanc :",
"Grid": "Grille",
"Grid on\/off": "Grille activée \/ désactivée",
"Guides": "Guides",
"Guides enabled.": "Guides activés.",
"H Radius:": "Rayon H :",
"H. Align:": "H. Aligner:",
"Heatmap": "Zones chaudes",
"Height (%):": "Hauteur (%) :",
"Height:": "Hauteur :",
"Help": "Aide",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex:": "Hex:",
"Hex": "Hex",
"Hide": "Cacher",
"Histogram": "Histogramme",
"Histogram:": "Histogramme :",
"Home": "Accueil",
"Horizontal": "Horizontalement",
"Horizontal Alignment": "Alignement horizontal",
"Horizontal blur:": "Flou horizontal:",
"Horizontal:": "Horizontal:",
"Hue": "Teinte",
"Hue Rotate": "Hue Rotate",
"Hue:": "Teinte :",
"Image": "Image",
"Image data with multi-layers. Can be opened using miniPaint -": "Données d'image avec plusieurs couches. Peut être ouvert en utilisant miniPaint -",
"Impact": "Impact",
"In proportion:": "En proportion:",
"Increase": "Augmenter",
"Information": "Informations",
"Insert:": "Insérer:",
"Inkwell": "Encrier",
"Insert": "Insérer",
"Insert guides": "Insérer des guides",
"Insert new layer": "Insérer un nouveau calque",
"Instagram Filters": "Filtres Instagram",
"Invalid Hex Code": "Code hexadécimal non valide",
"Italiano": "Italien",
"Italic": "Italique",
"JPG - JPG\/JPEG Format": "JPG - Format JPG\/JPEG",
"JPG, WEBP quality:": "JPG, qualité WEBP:",
"JSON - Full layers data": "JSON - Données avec tous les calques",
"Japanese": "Japonais",
"JPG\/JPEG Format": "Format JPG \/ JPEG",
"Kerning:": "Crénage:",
"Key-Points": "Points clés",
"KeyU": "CléU",
"Keyboard Shortcuts": "Raccourcis clavier",
"Keyword:": "Mot-clé:",
"Korean": "Coréen",
"Lanczos": "Lanczos",
"Landscape": "Paysage",
"Language": "Langue",
"Last modified": "Dernière mise à jour",
"Layer": "Couche",
"Layer details": "Détails de la couche",
"Layer is already image.": "Le calque est déjà l'image.",
"Layer must be image, convert it to raster to apply this tool.": "Le calque doit être image, le convertir en raster pour appliquer cet outil.",
"Layer is empty.": "Le calque est vide.",
"Layer is not compatible with resize": "Le calque n'est pas compatible avec le redimensionnement",
"Layer is vector, convert it to raster to apply this tool.": "Le calque est vectoriel, convertissez-le en raster pour appliquer cet outil.",
"Layers": "Calques",
"Layers:": "Couches:",
"Layout:": "Mise en page:",
"Left": "à gauche",
"Left to Right": "De gauche à droite",
"Level:": "Niveau :",
"Levels:": "Niveau :",
"Lietuvių": "Lituanien",
"Line": "Ligne",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Luminance :",
"Magic Wand Tool": "Baguette magique",
"Luminosity": "Luminosité",
"Magic Eraser Tool": "Outil Gomme magique",
"Merge Down": "Fusionner avec le calque inférieur",
"Merge Layers": "Fusionner les calques",
"Merged": "Fusionné",
"Metrics": "Métrique",
"Middle": "Milieu",
"Missing at least 1 size parameter.": "Il manque au moins 1 paramètre de taille.",
"Missing permissions to write to Clipboard.cc": "Autorisations manquantes pour écrire dans Clipboard.cc",
"Mode:": "Mode :",
"Module function not found.": "Fonction du module introuvable.",
"Modules class not found:": "Classe de modules introuvable:",
"Monospace": "Monospace",
"Mosaic": "Mosaïque",
"Mouse:": "Souris :",
"Move": "Déplacer",
"Move down": "Déplacer vers le bas",
"Move up": "Déplacer vers le haut",
"Move Layer": "Déplacer le calque",
"Move layer down": "Déplacer le calque vers le bas",
"Move layer up": "Déplacer le calque vers le haut",
"Name:": "Nom :",
"Needs at least 2 layers.": "Nécessite au moins 2 couches.",
"Negative": "Négatif",
"New": "Nouveau...",
"New Bezier Layer": "Nouvelle couche de Bézier",
"New Brush Layer": "Nouveau calque de pinceau",
"New Ellipse Layer": "Nouveau calque Ellipse",
"New File": "Nouveau fichier",
"New Gradient Layer": "Nouveau calque de dégradé",
"New Layer": "Nouvelle Couche",
"New Line Layer": "Nouvelle couche de ligne",
"New Pencil Layer": "Nouveau calque de crayon",
"New Polygon Layer": "Nouveau calque de polygone",
"New Rectangle Layer": "Nouveau calque rectangle",
"New Text Layer": "Nouveau calque de texte",
"New file": "Nouveau fichier",
"New from Selection": "Nouveau à partir de la sélection",
"New layer": "Nouveau calque",
"New width can not be smaller then current width": "La nouvelle largeur ne peut pas être plus petite que la largeur actuelle",
"Normal": "Normal",
"Next": "Suivant",
"Night Vision": "Vision nocturne",
"None": "Aucun",
"Nothing is selected.": "Rien n'est sélectionné.",
"Offset X:": "Décalage X:",
"Offset Y:": "Décalage Y:",
@ -217,23 +298,34 @@
"Open Data URL": "URL de données ouvertes",
"Open Directory": "Ouvrir le répertoire",
"Open File": "Fichier ouvert",
"Open File Data URL": "Ouvrir l'URL des données de fichier",
"Open File URL": "Ouvrir l'URL du fichier",
"Open File Webcam": "Ouvrir le fichier webcam",
"Open Image": "Ouvrir l'image",
"Open JSON File": "Ouvrez le fichier JSON",
"Open Test Template": "Modèle de test ouvert",
"Open URL": "Ouvrir depuis le Web",
"Open data URL": "URL de données ouvertes",
"Open from Webcam": "Ouvrir depuis la webcam",
"Original Size": "Format original",
"PNG - Portable Network Graphics": "PNG - Portable Network Graphics",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir l'image en SVG",
"PageDown": "Bas de page",
"PageUp": "Page Up",
"Palette": "Palette",
"Parameter #1:": "Paramètre n ° 1:",
"Parameter #2:": "Paramètre n ° 2:",
"Paste": "Coller",
"Pencil": "Crayon",
"Percentage:": "Pourcentage:",
"Pick Color": "Sélecteur de couleurs",
"Pixels:": "Pixels :",
"Play animation": "Jouer l'animation",
"Portuguese": "Portugais",
"Placeholder comment for color channels": "Commentaire d'espace réservé pour les canaux de couleur",
"Placeholder comment for color picker": "Commentaire d'espace réservé pour le sélecteur de couleurs",
"Placeholder comment for color swatches": "Commentaire d'espace réservé pour les échantillons de couleur",
"Portable Network Graphics": "Portable Network Graphics",
"Portrait": "Portrait",
"Português": "Português",
"Position:": "Position:",
"Power:": "<abbr title='Tolérance'>Tol.<\/abbr> :",
"Powred by pixabay.com .": "Powred par pixabay.com.",
"Pre-Blur:": "Flou :",
"Preview": "Aperçu",
"Previous": "précédent",
"Previous layer must be image, convert it to raster to apply this tool.": "La couche précédente doit être une image, la convertir en raster pour appliquer cet outil.",
@ -241,123 +333,168 @@
"Quality:": "Qualité :",
"Quick Load": "Chargement rapide",
"Quick Save": "Sauvegarde rapide",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Supprimer l'arrière-plan de l'image",
"Radial": "Radial",
"Radial gradient": "Gradient radial",
"Radius:": "Rayon :",
"Range:": "Gamme :",
"Rectangle": "Rectangle",
"Red": "Rouge",
"Red channel:": "Niveau de rouge :",
"Red:": "Rouge:",
"Redo": "Refaire",
"Remove all": "Enlever tout",
"Rename": "Renommer",
"Rename Layer": "Renommer le calque",
"Rendered with errors.": "Rendu avec des erreurs.",
"Rendering...": "Le rendu...",
"Replace Color": "Remplacer une couleur",
"Replace color": "Remplacer une couleur",
"Replacement:": "Remplacement :",
"Report Issues": "Signaler un problème",
"Resample - Hermite": "Rééchantillonnage",
"Reset": "Réinitialiser",
"Reset zoom level": "Réinitialiser le niveau de zoom",
"Resize": "Redimensionner",
"Resize Boundary": "Redimensionner la limite",
"Resize Layer": "Redimensionner le calque",
"Resize Layers": "Redimensionner les calques",
"Resize Text Layer": "Redimensionner le calque de texte",
"Resized as background": "Redimensionné comme arrière-plan",
"Resized:": "Redimensionné :",
"Resolution:": "Taille :",
"Restore Alpha": "Restaurer le niveau alpha",
"Right": "à droite",
"Right angle:": "Angle droit:",
"Right to Left": "De droite à gauche",
"Rotate": "Faire pivoter",
"Rotate Layer": "Faire pivoter le calque",
"Rotate is not supported on this type of object. Convert to raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?",
"Rotate left": "Faire pivoter à gauche",
"Rotate:": "Tourner:",
"Russian": "Russe",
"Sat:": "Sam:",
"Ruler": "Règle",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Compresser et comparer des images",
"Saturate": "Saturer",
"Saturation": "Saturation",
"Saturation:": "Saturation :",
"Save": "Enregistrer",
"Save As": "Enregistrer sous",
"Save As Data URL": "Enregistrer comme URL de données",
"Save as": "Enregistrer sous",
"Save as type:": "Enregistrer comme type :",
"Save layers:": "Enregistrer les calques :",
"Save resolution:": "Se souvenir de la taille :",
"Scaling up is not supported in Hermite, using Lanczos.": "La mise à l'échelle n'est pas prise en charge dans Hermite, à l'aide de Lanczos.",
"Scroll down": "Défiler vers le bas",
"Scroll up": "Défiler",
"Search": "Chercher",
"Search Images": "Rechercher des images",
"Search for Font": "Rechercher une police",
"Search:": "Recherche:",
"Select All": "Sélectionner tout",
"Select Text Layer": "Sélectionnez le calque de texte",
"Select object tool": "Déplacer les pixels sélectionnés",
"Selected": "Choisi",
"Selection": "Sélection",
"Selection Tool": "Outil de sélection",
"Sensitivity:": "Sensibilité :",
"Separated": "Séparé",
"Separated (original types)": "Séparé (types originaux)",
"Sepia": "Vieille photo",
"Set Image Size": "Définir la taille de l'image",
"Settings": "Paramètres",
"Shadow": "Ombre",
"Shadow:": "Ombre :",
"Shapes": "Formes",
"Shapes (H)": "Formes (H)",
"Sharpen": "Améliorer la netteté",
"Sharpen tool": "Netteté",
"Sharpen Tool": "Outil Sharpen",
"Sharpen:": "Netteté :",
"Shift + S": "Maj + S",
"Shortcut Key:": "Touche de raccourci:",
"Show": "Montrer",
"Show \/ Hide": "Montrer \/ Cacher",
"Show file size:": "Calculer la taille du fichier :",
"Simple": "Simple",
"Size": "Taille",
"Size is too big, max": "La taille est trop grande, max",
"Size:": "Taille :",
"Skip - layer must be image.": "Skip-layer doit être image.",
"Solarize": "Solariser",
"Sorry, cold not load getUserMedia() data:": "Désolé, ne chargez pas les données getUserMedia () à froid:",
"Sorry, image could not be loaded.": "Désolé, l'image n'a pas pu être chargée.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Désolé, l'image n'a pas pu être chargée. Essayez de la copier dans le presse-papier et de la coller à la place.",
"Sorry, image is too big, max 5 MB.": "Désolé, l'image est trop grande (5MB max).",
"Source is empty, right click on image to save source position.": "La source est vide, faites un clic droit sur l'image pour sauvegarder la position de la source.",
"Source coordinates saved.": "Coordonnées source enregistrées.",
"Source is empty, right click on image or use long press to save source position.": "La source est vide, cliquez avec le bouton droit sur l'image ou appuyez longuement pour enregistrer la position de la source.",
"Sprites": "Sprites",
"Square": "Carré",
"Stream:": "Courant:",
"Strength:": "Force :",
"Strict": "Strict",
"Stroke": "Contour",
"Stroke:": "Accident vasculaire cérébral:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Compresser PNG et JPEG",
"Tab": "Languette",
"Tag Image File Format": "Format de fichier image de balise",
"Tahoma": "Tahoma",
"Target:": "Cible :",
"Text": "Texte",
"Text example": "Exemple de texte",
"Text:": "Texte :",
"The quick brown fox jumps over the lazy dog.": "Le renard brun rapide saute par-dessus le chien paresseux.",
"There": "Là",
"There are no layers behind.": "Il n'y a pas de couches derrière.",
"There is only 1 layer.": "Il n'y a qu'une seule couche.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Le calque doit être image, le convertir en raster pour appliquer cet outil.",
"Tilt Shift": "Flou artistique",
"Times New Roman": "Times New Roman",
"Toaster": "Grille-pain",
"Toggle": "Basculer",
"Toggle Color Channels": "Basculer les canaux de couleur",
"Toggle Color Picker": "Basculer le sélecteur de couleurs",
"Toggle Menu": "Basculer le menu",
"Toggle Swatches": "Basculer les nuances",
"Tools": "Outils",
"Tools class not found:": "Classe d'outils introuvable:",
"Top": "Haut",
"Top to Bottom": "De haut en bas",
"Total pixels:": "Nombre de pixels :",
"Translate": "Traduire",
"Translate Layer": "Traduire le calque",
"Translate error, can not find dictionary:": "Erreur de traduction, impossible de trouver le dictionnaire :",
"Transparency background:": "Fond de transparence:",
"Transparent:": "Transparence :",
"Trim": "Rogner l'image",
"Trim everything:": "Coupez tout:",
"Trim Layers": "Couper les couches",
"Trim borders:": "Couper les bordures:",
"Trim layer:": "Couche de garniture:",
"Trim white color?": "Taillez la couleur blanche?",
"Turkish": "Turc",
"Type:": "Taper:",
"Türkçe": "Türkçe",
"Undo": "Annuler",
"Undo disabled.": "Annuler désactivé.",
"Undo enabled.": "Annuler activé.",
"Undo is not available.": "Annuler n'est pas disponible.",
"Undo levels changed to 1.": "Les niveaux d'annulation ont été changés en 1.",
"Undo levels restored to": "Annuler les niveaux restitués à",
"Unique colors:": "Couleurs uniques :",
"Up": "Vers le haut",
"Update": "Mise à jour",
"Update Brush Layer": "Mettre à jour le calque de pinceau",
"Update Pencil Layer": "Mettre à jour le calque de crayon",
"Update guides": "Guides de mise à jour",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Utilisez le raccourci clavier Ctrl + V pour coller à partir du Presse-papiers.",
"V Radius:": "Rayon V :",
"V. Align:": "V. Aligner:",
"Valencia": "Valence",
"Verdana": "Verdana",
"Version:": "Version:",
"Vertical": "Verticalement",
"Vertical Alignment": "Alignement vertical",
"Vertical blur:": "Flou vertical:",
"Vertical:": "Verticale:",
"Vibrance": "Vibrance",
"View": "Voir",
"Vignette": "Vignette",
"ViliusL": "ViliusL",
"Vintage": "Vintage",
"Visible:": "Visible :",
"WEBP - Weppy File Format": "WEBP - Weppy File Format",
"Webcam": "Webcam",
"Webcam #": "Webcam #",
"Website:": "Site Internet:",
"Weppy File Format": "Format de fichier Weppy",
"Width (%):": "Largeur (%) :",
"Width:": "Largeur :",
"Windows Bitmap": "Bitmap Windows",
"Word": "Mot",
"Word + Letter": "Mot + Lettre",
"Wrap At:": "Envelopper à:",
"Wrap:": "Emballage:",
"Wrong dimensions": "Mauvaises dimensions",
"Wrong file type, must be image or json.": "Mauvais type de fichier, image ou json attendu.",
"X end:": "Fin X :",
"X position:": "Position x :",
"X start:": "Début X :",
"X-Pro II": "X-Pro II",
"Y end:": "Fin Y :",
"Y position:": "Position y :",
"Y start:": "Début Y :",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Si è verificato un problema durante la rimozione della cronologia degli annullamenti. It",
"About": "Di",
"Active": "Attivo",
"Aden": "Aden",
"Advanced": "Avanzate",
"All": "Tutti",
"Alpha": "Alfa",
"Alpha:": "Alfa:",
"Anonymous": "Anonimo",
"Anti aliasing": "Anti aliasing",
"Application markup may have changed,": "Il markup dell'applicazione potrebbe essere cambiato",
"Arial": "Arial",
"Arrow": "Freccia",
"ArrowDown": "ArrowDown",
"ArrowLeft": "ArrowLeft",
"ArrowRight": "ArrowRight",
"ArrowUp": "ArrowUp",
"Author:": "Autore:",
"Auto Adjust Colors": "Regola automaticamente i colori",
"Auto Kerning": "Crenatura automatica",
"Average:": "Media:",
"BMP - Windows Bitmap": "BMP - Bitmap di Windows",
"Backspace": "Backspace",
"Base": "Base",
"Basic": "Di base",
"Black and White": "Bianco e nero",
"Blue": "Blu",
"Blue channel:": "Canale blu:",
"Blue:": "Blu:",
"Blueprint": "Planimetria",
"Blur Radius:": "Sfocatura raggio:",
"Blur Tool": "Strumento di sfocatura",
"Blur power:": "Sfocatura:",
"Blur tool": "Strumento di sfocatura",
"Bold": "Grassetto",
"Bold Italic": "Italico grassetto",
"Borders": "frontiere",
"Bottom": "Parte inferiore",
"Bottom to Top": "Dal basso verso l'alto",
"Bounds:": "Limiti:",
"Box": "Scatola",
"Box Blur": "Box Blur",
"Box blur": "Scatola sfocatura",
"Brightness": "Luminosità",
"Brightness:": "Luminosità:",
"Brush": "Spazzola",
"Bulge\/Pinch tool": "Bulge \/ Pinch tool",
"Bulge\/Pinch Tool": "Strumento rigonfiamento \/ pizzico",
"Burn": "Bruciare",
"CSS Filters": "Filtri CSS",
"Can not animate 1 layer.": "Impossibile animare 1 livello.",
"Can not find previous layer.": "Impossibile trovare il livello precedente.",
"Can not use this tool on current layer: image already takes all area.": "Impossibile utilizzare questo strumento sul livello corrente: l'immagine occupa già tutta l'area.",
"Cancel": "Annulla",
"Canvas Size": "Dimensioni della tela",
"Center": "Centro",
"Center x:": "Centro x:",
"Center y:": "Centro y:",
"Center:": "Centro:",
"Change Composition": "Cambia composizione",
"Change Layer Details": "Cambia i dettagli del livello",
"Change Opacity": "Cambia opacità",
"Channel:": "Canale:",
"Circle": "Cerchio",
"Clarendon": "Clarendon",
"Clear": "Chiaro",
"Clear Selection": "Cancella selezione",
"Clone Tool": "Strumento clone",
"Clone count:": "Conteggio dei cloni:",
"Clone tool": "Strumento clone",
"Clone tool disabled for resized image. Please rasterize first.": "Strumento clone disabilitato per l'immagine ridimensionata. Per favore rasterizza prima.",
"Cloned edges": "Bordi clonati",
"Close": "Vicino",
"Color #": "Colore #",
"Color Zoom": "Zoom a colori",
"Color alpha value can not be zero.": "Il valore alfa del colore non può essere zero.",
"Color Corrections": "Correzioni di colore",
"Color Palette": "Palette dei colori",
"Color Zoom": "Zoom a colori",
"Color alpha value can not be zero.": "Il valore alfa del colore non può essere zero.",
"Color to Alpha": "Colore ad alfa",
"Color zoom": "Zoom a colori",
"Color:": "Colore:",
"Colors": "Colori",
"Colors:": "Colori:",
"Common Filters": "Filtri comuni",
"Composition": "Composizione",
"Composition:": "Composizione:",
"Content Fill": "Riempimento del contenuto",
"Contrast": "Contrasto",
"Contrast:": "Contrasto:",
"Convert layer to raster": "Converti livello in raster",
"Convert to Raster": "Converti in raster",
"Copy Selection": "Copia selezione",
"Copy:": "Copia:",
"Copy to Clipboard": "Copia negli appunti",
"Courier": "Corriere",
"Crop": "raccolto",
"Crop Tool": "Strumento di ritaglio",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Il ritaglio su livello ruotato non è supportato. Convertilo in raster per continuare.",
"Ctrl + C": "CTRL+C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "CTRL+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "attuale",
"Curve": "Curva",
"Current Color Preview": "Anteprima colore corrente",
"Custom": "costume",
"Data URL": "URL dei dati",
"Data URL:": "URL dei dati:",
"Decrease": "Diminuire",
"Decrease Color Depth": "Diminuisci la profondità del colore",
"Default": "Predefinito",
"Degree:": "Grado:",
"Del": "del",
"Delete": "Elimina",
"Delete Selection": "Elimina selezione",
"Denoise": "Denoise",
"Desaturate": "Togli saturazione",
"Desaturate Tool": "Strumento di desatura",
"Description:": "Descrizione:",
"Deutsch": "Tedesco",
"Differences": "differenze",
"Differences Down": "Differenze giù",
"Direction:": "Direzione:",
"Dither": "oscillare",
"Dithering:": "dithering:",
"Dominant color:": "Colore dominante:",
"Dot Screen": "Schermo a punti",
"Down": "Giù",
"Duplicate": "Duplicare",
"Duplicate Layer": "Livello duplicato",
"Duplicate layer": "Livello duplicato",
"Dynamic": "Dinamico",
"Edge": "Bordo",
"Edit": "modificare",
"Edit text": "Modifica il testo",
"Edit text...": "Modifica il testo...",
"Effect browser": "Browser effetti",
"Effects": "effetti",
"Effects browser": "Browser degli effetti",
"Email:": "E-mail:",
"Emboss": "rilievo",
"Empty selection": "Selezione vuota",
"Empty selection or type not image.": "Selezione vuota o tipo non immagine.",
"Enable autoresize:": "Abilita ridimensionamento automatico:",
"End": "Fine",
"English": "Inglese",
"English (UK)": "Inglese (Regno Unito)",
"Enrich": "Arricchire",
"Erase": "Cancellare",
"Erase on rotate object is disabled. Sorry.": "Cancella su ruotare l'oggetto è disabilitato. Scusate.",
"Enter": "accedere",
"Erase Tool": "Strumento di cancellazione",
"Erase on rotate object is disabled. Please rasterize first.": "La cancellazione durante la rotazione dell'oggetto è disabilitata. Per favore rasterizza prima.",
"Error": "Errore",
"Error connecting to service.": "Errore durante la connessione al servizio.",
"Error: can not load image.": "Errore: impossibile caricare l'immagine.",
"Error loading the list of fonts from Google.": "Errore durante il caricamento dell'elenco dei caratteri da Google.",
"Error registering service worker": "Errore durante la registrazione dell'operatore del servizio",
"Error: can not find filter:": "Errore: impossibile trovare il filtro:",
"Error: can not find layer with id:": "Errore: impossibile trovare il livello con ID:",
"Error: missing details event target": "Errore: manca il bersaglio dell'evento dettagli",
"Error: unknown layer type:": "Errore: tipo di livello sconosciuto:",
"Error: unsupported attribute type:": "Errore: tipo di attributo non supportato:",
"Error: wrong key:": "Errore: chiave errata:",
"Esc": "Esc",
"Escape": "Fuga",
"Español": "Español",
"Expand edges": "Espandi i bordi",
"Exponent:": "Esponente:",
"Export": "Esportare",
"External": "Esterno",
"Factor:": "Fattore:",
"File": "File",
"File name:": "Nome del file:",
"File size:": "Dimensione del file:",
"Fill": "Riempire",
"Fill Tool": "Strumento di riempimento",
"Fit": "In forma",
"Fit Window": "Finestra adatta",
"Fit window": "Adatta la finestra",
"Flatten Image": "Immagine piatta",
"Flip": "Flip",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentina",
"French": "francese",
"Font": "Font",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
"Full Screen": "A schermo intero",
"Full layers data": "Dati a strati completi",
"Gap:": "Gap:",
"Gaussian Blur": "Sfocatura gaussiana",
"German": "Tedesco",
"Gif delay:": "Ritardo Gif:",
"Gingham": "Percalle",
"GitHub:": "GitHub:",
"Gradient": "Pendenza",
"Gradient Radius:": "Raggio di pendenza:",
"Grains": "Grani",
"Graphics Interchange Format": "Formato di interscambio grafico",
"Gray": "Grigio",
"Grayscale": "Scala di grigi",
"Greek": "greco",
"Green": "verde",
"Green channel:": "Canale Verde:",
"Green:": "Verde:",
"Greyscale:": "Scala di grigi:",
"Grid": "Griglia",
"Grid on\/off": "Griglia on \/ off",
"Guides": "Guide",
"Guides enabled.": "Guide abilitate.",
"H Radius:": "Raggio H:",
"H. Align:": "H. Allinea:",
"Heatmap": "Mappa di calore",
"Height (%):": "Altezza (%):",
"Height:": "Altezza:",
"Help": "Aiuto",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex:": "Esadecimale:",
"Hex": "Esadecimale",
"Hide": "Nascondere",
"Histogram": "Istogramma",
"Histogram:": "Istogramma:",
"Home": "Casa",
"Horizontal": "Orizzontale",
"Horizontal Alignment": "Allineamento orizzontale",
"Horizontal blur:": "Sfocatura orizzontale:",
"Horizontal:": "Orizzontale:",
"Hue": "Hue",
"Hue Rotate": "Tonalità Ruota",
"Hue:": "Hue:",
"Image": "Immagine",
"Image data with multi-layers. Can be opened using miniPaint -": "Dati immagine con multi-layer. Può essere aperto usando miniPaint -",
"Impact": "urto",
"In proportion:": "In proporzione:",
"Increase": "Aumentare",
"Information": "Informazione",
"Insert:": "Inserire:",
"Inkwell": "Calamaio",
"Insert": "Inserire",
"Insert guides": "Inserire le guide",
"Insert new layer": "Inserisci un nuovo livello",
"Instagram Filters": "Filtri Instagram",
"Invalid Hex Code": "Codice esadecimale non valido",
"Italiano": "Italiano",
"Italic": "Corsivo",
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
"JPG, WEBP quality:": "JPG, qualità WEBP:",
"JSON - Full layers data": "JSON - Dati a strati completi",
"Japanese": "giapponese",
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
"Kerning:": "Crenatura:",
"Key-Points": "Punti chiave",
"KeyU": "KeyU",
"Keyboard Shortcuts": "Tasti rapidi",
"Keyword:": "Parola chiave:",
"Korean": "coreano",
"Lanczos": "Lanczos",
"Landscape": "Paesaggio",
"Language": "linguaggio",
"Last modified": "Ultima modifica",
"Layer": "Strato",
"Layer details": "Dettagli del livello",
"Layer is already image.": "Il livello è già immagine.",
"Layer must be image, convert it to raster to apply this tool.": "Il livello deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
"Layer is empty.": "Il livello è vuoto.",
"Layer is not compatible with resize": "Il livello non è compatibile con il ridimensionamento",
"Layer is vector, convert it to raster to apply this tool.": "Il livello è vettoriale, convertilo in raster per applicare questo strumento.",
"Layers": "Livelli",
"Layers:": "strati:",
"Layout:": "Disposizione:",
"Left": "Sinistra",
"Left to Right": "Da sinistra a destra",
"Level:": "Livello:",
"Levels:": "livelli:",
"Lietuvių": "Lietuvių",
"Line": "Linea",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Luminance:",
"Magic Wand Tool": "Strumento bacchetta magica",
"Luminosity": "Luminosità",
"Magic Eraser Tool": "Strumento gomma magica",
"Merge Down": "Unisci giù",
"Merge Layers": "Unire i livelli",
"Merged": "Fusione",
"Metrics": "Metrica",
"Middle": "Medio",
"Missing at least 1 size parameter.": "Manca almeno 1 parametro di dimensione.",
"Missing permissions to write to Clipboard.cc": "Mancano i permessi per scrivere su Clipboard.cc",
"Mode:": "Modalità:",
"Module function not found.": "Funzione del modulo non trovata.",
"Modules class not found:": "Classe di moduli non trovata:",
"Monospace": "Monospace",
"Mosaic": "Mosaico",
"Mouse:": "Topo:",
"Move": "Mossa",
"Move down": "Abbassati",
"Move up": "Andare avanti",
"Move Layer": "Sposta livello",
"Move layer down": "Sposta il livello verso il basso",
"Move layer up": "Sposta il livello verso l'alto",
"Name:": "Nome:",
"Needs at least 2 layers.": "Ha bisogno di almeno 2 strati.",
"Negative": "Negativo",
"New": "Nuovo",
"New Bezier Layer": "Nuovo livello Bezier",
"New Brush Layer": "Nuovo livello pennello",
"New Ellipse Layer": "Nuovo livello ellisse",
"New File": "Nuovo file",
"New Gradient Layer": "Nuovo livello sfumato",
"New Layer": "Nuovo strato",
"New Line Layer": "Nuovo livello di linea",
"New Pencil Layer": "Nuovo livello matita",
"New Polygon Layer": "Nuovo livello poligono",
"New Rectangle Layer": "Nuovo livello rettangolo",
"New Text Layer": "Nuovo livello di testo",
"New file": "Nuovo file",
"New from Selection": "Novità dalla selezione",
"New layer": "Nuovo strato",
"New width can not be smaller then current width": "La nuova larghezza non può essere più piccola della larghezza attuale",
"Normal": "Normale",
"Next": "Prossimo",
"Night Vision": "Visione notturna",
"None": "Nessuna",
"Nothing is selected.": "Niente è selezionato.",
"Offset X:": "Offset X:",
"Offset Y:": "Offset Y:",
@ -217,23 +298,34 @@
"Open Data URL": "Apri URL dati",
"Open Directory": "Apri Directory",
"Open File": "Apri il file",
"Open File Data URL": "Apri URL dati file",
"Open File URL": "Apri URL file",
"Open File Webcam": "Apri File Webcam",
"Open Image": "Apri immagine",
"Open JSON File": "Apri file JSON",
"Open Test Template": "Apri modello di prova",
"Open URL": "Apri URL",
"Open data URL": "Apri l'URL dei dati",
"Open from Webcam": "Apri da webcam",
"Original Size": "Misura originale",
"PNG - Portable Network Graphics": "PNG - Portable Network Graphics",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converti immagine in SVG",
"PageDown": "Pagina giù",
"PageUp": "Pagina su",
"Palette": "Tavolozza",
"Parameter #1:": "Parametro n. 1:",
"Parameter #2:": "Parametro n. 2:",
"Paste": "Incolla",
"Pencil": "Matita",
"Percentage:": "Percentuale:",
"Pick Color": "Scegli colore",
"Pixels:": "pixel:",
"Play animation": "Riproduci animazione",
"Portuguese": "portoghese",
"Placeholder comment for color channels": "Commento segnaposto per i canali di colore",
"Placeholder comment for color picker": "Commento segnaposto per il selettore di colori",
"Placeholder comment for color swatches": "Commento segnaposto per i campioni di colore",
"Portable Network Graphics": "Grafica di rete portatile",
"Portrait": "Ritratto",
"Português": "Português",
"Position:": "Posizione:",
"Power:": "Energia:",
"Powred by pixabay.com .": "Powred di pixabay.com.",
"Pre-Blur:": "Pre-Blur:",
"Preview": "Anteprima",
"Previous": "Precedente",
"Previous layer must be image, convert it to raster to apply this tool.": "Il livello precedente deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
@ -241,123 +333,168 @@
"Quality:": "Qualità:",
"Quick Load": "Carico rapido",
"Quick Save": "Salvataggio veloce",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Rimuovi lo sfondo dell'immagine",
"Radial": "Radiale",
"Radial gradient": "Gradiente radiale",
"Radius:": "Raggio:",
"Range:": "Gamma:",
"Rectangle": "Rettangolo",
"Red": "Rosso",
"Red channel:": "Canale Rosso:",
"Red:": "Rosso:",
"Redo": "Rifare",
"Remove all": "Rimuovi tutto",
"Rename": "Rinominare",
"Rename Layer": "Rinomina livello",
"Rendered with errors.": "Resi con errori.",
"Rendering...": "Rendering ...",
"Replace Color": "Sostituisci colore",
"Replace color": "Sostituisci colore",
"Replacement:": "Sostituzione:",
"Report Issues": "Segnala problemi",
"Resample - Hermite": "Ricampionare - Hermite",
"Reset": "Reset",
"Reset zoom level": "Reimposta il livello di zoom",
"Resize": "Ridimensiona",
"Resize Boundary": "Ridimensiona confine",
"Resize Layer": "Ridimensiona livello",
"Resize Layers": "Ridimensiona i livelli",
"Resize Text Layer": "Ridimensiona il livello del testo",
"Resized as background": "Ridimensionato come sfondo",
"Resized:": "Ridimensionato:",
"Resolution:": "Risoluzione:",
"Restore Alpha": "Ripristina alpha",
"Right": "Destra",
"Right angle:": "Angolo retto:",
"Right to Left": "Da destra a sinistra",
"Rotate": "Ruotare",
"Rotate Layer": "Ruota livello",
"Rotate is not supported on this type of object. Convert to raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?",
"Rotate left": "Gira a sinistra",
"Rotate:": "Ruotare:",
"Russian": "russo",
"Sat:": "Sat:",
"Ruler": "Governate",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Comprimi e confronta le immagini",
"Saturate": "Saturare",
"Saturation": "Saturazione",
"Saturation:": "Saturazione:",
"Save": "Salvare",
"Save As": "Salva come",
"Save As Data URL": "Salva come URL dei dati",
"Save as": "Salva come",
"Save as type:": "Salva come tipo:",
"Save layers:": "Salva livelli:",
"Save resolution:": "Salva risoluzione:",
"Scaling up is not supported in Hermite, using Lanczos.": "L'aumento di scala non è supportato in Hermite, utilizzando Lanczos.",
"Scroll down": "Scorri verso il basso",
"Scroll up": "Scorrere verso l'alto",
"Search": "Ricerca",
"Search Images": "Cerca immagini",
"Search for Font": "Cerca carattere",
"Search:": "Ricerca:",
"Select All": "Seleziona tutto",
"Select Text Layer": "Seleziona Livello testo",
"Select object tool": "Seleziona lo strumento oggetto",
"Selected": "Selezionato",
"Selection": "Selezione",
"Selection Tool": "Strumento di selezione",
"Sensitivity:": "sensibilità:",
"Separated": "Separato",
"Separated (original types)": "Separati (tipi originali)",
"Sepia": "nero di seppia",
"Set Image Size": "Imposta la dimensione dell'immagine",
"Settings": "impostazioni",
"Shadow": "Ombra",
"Shadow:": "Ombra:",
"Shapes": "Forme",
"Shapes (H)": "Forme (H)",
"Sharpen": "Affilare",
"Sharpen tool": "Affila lo strumento",
"Sharpen Tool": "Strumento di nitidezza",
"Sharpen:": "Affilare:",
"Shift + S": "Maiusc+S",
"Shortcut Key:": "Tasto di scelta rapida:",
"Show": "Spettacolo",
"Show \/ Hide": "Mostra nascondi",
"Show file size:": "Mostra la dimensione del file:",
"Simple": "Semplice",
"Size": "Dimensione",
"Size is too big, max": "La dimensione è troppo grande, max",
"Size:": "Dimensione:",
"Skip - layer must be image.": "Salta: il livello deve essere un'immagine.",
"Solarize": "solarizzare",
"Sorry, cold not load getUserMedia() data:": "Spiacenti, non caricare i dati getUserMedia ():",
"Sorry, image could not be loaded.": "Spiacenti, impossibile caricare l'immagine.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Spiacenti, l'immagine non può essere caricata. Prova a copiare l'immagine e incollarla.",
"Sorry, image is too big, max 5 MB.": "Siamo spiacenti, l'immagine è troppo grande, max 5 MB.",
"Source is empty, right click on image to save source position.": "L'origine è vuota, fare clic con il tasto destro sull'immagine per salvare la posizione della fonte.",
"Source coordinates saved.": "Coordinate di origine salvate.",
"Source is empty, right click on image or use long press to save source position.": "La sorgente è vuota, fare clic con il tasto destro sull'immagine o premere a lungo per salvare la posizione della sorgente.",
"Sprites": "sprites",
"Square": "Piazza",
"Stream:": "Stream:",
"Strength:": "Forza:",
"Strict": "Rigoroso",
"Stroke": "Ictus",
"Stroke:": "Ictus:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimi PNG e JPEG",
"Tab": "Tab",
"Tag Image File Format": "Etichetta il formato del file immagine",
"Tahoma": "Tahoma",
"Target:": "Bersaglio:",
"Text": "Testo",
"Text example": "Esempio di testo",
"Text:": "Testo:",
"The quick brown fox jumps over the lazy dog.": "La veloce volpe marrone salta sopra il cane pigro.",
"There": "Là",
"There are no layers behind.": "Non ci sono strati dietro.",
"There is only 1 layer.": "C'è solo 1 strato.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Il livello deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
"Tilt Shift": "Tilt Shift",
"Times New Roman": "Times New Roman",
"Toaster": "Tostapane",
"Toggle": "Toggle",
"Toggle Color Channels": "Attiva \/ disattiva i canali colore",
"Toggle Color Picker": "Attiva \/ disattiva il selettore dei colori",
"Toggle Menu": "Toggle Menu",
"Toggle Swatches": "Attiva \/ disattiva campioni",
"Tools": "Utensili",
"Tools class not found:": "Classe di strumenti non trovata:",
"Top": "Superiore",
"Top to Bottom": "Dall'alto al basso",
"Total pixels:": "Pixel totali:",
"Translate": "Tradurre",
"Translate Layer": "Traduci Layer",
"Translate error, can not find dictionary:": "Traduci errore, impossibile trovare il dizionario:",
"Transparency background:": "Sfondo della trasparenza:",
"Transparent:": "Trasparente:",
"Trim": "tagliare",
"Trim everything:": "Taglia tutto:",
"Trim Layers": "Livelli di taglio",
"Trim borders:": "Taglia bordi:",
"Trim layer:": "Strato di rifinitura:",
"Trim white color?": "Tagliare il colore bianco?",
"Turkish": "Turco",
"Type:": "Tipo:",
"Türkçe": "Türkçe",
"Undo": "Disfare",
"Undo disabled.": "Annulla disabilitato.",
"Undo enabled.": "Annulla abilitato.",
"Undo is not available.": "Annulla non è disponibile.",
"Undo levels changed to 1.": "Annulla i livelli modificati in 1.",
"Undo levels restored to": "Annulla i livelli ripristinati in",
"Unique colors:": "Colori unici:",
"Up": "Su",
"Update": "Aggiornamento",
"Update Brush Layer": "Aggiorna livello pennello",
"Update Pencil Layer": "Aggiorna livello matita",
"Update guides": "Guide di aggiornamento",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Usa la scorciatoia da tastiera Ctrl + V per incollare dagli Appunti.",
"V Radius:": "V raggio:",
"V. Align:": "V. Allinea:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Versione:",
"Vertical": "Verticale",
"Vertical Alignment": "Allineamento verticale",
"Vertical blur:": "Sfocatura verticale:",
"Vertical:": "Verticale:",
"Vibrance": "Vibrance",
"View": "Visualizzazione",
"Vignette": "vignette",
"ViliusL": "ViliusL",
"Vintage": "Vintage ▾",
"Visible:": "Visibile:",
"WEBP - Weppy File Format": "WEBP - Formato file Weppy",
"Webcam": "Webcam",
"Webcam #": "Webcam #",
"Website:": "Sito web:",
"Weppy File Format": "Formato file Weppy",
"Width (%):": "Larghezza (%):",
"Width:": "Larghezza:",
"Windows Bitmap": "Bitmap di Windows",
"Word": "parola",
"Word + Letter": "Parola + Lettera",
"Wrap At:": "Avvolgi a:",
"Wrap:": "Avvolgere:",
"Wrong dimensions": "Dimensioni sbagliate",
"Wrong file type, must be image or json.": "Tipo di file errato, deve essere immagine o json.",
"X end:": "X fine:",
"X position:": "Posizione X:",
"X start:": "X inizio:",
"X-Pro II": "X-Pro II",
"Y end:": "Fine Y:",
"Y position:": "Posizione Y:",
"Y start:": "Y inizio:",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"About": "約",
"A problem occurred while removing undo history. It": "元に戻す履歴の削除中に問題が発生しました。それ",
"About": "開発者について",
"Active": "アクティブ",
"Aden": "アデン",
"Advanced": "上級",
"All": "すべて",
"Alpha": "アルファ",
"Alpha:": "アルファ:",
"Anonymous": "匿名",
"Anti aliasing": "アンチエイリアシング",
"Application markup may have changed,": "アプリケーションのマークアップが変更されている可能性があります。",
"Arial": "Arial",
"Arrow": "矢印",
"ArrowDown": "ArrowDown",
"ArrowLeft": "ArrowLeft",
"ArrowRight": "ArrowRight",
"ArrowUp": "ArrowUp",
"Author:": "著者:",
"Auto Adjust Colors": "色を自動調整する",
"Auto Kerning": "自動カーニング",
"Average:": "平均:",
"BMP - Windows Bitmap": "BMP - Windowsビットマップ",
"Backspace": "バックスペース",
"Base": "ベース",
"Basic": "ベーシック",
"Black and White": "黒と白",
"Blue": "青",
"Blue channel:": "ブルーチャンネル:",
"Blue:": "青:",
"Blueprint": "青写真",
"Blur Radius:": "ぼかし半径:",
"Blur Tool": "ぼかしツール",
"Blur power:": "ぼかしパワー:",
"Blur tool": "ぼかしツール",
"Bold": "大胆な",
"Bold Italic": "ボールドイタリック",
"Borders": "罫線",
"Bottom": "下",
"Bottom to Top": "下から上へ",
"Bounds:": "境界:",
"Box": "ボックス",
"Box Blur": "ボックスのぼかし",
"Box blur": "ボックスボケ",
"Brightness": "輝度",
"Brightness:": "輝度:",
"Brush": "みがきます",
"Bulge\/Pinch tool": "バルジ\/ピンチツール",
"Bulge\/Pinch Tool": "バルジ\/ピンチツール",
"Burn": "燃やす",
"CSS Filters": "CSSフィルタ",
"Can not animate 1 layer.": "1つのレイヤーをアニメートできません。",
"Can not find previous layer.": "以前のレイヤーが見つかりません。",
"Can not use this tool on current layer: image already takes all area.": "現在のレイヤーではこのツールを使用できません: 画像がすでにすべての領域を占めています。",
"Cancel": "キャンセル",
"Canvas Size": "キャンバスサイズ",
"Center": "センター",
"Center x:": "センターx",
"Center y:": "センターy",
"Center:": "センター:",
"Change Composition": "構成を変更する",
"Change Layer Details": "レイヤーの詳細を変更する",
"Change Opacity": "不透明度を変更する",
"Channel:": "チャネル:",
"Circle": "サークル",
"Clarendon": "クラレンドン",
"Clear": "クリア",
"Clear Selection": "明確な選択",
"Clone Tool": "クローンツール",
"Clone count:": "クローン数:",
"Clone tool": "クローンツール",
"Clone tool disabled for resized image. Please rasterize first.": "サイズ変更された画像に対してクローン ツールが無効になりました。まずはラスタライズを行ってください。",
"Cloned edges": "クローンエッジ",
"Close": "近い",
"Color #": "色 ",
"Color Zoom": "カラーズーム",
"Color alpha value can not be zero.": "色のアルファ値はゼロにすることはできません。",
"Color Corrections": "色補正",
"Color Palette": "カラーパレット",
"Color Zoom": "カラーズーム",
"Color alpha value can not be zero.": "色のアルファ値はゼロにすることはできません。",
"Color to Alpha": "カラーからアルファ",
"Color zoom": "カラーズーム",
"Color:": "色:",
"Colors": "色",
"Colors:": "色:",
"Composition": "組成",
"Composition:": "組成:",
"Common Filters": "共通フィルター",
"Composition": "レイヤーの合成",
"Composition:": "レイヤーの合成:",
"Content Fill": "コンテンツの埋め込み",
"Contrast": "コントラスト",
"Contrast:": "コントラスト:",
"Convert layer to raster": "レイヤーをラスターに変換",
"Convert to Raster": "ラスタに変換する",
"Copy Selection": "選択コピー",
"Copy:": "コピー:",
"Copy to Clipboard": "クリップボードにコピー",
"Courier": "宅配便",
"Crop": "作物",
"Crop Tool": "切り抜きツール",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "回転したレイヤーでのトリミングはサポートされていません。続行するには、ラスターに変換してください。",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "現在",
"Curve": "曲線",
"Current Color Preview": "現在のカラープレビュー",
"Custom": "カスタム",
"Data URL": "データURL",
"Data URL:": "データURL",
"Decrease": "減少",
"Decrease Color Depth": "色深度を減らす",
"Default": "デフォルト",
"Degree:": "度:",
"Del": "デル",
"Delete": "削除",
"Delete Selection": "選択を削除する",
"Denoise": "デノアーズ",
"Desaturate": "不飽和化する",
"Desaturate Tool": "彩度を下げるツール",
"Description:": "説明:",
"Deutsch": "ドイツ語",
"Differences": "相違点",
"Differences Down": "相違点",
"Direction:": "方向:",
"Dither": "ディザ",
"Dithering:": "ディザリング:",
"Dominant color:": "支配的な色:",
"Dot Screen": "ドットスクリーン",
"Down": "ダウン",
"Duplicate": "重複",
"Duplicate Layer": "重複レイヤー",
"Duplicate layer": "レイヤーの複製",
"Dynamic": "動的",
"Edge": "エッジ",
"Edit": "編集",
"Edit text": "テキストを編集する",
"Edit text...": "テキストを編集...",
"Effect browser": "エフェクトブラウザ",
"Effects": "エフェクト",
"Effects browser": "エフェクトブラウザ",
"Email:": "Eメール",
"Emboss": "エンボス",
"Empty selection": "空の選択",
"Empty selection or type not image.": "空の選択またはタイプではない画像。",
"Enable autoresize:": "自動サイズ変更を有効にする:",
"End": "終わり",
"English": "英語",
"English (UK)": "英語(イギリス)",
"Enrich": "エンリッチ",
"Erase": "消去する",
"Erase on rotate object is disabled. Sorry.": "回転オブジェクトの消去が無効になっています。ごめんなさい。",
"Enter": "入る",
"Erase Tool": "消去ツール",
"Erase on rotate object is disabled. Please rasterize first.": "オブジェクトの回転時の消去は無効になっています。まずはラスタライズを行ってください。",
"Error": "エラー",
"Error connecting to service.": "サービスに接続中にエラーが発生しました。",
"Error: can not load image.": "エラー:画像を読み込めません。",
"Error loading the list of fonts from Google.": "Google からフォントのリストをロード中にエラーが発生しました。",
"Error registering service worker": "Service Worker の登録エラー",
"Error: can not find filter:": "エラー:フィルターが見つかりません:",
"Error: can not find layer with id:": "エラーIDのレイヤーが見つかりません",
"Error: missing details event target": "エラー:詳細イベントターゲットがありません",
"Error: unsupported attribute type:": "エラー:サポートされていない属性タイプ:",
"Error: wrong key:": "エラー:間違ったキー:",
"Error: unknown layer type:": "エラー:不明なレイヤータイプ:",
"Error: unsupported attribute type:": "エラー: サポートされていない属性タイプ:",
"Esc": "ESC",
"Escape": "逃れる",
"Español": "スペイン語",
"Expand edges": "エッジを開く",
"Exponent:": "指数:",
"Export": "エクスポート",
"External": "外部サイト",
"Factor:": "因子:",
"File": "ファイル",
"File name:": "ファイル名:",
"File size:": "ファイルサイズ:",
"Fill": "塗りつぶす",
"Fill Tool": "塗りつぶしツール",
"Fit": "フィット",
"Fit Window": "ウィンドウに合わせる",
"Fit window": "ウィンドウにフィット",
"Flatten Image": "画像を平ら",
"Flip": "フリップ",
"Flip": "反転",
"FloydSteinberg-serpentine": "FloydSteinberg-蛇紋文字",
"French": "フランス語",
"Font": "フォント",
"Français": "フランス語",
"Full HD, 1080p": "フルHD、1080p",
"GIF - Graphics Interchange Format": "GIF - グラフィックスインターチェンジ形式",
"Full Screen": "全画面表示",
"Full layers data": "フルレイヤーデータ",
"Gap:": "ギャップ:",
"Gaussian Blur": "ガウスぼかし",
"German": "ドイツ人",
"Gif delay:": "GIF遅延",
"Gingham": "ギンガム",
"GitHub:": "GitHub",
"Gradient": "勾配",
"Gradient Radius:": "勾配半径:",
"Grains": "穀類",
"Grains": "フィルムグレイン",
"Graphics Interchange Format": "グラフィック交換フォーマット",
"Gray": "グレー",
"Grayscale": "グレースケール",
"Greek": "ギリシャ語",
"Green": "緑",
"Green channel:": "グリーンチャネル:",
"Green:": "緑:",
"Greyscale:": "グレースケール:",
"Grid": "グリッド",
"Grid on\/off": "グリッドのオン\/オフ",
"Guides": "ガイド",
"Guides enabled.": "ガイドが有効になりました。",
"H Radius:": "H半径",
"H. Align:": "H.整列:",
"Heatmap": "ヒートマップ",
"Height (%):": "高さ ",
"Height:": "高さ:",
"Help": "助けて",
"Help": "Help",
"Helvetica": "ヘルベチカ",
"Hermite": "エルミート",
"Hex:": "16進数",
"Hex": "16進数",
"Hide": "隠れる",
"Histogram": "ヒストグラム",
"Histogram:": "ヒストグラム:",
"Home": "ホーム",
"Horizontal": "水平",
"Horizontal Alignment": "水平方向の配置",
"Horizontal blur:": "水平ブラー:",
"Horizontal:": "水平:",
"Hue": "色相",
"Hue Rotate": "色相回転",
"Hue:": "色相:",
"Image": "画像",
"Image data with multi-layers. Can be opened using miniPaint -": "マルチレイヤーの画像データ。 miniPaintを使用して開くことができます -",
"Impact": "影響",
"In proportion:": "比例して:",
"Increase": "増加する",
"Information": "情報",
"Insert:": "インサート:",
"Inkwell": "インク壺",
"Insert": "追加",
"Insert guides": "インサートガイド",
"Insert new layer": "新しいレイヤーを挿入",
"Instagram Filters": "Instagramフィルター",
"Invalid Hex Code": "無効な16進コード",
"Italiano": "イタリア語",
"Italic": "イタリック",
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG形式",
"JPG, WEBP quality:": "JPG、WEBP品質",
"JSON - Full layers data": "JSON - フルレイヤーデータ",
"Japanese": "日本語",
"JPG\/JPEG Format": "JPG \/ JPEG形式",
"Kerning:": "字詰め:",
"Key-Points": "キーポイント",
"KeyU": "キーユー",
"Keyboard Shortcuts": "キーボードショートカット",
"Keyword:": "キーワード:",
"Korean": "韓国語",
"Lanczos": "ランチョス",
"Landscape": "風景",
"Language": "言語",
"Last modified": "最終更新日",
"Layer": "レイヤー",
"Layer details": "レイヤの詳細",
"Layer is already image.": "レイヤは既に画像です。",
"Layer must be image, convert it to raster to apply this tool.": "レイヤはイメージでなければならず、このツールを適用するにはラスタに変換する必要があります。",
"Layer is empty.": "レイヤーが空です。",
"Layer is not compatible with resize": "レイヤーはサイズ変更と互換性がありません",
"Layer is vector, convert it to raster to apply this tool.": "レイヤーはベクターです。このツールを適用するには、レイヤーをラスターに変換してください。",
"Layers": "レイヤー",
"Layers:": "レイヤー:",
"Layout:": "レイアウト:",
"Left": "左",
"Left to Right": "左から右へ",
"Level:": "レベル:",
"Levels:": "レベル:",
"Lietuvių": "Lietuvių",
"Line": "ライン",
"Lum:": "Lum",
"Lo-fi": "ローファイ",
"Luminance:": "輝度:",
"Magic Wand Tool": "マジックワンドツール",
"Luminosity": "光度",
"Magic Eraser Tool": "魔法の消しゴムツール",
"Merge Down": "マージダウン",
"Merge Layers": "レイヤーをマージする",
"Merged": "合併",
"Metrics": "指標",
"Middle": "中間",
"Missing at least 1 size parameter.": "少なくとも1つのサイズパラメータがありません。",
"Missing permissions to write to Clipboard.cc": "Clipboard.ccに書き込むためのアクセス許可がありません",
"Mode:": "モード:",
"Module function not found.": "モジュール機能が見つかりません。",
"Modules class not found:": "モジュールクラスが見つかりません:",
"Monospace": "モノスペース",
"Mosaic": "モザイク",
"Mouse:": "マウス:",
"Move": "移動",
"Move down": "下に移動",
"Move up": "上がる",
"Move Layer": "レイヤーを移動",
"Move layer down": "レイヤーを下に移動します",
"Move layer up": "レイヤーを上に移動",
"Name:": "名:",
"Needs at least 2 layers.": "少なくとも2つの層が必要です。",
"Negative": "負",
"New": "新しい",
"New Bezier Layer": "新しいベジェ層",
"New Brush Layer": "新しいブラシレイヤー",
"New Ellipse Layer": "新しい楕円レイヤー",
"New File": "新しいファイル",
"New Gradient Layer": "新しいグラデーションレイヤー",
"New Layer": "新しいレイヤー",
"New Line Layer": "新しいラインレイヤー",
"New Pencil Layer": "新しい鉛筆レイヤー",
"New Polygon Layer": "新しいポリゴンレイヤー",
"New Rectangle Layer": "新しい長方形レイヤー",
"New Text Layer": "新しいテキストレイヤー",
"New file": "新しいファイル",
"New from Selection": "新しい選択から",
"New layer": "新しいレイヤー",
"New width can not be smaller then current width": "新しい幅は現在の幅より小さくすることはできません",
"Normal": "ノーマル",
"Next": "次",
"Night Vision": "暗視ゴーグル 緑",
"None": "なし",
"Nothing is selected.": "何も選択されていません。",
"Offset X:": "オフセットX",
"Offset Y:": "オフセットY",
@ -213,27 +294,38 @@
"Online image editor.": "オンラインイメージエディタ。",
"Opacity": "不透明度",
"Opacity:": "不透明度:",
"Open": "開いた",
"Open": "開",
"Open Data URL": "公開データURL",
"Open Directory": "オープンディレクトリ",
"Open Directory": "ディレクトリを開く",
"Open File": "ファイルを開く",
"Open File Data URL": "ファイルデータのURLを開く",
"Open File URL": "ファイルのURLを開く",
"Open File Webcam": "ファイルWebカメラを開く",
"Open Image": "画像を開く",
"Open JSON File": "JSONファイルを開く",
"Open Test Template": "テストテンプレートを開く",
"Open URL": "URLを開く",
"Open data URL": "公開データURL",
"Open from Webcam": "ウェブカメラから開く",
"Original Size": "オリジナルサイズ",
"PNG - Portable Network Graphics": "PNG - ポータブルネットワークグラフィックス",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - 画像をSVGに変換",
"PageDown": "ページダウン",
"PageUp": "ページアップ",
"Palette": "パレット",
"Parameter #1:": "パラメータ1",
"Parameter #2:": "パラメータ2",
"Paste": "ペースト",
"Pencil": "鉛筆",
"Percentage:": "パーセンテージ:",
"Pick Color": "ピックカラー",
"Pixels:": "ピクセル:",
"Play animation": "アニメーションを再生する",
"Portuguese": "ポルトガル",
"Placeholder comment for color channels": "カラーチャンネルのプレースホルダーコメント",
"Placeholder comment for color picker": "カラーピッカーのプレースホルダーコメント",
"Placeholder comment for color swatches": "色見本のプレースホルダーコメント",
"Portable Network Graphics": "ポータブルネットワークグラフィックス",
"Portrait": "肖像画",
"Português": "ポルトガル語",
"Position:": "位置:",
"Power:": "力:",
"Powred by pixabay.com .": "pixabay.comのPowred",
"Pre-Blur:": "プリブラー:",
"Preview": "プレビュー",
"Previous": "前",
"Previous layer must be image, convert it to raster to apply this tool.": "前のレイヤーはイメージでなければならず、このツールを適用するにはラスターに変換する必要があります。",
@ -241,123 +333,168 @@
"Quality:": "品質:",
"Quick Load": "クイックロード",
"Quick Save": "クイックセーブ",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 画像の背景を削除する",
"Radial": "ラジアル",
"Radial gradient": "放射グラジエント",
"Radius:": "半径:",
"Range:": "範囲:",
"Rectangle": "矩形",
"Red": "赤",
"Red channel:": "赤いチャンネル:",
"Red:": "赤:",
"Redo": "やり直し",
"Remove all": "すべて削除する",
"Rename": "名前を変更する",
"Rename Layer": "レイヤーの名前を変更",
"Rendered with errors.": "エラーでレンダリングされました。",
"Rendering...": "レンダリング...",
"Replace Color": "色を置き換える",
"Replace color": "色を交換する",
"Replacement:": "置換:",
"Report Issues": "レポートの問題",
"Resample - Hermite": "リサンプル - エルミート",
"Reset": "リセット",
"Reset zoom level": "ズームレベルのリセット",
"Resize": "サイズを変更する",
"Resize Boundary": "境界のサイズ変更",
"Resize Layer": "レイヤーのサイズ変更",
"Resize Layers": "レイヤーのサイズ変更",
"Resize Text Layer": "テキストレイヤーのサイズ変更",
"Resized as background": "背景としてサイズ変更",
"Resolution:": "解決:",
"Resized:": "サイズ変更:",
"Resolution:": "解像度(ppi)",
"Restore Alpha": "アルファを復元する",
"Right": "右",
"Right angle:": "直角:",
"Right to Left": "右から左へ",
"Rotate": "回転する",
"Rotate Layer": "レイヤーを回転",
"Rotate is not supported on this type of object. Convert to raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?",
"Rotate left": "左に回転",
"Rotate:": "回転:",
"Russian": "ロシア",
"Sat:": "土:",
"Ruler": "ルーラー",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - 画像を圧縮して比較する",
"Saturate": "飽和",
"Saturation": "飽和",
"Saturation:": "飽和:",
"Save": "セーブ",
"Save As": "名前を付けて保存",
"Save As Data URL": "データURLとして保存",
"Save as": "名前を付けて保存",
"Save as type:": "タイプとして保存:",
"Save layers:": "レイヤーを保存:",
"Save resolution:": "解像度を保存:",
"Scaling up is not supported in Hermite, using Lanczos.": "ランチョスを使用したエルミートでは、スケールアップはサポートされていません。",
"Scroll down": "下へスクロール",
"Scroll up": "スクロールアップする",
"Search": "サーチ",
"Search Images": "画像を検索する",
"Search for Font": "フォントの検索",
"Search:": "検索:",
"Select All": "すべて選択",
"Select Text Layer": "テキストレイヤーを選択",
"Select object tool": "オブジェクトツールを選択",
"Selected": "選択された",
"Selection": "選択",
"Selection Tool": "選択ツール",
"Sensitivity:": "感度:",
"Separated": "分離",
"Separated (original types)": "セパレート(オリジナルタイプ)",
"Sepia": "セピア",
"Set Image Size": "画像サイズを設定する",
"Settings": "設定",
"Shadow": "影",
"Shadow:": "影:",
"Shapes": "形",
"Shapes (H)": "形状(H)",
"Sharpen": "シャープ",
"Sharpen tool": "シャープツール",
"Sharpen Tool": "シャープツール",
"Sharpen:": "シャープ:",
"Shift + S": "Shift + S",
"Shortcut Key:": "ショートカットキー:",
"Show": "見せる",
"Show \/ Hide": "表示\/非表示",
"Show file size:": "ファイルサイズを表示:",
"Simple": "シンプル",
"Size": "サイズ",
"Size is too big, max": "サイズが大きすぎます",
"Size:": "サイズ:",
"Skip - layer must be image.": "スキップ - レイヤはイメージでなければなりません。",
"Solarize": "ソラリゼーション",
"Sorry, cold not load getUserMedia() data:": "申し訳ありませんが、getUserMediaデータをロードしないでください",
"Sorry, image could not be loaded.": "申し訳ありませんが、画像を読み込めませんでした。",
"Sorry, image could not be loaded. Try copy image and paste it.": "申し訳ありませんが、画像を読み込めませんでした。イメージをコピーして貼り付けてみてください。",
"Sorry, image is too big, max 5 MB.": "申し訳ありませんが、イメージが大きすぎます最大5 MB。",
"Source is empty, right click on image to save source position.": "ソースは空です。イメージを右クリックするとソースの位置が保存されます。",
"Source coordinates saved.": "保存されたソース座標。",
"Source is empty, right click on image or use long press to save source position.": "ソースが空です。画像を右クリックするか、長押ししてソースの位置を保存します。",
"Sprites": "スプライト",
"Square": "平方",
"Stream:": "ストリーム:",
"Strength:": "力:",
"Strict": "厳格",
"Stroke": "ストローク",
"Stroke:": "ストローク:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - PNGとJPEGを圧縮します",
"Tab": "タブ",
"Tag Image File Format": "タグ画像ファイル形式",
"Tahoma": "タホマ",
"Target:": "ターゲット:",
"Text": "テキスト",
"Text example": "テキストの例",
"Text:": "テキスト:",
"The quick brown fox jumps over the lazy dog.": "素早い茶色のキツネが怠惰な犬を飛び越えます。",
"There": "そこ",
"There are no layers behind.": "後ろに層がありません。",
"There is only 1 layer.": "レイヤーは1つしかありません。",
"This layer must contain an image. Please convert it to raster to apply this tool.": "レイヤはイメージでなければならず、このツールを適用するにはラスタに変換する必要があります。",
"Tilt Shift": "チルトシフト",
"Times New Roman": "Times New Roman",
"Toaster": "トースター",
"Toggle": "トグル",
"Toggle Color Channels": "カラーチャンネルを切り替えます",
"Toggle Color Picker": "トグルカラーピッカー",
"Toggle Menu": "トグルメニュー",
"Toggle Swatches": "トグルスウォッチ",
"Tools": "ツール",
"Tools class not found:": "ツールクラスが見つかりません:",
"Top": "上",
"Top to Bottom": "上から下へ",
"Total pixels:": "合計ピクセル数:",
"Translate": "翻訳",
"Translate": "画像を移動",
"Translate Layer": "翻訳レイヤー",
"Translate error, can not find dictionary:": "翻訳エラー、辞書が見つかりません:",
"Transparency background:": "透明性の背景:",
"Transparent:": "トランスペアレント:",
"Trim": "トリム",
"Trim everything:": "すべてをトリム:",
"Trim Layers": "レイヤーのトリム",
"Trim borders:": "境界線をトリミングします。",
"Trim layer:": "トリムレイヤー:",
"Trim white color?": "白い色をトリム?",
"Turkish": "トルコ語",
"Type:": "タイプ:",
"Türkçe": "Türkçe",
"Undo": "元に戻す",
"Undo disabled.": "元に戻すことはできません。",
"Undo enabled.": "取り消しが有効になっています。",
"Undo is not available.": "元に戻すことはできません。",
"Undo levels changed to 1.": "元に戻すレベルが1に変更されました。",
"Undo levels restored to": "元に戻すレベルを元に戻す",
"Unique colors:": "ユニークな色:",
"Up": "アップ",
"Update": "アップデート",
"Update Brush Layer": "ブラシレイヤーを更新する",
"Update Pencil Layer": "鉛筆レイヤーを更新する",
"Update guides": "アップデートガイド",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Ctrl + Vキーボードショートカットを使用してクリップボードから貼り付けます。",
"V Radius:": "V半径",
"V. Align:": "V.整列:",
"Valencia": "バレンシア",
"Verdana": "ヴェルダナ",
"Version:": "バージョン:",
"Vertical": "垂直",
"Vertical Alignment": "垂直方向の配置",
"Vertical blur:": "垂直方向のぼかし:",
"Vertical:": "垂直:",
"Vibrance": "バイブランス",
"View": "ビュー",
"Vignette": "ビネット",
"ViliusL": "ViliusL",
"Vintage": "ビンテージ",
"Visible:": "表示:",
"WEBP - Weppy File Format": "WEBP - ウィピーファイルフォーマット",
"Webcam": "ウェブカメラ",
"Webcam #": "ウェブカメラ ",
"Website:": "ウェブサイト:",
"Weppy File Format": "Weppyファイル形式",
"Width (%):": "幅(%):",
"Width:": "幅:",
"Windows Bitmap": "Windowsビットマップ",
"Word": "語",
"Word + Letter": "単語+文字",
"Wrap At:": "ラップ場所:",
"Wrap:": "ラップ:",
"Wrong dimensions": "間違った寸法",
"Wrong file type, must be image or json.": "間違ったファイルタイプです。画像またはjsonでなければなりません。",
"X end:": "X end",
"X position:": "X位置",
"X start:": "Xスタート",
"X-Pro II": "X-Pro II",
"Y end:": "Y end",
"Y position:": "Y位置",
"Y start:": "Y開始",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "실행 취소 기록을 제거하는 동안 문제가 발생했습니다. 그것",
"About": "약",
"Active": "유효한",
"Aden": "아덴",
"Advanced": "많은",
"All": "모든",
"Alpha": "알파",
"Alpha:": "알파 :",
"Anonymous": "익명",
"Anti aliasing": "안티 앨리어싱",
"Application markup may have changed,": "애플리케이션 마크업이 변경되었을 수 있습니다.",
"Arial": "Arial",
"Arrow": "화살",
"ArrowDown": "ArrowDown",
"ArrowLeft": "ArrowLeft",
"ArrowRight": "ArrowRight",
"ArrowUp": "ArrowUp",
"Author:": "저자:",
"Auto Adjust Colors": "색상 자동 조정",
"Auto Kerning": "자동 커닝",
"Average:": "평균:",
"BMP - Windows Bitmap": "BMP - Windows 비트 맵",
"Backspace": "역행 키이",
"Base": "베이스",
"Basic": "기본",
"Black and White": "검정색과 흰색",
"Blue": "푸른",
"Blue channel:": "파란색 채널 :",
"Blue:": "푸른:",
"Blueprint": "청사진",
"Blur Radius:": "흐리게 반경 :",
"Blur Tool": "블러 도구",
"Blur power:": "흐림 효과 :",
"Blur tool": "블러 도구",
"Bold": "대담한",
"Bold Italic": "굵은 기울임 꼴",
"Borders": "테두리",
"Bottom": "바닥",
"Bottom to Top": "아래에서 위로",
"Bounds:": "범위:",
"Box": "상자",
"Box Blur": "상자 흐림 효과",
"Box blur": "상자 흐림 효과",
"Brightness": "명도",
"Brightness:": "명도:",
"Brush": "브러시",
"Bulge\/Pinch tool": "벌지 \/ 핀치 도구",
"Bulge\/Pinch Tool": "벌지 \/ 핀치 도구",
"Burn": "화상",
"CSS Filters": "CSS 필터",
"Can not animate 1 layer.": "1 개의 레이어를 애니메이션으로 만들 수 없습니다.",
"Can not find previous layer.": "이전 레이어를 찾을 수 없습니다.",
"Can not use this tool on current layer: image already takes all area.": "현재 레이어에서는 이 도구를 사용할 수 없습니다. 이미지가 이미 모든 영역을 차지하고 있습니다.",
"Cancel": "취소",
"Canvas Size": "캔버스 크기",
"Center": "센터",
"Center x:": "센터 x :",
"Center y:": "센터 y :",
"Center:": "센터:",
"Change Composition": "구성 변경",
"Change Layer Details": "레이어 세부 정보 변경",
"Change Opacity": "불투명도 변경",
"Channel:": "채널:",
"Circle": "원",
"Clarendon": "Clarendon",
"Clear": "명확한",
"Clear Selection": "명확한 선택",
"Clone Tool": "복제 도구",
"Clone count:": "클론 횟수 :",
"Clone tool": "복제 도구",
"Clone tool disabled for resized image. Please rasterize first.": "크기가 조정된 이미지에 대해 복제 도구가 비활성화되었습니다. 먼저 래스터화해 주세요.",
"Cloned edges": "복제 된 가장자리",
"Close": "닫다",
"Color #": "색깔 #",
"Color Zoom": "색상 확대 \/ 축소",
"Color alpha value can not be zero.": "색상 알파 값은 0 일 수 없습니다.",
"Color Corrections": "색상 보정",
"Color Palette": "색상 팔레트",
"Color Zoom": "색상 확대 \/ 축소",
"Color alpha value can not be zero.": "색상 알파 값은 0 일 수 없습니다.",
"Color to Alpha": "알파에서 색상으로",
"Color zoom": "색상 확대 \/ 축소",
"Color:": "색깔:",
"Colors": "그림 물감",
"Colors:": "그림 물감:",
"Common Filters": "공통 필터",
"Composition": "구성",
"Composition:": "구성:",
"Content Fill": "콘텐츠 채우기",
"Contrast": "대조",
"Contrast:": "대조:",
"Convert layer to raster": "레이어를 래스터로 변환",
"Convert to Raster": "래스터로 변환",
"Copy Selection": "선택 항목 복사",
"Copy:": "부:",
"Copy to Clipboard": "클립 보드에 복사",
"Courier": "급사",
"Crop": "수확고",
"Crop Tool": "자르기 도구",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "회전 된 레이어에서 자르기는 지원되지 않습니다. 계속하려면 래스터로 변환하십시오.",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "흐름",
"Curve": "곡선",
"Current Color Preview": "현재 색상 미리보기",
"Custom": "관습",
"Data URL": "데이터 URL",
"Data URL:": "데이터 URL :",
"Decrease": "감소",
"Decrease Color Depth": "색상 심도 감소",
"Default": "태만",
"Degree:": "정도:",
"Del": "델",
"Delete": "지우다",
"Delete Selection": "선택 항목 삭제",
"Denoise": "데니스 이스",
"Desaturate": "불포화",
"Desaturate Tool": "채도 제거 도구",
"Description:": "기술:",
"Deutsch": "Deutsch",
"Differences": "차이점",
"Differences Down": "차이점",
"Direction:": "방향:",
"Dither": "떨림",
"Dithering:": "디더링 :",
"Dominant color:": "주된 색깔 :",
"Dot Screen": "도트 스크린",
"Down": "하위",
"Duplicate": "복제",
"Duplicate Layer": "중복 레이어",
"Duplicate layer": "레이어 복제",
"Dynamic": "동적",
"Edge": "가장자리",
"Edit": "편집하다",
"Edit text": "텍스트 수정",
"Edit text...": "텍스트 수정 ...",
"Effect browser": "효과 브라우저",
"Effects": "효과",
"Effects browser": "효과 브라우저",
"Email:": "이메일:",
"Emboss": "엠보싱",
"Empty selection": "빈 선택",
"Empty selection or type not image.": "이미지를 선택하지 않거나 입력하지 마십시오.",
"Enable autoresize:": "자동 크기 조정 활성화:",
"End": "종료",
"English": "영어",
"English (UK)": "영어(영국)",
"Enrich": "높이다",
"Erase": "삭제",
"Erase on rotate object is disabled. Sorry.": "회전 객체에서 지우기가 비활성화됩니다. 죄송합니다.",
"Enter": "시작하다",
"Erase Tool": "지우기 도구",
"Erase on rotate object is disabled. Please rasterize first.": "개체 회전 시 지우기가 비활성화됩니다. 먼저 래스터화해 주세요.",
"Error": "오류",
"Error connecting to service.": "서비스에 연결하는 중 오류가 발생했습니다.",
"Error: can not load image.": "오류 : 이미지를로드 할 수 없습니다.",
"Error loading the list of fonts from Google.": "Google에서 글꼴 목록을 로드하는 중에 오류가 발생했습니다.",
"Error registering service worker": "서비스 워커 등록 오류",
"Error: can not find filter:": "오류 : 필터를 찾을 수 없음 :",
"Error: can not find layer with id:": "오류 : ID가있는 레이어를 찾을 수 없습니다.",
"Error: missing details event target": "오류 : 세부 정보 이벤트 대상이 누락되었습니다.",
"Error: unsupported attribute type:": "오류 : 지원되지 않는 속성 유형 :",
"Error: wrong key:": "오류 : 잘못된 키 :",
"Error: unknown layer type:": "오류 : 알 수없는 레이어 유형 :",
"Error: unsupported attribute type:": "오류: 지원되지 않는 속성 유형:",
"Esc": "Esc",
"Escape": "탈출",
"Español": "스페인어",
"Expand edges": "가장자리 확장",
"Exponent:": "멱지수:",
"Export": "내보내다",
"External": "외부",
"Factor:": "인자:",
"File": "파일",
"File name:": "파일 이름:",
"File size:": "파일 크기 :",
"Fill": "가득 따르다",
"Fill Tool": "채우기 도구",
"Fit": "적당한",
"Fit Window": "창에 맞추기",
"Fit window": "창 맞추기",
"Flatten Image": "납작한 이미지",
"Flip": "튀기다",
"FloydSteinberg-serpentine": "FloydSteinberg- 사문석",
"French": "프랑스 국민",
"Font": "폰트",
"Français": "Français",
"Full HD, 1080p": "풀 HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - 그래픽 교환 형식",
"Full Screen": "전체 화면",
"Full layers data": "전체 레이어 데이터",
"Gap:": "갭:",
"Gaussian Blur": "가우스 흐림",
"German": "독일 사람",
"Gif delay:": "GIF 지연 :",
"Gingham": "깅엄",
"GitHub:": "GitHub :",
"Gradient": "구배",
"Gradient Radius:": "기울기 반경 :",
"Grains": "작살",
"Graphics Interchange Format": "그래픽 교환 형식",
"Gray": "회색",
"Grayscale": "그레이 스케일",
"Greek": "그리스 어",
"Green": "녹색",
"Green channel:": "녹색 통로:",
"Green:": "녹색:",
"Greyscale:": "그레이 스케일 :",
"Grid": "그리드",
"Grid on\/off": "그리드 켜기 \/ 끄기",
"Guides": "가이드",
"Guides enabled.": "가이드가 활성화되었습니다.",
"H Radius:": "H 반경 :",
"H. Align:": "H. 정렬 :",
"Heatmap": "히트 맵",
"Height (%):": "높이 (%) :",
"Height:": "신장:",
"Help": "도움",
"Helvetica": "헬 베티 카",
"Hermite": "허 마이트",
"Hex:": "마녀:",
"Hex": "마녀",
"Hide": "숨다",
"Histogram": "히스토그램",
"Histogram:": "히스토그램 :",
"Home": "집",
"Horizontal": "수평",
"Horizontal Alignment": "수평 정렬",
"Horizontal blur:": "가로 흐리게 :",
"Horizontal:": "수평의:",
"Hue": "색조",
"Hue Rotate": "색조 회전",
"Hue:": "색조:",
"Image": "영상",
"Image data with multi-layers. Can be opened using miniPaint -": "다중 레이어가있는 이미지 데이터. miniPaint를 사용하여 열 수 있습니다 -",
"Impact": "충격",
"In proportion:": "비례:",
"Increase": "증가하다",
"Information": "정보",
"Insert:": "끼워 넣다:",
"Inkwell": "잉크 그릇",
"Insert": "끼워 넣다",
"Insert guides": "가이드 삽입",
"Insert new layer": "새 레이어 삽입",
"Instagram Filters": "Instagram 필터",
"Invalid Hex Code": "잘못된 16 진수 코드",
"Italiano": "이탈리아어",
"Italic": "이탤릭체",
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG 형식",
"JPG, WEBP quality:": "JPG, WEBP 품질 :",
"JSON - Full layers data": "JSON - 전체 레이어 데이터",
"Japanese": "일본어",
"JPG\/JPEG Format": "JPG \/ JPEG 형식",
"Kerning:": "커닝 :",
"Key-Points": "키 포인트",
"KeyU": "키유",
"Keyboard Shortcuts": "키보드 단축키",
"Keyword:": "예어:",
"Korean": "한국어",
"Lanczos": "Lanczos",
"Landscape": "풍경",
"Language": "언어",
"Last modified": "최종 수정일",
"Layer": "층",
"Layer details": "레이어 세부 정보",
"Layer is already image.": "레이어는 이미 이미지입니다.",
"Layer must be image, convert it to raster to apply this tool.": "레이어는 이미지 여야하며이 도구를 적용하려면 래스터로 변환해야합니다.",
"Layer is empty.": "레이어가 비어 있습니다.",
"Layer is not compatible with resize": "레이어는 크기 조정과 호환되지 않습니다.",
"Layer is vector, convert it to raster to apply this tool.": "레이어는 벡터이므로 래스터로 변환하여이 도구를 적용합니다.",
"Layers": "레이어",
"Layers:": "레이어 :",
"Layout:": "공들여 나열한 것:",
"Left": "왼쪽",
"Left to Right": "좌에서 우로",
"Level:": "수평:",
"Levels:": "레벨 :",
"Lietuvių": "Lietuvių",
"Line": "선",
"Lum:": "Lum :",
"Lo-fi": "Lo-Fi",
"Luminance:": "휘도 :",
"Magic Wand Tool": "마법 지팡이 도구",
"Luminosity": "밝기",
"Magic Eraser Tool": "매직 지우개 도구",
"Merge Down": "병합",
"Merge Layers": "계층을 병합하다",
"Merged": "병합 됨",
"Metrics": "지표",
"Middle": "가운데",
"Missing at least 1 size parameter.": "크기 매개 변수가 1 개 이상 누락되었습니다.",
"Missing permissions to write to Clipboard.cc": "Clipboard.cc에 쓸 수있는 권한이 없습니다.",
"Mode:": "방법:",
"Module function not found.": "모듈 기능을 찾을 수 없습니다.",
"Modules class not found:": "모듈 클래스를 찾을 수 없음 :",
"Monospace": "고정 폭",
"Mosaic": "모자이크",
"Mouse:": "쥐:",
"Move": "움직임",
"Move down": "아래로 이동",
"Move up": "이동",
"Move Layer": "레이어 이동",
"Move layer down": "레이어를 아래로 이동",
"Move layer up": "레이어를 위로 이동",
"Name:": "이름:",
"Needs at least 2 layers.": "최소한 2 개의 레이어가 필요합니다.",
"Negative": "부정",
"New": "새로운",
"New Bezier Layer": "새로운 베지어 레이어",
"New Brush Layer": "새 브러시 레이어",
"New Ellipse Layer": "새 타원 레이어",
"New File": "새로운 파일",
"New Gradient Layer": "새로운 그라디언트 레이어",
"New Layer": "새 레이어",
"New Line Layer": "새 라인 레이어",
"New Pencil Layer": "새 연필 레이어",
"New Polygon Layer": "새로운 폴리곤 레이어",
"New Rectangle Layer": "새로운 직사각형 레이어",
"New Text Layer": "새 텍스트 레이어",
"New file": "새로운 파일",
"New from Selection": "선택 항목의 새로운 기능",
"New layer": "새 레이어",
"New width can not be smaller then current width": "새 너비는 현재 너비보다 작을 수 없습니다.",
"Normal": "표준",
"Next": "다음",
"Night Vision": "나이트 비전",
"None": "없음",
"Nothing is selected.": "아무것도 선택되지 않았습니다.",
"Offset X:": "오프셋 X :",
"Offset Y:": "오프셋 Y :",
@ -217,23 +298,34 @@
"Open Data URL": "공개 데이터 URL",
"Open Directory": "오픈 디렉토리",
"Open File": "파일 열기",
"Open File Data URL": "파일 데이터 URL 열기",
"Open File URL": "파일 URL 열기",
"Open File Webcam": "파일 열기 웹캠",
"Open Image": "이미지 열기",
"Open JSON File": "JSON 파일 열기",
"Open Test Template": "테스트 템플릿 열기",
"Open URL": "URL 열기",
"Open data URL": "공개 데이터 URL",
"Open from Webcam": "웹캠에서 열기",
"Original Size": "원본 크기",
"PNG - Portable Network Graphics": "PNG - 휴대용 네트워크 그래픽",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG-이미지를 SVG로 변환",
"PageDown": "PageDown",
"PageUp": "페이지 위로",
"Palette": "팔레트",
"Parameter #1:": "매개 변수 # 1 :",
"Parameter #2:": "매개 변수 # 2 :",
"Paste": "풀",
"Pencil": "연필",
"Percentage:": "백분율:",
"Pick Color": "색상 선택",
"Pixels:": "픽셀 :",
"Play animation": "애니메이션 재생",
"Portuguese": "포르투갈 인",
"Placeholder comment for color channels": "색상 채널에 대한 자리 표시 자 주석",
"Placeholder comment for color picker": "색상 선택기에 대한 자리 표시 자 주석",
"Placeholder comment for color swatches": "색상 견본에 대한 자리 표시 자 주석",
"Portable Network Graphics": "휴대용 네트워크 그래픽",
"Portrait": "초상화",
"Português": "Português",
"Position:": "위치:",
"Power:": "힘:",
"Powred by pixabay.com .": "pixabay.com의 Powred.",
"Pre-Blur:": "사전 흐림 효과 :",
"Preview": "시사",
"Previous": "너무 이른",
"Previous layer must be image, convert it to raster to apply this tool.": "이전 레이어는 이미지 여야하며이 도구를 적용하려면 래스터로 변환해야합니다.",
@ -241,123 +333,168 @@
"Quality:": "품질:",
"Quick Load": "빠른로드",
"Quick Save": "빠른 저장",
"REMOVE.BG - Remove Image Background": "REMOVE.BG-이미지 배경 제거",
"Radial": "방사형",
"Radial gradient": "방사형 그래디언트",
"Radius:": "반지름:",
"Range:": "범위:",
"Rectangle": "구형",
"Red": "빨간",
"Red channel:": "적색 통로:",
"Red:": "빨간:",
"Redo": "다시 하다",
"Remove all": "모두 제거",
"Rename": "이름 바꾸기",
"Rename Layer": "레이어 이름 변경",
"Rendered with errors.": "오류와 함께 렌더링됩니다.",
"Rendering...": "표현...",
"Replace Color": "색상 바꾸기",
"Replace color": "색상 바꾸기",
"Replacement:": "바꿔 놓음:",
"Report Issues": "문제 신고",
"Resample - Hermite": "리 샘플 - Hermite",
"Reset": "다시 놓기",
"Reset zoom level": "확대 \/ 축소 레벨 재설정",
"Resize": "크기 조정",
"Resize Boundary": "경계 크기 조정",
"Resize Layer": "레이어 크기 조정",
"Resize Layers": "레이어 크기 조정",
"Resize Text Layer": "텍스트 레이어 크기 조정",
"Resized as background": "배경으로 크기 조정",
"Resized:": "크기 조정됨:",
"Resolution:": "해결:",
"Restore Alpha": "알파 복원",
"Right": "권리",
"Right angle:": "직각:",
"Right to Left": "오른쪽에서 왼쪽으로",
"Rotate": "회전",
"Rotate Layer": "레이어 회전",
"Rotate is not supported on this type of object. Convert to raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?",
"Rotate left": "왼쪽으로 회전",
"Rotate:": "회전 :",
"Russian": "러시아인",
"Sat:": "토 :",
"Ruler": "자",
"SQUOOSH - Compress and Compare Images": "SQUOOSH-이미지 압축 및 비교",
"Saturate": "가득한",
"Saturation": "포화",
"Saturation:": "포화:",
"Save": "구하다",
"Save As": "다른 이름으로 저장",
"Save As Data URL": "데이터 URL로 저장",
"Save as": "다른 이름으로 저장",
"Save as type:": "유형으로 저장 :",
"Save layers:": "레이어 저장 :",
"Save resolution:": "해상도 절약 :",
"Scaling up is not supported in Hermite, using Lanczos.": "Lanczos를 사용하는 Hermite에서는 확장이 지원되지 않습니다.",
"Scroll down": "아래로 스크롤",
"Scroll up": "스크롤",
"Search": "수색",
"Search Images": "이미지 검색",
"Search for Font": "글꼴 검색",
"Search:": "찾다:",
"Select All": "모두 선택",
"Select Text Layer": "텍스트 레이어 선택",
"Select object tool": "오브젝트 도구 선택",
"Selected": "선택된",
"Selection": "선택",
"Selection Tool": "선택 도구",
"Sensitivity:": "감광도:",
"Separated": "분리됨",
"Separated (original types)": "분리형(원본 유형)",
"Sepia": "세피아",
"Set Image Size": "이미지 크기 설정",
"Settings": "설정",
"Shadow": "그림자",
"Shadow:": "그림자:",
"Shapes": "모양",
"Shapes (H)": "모양(H)",
"Sharpen": "갈다",
"Sharpen tool": "선명 도구",
"Sharpen Tool": "선명 도구",
"Sharpen:": "갈다:",
"Shift + S": "쉬프트 + S",
"Shortcut Key:": "바로 가기 키:",
"Show": "보여주다",
"Show \/ Hide": "표시 \/ 숨기기",
"Show file size:": "파일 크기 표시 :",
"Simple": "단순한",
"Size": "크기",
"Size is too big, max": "크기가 너무 큽니다.",
"Size:": "크기:",
"Skip - layer must be image.": "건너 뛰기 - 레이어가 이미지 여야합니다.",
"Solarize": "솔라 이즈",
"Sorry, cold not load getUserMedia() data:": "죄송합니다. getUserMedia () 데이터를로드하지 마세요.",
"Sorry, image could not be loaded.": "죄송합니다. 이미지를로드 할 수 없습니다.",
"Sorry, image could not be loaded. Try copy image and paste it.": "죄송합니다. 이미지를로드 할 수 없습니다. 이미지 복사 및 붙여 넣기를 시도하십시오.",
"Sorry, image is too big, max 5 MB.": "죄송합니다. 이미지가 너무 크고 최대 5MB입니다.",
"Source is empty, right click on image to save source position.": "소스가 비어 있습니다. 소스 위치를 저장하려면 이미지를 마우스 오른쪽 버튼으로 클릭하십시오.",
"Source coordinates saved.": "소스 좌표가 저장되었습니다.",
"Source is empty, right click on image or use long press to save source position.": "소스가 비어 있습니다. 이미지를 마우스 오른쪽 버튼으로 클릭하거나 길게 눌러 소스 위치를 저장하세요.",
"Sprites": "스프라이트",
"Square": "광장",
"Stream:": "흐름:",
"Strength:": "힘:",
"Strict": "엄격한",
"Stroke": "행정",
"Stroke:": "행정:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG-PNG 및 JPEG 압축",
"Tab": "탭",
"Tag Image File Format": "태그 이미지 파일 형식",
"Tahoma": "타호 마",
"Target:": "목표:",
"Text": "본문",
"Text example": "텍스트 예제",
"Text:": "본문:",
"The quick brown fox jumps over the lazy dog.": "날렵한 갈색여우가 게으른 개를 뛰어넘습니다.",
"There": "그곳에",
"There are no layers behind.": "뒤에 레이어가 없습니다.",
"There is only 1 layer.": "단 하나의 레이어가 있습니다.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "이 레이어에는 이미지가 있어야합니다. 이 도구를 적용하려면 래스터로 변환하십시오.",
"Tilt Shift": "경사 변화",
"Times New Roman": "Times New Roman",
"Toaster": "토스터에",
"Toggle": "비녀장",
"Toggle Color Channels": "색상 채널 전환",
"Toggle Color Picker": "색상 선택기 전환",
"Toggle Menu": "토글 메뉴",
"Toggle Swatches": "견본 전환",
"Tools": "도구들",
"Tools class not found:": "도구 클래스를 찾을 수 없음 :",
"Top": "상단",
"Top to Bottom": "위에서 아래로",
"Total pixels:": "총 픽셀 수 :",
"Translate": "옮기다",
"Translate Layer": "레이어 번역",
"Translate error, can not find dictionary:": "번역 오류, 사전을 찾을 수 없음 :",
"Transparency background:": "투명도 배경 :",
"Transparent:": "투명한:",
"Trim": "손질",
"Trim everything:": "모든 것을 다듬습니다 :",
"Trim Layers": "레이어 트림",
"Trim borders:": "테두리 자르기 :",
"Trim layer:": "레이어 다듬기 :",
"Trim white color?": "흰색을 다듬을까요?",
"Turkish": "터키어",
"Type:": "유형:",
"Türkçe": "Türkçe",
"Undo": "끄르다",
"Undo disabled.": "실행 취소가 해제되었습니다.",
"Undo enabled.": "실행 취소가 활성화되었습니다.",
"Undo is not available.": "실행 취소를 사용할 수 없습니다.",
"Undo levels changed to 1.": "실행 취소 수준이 1로 변경되었습니다.",
"Undo levels restored to": "복원 된 실행 취소 수준",
"Unique colors:": "독특한 색상 :",
"Up": "쪽으로",
"Update": "업데이트",
"Update Brush Layer": "브러시 레이어 업데이트",
"Update Pencil Layer": "연필 레이어 업데이트",
"Update guides": "가이드 업데이트",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Ctrl + V 키보드 단축키를 사용하여 클립 보드에서 붙여 넣기하십시오.",
"V Radius:": "V 반경 :",
"V. Align:": "V. 정렬 :",
"Valencia": "발렌시아",
"Verdana": "Verdana",
"Version:": "번역:",
"Vertical": "수직선",
"Vertical Alignment": "수직 정렬",
"Vertical blur:": "수직 흐림 효과 :",
"Vertical:": "수직의:",
"Vibrance": "활기찬",
"View": "보다",
"Vignette": "삽화",
"ViliusL": "ViliusL",
"Vintage": "포도 수확",
"Visible:": "명백한:",
"WEBP - Weppy File Format": "WEBP - 위피 파일 형식",
"Webcam": "웹캠",
"Webcam #": "웹캠 #",
"Website:": "웹 사이트 :",
"Weppy File Format": "Weppy 파일 형식",
"Width (%):": "너비 (%) :",
"Width:": "폭:",
"Windows Bitmap": "Windows 비트 맵",
"Word": "워드",
"Word + Letter": "단어 + 문자",
"Wrap At:": "줄 바꿈 :",
"Wrap:": "싸다:",
"Wrong dimensions": "잘못된 치수",
"Wrong file type, must be image or json.": "잘못된 파일 유형. 이미지 또는 json이어야합니다.",
"X end:": "X 끝 :",
"X position:": "X 위치 :",
"X start:": "X 시작 :",
"X-Pro II": "X-Pro II",
"Y end:": "Y 끝 :",
"Y position:": "Y 위치 :",
"Y start:": "Y 시작 :",

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Pašalinant anuliavimo istoriją įvyko problema. Tai",
"About": "Apie",
"Active": "Aktyvus",
"Aden": "Aden",
"Advanced": "Pažangus",
"All": "Visi",
"Alpha": "Alfa",
"Alpha:": "Alfa:",
"Anonymous": "Anoniminis",
"Anti aliasing": "Sulieti",
"Application markup may have changed,": "Programos žymėjimas galėjo pasikeisti,",
"Arial": "Arial",
"Arrow": "Rodyklė",
"ArrowDown": "Rodyklė žemyn",
"ArrowLeft": "Rodyklė kairėn",
"ArrowRight": "RodyklėDešinė",
"ArrowUp": "„ArrowUp“",
"Author:": "Autorius:",
"Auto Adjust Colors": "Sureguliuoti spalvas",
"Auto Kerning": "„Auto Kerning“",
"Average:": "Vidurkis:",
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
"Backspace": "Backspace",
"Base": "Bazė",
"Basic": "Paprastas",
"Black and White": "Juoda ir balta",
"Blue": "Mėlynas",
"Blue channel:": "Mėlyna kanalas:",
"Blue:": "Mėlyna:",
"Blueprint": "Techninis piešinys",
"Blur Radius:": "Migla spindulys:",
"Blur Tool": "Neryškus įrankis",
"Blur power:": "Blur stiprumas:",
"Blur tool": "Migla įrankis",
"Bold": "Bold",
"Bold Italic": "Bold Italic",
"Borders": "Ribojasi",
"Bottom": "Apačia",
"Bottom to Top": "Iš apačios į viršų",
"Bounds:": "Ribos:",
"Box": "Dėžė",
"Box Blur": "Box Blur",
"Box blur": "Langelis blur",
"Brightness": "Ryškumas",
"Brightness:": "Ryškumas:",
"Brush": "Šepetys",
"Bulge\/Pinch tool": "Bumbulas\/Žiupsnelis",
"Bulge\/Pinch Tool": "Išsipūtimo \/ prispaudimo įrankis",
"Burn": "Deginti",
"CSS Filters": "CSS filtrai",
"Can not animate 1 layer.": "Negalima animuoti 1 sluoksniu.",
"Can not find previous layer.": "Negaliu rasti ankstesnio sluoksnio.",
"Can not use this tool on current layer: image already takes all area.": "Negalima naudoti šio įrankio dabartiniame sluoksnyje: vaizdas jau užima visą plotą.",
"Cancel": "Atšaukti",
"Canvas Size": "Paveikslo Dydis",
"Center": "Centras",
"Center x:": "Centras x:",
"Center y:": "Centras y:",
"Center:": "Centras:",
"Change Composition": "Keisti kompoziciją",
"Change Layer Details": "Keisti išsamią informaciją",
"Change Opacity": "Pakeiskite neskaidrumą",
"Channel:": "Kanalas:",
"Circle": "Ratas",
"Clarendon": "Klarendonas",
"Clear": "Aiškus",
"Clear Selection": "Išvalyti pasirinkimą",
"Clone Tool": "Klonų įrankis",
"Clone count:": "Klonų skaičius:",
"Clone tool": "Klonas įrankis",
"Clone tool disabled for resized image. Please rasterize first.": "Klonavimo įrankis išjungtas norint pakeisti vaizdo dydį. Pirmiausia rastruokite.",
"Cloned edges": "Klonuoti kraštai",
"Close": "Uždaryti",
"Color #": "Spalva #",
"Color Zoom": "Spalvų mastelio keitimas",
"Color alpha value can not be zero.": "Spalvų alfa vertė negali būti lygi nuliui.",
"Color Corrections": "Spalvų korekcijos",
"Color Palette": "Spalvų paletė",
"Color Zoom": "Spalvų mastelio keitimas",
"Color alpha value can not be zero.": "Spalvų alfa vertė negali būti lygi nuliui.",
"Color to Alpha": "Spalva alfa",
"Color zoom": "Spalvų priartinimas",
"Color:": "Spalva:",
"Colors": "Spalvos",
"Colors:": "Spalvos:",
"Common Filters": "Bendri filtrai",
"Composition": "Kompozicija",
"Composition:": "Sudėtis:",
"Content Fill": "Turinio užpildymas",
"Contrast": "Kontrastas",
"Contrast:": "Kontrastas:",
"Convert layer to raster": "Konvertuoti sluoksnį į rastrinį",
"Convert to Raster": "Konvertuoti į rastrą",
"Copy Selection": "Kopijuoti pasirinkimą",
"Copy:": "Kopijuoti:",
"Copy to Clipboard": "Nukopijuoti į iškarpinę",
"Courier": "Courier",
"Crop": "Iškirpti",
"Ctrl+V": "Ctrl + v",
"Ctrl-P": "Ctrl-p",
"Crop Tool": "Apkarpymo įrankis",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Apkarpyti pasuktą sluoksnį negalima. Konvertuokite jį į rastrą, kad galėtumėte tęsti.",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl+A",
"Ctrl+C": "Ctrl+C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl+V",
"Ctrl+Y": "Ctrl+Y",
"Ctrl+Z": "Ctrl+Z",
"Current": "Dabartinis",
"Curve": "Kreivė",
"Current Color Preview": "Dabartinė spalvų peržiūra",
"Custom": "Kitas",
"Data URL": "Duomenų adresas",
"Data URL:": "Duomenų adresas:",
"Decrease": "Mažinti",
"Decrease Color Depth": "Sumažinti spalvų gylį",
"Default": "Numatytas",
"Degree:": "Laipsnis:",
"Del": "Del",
"Delete": "Ištrinti",
"Delete Selection": "Ištrinti pasirinkimą",
"Denoise": "Sumažinti triukšmą",
"Desaturate": "Sumažinti ryškumą",
"Desaturate Tool": "Desaturato įrankis",
"Description:": "Aprašymas:",
"Deutsch": "Deutsch",
"Differences": "Skirtumai",
"Differences Down": "Skirtumai žemyn",
"Direction:": "Kryptis:",
"Dither": "Papildymas",
"Dithering:": "Papildymu:",
"Dominant color:": "Dominuojanti spalva:",
"Dot Screen": "Taškų ekranas",
"Down": "Žemyn",
"Duplicate": "Pasikartojantis",
"Duplicate Layer": "Pasikartojantis sluoksnis",
"Duplicate layer": "Dubliuoti sluoksnį",
"Dynamic": "Dinamiškas",
"Edge": "Kraštas",
"Edit": "Redaguoti",
"Edit text": "Redaguoti tekstą",
"Edit text...": "Redaguoti tekstą ...",
"Effect browser": "Poveikio naršyklė",
"Effects": "Efektai",
"Effects browser": "Efektų naršyklė",
"Email:": "El. paštas:",
"Emboss": "Įspausti",
"Empty selection": "Tuščias pasirinkimas",
"Empty selection or type not image.": "Tuščias pasirinkimas arba įveskite ne vaizdą.",
"Enable autoresize:": "Įjungti automatinį dydžio nustatymą:",
"End": "Galas",
"English": "Anglų",
"English (UK)": "anglų (JK)",
"Enrich": "Praturtinti",
"Erase": "Ištrinti",
"Erase on rotate object is disabled. Sorry.": "Ištrinti objektą pasukti yra išjungtas. atsiprašau",
"Enter": "Įveskite",
"Erase Tool": "Ištrinti įrankį",
"Erase on rotate object is disabled. Please rasterize first.": "Ištrynimas sukant objektą išjungtas. Pirmiausia rastruokite.",
"Error": "Klaida",
"Error connecting to service.": "Klaida prisijungiant prie paslaugos.",
"Error: can not load image.": "Klaida: negalima įkelti paveikslėlio.",
"Error loading the list of fonts from Google.": "Įkeliant šriftų sąrašą iš „Google“ įvyko klaida.",
"Error registering service worker": "Klaida registruojant aptarnavimo darbuotoją",
"Error: can not find filter:": "Klaida: nepavyksta rasti filtro:",
"Error: can not find layer with id:": "Klaida: nepavyksta rasti sluoksnio su ID:",
"Error: missing details event target": "Klaida: trūksta detalių įvykio tikslo",
"Error: unknown layer type:": "Klaida: nežinomas sluoksnio tipas:",
"Error: unsupported attribute type:": "Klaida: nepalaikomas atributo tipas:",
"Error: wrong key:": "Klaida: klaidingas raktas:",
"Esc": "Esc",
"Escape": "Pabegti",
"Español": "Español",
"Expand edges": "Išskleiskite kraštus",
"Exponent:": "Eksponentė:",
"Export": "Eksportuoti",
"External": "Išorinis",
"Factor:": "Veiksnys:",
"File": "Failas",
"File name:": "Failo pavadinimas:",
"File size:": "Failo dydis:",
"Fill": "Pildyti",
"Fill Tool": "Užpildymo įrankis",
"Fit": "Talpinti",
"Fit Window": "Tinkamas langas",
"Fit window": "Pritaikyti langą",
"Flatten Image": "Išlyginti vaizdą",
"Flip": "Apversti",
"FloydSteinberg-serpentine": "Floydsteinberg-serpentinas",
"French": "Prancūzų kalba",
"Font": "Šriftas",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "Gif - grafikos mainų formatas",
"Full Screen": "Per visą ekraną",
"Full layers data": "Visų sluoksnių duomenys",
"Gap:": "Atotrūkis:",
"Gaussian Blur": "Gauso suliejimo",
"German": "Vokiečių kalba",
"Gif delay:": "Gif delsimas:",
"Gingham": "Gingamas",
"GitHub:": "Github:",
"Gradient": "Gradientas",
"Gradient Radius:": "Gradientas spindulys:",
"Grains": "Grūdėtumas",
"Graphics Interchange Format": "Grafikos mainų formatas",
"Gray": "Pilkas",
"Grayscale": "Pelės skalė",
"Greek": "graikų",
"Green": "Žalias",
"Green channel:": "Žalias kanalas:",
"Green:": "Žalias:",
"Greyscale:": "Pilkieji pustoniai:",
"Grid": "Tinklelis",
"Grid on\/off": "Tinklelis",
"Guides": "Vadovai",
"Guides enabled.": "Vadovai įjungti.",
"H Radius:": "H spindulys:",
"H. Align:": "H. Lygiuoti:",
"Heatmap": "Spalvinė diagrama",
"Height (%):": "Aukštis (%):",
"Height:": "Aukštis:",
"Help": "Pagalba",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex:": "Hex:",
"Hex": "Hex",
"Hide": "Slėpti",
"Histogram": "Histograma",
"Histogram:": "Histograma:",
"Home": "Namai",
"Horizontal": "Horizontali",
"Horizontal Alignment": "Horizontalus išlyginimas",
"Horizontal blur:": "Horizontalus miglotas vaizdas:",
"Horizontal:": "Horizontalus:",
"Hue": "Atspalvis",
"Hue Rotate": "Atspalvis pasukti",
"Hue:": "Atspalvis:",
"Image": "Vaizdas",
"Image data with multi-layers. Can be opened using miniPaint -": "Vaizdo duomenys su kelių sluoksnių. gali būti atidarytas naudojant minipaint -",
"Impact": "Poveikis",
"In proportion:": "Proporcingai:",
"Increase": "Padidinti",
"Information": "Informacija",
"Insert:": "Įdėti:",
"Inkwell": "Rašalo kasykla",
"Insert": "Įdėti",
"Insert guides": "Įdėkite vadovus",
"Insert new layer": "Įdėkite naują sluoksnį",
"Instagram Filters": "„Instagram“ filtrai",
"Invalid Hex Code": "Netinkamas šešiakampis kodas",
"Italiano": "Italų kalba",
"Italic": "Italic",
"JPG - JPG\/JPEG Format": "JPG - JPG\/JPEG formatas",
"JPG, WEBP quality:": "Jpg, webp kokybės:",
"JSON - Full layers data": "JSON - sluoksnių duomenys",
"Japanese": "Japonų kalba",
"JPG\/JPEG Format": "JPG \/ JPEG formatas",
"Kerning:": "Kerningas:",
"Key-Points": "Pagrindiniai klausimai",
"KeyU": "KeyU",
"Keyboard Shortcuts": "Klaviatūros nuorodos",
"Keyword:": "Raktinis žodis:",
"Korean": "Korėjiečių kalba",
"Lanczos": "Lanczos",
"Landscape": "Peizažas",
"Language": "Kalba",
"Last modified": "Paskutinį kartą keistas",
"Layer": "Sluoksnis",
"Layer details": "Sluoksnio detalės",
"Layer is already image.": "Sluoksnis jau yra vaizdas.",
"Layer must be image, convert it to raster to apply this tool.": "Sluoksnis turi būti įvaizdis, paversti jį rastru, kad pritaikytų šį įrankį.",
"Layer is empty.": "Sluoksnis tuščias.",
"Layer is not compatible with resize": "Sluoksnis nesuderinamas su dydžio keitimu",
"Layer is vector, convert it to raster to apply this tool.": "Sluoksnis yra vektorius, konvertuokite jį į rastrą, kad pritaikytumėte šį įrankį.",
"Layers": "Sluoksniai",
"Layers:": "Sluoksniai:",
"Layout:": "Išdėstymas:",
"Left": "Kairėje",
"Left to Right": "Iš kairės į dešinę",
"Level:": "Lygis:",
"Levels:": "Lygiais:",
"Lietuvių": "Lietuvių",
"Line": "Linija",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Skaisčio:",
"Magic Wand Tool": "Stebuklinga lazdelė",
"Luminosity": "Šviesumas",
"Magic Eraser Tool": "„Magic Eraser“ įrankis",
"Merge Down": "Sujungti žemyn",
"Merge Layers": "Sujungti sluoksnius",
"Merged": "Sujungta",
"Metrics": "Metrika",
"Middle": "Vidurinis",
"Missing at least 1 size parameter.": "Trūksta bent 1 dydžio parametro.",
"Missing permissions to write to Clipboard.cc": "Trūksta leidimų rašyti į „Clipboard.cc“",
"Mode:": "Režimas:",
"Module function not found.": "Modulio funkcija nerasta.",
"Modules class not found:": "Modulio klasė nerasta:",
"Monospace": "Monospace",
"Mosaic": "Mozaika",
"Mouse:": "Pelė:",
"Move": "Perkelti",
"Move down": "Judėti žemyn",
"Move up": "Perkelti",
"Move Layer": "Perkelti sluoksnį",
"Move layer down": "Perkelkite sluoksnį žemyn",
"Move layer up": "Perkelti sluoksnį aukštyn",
"Name:": "Vardas:",
"Needs at least 2 layers.": "Reikia bent 2 sluoksnius.",
"Negative": "Neigiamas",
"New": "Naujas",
"New Bezier Layer": "Naujas Bezier sluoksnis",
"New Brush Layer": "Naujas teptuko sluoksnis",
"New Ellipse Layer": "Naujas elipsės sluoksnis",
"New File": "Naujas failas",
"New Gradient Layer": "Naujas gradiento sluoksnis",
"New Layer": "Naujas sluoksnis",
"New Line Layer": "Naujas eilutės sluoksnis",
"New Pencil Layer": "Naujas pieštukų sluoksnis",
"New Polygon Layer": "Naujas daugiakampio sluoksnis",
"New Rectangle Layer": "Naujas stačiakampio sluoksnis",
"New Text Layer": "Naujas teksto sluoksnis",
"New file": "Naujas failas",
"New from Selection": "Nauja iš pasirinkimo",
"New layer": "Nauja sluoksnis",
"New width can not be smaller then current width": "Naujas plotis negali būti mažesnis nei dabartinis plotis",
"Normal": "Normalus",
"Next": "Kitas",
"Night Vision": "Naktinis matymas",
"None": "Nė vienas",
"Nothing is selected.": "Niekas nėra pasirinktas.",
"Offset X:": "Nuokrypis x:",
"Offset Y:": "Kompensuoti:",
@ -217,23 +298,34 @@
"Open Data URL": "Atidaryti duomenų URL",
"Open Directory": "Atidaryti katalogą",
"Open File": "Atidaryti failą",
"Open File Data URL": "Atidarykite failo duomenų URL",
"Open File URL": "Atidarykite failo URL",
"Open File Webcam": "Atidarykite „File Webcam“",
"Open Image": "Atidarykite vaizdą",
"Open JSON File": "Atidarykite JSON failą",
"Open Test Template": "Atidarykite testavimo šabloną",
"Open URL": "Atidaryti url",
"Open data URL": "Atidaryti duomenų url",
"Open from Webcam": "Atidarykite iš interneto kameros",
"Original Size": "Originalus dydis",
"PNG - Portable Network Graphics": "PNG - portable network graphics",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - konvertuoti vaizdą į SVG",
"PageDown": "„PageDown“",
"PageUp": "Į viršų",
"Palette": "Paletė",
"Parameter #1:": "Parametras Nr. 1:",
"Parameter #2:": "Parametras # 2:",
"Paste": "Įkelti",
"Pencil": "Pieštukas",
"Percentage:": "Procentas:",
"Pick Color": "Pasirinkite spalvą",
"Pixels:": "Taškai:",
"Play animation": "Groti animaciją",
"Portuguese": "Portugalų",
"Placeholder comment for color channels": "Spalvotų kanalų vietos rezervatorius",
"Placeholder comment for color picker": "Spalvų parinkiklio vietos komentaras",
"Placeholder comment for color swatches": "Spalvų pavyzdžių vietos komentaras",
"Portable Network Graphics": "Nešiojama tinklo grafika",
"Portrait": "Portretas",
"Português": "Português",
"Position:": "Padėtis:",
"Power:": "Galia:",
"Powred by pixabay.com .": "Powred by pixabay.com.",
"Pre-Blur:": "Migla:",
"Preview": "Peržiūrėti",
"Previous": "Ankstesnis",
"Previous layer must be image, convert it to raster to apply this tool.": "Ankstesnis sluoksnis turi būti vaizdas, konvertuoti jį į rastrą, kad būtų taikomas šis įrankis.",
@ -241,123 +333,168 @@
"Quality:": "Kokybė:",
"Quick Load": "Greitas įkrovimas",
"Quick Save": "Greitas išsaugojimas",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Pašalinti vaizdo foną",
"Radial": "Radialinis",
"Radial gradient": "Radialinis gradientas",
"Radius:": "Spindulys:",
"Range:": "Kategorijos:",
"Rectangle": "Stačiakampis",
"Red": "Raudonas",
"Red channel:": "Raudonasis kanalas:",
"Red:": "Raudona:",
"Redo": "Perdaryti",
"Remove all": "Pašalinti visus",
"Rename": "Pervadinti",
"Rename Layer": "Pervardyti sluoksnį",
"Rendered with errors.": "Pateikta su klaidomis.",
"Rendering...": "Perduodama ...",
"Replace Color": "Pakeiskite spalvą",
"Replace color": "Pakeiskite spalvą",
"Replacement:": "Pakeitimas:",
"Report Issues": "Pranešti apie problemas",
"Resample - Hermite": "Resample - hermite",
"Reset": "Atstatyti",
"Reset zoom level": "Atstatyti mastelį",
"Resize": "Keisti dydį",
"Resize Boundary": "Keisti ribos dydį",
"Resize Layer": "Keisti sluoksnio dydį",
"Resize Layers": "Keisti sluoksnių dydį",
"Resize Text Layer": "Keisti teksto sluoksnio dydį",
"Resized as background": "Pakeista kaip fonas",
"Resized:": "Pakeistas dydis:",
"Resolution:": "Rezoliucija:",
"Restore Alpha": "Atkurti alfa",
"Right": "Teisingai",
"Right angle:": "Dešinysis kampas:",
"Right to Left": "Iš dešinės į kairę",
"Rotate": "Sukti",
"Rotate Layer": "Pasukti sluoksnį",
"Rotate is not supported on this type of object. Convert to raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?",
"Rotate left": "Pasukti į kairę",
"Rotate:": "Pasukti:",
"Russian": "Rusų kalba",
"Sat:": "Sat:",
"Ruler": "Valdovas",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - suspauskite ir palyginkite vaizdus",
"Saturate": "Saturate",
"Saturation": "Sodrumas",
"Saturation:": "Spalvingumas:",
"Save": "Išsaugoti",
"Save As": "Išsaugoti kaip",
"Save As Data URL": "Išsaugoti kaip duomenų URL",
"Save as": "Išsaugoti kaip",
"Save as type:": "Išsaugoti kaip:",
"Save layers:": "Išsaugoti sluoksnius:",
"Save resolution:": "Išsaugoti rezoliuciją:",
"Scaling up is not supported in Hermite, using Lanczos.": "„Hermite“, naudojant „Lanczos“, mastelio didinimas nepalaikomas.",
"Scroll down": "Slinkti žemyn",
"Scroll up": "Slinkite aukštyn",
"Search": "Paieška",
"Search Images": "Ieškoti vaizdų",
"Search for Font": "Ieškoti šrifto",
"Search:": "Paieška:",
"Select All": "Pasirinkti viską",
"Select Text Layer": "Pasirinkite Teksto sluoksnis",
"Select object tool": "Pasirinkite objektas įrankis",
"Selected": "Pasirinkti",
"Selection": "Pasirinkimas",
"Selection Tool": "Pasirinkimo įrankis",
"Sensitivity:": "Jautrumas:",
"Separated": "Atskirtas",
"Separated (original types)": "Atskirti (originali tipai)",
"Sepia": "Sepia",
"Set Image Size": "Nustatykite vaizdo dydį",
"Settings": "Nustatymai",
"Shadow": "Šešėlis",
"Shadow:": "Šešėlis:",
"Shapes": "Formos",
"Shapes (H)": "Formos (H)",
"Sharpen": "Pagaląsti",
"Sharpen tool": "Paryškinti nuorodą",
"Sharpen Tool": "Aštrinimo įrankis",
"Sharpen:": "Paryškinti:",
"Show \/ Hide": "Rodyti Slėpti",
"Shift + S": "Shift + S",
"Shortcut Key:": "Spartusis klavišas:",
"Show": "Rodyti",
"Show \/ Hide": "Rodyti \/ Slėpti",
"Show file size:": "Rodyti failo dydį:",
"Simple": "Paprastas",
"Size": "Dydis",
"Size is too big, max": "Dydis yra per didelis, maks",
"Size:": "Dydis:",
"Skip - layer must be image.": "Praleisti - sluoksnis turi būti vaizdas.",
"Solarize": "Soliarizacija",
"Sorry, cold not load getUserMedia() data:": "Deja, šalta, neįkelkite „getUserMedia“ () duomenų:",
"Sorry, image could not be loaded.": "Deja, nepavyko įkelti vaizdo.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Deja, vaizdas negali būti įkeltas. pabandykite kopijuoti nuotrauką ir įklijuoti ją.",
"Sorry, image is too big, max 5 MB.": "Atsiprašome, vaizdas yra per didelis, daugiausiai 5 MB.",
"Source is empty, right click on image to save source position.": "Šaltinis yra tuščias, dešiniuoju pelės mygtuku spustelėkite vaizdą, kad išsaugotumėte šaltinio poziciją.",
"Source coordinates saved.": "Šaltinio koordinatės išsaugotos.",
"Source is empty, right click on image or use long press to save source position.": "Šaltinis tuščias, dešiniuoju pelės mygtuku spustelėkite vaizdą arba naudokite ilgą paspaudimą, kad išsaugotumėte šaltinio padėtį.",
"Sprites": "Sprites",
"Square": "Langelis",
"Stream:": "Srautas:",
"Strength:": "Jėga:",
"Strict": "Griežtas",
"Stroke": "Insultas",
"Stroke:": "Insultas:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - suspausti PNG ir JPEG",
"Tab": "Tab",
"Tag Image File Format": "Žymės vaizdo failo formatas",
"Tahoma": "Tahoma",
"Target:": "Tikslas:",
"Text": "Tekstas",
"Text example": "Teksto pavyzdys",
"Text:": "Tekstas:",
"The quick brown fox jumps over the lazy dog.": "Greita rudoji lapė peršoka per tinginį šunį.",
"There": "Ten",
"There are no layers behind.": "Už sluoksnių nėra.",
"There is only 1 layer.": "Yra tik 1 sluoksnis.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Sluoksnis turi būti paveiksliukas, konvertuokite jį į rastrą, kad pritaikyti šį įrankį.",
"Tilt Shift": "Tento perkelimas",
"Times New Roman": "Times New Roman",
"Toaster": "Skrudintuvas",
"Toggle": "Perjungti",
"Toggle Color Channels": "Perjungti spalvų kanalus",
"Toggle Color Picker": "Perjungti spalvų rinkiklį",
"Toggle Menu": "Perjungti meniu",
"Toggle Swatches": "Perjungti pavyzdžius",
"Tools": "Įrankiai",
"Tools class not found:": "Įrankių klasė nerasta:",
"Top": "Į viršų",
"Top to Bottom": "Nuo viršaus iki apačios",
"Total pixels:": "Iš viso taškų:",
"Translate": "Versti",
"Translate Layer": "Versti sluoksnį",
"Translate error, can not find dictionary:": "Versti klaidą, negali rasti žodyną:",
"Transparency background:": "Skaidrumo fonas:",
"Transparent:": "Skaidri:",
"Trim": "Apkarpyti",
"Trim everything:": "Trim viską:",
"Trim Layers": "Apdailos sluoksniai",
"Trim borders:": "Apkirpti kraštus:",
"Trim layer:": "Trim sluoksnis:",
"Trim white color?": "Trim balta spalva?",
"Turkish": "Turkų kalba",
"Type:": "Tipas:",
"Türkçe": "Türkçe",
"Undo": "Anuliuoti",
"Undo disabled.": "Atšaukti išjungta.",
"Undo enabled.": "Atšaukti įjungta.",
"Undo is not available.": "Atšaukti negalima.",
"Undo levels changed to 1.": "Atšaukti lygiai pakeista į 1.",
"Undo levels restored to": "Atšaukti lygius atkurti",
"Unique colors:": "Unikalios spalvos:",
"Up": "Aukštyn",
"Update": "Atnaujinti",
"Update Brush Layer": "Atnaujinti teptuko sluoksnį",
"Update Pencil Layer": "Atnaujinkite pieštukų sluoksnį",
"Update guides": "Atnaujinti vadovus",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Naudokite \"ctrl + v\" spartieji klavišai, kuriuos norite įklijuoti iš iškarpinės.",
"V Radius:": "V spindulys:",
"V. Align:": "V. Sulyginti:",
"Valencia": "Valensija",
"Verdana": "Verdana",
"Version:": "Versija:",
"Vertical": "Vertikalus",
"Vertical Alignment": "Vertikalus išlyginimas",
"Vertical blur:": "Vertikalus plyšimas:",
"Vertical:": "Vertikalus:",
"Vibrance": "Rezonansas",
"View": "Žiūrėti",
"Vignette": "Vinjetė",
"ViliusL": "Viliusl",
"Vintage": "Senoviškas",
"Visible:": "Matomas:",
"WEBP - Weppy File Format": "WEBP - weppy failo formatas",
"Webcam": "Internetinė kamera",
"Webcam #": "Internetinė kamera #",
"Website:": "Interneto svetainė:",
"Weppy File Format": "Weppy failo formatas",
"Width (%):": "Plotis (%):",
"Width:": "Plotis:",
"Windows Bitmap": "„Windows Bitmap“",
"Word": "Žodis",
"Word + Letter": "Žodis + laiškas",
"Wrap At:": "Apvyniokite:",
"Wrap:": "Apvyniojimas:",
"Wrong dimensions": "Neteisingi matmenys",
"Wrong file type, must be image or json.": "Neteisingas failo tipas, turi būti paveikslėlis arba json.",
"X end:": "X pabaiga:",
"X position:": "X pozicija:",
"X start:": "X pradžia::",
"X-Pro II": "„X-Pro II“",
"Y end:": "Y pabaiga:",
"Y position:": "Y pozicija:",
"Y start:": "Y pradžia:",

514
src/js/languages/nl.json Normal file
View File

@ -0,0 +1,514 @@
{
"A problem occurred while removing undo history. It": "Er is een probleem opgetreden bij het verwijderen van de ongedaanmaakgeschiedenis. Het",
"About": "Over",
"Active": "Actief",
"Aden": "Aden",
"Advanced": "Geavanceerd",
"All": "Alle",
"Alpha": "Alpha",
"Alpha:": "Alpha:",
"Anonymous": "Anoniem",
"Anti aliasing": "Anti-aliasing",
"Application markup may have changed,": "De opmaak van de applicatie is mogelijk gewijzigd,",
"Arial": "Arial",
"Arrow": "Pijl",
"ArrowDown": "ArrowDown",
"ArrowLeft": "Pijl naar links",
"ArrowRight": "Pijl naar rechts",
"ArrowUp": "Pijl omhoog",
"Author:": "Auteur:",
"Auto Adjust Colors": "Automatisch kleuren aanpassen",
"Auto Kerning": "Automatisch letterafstand aanpassen",
"Average:": "Gemiddelde:",
"Backspace": "Rugpijn",
"Base": "Basis",
"Basic": "BASIS",
"Black and White": "Zwart en Wit",
"Blue": "Blauw",
"Blue channel:": "Blauw kanaal:",
"Blueprint": "Blauwdruk",
"Blur Radius:": "Vervagingsstraal:",
"Blur Tool": "Vervagingsgereedschap",
"Blur power:": "Vervagingskracht:",
"Borders": "Randen",
"Bottom": "Onderkant",
"Bottom to Top": "Van onder naar boven",
"Bounds:": "Grenzen:",
"Box": "Doos",
"Box Blur": "Doos vervagen",
"Box blur": "Doos vervagen",
"Brightness": "Helderheid",
"Brightness:": "Helderheid:",
"Bulge\/Pinch Tool": "Uitzetten\/knijpen gereedschap",
"Burn": "Branden",
"Can not animate 1 layer.": "Kan geen 1 laag animeren.",
"Can not find previous layer.": "Kan de vorige laag niet vinden.",
"Can not use this tool on current layer: image already takes all area.": "Kan dit gereedschap niet gebruiken op de huidige laag: de afbeelding neemt al het hele gebied in beslag.",
"Cancel": "Annuleren",
"Canvas Size": "Canvas grootte",
"Center": "Midden",
"Center x:": "Middelpunt x:",
"Center y:": "Middelpunt y:",
"Center:": "Midden:",
"Change Composition": "Compositie wijzigen",
"Change Layer Details": "Laagdetails wijzigen",
"Change Opacity": "Wijzig de dekking",
"Channel:": "Kanaal:",
"Circle": "Cirkel",
"Clarendon": "Clarendon",
"Clear": "Wissen",
"Clear Selection": "Selectie wissen",
"Clone Tool": "Kloon gereedschap",
"Clone count:": "Aantal klonen:",
"Clone tool disabled for resized image. Please rasterize first.": "Kloontool uitgeschakeld voor afbeelding met gewijzigd formaat. Gelieve eerst te rasteren.",
"Cloned edges": "Gekloonde randen",
"Close": "Dichtbij",
"Color #": "Kleur #",
"Color Corrections": "Kleurcorrecties",
"Color Palette": "Kleurenpalet",
"Color Zoom": "Kleurzoom",
"Color alpha value can not be zero.": "Kleur alfa-waarde kan niet nul zijn.",
"Color to Alpha": "Kleur naar Alpha",
"Color zoom": "Kleurzoom",
"Color:": "Kleur:",
"Colors": "Kleuren",
"Colors:": "Kleuren:",
"Common Filters": "Gemeenschappelijke filters",
"Composition": "Samenstelling",
"Composition:": "Samenstelling:",
"Content Fill": "Inhoud vullen",
"Contrast": "Contrast",
"Contrast:": "Contrast:",
"Convert layer to raster": "Converteer laag naar raster",
"Convert to Raster": "Converteren naar raster",
"Copy Selection": "Selectie kopiëren",
"Copy to Clipboard": "Kopiëren naar klembord",
"Courier": "Koerier",
"Crop Tool": "Bijsnijdgereedschap",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Bijsnijden op geroteerde laag wordt niet ondersteund. Converteer het naar raster om door te gaan.",
"Ctrl + C": "Ctrl+C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "Huidige",
"Current Color Preview": "Huidige kleurvoorbeeld",
"Custom": "Aangepast",
"Data URL": "Gegevens-URL",
"Data URL:": "Gegevens-URL:",
"Decrease": "Verminderen",
"Decrease Color Depth": "Kleurdiepte verminderen",
"Degree:": "Graad:",
"Del": "Del",
"Delete": "Verwijderen",
"Delete Selection": "Selectie verwijderen",
"Denoise": "Ruis verminderen",
"Desaturate Tool": "Ontzadigen gereedschap",
"Description:": "Beschrijving:",
"Deutsch": "Duits",
"Differences": "Verschillen",
"Differences Down": "Verschillen omlaag",
"Direction:": "Richting:",
"Dither": "Dither",
"Dithering:": "Dithering:",
"Dominant color:": "Dominante kleur:",
"Dot Screen": "Puntenscherm",
"Down": "Omlaag",
"Duplicate": "Dupliceren",
"Duplicate Layer": "Dupliceer laag",
"Duplicate layer": "Dubbele laag",
"Dutch": "Nederlands",
"Dynamic": "Dynamisch",
"Edge": "Rand",
"Edit": "Bewerken",
"Edit text...": "Tekst bewerken...",
"Effect browser": "Effectenbrowser",
"Effects": "Effecten",
"Effects browser": "Effectenbrowser",
"Email:": "E-mail:",
"Emboss": "In reliëf",
"Empty selection": "Lege selectie",
"Empty selection or type not image.": "Lege selectie of type geen afbeelding.",
"Enable autoresize:": "Automatisch aanpassen van formaat inschakelen:",
"End": "Einde",
"English": "Engels",
"English (UK)": "Engels (VK)",
"Enrich": "Verrijken",
"Enter": "Invoeren",
"Erase Tool": "Wismiddel",
"Erase on rotate object is disabled. Please rasterize first.": "Wissen bij roteren van object is uitgeschakeld. Gelieve eerst te rasteren.",
"Error": "Fout",
"Error connecting to service.": "Fout bij het verbinden met de service.",
"Error loading the list of fonts from Google.": "Fout bij het laden van de lijst met lettertypen van Google.",
"Error registering service worker": "Fout bij registreren van servicemedewerker",
"Error: can not find filter:": "Fout: kan filter niet vinden:",
"Error: can not find layer with id:": "Fout: kan laag met id niet vinden:",
"Error: missing details event target": "Fout: ontbrekend doelevenementdoel",
"Error: unknown layer type:": "Fout: onbekend laagtype:",
"Error: unsupported attribute type:": "Fout: niet-ondersteund attribuuttype:",
"Esc": "Esc",
"Escape": "Ontsnappen",
"Español": "Spaans",
"Expand edges": "Randen uitbreiden",
"Exponent:": "Exponent:",
"Export": "Exporteren",
"External": "Extern",
"Factor:": "Factor:",
"File": "Bestand",
"File name:": "Bestandsnaam:",
"File size:": "Bestandsgrootte:",
"Fill": "Vullen",
"Fill Tool": "Vulmiddel",
"Fit": "Passend maken",
"Fit Window": "Venster passend maken",
"Fit window": "Venster passen",
"Flatten Image": "Afbeelding afvlakken",
"Flip": "Omdraaien",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentijn",
"Font": "Lettertype",
"Français": "Frans",
"Full HD, 1080p": "Volledig HD, 1080p",
"Full Screen": "Volledig scherm",
"Full layers data": "Volledige laaggegevens",
"Gap:": "Spleet:",
"Gaussian Blur": "Gaussische vervaging",
"Gif delay:": "Gif-vertraging:",
"Gingham": "Gingham",
"GitHub:": "GitHub:",
"Gradient Radius:": "Gradiëntradius:",
"Grains": "Korrels",
"Graphics Interchange Format": "Grafische uitwisselingsformaat",
"Gray": "Grijs",
"Grayscale": "Grijstinten",
"Greek": "Grieks",
"Green": "Groen",
"Green channel:": "Groen kanaal:",
"Greyscale:": "Grijstinten:",
"Grid": "Raster",
"Grid on\/off": "Raster aan\/uit",
"Guides": "Gidsen",
"Guides enabled.": "Gidsen ingeschakeld.",
"H Radius:": "H Radius:",
"H. Align:": "H. Uitlijnen:",
"Heatmap": "Warmtekaart",
"Height (%):": "Hoogte (%):",
"Height:": "Hoogte:",
"Help": "Help",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex": "Hex",
"Hide": "Verbergen",
"Histogram": "Histogram",
"Histogram:": "Histogram:",
"Home": "Start",
"Horizontal": "Horizontaal",
"Horizontal Alignment": "Horizontale uitlijning",
"Horizontal blur:": "Horizontale vervaging:",
"Horizontal:": "Horizontaal:",
"Hue": "Tint",
"Hue Rotate": "Hue Rotate",
"Hue:": "Tint:",
"Image": "Afbeelding",
"Image data with multi-layers. Can be opened using miniPaint -": "Afbeeldingsgegevens met meerdere lagen. Kan worden geopend met miniPaint -",
"Impact": "Impact",
"In proportion:": "In proportie:",
"Increase": "Verhogen",
"Information": "Informatie",
"Inkwell": "Inktpot",
"Insert": "Invoegen",
"Insert guides": "Gidsen plaatsen",
"Insert new layer": "Nieuwe laag invoegen",
"Instagram Filters": "Instagram Filters",
"Invalid Hex Code": "Ongeldige Hex Code",
"Italiano": "Italiaans",
"JPG\/JPEG Format": "JPG\/JPEG Formaat",
"Kerning:": "Kerning:",
"Key-Points": "Belangrijke Punten",
"KeyU": "SleutelU",
"Keyboard Shortcuts": "Sneltoetsen",
"Keyword:": "Sleutelwoord:",
"Lanczos": "Lanczos",
"Landscape": "Landschap",
"Language": "Taal",
"Last modified": "Laatst gewijzigd",
"Layer": "Laag",
"Layer details": "Laagdetails",
"Layer is empty.": "Laag is leeg.",
"Layer is not compatible with resize": "Laag is niet compatibel met formaatwijziging",
"Layer is vector, convert it to raster to apply this tool.": "Laag is vector, converteer deze naar raster om dit gereedschap toe te passen.",
"Layers": "Lagen",
"Layers:": "Lagen:",
"Layout:": "Indeling:",
"Left": "Links",
"Left to Right": "Links naar Rechts",
"Level:": "Niveau:",
"Levels:": "Niveaus:",
"Lietuvių": "Lietuvių",
"Lo-fi": "Lo-fi",
"Luminance:": "Luminantie:",
"Luminosity": "Luminositeit",
"Magic Eraser Tool": "Tovergummi",
"Merge Down": "Samenvoegen Omlaag",
"Merge Layers": "Lagen Samenvoegen",
"Merged": "Samengevoegd",
"Metrics": "Metrieken",
"Middle": "Midden",
"Missing at least 1 size parameter.": "Minstens 1 grootteparameter ontbreekt.",
"Missing permissions to write to Clipboard.cc": "Machtigingen ontbreken om naar Clipboard.cc te schrijven",
"Mode:": "Modus:",
"Module function not found.": "Modulefunctie niet gevonden.",
"Modules class not found:": "Modulesklasse niet gevonden:",
"Monospace": "Monospace",
"Mosaic": "Mozaïek",
"Mouse:": "Muis:",
"Move": "Verplaatsen",
"Move Layer": "Laag Verplaatsen",
"Move layer down": "Verplaats laag naar beneden",
"Move layer up": "Verplaats laag naar boven",
"Name:": "Naam:",
"Negative": "Negatief",
"New": "Nieuw",
"New Bezier Layer": "Nieuwe Bezier-laag",
"New Brush Layer": "Nieuwe Kwastlaag",
"New Ellipse Layer": "Nieuwe Ellipslaag",
"New File": "Nieuw Bestand",
"New Gradient Layer": "Nieuwe Gradiëntlaag",
"New Layer": "Nieuwe Laag",
"New Line Layer": "Nieuwe Lijnlaag",
"New Pencil Layer": "Nieuwe Potloodlaag",
"New Polygon Layer": "Nieuwe veelhoeklaag",
"New Rectangle Layer": "Nieuwe Rechthoekige Laag",
"New Text Layer": "Nieuwe Tekstlaag",
"New file": "Nieuw bestand",
"New from Selection": "Nieuw vanuit Selectie",
"New layer": "Nieuwe laag",
"Next": "Volgende",
"Night Vision": "Nachtkijker",
"None": "Geen",
"Nothing is selected.": "Niets is geselecteerd.",
"Offset X:": "Verschuiving X:",
"Offset Y:": "Verschuiving Y:",
"Oil": "Olie",
"Ok": "Oké",
"Online image editor.": "Online afbeelding editor",
"Opacity": "Dekking",
"Opacity:": "Dekking:",
"Open": "Openen",
"Open Data URL": "Open Data-URL",
"Open Directory": "Open Map",
"Open File": "Open Bestand",
"Open File Data URL": "Open Bestand Data-URL",
"Open File URL": "Open Bestand-URL",
"Open File Webcam": "Open Bestand Webcam",
"Open Image": "Open Afbeelding",
"Open JSON File": "Open JSON Bestand",
"Open Test Template": "Open Test Sjabloon",
"Open URL": "Open URL",
"Open data URL": "Open data-URL",
"Open from Webcam": "Open van Webcam",
"Original Size": "Origineel Formaat",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Afbeelding converteren naar SVG",
"PageDown": "Pagina Omlaag",
"PageUp": "Pagina Omhoog",
"Palette": "Palet",
"Parameter #1:": "Parameter #1:",
"Parameter #2:": "Parameter #2:",
"Paste": "Plakken",
"Pencil": "Potlood",
"Percentage:": "Percentage:",
"Pixels:": "Pixels:",
"Placeholder comment for color channels": "Plaatsvervangend commentaar voor kleurkanalen",
"Placeholder comment for color picker": "Plaatsvervangend commentaar voor kleurkiezer",
"Placeholder comment for color swatches": "Plaatsvervangend commentaar voor kleurenstaaltjes",
"Portable Network Graphics": "Portable Network Graphics",
"Portrait": "Portret",
"Português": "Portugees",
"Position:": "Positie:",
"Power:": "Kracht:",
"Preview": "Voorbeeld",
"Previous": "Vorige",
"Previous layer must be image, convert it to raster to apply this tool.": "De vorige laag moet een afbeelding zijn, zet deze om naar raster om deze tool toe te passen.",
"Print": "Afdrukken",
"Quality:": "Kwaliteit:",
"Quick Load": "Snel laden",
"Quick Save": "Snel opslaan",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Verwijder Achtergrond van Afbeelding",
"Radial": "Radiaal",
"Radial gradient": "Radiale gradiënt",
"Radius:": "Straal:",
"Range:": "Bereik:",
"Red": "Rood",
"Red channel:": "Rood kanaal:",
"Redo": "Opnieuw",
"Remove all": "Verwijder alles",
"Rename": "Hernoemen",
"Rename Layer": "Laag hernoemen",
"Rendered with errors.": "Weergegeven met fouten.",
"Rendering...": "Renderen...",
"Replace Color": "Kleur vervangen",
"Replace color": "Kleur vervangen",
"Replacement:": "Vervanging:",
"Report Issues": "Problemen rapporteren",
"Reset": "Resetten",
"Resize": "Formaat wijzigen",
"Resize Boundary": "Formaat van grens wijzigen",
"Resize Layer": "Formaat van laag wijzigen",
"Resize Layers": "Formaat van lagen wijzigen",
"Resize Text Layer": "Formaat van tekstlaag wijzigen",
"Resized as background": "Hernoemd als achtergrond",
"Resized:": "Formaat gewijzigd:",
"Resolution:": "Resolutie:",
"Restore Alpha": "Alfa herstellen",
"Right": "Rechts",
"Right angle:": "Rechte hoek:",
"Right to Left": "Van rechts naar links",
"Rotate": "Roteren",
"Rotate Layer": "Laag roteren",
"Rotate is not supported on this type of object. Convert to raster?": "Roteren wordt niet ondersteund voor dit type object. Omzetten naar raster?",
"Rotate left": "Links roteren",
"Rotate:": "Roteren:",
"Ruler": "Liniaal",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Afbeeldingen comprimeren en vergelijken",
"Saturate": "Verzadigen",
"Saturation": "Verzadiging",
"Saturation:": "Verzadiging:",
"Save As": "Opslaan als",
"Save As Data URL": "Opslaan als gegevens-URL",
"Save as": "Opslaan als",
"Save as type:": "Opslaan als type:",
"Save layers:": "Lagen opslaan:",
"Scaling up is not supported in Hermite, using Lanczos.": "Opschalen wordt niet ondersteund in Hermite, Lanczos wordt gebruikt.",
"Scroll down": "Omlaag scrollen",
"Scroll up": "Omhoog scrollen",
"Search": "Zoeken",
"Search Images": "Afbeeldingen zoeken",
"Search for Font": "Zoek naar lettertype",
"Search:": "Zoekopdracht:",
"Select All": "Alles selecteren",
"Select Text Layer": "Tekstlaag selecteren",
"Select object tool": "Objectgereedschap selecteren",
"Selected": "Geselecteerd",
"Selection Tool": "Selectiegereedschap",
"Sensitivity:": "Gevoeligheid:",
"Separated": "Gescheiden",
"Separated (original types)": "Gescheiden (originele typen)",
"Sepia": "Sepia",
"Set Image Size": "Afbeeldingsgrootte instellen",
"Settings": "Instellingen",
"Shadow": "Schaduw",
"Shapes": "Vormen",
"Shapes (H)": "Vormen (H)",
"Sharpen": "Verscherpen",
"Sharpen Tool": "Verscherpgereedschap",
"Sharpen:": "Verscherpen:",
"Shift + S": "Shift + S",
"Shortcut Key:": "Sneltoets:",
"Show": "Show",
"Show \/ Hide": "Tonen \/ Verbergen",
"Show file size:": "Toon bestandsgrootte:",
"Simple": "Eenvoudig",
"Size is too big, max": "Grootte is te groot, maximaal",
"Size:": "Grootte:",
"Skip - layer must be image.": "Overslaan - laag moet een afbeelding zijn.",
"Solarize": "Solariseren",
"Sorry, cold not load getUserMedia() data:": "Sorry, kon getUserMedia() gegevens niet laden:",
"Sorry, image could not be loaded.": "Sorry, afbeelding kon niet worden geladen.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Sorry, afbeelding kon niet worden geladen. Probeer de afbeelding te kopiëren en te plakken.",
"Sorry, image is too big, max 5 MB.": "Sorry, afbeelding is te groot, maximaal 5 MB.",
"Source coordinates saved.": "Broncoördinaten opgeslagen.",
"Source is empty, right click on image or use long press to save source position.": "Bron is leeg, klik met de rechtermuisknop op de afbeelding of gebruik een lange druk om de bronpositie op te slaan.",
"Sprites": "Sprites",
"Square": "Vierkant",
"Stream:": "Stroom:",
"Strength:": "Kracht:",
"Strict": "Strikt",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimeer PNG en JPEG",
"Tab": "Tabblad",
"Tag Image File Format": "Tag afbeelding bestandsformaat",
"Tahoma": "Tahoma",
"Target:": "Doel:",
"The quick brown fox jumps over the lazy dog.": "De snelle bruine vos springt over de luie hond heen.",
"There": "Daar",
"There are no layers behind.": "Er zijn geen lagen achter.",
"There is only 1 layer.": "Er is slechts 1 laag.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Deze laag moet een afbeelding bevatten. Converteer deze alstublieft naar raster om deze tool toe te passen.",
"Tilt Shift": "Kantelverschuiving",
"Times New Roman": "Times New Roman",
"Toaster": "Broodrooster",
"Toggle": "Schakelen",
"Toggle Color Channels": "Schakel kleurkanalen",
"Toggle Color Picker": "Schakel kleurkiezer",
"Toggle Menu": "Schakel menu",
"Toggle Swatches": "Schakel kleurstalen",
"Tools": "Gereedschappen",
"Top": "Bovenkant",
"Top to Bottom": "Van boven naar beneden",
"Total pixels:": "Totaal aantal pixels:",
"Translate": "Vertalen",
"Translate Layer": "Vertaal laag",
"Translate error, can not find dictionary:": "Vertaalfout, kan woordenboek niet vinden:",
"Transparent:": "Transparant:",
"Trim": "Bijsnijden",
"Trim Layers": "Bijsnijden van lagen",
"Trim borders:": "Bijsnijden van randen:",
"Trim layer:": "Bijsnijden van laag:",
"Trim white color?": "Witte kleur bijsnijden?",
"Type:": "Type:",
"Türkçe": "Türkçe",
"Undo": "Ongedaan maken",
"Unique colors:": "Unieke kleuren:",
"Up": "Omhoog",
"Update": "Update",
"Update Brush Layer": "Werk penseel laag bij",
"Update Pencil Layer": "Werk potlood laag bij",
"Update guides": "Gidsen bijwerken",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Gebruik Ctrl+V sneltoets om te plakken vanaf het Klembord.",
"V Radius:": "V Straal:",
"V. Align:": "V. Uitlijnen:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Versie:",
"Vertical": "Verticaal",
"Vertical Alignment": "Verticale uitlijning",
"Vertical blur:": "Verticaal vervagen:",
"Vertical:": "Verticaal:",
"Vibrance": "Levendigheid",
"View": "Weergave",
"Vignette": "Vignet",
"ViliusL": "ViliusL",
"Vintage": "Vintage",
"Webcam": "Webcam",
"Webcam #": "Webcam #",
"Website:": "Website:",
"Weppy File Format": "Weppy bestandsformaat",
"Width (%):": "Breedte (%):",
"Width:": "Breedte:",
"Windows Bitmap": "Windows Bitmap",
"Word": "Woord",
"Word + Letter": "Woord + Letter",
"Wrap At:": "Omzetten bij:",
"Wrap:": "Omzetten:",
"Wrong dimensions": "Verkeerde afmetingen",
"Wrong file type, must be image or json.": "Verkeerd bestandstype, moet afbeelding of json zijn.",
"X end:": "X eind:",
"X position:": "X positie:",
"X start:": "X start:",
"X-Pro II": "X-Pro II",
"Y end:": "Y eind:",
"Y position:": "Y positie:",
"Y start:": "Y start:",
"You can also drag and drop items into browser.": "U kunt ook items naar de browser slepen en neerzetten.",
"Your browser does not support canvas or JavaScript is not enabled.": "Uw browser ondersteunt geen canvas of JavaScript is niet ingeschakeld.",
"Your browser does not support this format.": "Uw browser ondersteunt dit formaat niet.",
"Your search did not match any images.": "Uw zoekopdracht leverde geen overeenkomende afbeeldingen op.",
"Zoom": "Zoomen",
"Zoom Blur": "Zoomvervaging",
"Zoom In": "Inzoomen",
"Zoom Out": "Uitzoomen",
"Zoom blur": "Zoomvervaging",
"Zoom in": "Inzoomen",
"Zoom out": "Uitzoomen",
"Zoom:": "Zoom:"
}

View File

@ -1,376 +1,513 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Ocorreu um problema ao remover o histórico de desfazer. isto",
"About": "Sobre",
"Active": "Ativo",
"Aden": "Aden",
"Advanced": "Avançado",
"All": "Todos",
"Alpha": "Alfa",
"Alpha:": "Alfa:",
"Anonymous": "Anônimo",
"Anti aliasing": "Anti-aliasing",
"Application markup may have changed,": "A marcação do aplicativo pode ter mudado,",
"Arial": "Arial",
"Arrow": "Flecha",
"ArrowDown": "Seta para baixo",
"ArrowLeft": "Seta para a esquerda",
"ArrowRight": "Seta para a direita",
"ArrowUp": "Seta para cima",
"Author:": "Autor:",
"Auto Adjust Colors": "Cores de ajuste automático",
"Auto Kerning": "Auto Kerning",
"Average:": "Média:",
"BMP - Windows Bitmap": "BMP - Bitmap do Windows",
"Backspace": "Backspace",
"Base": "Base",
"Basic": "Básico",
"Black and White": "Preto e branco",
"Blue": "Azul",
"Blue channel:": "Canal azul:",
"Blue:": "Azul:",
"Blur Radius:": "Blur Radius:",
"Blur power:": "Blur power:",
"Blur tool": "Ferramenta de desfoque",
"Bold": "Negrito",
"Bold Italic": "Negrito itálico",
"Borders": "Fronteiras",
"Box Blur": "Borrão de caixa",
"Box blur": "Borrão de caixa",
"Blueprint": "Blueprint",
"Blur Radius:": "Raio de desfoque:",
"Blur Tool": "Ferramenta de desfoque",
"Blur power:": "Intensidade do desfoque:",
"Borders": "Bordas",
"Bottom": "Inferior",
"Bottom to Top": "De baixo para cima",
"Bounds:": "Limites:",
"Box": "Caixa",
"Box Blur": "Desfoque de caixa",
"Box blur": "Desfoque de caixa",
"Brightness": "Brilho",
"Brightness:": "Brilho:",
"Brush": "Escova",
"Bulge\/Pinch tool": "Ferramenta Bulge \/ Pinch",
"Bulge\/Pinch Tool": "Ferramenta Bulge \/ Pinch",
"Burn": "Queimar",
"CSS Filters": "Filtros CSS",
"Can not animate 1 layer.": "Não é possível animar 1 camada.",
"Can not find previous layer.": "Não é possível encontrar a camada anterior.",
"Can not use this tool on current layer: image already takes all area.": "Não é possível usar esta ferramenta na camada atual: a imagem já ocupa toda a área.",
"Cancel": "Cancelar",
"Canvas Size": "Tamanho da tela",
"Center": "Centro",
"Center x:": "Centro x:",
"Center y:": "Centro y:",
"Center:": "Centro:",
"Change Composition": "Alterar composição",
"Change Layer Details": "Alterar os detalhes da camada",
"Change Opacity": "Alterar opacidade",
"Channel:": "Canal:",
"Circle": "Círculo",
"Clear": "Claro",
"Clarendon": "Clarendon",
"Clear": "Limpar",
"Clear Selection": "Limpar seleção",
"Clone Tool": "Ferramenta Clone",
"Clone count:": "Contagem de clones:",
"Clone tool": "Ferramenta de clonagem",
"Clone tool disabled for resized image. Please rasterize first.": "Ferramenta de clonagem desativada para imagem redimensionada. Por favor, rasterize primeiro.",
"Cloned edges": "Bordas clonadas",
"Close": "Fechar",
"Color #": "Cor #",
"Color Zoom": "Zoom de cor",
"Color alpha value can not be zero.": "O valor alpha colorido não pode ser zero.",
"Color Corrections": "Correções de cores",
"Color Palette": "Paleta de cores",
"Color Zoom": "Zoom de cor",
"Color alpha value can not be zero.": "O valor alfa da cor não pode ser zero.",
"Color to Alpha": "Cor para alfa",
"Color zoom": "Zoom de cor",
"Color:": "Cor:",
"Colors": "Cores",
"Colors:": "Cores:",
"Common Filters": "Filtros Comuns",
"Composition": "Composição",
"Composition:": "Composição:",
"Content Fill": "Preenchimento de conteúdo",
"Contrast": "Contraste",
"Contrast:": "Contraste:",
"Convert to Raster": "Converter em raster",
"Convert layer to raster": "Rasterizar camada",
"Convert to Raster": "Rasterizar",
"Copy Selection": "Seleção de cópia",
"Copy:": "Cópia de:",
"Courier": "Correio",
"Crop": "Colheita",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Copy to Clipboard": "Copiar para área de transferência",
"Courier": "Courier",
"Crop Tool": "Ferramenta de corte",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "O corte na camada girada não é compatível. Rasterize a camada para continuar.",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl+A",
"Ctrl+C": "Ctrl+C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl+V",
"Ctrl+Y": "Ctrl+Y",
"Ctrl+Z": "Ctrl+Z",
"Current": "Atual",
"Curve": "Curva",
"Custom": "personalizadas",
"Current Color Preview": "Pré-visualização da cor atual",
"Custom": "personalizado",
"Data URL": "URL de dados",
"Data URL:": "URL de dados:",
"Decrease": "Diminuir",
"Decrease Color Depth": "Diminuir a profundidade de cor",
"Default": "Padrão",
"Degree:": "Grau:",
"Del": "Del",
"Delete": "Excluir",
"Delete Selection": "Eliminar seleção",
"Denoise": "Denoise",
"Desaturate": "Desaturar",
"Delete Selection": "Excluir seleção",
"Denoise": "Reduzir ruído",
"Desaturate Tool": "Ferramenta de dessaturação",
"Description:": "Descrição:",
"Deutsch": "Deutsch",
"Differences": "Diferenças",
"Differences Down": "Diferenças para baixo",
"Direction:": "Direção:",
"Dither": "Dither",
"Dithering:": "Dithering:",
"Dominant color:": "Cor dominante:",
"Dot Screen": "Tela de ponto",
"Down": "Baixa",
"Down": "Abaixo",
"Duplicate": "Duplicado",
"Edge": "Beira",
"Duplicate Layer": "Duplicar Camada",
"Duplicate layer": "Duplicar Camada",
"Dynamic": "Dinâmico",
"Edge": "Borda",
"Edit": "Editar",
"Edit text": "Editar texto",
"Edit text...": "Editar texto...",
"Effect browser": "Buscador de efeitos",
"Effects": "Efeitos",
"Email:": "O email:",
"Effects browser": "Buscador de efeitos",
"Email:": "Email:",
"Emboss": "Em relevo",
"Empty selection": "Seleção vazia",
"Empty selection or type not image.": "Seleção vazia ou não digite imagem.",
"English": "Inglês",
"Empty selection or type not image.": "Seleção vazia ou tipo selecionado não é uma imagem.",
"Enable autoresize:": "Ativar redimensionamento automático:",
"End": "Fim",
"English": "English",
"English (UK)": "English (UK)",
"Enrich": "Enriquecer",
"Erase": "Apagar",
"Erase on rotate object is disabled. Sorry.": "Apagar no objeto rotativo está desabilitado. Desculpa.",
"Enter": "Entrar",
"Erase Tool": "Ferramenta Apagar",
"Erase on rotate object is disabled. Please rasterize first.": "Apagar ao girar o objeto está desativado. Por favor, rasterize o objeto primeiro.",
"Error": "Erro",
"Error connecting to service.": "Erro ao conectar-se ao serviço.",
"Error: can not load image.": "Erro: não é possível carregar a imagem.",
"Error: missing details event target": "Erro: detalhes faltantes alvo do evento",
"Error loading the list of fonts from Google.": "Erro ao carregar a lista de fontes do Google.",
"Error registering service worker": "Erro ao registrar o service worker",
"Error: can not find filter:": "Erro: não foi possível encontrar o filtro:",
"Error: can not find layer with id:": "Erro: não foi possível encontrar camada com id:",
"Error: missing details event target": "Erro: faltam detalhes do alvo do evento",
"Error: unknown layer type:": "Erro: tipo de camada desconhecido:",
"Error: unsupported attribute type:": "Erro: tipo de atributo não suportado:",
"Error: wrong key:": "Erro: chave errada:",
"Esc": "Esc",
"Escape": "Escapar",
"Español": "Español",
"Expand edges": "Expandir bordas",
"Exponent:": "Expoente:",
"Export": "Exportar",
"External": "Externo",
"Factor:": "Fator:",
"File": "Arquivo",
"File name:": "Nome do arquivo:",
"File size:": "Tamanho do arquivo:",
"Fill": "Preencher",
"Fit": "Em forma",
"Fit Window": "Janela de ajuste",
"Fill Tool": "Ferramenta de Preenchimento",
"Fit": "Ajustar",
"Fit Window": "Ajuste de Janela",
"Fit window": "Ajustar janela",
"Flatten Image": "Achatar imagem",
"Flip": "Giro",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
"French": "francês",
"Font": "Fonte",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
"Gap:": "Gap:",
"Gaussian Blur": "Gaussian Blur",
"German": "alemão",
"Gif delay:": "Retardo GIF:",
"Full Screen": "Tela cheia",
"Full layers data": "Dados de camadas completas",
"Gap:": "Espaçamento:",
"Gaussian Blur": "Desfoque Gaussiano",
"Gif delay:": "Atraso do GIF:",
"Gingham": "Tecido de algodão",
"GitHub:": "GitHub:",
"Gradient": "Gradiente",
"Gradient Radius:": "Radiação de gradiente:",
"Gradient Radius:": "Raio do Gradiente:",
"Grains": "Grãos",
"Gray": "cinzento",
"Graphics Interchange Format": "Formato de intercâmbio de gráficos",
"Gray": "Cinza",
"Grayscale": "Escala de cinza",
"Greek": "Ελληνικά (Greek)",
"Green": "Verde",
"Green channel:": "Canal verde:",
"Green:": "Verde:",
"Greyscale:": "Greyscale:",
"Greyscale:": "Escala de cinza:",
"Grid": "Grade",
"Grid on\/off": "Grid on \/ off",
"H Radius:": "H Radius:",
"Grid on\/off": "Grades Ligado \/ Desligado",
"Guides": "Guias",
"Guides enabled.": "Guias ativados.",
"H Radius:": "Raio H.",
"H. Align:": "Alinhamento H.",
"Heatmap": "Mapa de calor",
"Height (%):": "Altura (%):",
"Height:": "Altura:",
"Help": "Socorro",
"Helvetica": "helvética",
"Help": "Ajuda",
"Helvetica": "helvetica",
"Hermite": "Hermite",
"Hex:": "Hex:",
"Hex": "Hex",
"Hide": "Ocultar",
"Histogram": "Histograma",
"Histogram:": "Histograma:",
"Home": "Início",
"Horizontal": "Horizontal",
"Horizontal Alignment": "Alinhamento horizontal",
"Horizontal blur:": "Desfoque horizontal:",
"Hue Rotate": "Hue Rotate",
"Horizontal:": "Horizontal:",
"Hue": "Matiz",
"Hue Rotate": "Rotação de Matiz",
"Hue:": "Matiz:",
"Image": "Imagem",
"Image data with multi-layers. Can be opened using miniPaint -": "Dados de imagem com várias camadas. Pode ser aberto usando o miniPaint -",
"Impact": "Impacto",
"Information": "Em formação",
"Insert:": "Inserir:",
"Impact": "Impact",
"In proportion:": "Na proporção:",
"Increase": "Aumentar",
"Information": "Informação",
"Inkwell": "Tinteiro",
"Insert": "Inserir",
"Insert guides": "Inserir guias",
"Insert new layer": "Inserir nova camada",
"Instagram Filters": "Filtros de Instagram",
"Invalid Hex Code": "Código Hex inválido",
"Italiano": "Italiano",
"Italic": "itálico",
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
"JPG, WEBP quality:": "JPG, qualidade WEBP:",
"JSON - Full layers data": "JSON - Dados de camadas completas",
"Japanese": "japonês",
"Key-Points": "Pontos chave",
"Keyboard Shortcuts": "Atalhos do teclado",
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
"Kerning:": "Kerning:",
"Key-Points": "Pontos-chave",
"KeyU": "KeyU",
"Keyboard Shortcuts": "Atalhos de teclado",
"Keyword:": "Palavra-chave:",
"Korean": "coreano",
"Language": "Língua",
"Lanczos": "Lanczos",
"Landscape": "Paisagem",
"Language": "Idioma",
"Last modified": "Última modificação",
"Layer": "Camada",
"Layer details": "Detalhes da camada",
"Layer is already image.": "Layer já é imagem.",
"Layer must be image, convert it to raster to apply this tool.": "A camada deve ser imagem, converta-a em raster para aplicar esta ferramenta.",
"Layer is empty.": "A camada está vazia.",
"Layer is not compatible with resize": "Camada não é compatível com redimensionamento",
"Layer is vector, convert it to raster to apply this tool.": "A camada é um vetor, rasterize-a para usar esta ferramenta.",
"Layers": "Camadas",
"Layers:": "Camadas:",
"Layout:": "Disposição:",
"Left": "Esquerda",
"Left to Right": "Da esquerda para direita",
"Level:": "Nível:",
"Levels:": "Níveis:",
"Lietuvių": "Lietuvių",
"Line": "Linha",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Luminância:",
"Magic Wand Tool": "Varinha mágica",
"Merge Down": "Fusionar",
"Luminosity": "Luminosidade",
"Magic Eraser Tool": "Ferramenta de borracha mágica",
"Merge Down": "Mesclar para Baixo",
"Merge Layers": "Mesclar Camadas",
"Merged": "Mesclado",
"Metrics": "Métricas",
"Middle": "Meio",
"Missing at least 1 size parameter.": "Falta pelo menos 1 parâmetro de tamanho.",
"Missing permissions to write to Clipboard.cc": "Permissões ausentes para gravar em Clipboard.cc",
"Mode:": "Modo:",
"Module function not found.": "Função do módulo não encontrada.",
"Modules class not found:": "Classe de módulos não encontrada:",
"Monospace": "Monospace",
"Mosaic": "mosaico",
"Mouse:": "Rato:",
"Mouse:": "Mouse:",
"Move": "Mover",
"Move down": "Mover para baixo",
"Move up": "Subir",
"Move Layer": "Mover Camada",
"Move layer down": "Mover camada para baixo",
"Move layer up": "Mover camada para cima",
"Name:": "Nome:",
"Needs at least 2 layers.": "Precisa de pelo menos 2 camadas.",
"Negative": "Negativo",
"New": "Novo",
"New Bezier Layer": "Nova camada de Bézier",
"New Brush Layer": "Nova Camada de Pincel",
"New Ellipse Layer": "Nova Camada de Elipse",
"New File": "Novo arquivo",
"New Gradient Layer": "Nova Camada de Gradiente",
"New Layer": "Nova camada",
"New Line Layer": "Nova Camada de Linha",
"New Pencil Layer": "Nova Camada de Lápis",
"New Polygon Layer": "Nova camada de polígono",
"New Rectangle Layer": "Nova Camada de Retângulo",
"New Text Layer": "Nova Camada de Texto",
"New file": "Novo arquivo",
"New from Selection": "Novo da seleção",
"New layer": "Nova camada",
"New width can not be smaller then current width": "A nova largura não pode ser menor do que a largura atual",
"Normal": "Normal",
"Nothing is selected.": "Nada é selecionado.",
"Offset X:": "Offset X:",
"Offset Y:": "Offset Y:",
"Next": "Próximo",
"Night Vision": "Visão noturna",
"None": "Nenhum",
"Nothing is selected.": "Não há nada selecionado.",
"Offset X:": "Deslocamento X:",
"Offset Y:": "Deslocamento Y:",
"Oil": "Óleo",
"Ok": "Está bem",
"Online image editor.": "Editor de imagens on-line.",
"Ok": "Ok",
"Online image editor.": "Editor de imagens online.",
"Opacity": "Opacidade",
"Opacity:": "Opacidade:",
"Open": "Aberto",
"Open Data URL": "Abrir URL de dados",
"Open Directory": "Diretório aberto",
"Open File": "Abrir arquivo",
"Open URL": "Url aberta",
"Open File Data URL": "URL de dados de arquivo aberta",
"Open File URL": "URL do arquivo aberta",
"Open File Webcam": "Abrir arquivo da webcam",
"Open Image": "Abrir Imagem",
"Open JSON File": "Abrir arquivo JSON",
"Open Test Template": "Abrir modelo de teste",
"Open URL": "Abrir URL",
"Open data URL": "Abrir URL de dados",
"Open from Webcam": "Abrir na webcam",
"Original Size": "Tamanho original",
"PNG - Portable Network Graphics": "PNG - Gráficos de rede portátil",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converter imagem para SVG",
"PageDown": "PageDown",
"PageUp": "PageUp",
"Palette": "Paleta",
"Parameter #1:": "Parâmetro # 1:",
"Parameter #2:": "Parâmetro # 2:",
"Parameter #1:": "Parâmetro #1:",
"Parameter #2:": "Parâmetro #2:",
"Paste": "Colar",
"Pencil": "Lápis",
"Percentage:": "Percentagem:",
"Pick Color": "Escolha a cor",
"Percentage:": "Porcentagem:",
"Pixels:": "Píxeis:",
"Play animation": "Jogue animação",
"Portuguese": "Português",
"Placeholder comment for color channels": "Comentário reservado para canais de cores",
"Placeholder comment for color picker": "Comentário reservado para posição para o seletor de cores",
"Placeholder comment for color swatches": "Comentário reservado para amostras de cores",
"Portable Network Graphics": "Gráficos Portáteis de Rede",
"Portrait": "Retrato",
"Português": "Português",
"Position:": "Posição:",
"Power:": "Poder:",
"Powred by pixabay.com .": "Powred by pixabay.com.",
"Pre-Blur:": "Pré-borrão:",
"Preview": "Visualização",
"Preview": "Pré-visualização",
"Previous": "Anterior",
"Previous layer must be image, convert it to raster to apply this tool.": "A camada anterior deve ser imagem, convertê-la em raster para aplicar esta ferramenta.",
"Print": "Impressão",
"Previous layer must be image, convert it to raster to apply this tool.": "A camada anterior deve ser uma imagem, rasterize-a para aplicar esta ferramenta.",
"Print": "Imprimir",
"Quality:": "Qualidade:",
"Quick Load": "Carga rápida",
"Quick Save": "Salvamento rapido",
"Quick Load": "Carregamento Rápido",
"Quick Save": "Salvamento Rápido",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Remover fundo da imagem",
"Radial": "Radial",
"Radial gradient": "Gradiente radial",
"Radius:": "Raio:",
"Range:": "Alcance:",
"Rectangle": "Retângulo",
"Red": "Vermelho",
"Red channel:": "Canal vermelho:",
"Red:": "Vermelho:",
"Redo": "Refazer",
"Remove all": "Remover tudo",
"Rename": "Renomear",
"Replace Color": "Substituir cor",
"Replace color": "Substitua a cor",
"Rename Layer": "Renomear Camada",
"Rendered with errors.": "Renderizado com erros.",
"Rendering...": "Renderizando...",
"Replace Color": "Substituir Cor",
"Replace color": "Substitua cor",
"Replacement:": "Substituição:",
"Report Issues": "Relatar problemas",
"Resample - Hermite": "Resmplemento - Hermite",
"Reset": "Restabelecer",
"Reset zoom level": "Redefinir o nível de zoom",
"Reset": "Redefinir",
"Resize": "Redimensionar",
"Resize Boundary": "Redimensionar limite",
"Resize Layer": "Camada de redimensionamento",
"Resize Layers": "Camadas de redimensionamento",
"Resize Text Layer": "Redimensionar Camada de Texto",
"Resized as background": "Redimensionado como plano de fundo",
"Resized:": "Redimensionado:",
"Resolution:": "Resolução:",
"Restore Alpha": "Restaurar alfa",
"Right": "Certo",
"Right angle:": "Ângulo certo:",
"Rotate": "Girar",
"Rotate is not supported on this type of object. Convert to raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?",
"Rotate left": "Vire à esquerda",
"Rotate:": "Girar:",
"Russian": "russo",
"Sat:": "Sentou:",
"Right": "Direita",
"Right angle:": "Ângulo direito:",
"Right to Left": "Direita para a esquerda",
"Rotate": "Rotacionar",
"Rotate Layer": "Rotacionar Camada",
"Rotate is not supported on this type of object. Convert to raster?": "Rotacionar não é suportado neste tipo de objeto. Rasterizar objeto?",
"Rotate left": "Rotacionar à esquerda",
"Rotate:": "Rotacionar:",
"Ruler": "Régua",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Comprimir e comparar imagens",
"Saturate": "Saturar",
"Saturation": "Saturação",
"Saturation:": "Saturação:",
"Save": "Salve ",
"Save As": "Salvar como",
"Save As Data URL": "Salvar como URL de dados",
"Save as": "Salvar como",
"Save as type:": "Salvar como tipo:",
"Save layers:": "Salvar camadas:",
"Save resolution:": "Salvar resolução:",
"Scroll down": "Rolar para baixo",
"Scaling up is not supported in Hermite, using Lanczos.": "O aumento de escala não é compatível com Hermite, usando Lanczos.",
"Scroll down": "Deslize para baixo",
"Scroll up": "Deslize para cima",
"Search": "Pesquisa",
"Search Images": "Pesquisar imagens",
"Search": "Pesquisar",
"Search Images": "Pesquisar Imagens",
"Search for Font": "Pesquisar Fonte",
"Search:": "Pesquisar:",
"Select All": "Selecionar tudo",
"Select Text Layer": "Selecione Camada de Texto",
"Select object tool": "Selecione a ferramenta de objeto",
"Selected": "Selecionado",
"Selection": "Seleção",
"Selection Tool": "Ferramenta de Seleção",
"Sensitivity:": "Sensibilidade:",
"Separated": "Separados",
"Separated (original types)": "Separados (tipos originais)",
"Sepia": "Sépia",
"Set Image Size": "Definir tamanho da imagem",
"Settings": "Configurações",
"Shadow": "Sombra",
"Shadow:": "Sombra:",
"Sharpen": "Sharpen",
"Sharpen tool": "Ferramenta Sharpen",
"Sharpen:": "Sharpen:",
"Show \/ Hide": "Aparecer esconder",
"Shapes": "Formas",
"Shapes (H)": "Formas (H)",
"Sharpen": "Afiar",
"Sharpen Tool": "Ferramenta de Afiar",
"Sharpen:": "Afiar:",
"Shift + S": "Shift + S",
"Shortcut Key:": "Tecla de atalho:",
"Show": "Mostrar",
"Show \/ Hide": "Mostrar \/ Ocultar",
"Show file size:": "Mostrar tamanho do arquivo:",
"Simple": "Simples",
"Size": "Tamanho",
"Size is too big, max": "O tamanho é muito grande, máximo",
"Size:": "Tamanho:",
"Skip - layer must be image.": "Skip - layer deve ser imagem.",
"Skip - layer must be image.": "Pular - camada deve ser uma imagem.",
"Solarize": "Solarize",
"Sorry, image could not be loaded. Try copy image and paste it.": "Desculpe, a imagem não pôde ser carregada. Tente copiar imagem e cole-a.",
"Sorry, image is too big, max 5 MB.": "Desculpe, a imagem é muito grande, no máximo 5 MB.",
"Source is empty, right click on image to save source position.": "A fonte está vazia, clique com o botão direito do mouse na imagem para salvar a posição da fonte.",
"Sorry, cold not load getUserMedia() data:": "Desculpe, não foi possível carregar dados de getUserMedia():",
"Sorry, image could not be loaded.": "Desculpe, não foi possível carregar a imagem.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Desculpe, a imagem não pôde ser carregada. Tente copiar a imagem e cole-a.",
"Sorry, image is too big, max 5 MB.": "Desculpe, a imagem é muito grande, ultrapassa o máximo permitido de 5 MB.",
"Source coordinates saved.": "Coordenadas da fonte salvas.",
"Source is empty, right click on image or use long press to save source position.": "A fonte está vazia, clique com o botão direito na imagem ou pressione e segure para salvar a posição da fonte.",
"Sprites": "Sprites",
"Square": "Quadrado",
"Stream:": "Transmissão:",
"Strength:": "Força:",
"Strict": "Rigoroso",
"Stroke": "Acidente vascular encefálico",
"Stroke:": "Acidente vascular encefálico:",
"Strict": "Estrito",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Compactar PNG e JPEG",
"Tab": "Aba",
"Tag Image File Format": "Formato de Arquivo de Imagem Tag",
"Tahoma": "Tahoma",
"Target:": "Alvo:",
"Text": "Texto",
"Text example": "Exemplo de texto",
"Text:": "Texto:",
"The quick brown fox jumps over the lazy dog.": "A rápida raposa marrom salta sobre o cachorro preguiçoso.",
"There": "Lá",
"There are no layers behind.": "Não há camadas atrás.",
"There is only 1 layer.": "Existe apenas uma camada.",
"Tilt Shift": "Tilt Shift",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Esta camada deve ser uma imagem, rasterize-a para aplicar esta ferramenta.",
"Tilt Shift": "Desvio de Inclinação",
"Times New Roman": "Times New Roman",
"Toggle": "Alternancia",
"Toaster": "Torradeira",
"Toggle": "Alternar",
"Toggle Color Channels": "Alternar canais de cores",
"Toggle Color Picker": "Alternar seletor de cores",
"Toggle Menu": "Alternar menu",
"Toggle Swatches": "Alternar amostras",
"Tools": "Ferramentas",
"Tools class not found:": "Classe de ferramentas não encontrada:",
"Top": "Topo",
"Top to Bottom": "De cima para baixo",
"Total pixels:": "Total de pixels:",
"Translate": "Traduzir",
"Translate error, can not find dictionary:": "Traduzir erro, não encontrar dicionário:",
"Transparency background:": "Fundo de transparência:",
"Translate Layer": "Traduzir Camada",
"Translate error, can not find dictionary:": "Erro de tradução, não foi possível encontrar dicionários:",
"Transparent:": "Transparente:",
"Trim": "aparar",
"Trim everything:": "Apare tudo:",
"Trim layer:": "Trim layer:",
"Trim white color?": "Trim cor branca?",
"Turkish": "turco",
"Trim": "Aparar",
"Trim Layers": "Aparar Camadas",
"Trim borders:": "Aparar Bordas:",
"Trim layer:": "Aparar camada:",
"Trim white color?": "Aparar cor branca?",
"Type:": "Tipo:",
"Türkçe": "Türkçe",
"Undo": "Desfazer",
"Undo disabled.": "Desfazer desativado.",
"Undo enabled.": "Desfazer habilitado.",
"Undo is not available.": "Desfazer não está disponível.",
"Undo levels changed to 1.": "Desfazer níveis alterados para 1.",
"Undo levels restored to": "Desfazer níveis restaurados para",
"Unique colors:": "Cores únicas:",
"Up": "Acima",
"Update": "Atualizar",
"Update Brush Layer": "Atualizar Camada de Pincel",
"Update Pencil Layer": "Atualizar Camada de Lápis",
"Update guides": "Atualizar guias",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Use o atalho de teclado Ctrl + V para colar da área de transferência.",
"V Radius:": "V Radius:",
"V Radius:": "Raio V.",
"V. Align:": "Alinhamento V.",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Versão:",
"Vertical": "Vertical",
"Vertical blur:": "Borrão vertical:",
"Vertical Alignment": "Alinhamento vertical",
"Vertical blur:": "Desfoque vertical:",
"Vertical:": "Vertical:",
"Vibrance": "Vibração",
"View": "Visualizar",
"Vignette": "Vinheta",
"ViliusL": "ViliusL",
"Vintage": "Vintage",
"Visible:": "Visível:",
"WEBP - Weppy File Format": "WEBP - Formato de Arquivo Weppy",
"Website:": "Local na rede Internet:",
"Webcam": "Webcam",
"Webcam #": "Webcam #",
"Website:": "Website:",
"Weppy File Format": "Formato de arquivo Weppy",
"Width (%):": "Largura (%):",
"Width:": "Largura:",
"Wrong file type, must be image or json.": "Tipo de arquivo errado, deve ser imagem ou json.",
"Windows Bitmap": "Bitmap do Windows",
"Word": "Palavra",
"Word + Letter": "Palavra + Letra",
"Wrap At:": "Embrulhar em:",
"Wrap:": "Embrulho:",
"Wrong dimensions": "Dimensões erradas",
"Wrong file type, must be image or json.": "Tipo de arquivo errado, deve ser um arquivo do tipo imagem ou json.",
"X end:": "X final:",
"X position:": "Posição X:",
"X start:": "X start:",
"X start:": "X inicial:",
"X-Pro II": "X-Pro II",
"Y end:": "Y final:",
"Y position:": "Posição Y:",
"Y start:": "Y começar:",
"Y start:": "Y inicial:",
"You can also drag and drop items into browser.": "Você também pode arrastar e soltar itens no navegador.",
"Your browser does not support canvas or JavaScript is not enabled.": "Seu navegador não é compatível com tela ou o JavaScript não está habilitado.",
"Your browser does not support canvas or JavaScript is not enabled.": "Seu navegador não é compatível com o HTML CANVAS ou o JavaScript não está habilitado.",
"Your browser does not support this format.": "Seu navegador não suporta este formato.",
"Your search did not match any images.": "Sua pesquisa não corresponde a nenhuma imagem.",
"Zoom": "Zoom",
"Zoom Blur": "Zoom de zoom",
"Zoom Blur": "Desfoque de zoom",
"Zoom In": "Mais Zoom",
"Zoom Out": "Reduzir o zoom",
"Zoom blur": "Zoom de zoom",
"Zoom Out": "Menos zoom",
"Zoom blur": "Desfoque de zoom",
"Zoom in": "Mais Zoom",
"Zoom out": "Reduzir o zoom",
"Zoom out": "Menos zoom",
"Zoom:": "Zoom:"
}

View File

@ -1,376 +1,513 @@
{
"2d": "2d",
"480p": "480p",
"About": "Около",
"Active": "активный",
"Advanced": "продвинутый",
"A problem occurred while removing undo history. It": "Ошибка при удалении истории отмен. Это",
"About": "О проекте",
"Active": "Активный",
"Aden": "Aden",
"Advanced": "Продвинутый",
"All": "Все",
"Alpha": "Альфа",
"Alpha:": "Альфа:",
"Anonymous": "анонимное",
"Anonymous": "Анонимное",
"Anti aliasing": "Сглаживание",
"Application markup may have changed,": "Разметка приложения могла измениться,",
"Arial": "Arial",
"Arrow": "Стрела",
"Arrow": "Стрелка",
"ArrowDown": "Стрелка вниз",
"ArrowLeft": "Стрелка влево",
"ArrowRight": "Стрелка вправо",
"ArrowUp": "Стрелка вверх",
"Author:": "Автор:",
"Auto Adjust Colors": "Автоматическая настройка цветов",
"Auto Adjust Colors": "Автоматическая настройка цвета",
"Auto Kerning": "Автоматический кернинг",
"Average:": "В среднем:",
"BMP - Windows Bitmap": "BMP - битмап Windows",
"Backspace": "Backspace",
"Base": "База",
"Basic": "основной",
"Black and White": "Черное и белое",
"Blue": "синий",
"Blue channel:": "Голубой канал:",
"Blue:": "Синий:",
"Blur Radius:": "Радиус размытия:",
"Blur power:": "Размытие:",
"Blur tool": "Инструмент размытия",
"Bold": "Жирный",
"Bold Italic": "Жирный курсив",
"Basic": "Основа",
"Black and White": "Черный и Белый",
"Blue": "Синий",
"Blue channel:": "Синий канал:",
"Blueprint": "Чертеж",
"Blur Radius:": "Радиус Размытия:",
"Blur Tool": "Инструмент Размытия",
"Blur power:": "Сила размытия:",
"Borders": "Границы",
"Box Blur": "Размытие ящика",
"Box blur": "Размытие коробки",
"Brightness": "яркость",
"Bottom": "Дно",
"Bottom to Top": "Снизу вверх",
"Bounds:": "Границы:",
"Box": "Коробка",
"Box Blur": "Размытие по рамке",
"Box blur": "Размытие по рамке",
"Brightness": "Яркость",
"Brightness:": "Яркость:",
"Brush": "Щетка",
"Bulge\/Pinch tool": "Инструмент для выемки \/ зажима",
"Burn": "жечь",
"CSS Filters": "Фильтры CSS",
"Can not animate 1 layer.": "Невозможно оживить 1 слой.",
"Bulge\/Pinch Tool": "Вдавливание\/вытяжение",
"Burn": "Выжигание",
"Can not animate 1 layer.": "Невозможно анимировать 1 слой.",
"Can not find previous layer.": "Не удается найти предыдущий слой.",
"Can not use this tool on current layer: image already takes all area.": "Невозможно использовать этот инструмент на текущем слое: изображение уже занимает всю область.",
"Cancel": "Отмена",
"Canvas Size": "Размер холста",
"Center": "Центр",
"Center x:": "Центр x:",
"Center y:": "Центр y:",
"Center:": "Центр:",
"Change Composition": "Изменить состав",
"Change Layer Details": "Изменить сведения о слое",
"Change Opacity": "Изменить непрозрачность",
"Channel:": "Источник:",
"Circle": "Круг",
"Clarendon": "Clarendon",
"Clear": "Очистить",
"Clear Selection": "Очистить Выбор",
"Clone Tool": "Инструмент клонирования",
"Clone count:": "Количество клонов:",
"Clone tool": "Инструмент клонирования",
"Clone tool disabled for resized image. Please rasterize first.": "Инструмент клонирования отключен для изображения с измененным размером. Пожалуйста, сначала растрируйте.",
"Cloned edges": "Клонированные края",
"Close": "Закрывать",
"Color #": "Цвет #",
"Color Zoom": "Цветное увеличение",
"Color alpha value can not be zero.": "Значение цветной альфа не может быть равно нулю.",
"Color Corrections": "Коррекция цвета",
"Color Palette": "Цветовая палитра",
"Color to Alpha": "Цвет в альфа",
"Color zoom": "Цветное увеличение",
"Color Zoom": "Усиление цвета",
"Color alpha value can not be zero.": "Значение цвета не может быть равно нулю.",
"Color to Alpha": "Цвет в прозрачность",
"Color zoom": "Усиление цвета",
"Color:": "Цвет:",
"Colors": "Цвета",
"Colors:": "Цвета:",
"Common Filters": "Обычные фильтры",
"Composition": "Состав",
"Composition:": "Состав:",
"Content Fill": "Контент заполняется",
"Contrast": "контрастировать",
"Content Fill": "Заполнение содержимого",
"Contrast": "Контраст",
"Contrast:": "Контраст:",
"Convert to Raster": "Преобразовать в растровый",
"Copy Selection": "Выбор копии",
"Copy:": "Копирование:",
"Courier": "курьер",
"Crop": "урожай",
"Convert layer to raster": "Растрировать слой",
"Convert to Raster": "Растрировать",
"Copy Selection": "Копировать выделение",
"Copy to Clipboard": "Скопировать в буфер",
"Courier": "Courier",
"Crop Tool": "Инструмент для Обрезки",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Обрезка повернутого слоя не поддерживается. Растрируйте его, чтобы продолжить.",
"Ctrl + C": "Ctrl + С",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+П",
"Ctrl+V": "Ctrl + V,",
"Ctrl-P": "Ctrl-P",
"Current": "Текущий",
"Curve": "кривая",
"Custom": "изготовленный на заказ",
"Data URL": "URL-адрес данных",
"Data URL:": "URL-адрес данных:",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "Выбранный",
"Current Color Preview": "Выбранный цвет",
"Custom": "Свой",
"Data URL": "URL данных",
"Data URL:": "URL данных:",
"Decrease": "Уменьшить",
"Decrease Color Depth": "Уменьшить глубину цвета",
"Default": "По умолчанию",
"Degree:": "Степень:",
"Degree:": "Градус:",
"Del": "Del",
"Delete": "Удалить",
"Delete Selection": "Удалить выделение",
"Denoise": "Denoise",
"Desaturate": "Обесцвечивание",
"Denoise": "Шумоподавление",
"Desaturate Tool": "Инструмент обесцвечивания",
"Description:": "Описание:",
"Deutsch": "Deutsch",
"Differences": "Различия",
"Differences Down": "Разница вниз",
"Dither": "трястись",
"Dithering:": "Смешение:",
"Dominant color:": "Доминирующий цвет:",
"Direction:": "Направление:",
"Dither": "Сгладить",
"Dithering:": "Сглаживание:",
"Dominant color:": "Доминирующий:",
"Dot Screen": "Точечный экран",
"Down": "вниз",
"Duplicate": "дублировать",
"Edge": "край",
"Edit": "редактировать",
"Edit text": "Редактировать текст",
"Down": "Вниз",
"Duplicate": "Дублировать",
"Duplicate Layer": "Дублировать слой",
"Duplicate layer": "Дублировать слой",
"Dynamic": "Динамический",
"Edge": "Край",
"Edit": "Редактировать",
"Edit text...": "Редактировать текст...",
"Effects": "Последствия",
"Email:": "Эл. адрес:",
"Emboss": "выбивать",
"Effect browser": "Подборка фильтров",
"Effects": "Фильтры",
"Effects browser": "Подборка фильтров",
"Email:": "Email:",
"Emboss": "Тиснение",
"Empty selection": "Пустой выбор",
"Empty selection or type not image.": "Пустой выбор или введите не изображение.",
"English": "английский",
"Enrich": "обогащать",
"Erase": "стирать",
"Erase on rotate object is disabled. Sorry.": "Стереть объект поворота отключен. Сожалею.",
"Error": "ошибка",
"Enable autoresize:": "Автоматически увеличивать холст:",
"End": "Конец",
"English": "English",
"English (UK)": "английский (Великобритания)",
"Enrich": "Насытить",
"Enter": "Войти",
"Erase Tool": "Ластик",
"Erase on rotate object is disabled. Please rasterize first.": "Стирание при повороте объекта отключено. Пожалуйста, сначала растрируйте.",
"Error": "Ошибка",
"Error connecting to service.": "Ошибка подключения к сервису.",
"Error: can not load image.": "Ошибка: невозможно загрузить изображение.",
"Error loading the list of fonts from Google.": "Ошибка загрузки списка шрифтов из Google.",
"Error registering service worker": "Ошибка регистрации сервис-воркера",
"Error: can not find filter:": "Ошибка: не удалось найти фильтр:",
"Error: can not find layer with id:": "Ошибка: не удается найти слой с идентификатором:",
"Error: missing details event target": "Ошибка: отсутствует цель события",
"Error: unknown layer type:": "Ошибка: неизвестный тип слоя:",
"Error: unsupported attribute type:": "Ошибка: неподдерживаемый тип атрибута:",
"Error: wrong key:": "Ошибка: неправильный ключ:",
"Esc": "Esc",
"Escape": "ESC",
"Español": "Español",
"Expand edges": "Развернуть края",
"Exponent:": "Экспонент:",
"Factor:": "фактор:",
"File": "файл",
"Export": "Экспорт",
"External": "Внешние инструменты",
"Factor:": "Фактор:",
"File": "Файл",
"File name:": "Имя файла:",
"File size:": "Размер файла:",
"Fill": "заполнить",
"Fit": "Поместиться",
"Fit Window": "Окно для установки",
"Fill": "Заливка",
"Fill Tool": "Инструмент Заливки",
"Fit": "Вписать",
"Fit Window": "Вписать в окно",
"Fit window": "Вписать в окно",
"Flatten Image": "Свести изображение",
"Flip": "кувырок",
"FloydSteinberg-serpentine": "FloydSteinberg-змеевик",
"French": "Французский",
"Flip": "Отразить",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
"Font": "Шрифт",
"Français": "Français",
"Full HD, 1080p": "Full HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - формат обмена графикой",
"Gap:": "Gap:",
"Gaussian Blur": "Гауссовское размытие",
"German": "Немецкий",
"Full Screen": "Полноэкранный",
"Full layers data": "Данные полных слоев",
"Gap:": "Зазор:",
"Gaussian Blur": "Гауссовское Размытие",
"Gif delay:": "Задержка Gif:",
"Gingham": "Зонтик",
"GitHub:": "GitHub:",
"Gradient": "градиент",
"Gradient Radius:": "Радиус градиента:",
"Grains": "зерна",
"Grains": "Зерна",
"Graphics Interchange Format": "Формат обмена графикой",
"Gray": "Серый",
"Grayscale": "Оттенки серого",
"Green": "зеленый",
"Green channel:": "Зеленый коридор:",
"Green:": "Зеленый цвет:",
"Greek": "Греческий",
"Green": "Зеленый",
"Green channel:": "Зеленый канал:",
"Greyscale:": "Оттенки серого:",
"Grid": "сетка",
"Grid on\/off": "Включение \/ выключение сетки",
"Grid": "Сетка",
"Grid on\/off": "Сетка вкл\/выкл",
"Guides": "Гайдлайны",
"Guides enabled.": "Гайдлайны включены",
"H Radius:": "H Радиус:",
"H. Align:": "H. Выравнивание:",
"Heatmap": "Тепловая карта",
"Height (%):": "Высота (%):",
"Height:": "Высота:",
"Help": "Помогите",
"Help": "Помощь",
"Helvetica": "Helvetica",
"Hermite": "Эрмита",
"Hex:": "Hex:",
"Hermite": "Hermite",
"Hex": "Hex",
"Hide": "Скрыть",
"Histogram": "Гистограмма",
"Histogram:": "Гистограмма:",
"Horizontal": "горизонтальный",
"Home": "Главная",
"Horizontal": "Горизонтально",
"Horizontal Alignment": "Горизонтальное выравнивание",
"Horizontal blur:": "Горизонтальное размытие:",
"Hue Rotate": "Оттенок",
"Horizontal:": "Горизонтальный:",
"Hue": "Оттенок",
"Hue Rotate": "Вращение оттенка",
"Hue:": "Оттенок:",
"Image": "Образ",
"Image": "Изображение",
"Image data with multi-layers. Can be opened using miniPaint -": "Данные изображения с несколькими слоями. Может быть открыт с помощью miniPaint -",
"Impact": "Влияние",
"Impact": "Влиять",
"In proportion:": "Сохранять пропорции:",
"Increase": "Увеличить",
"Information": "Информация",
"Insert:": "Вставка:",
"Inkwell": "Inkwell",
"Insert": "Вставить",
"Insert guides": "Добавить гайд",
"Insert new layer": "Новый слой",
"Instagram Filters": "Фильтры Instagram",
"Invalid Hex Code": "Неверный HEX код",
"Italiano": "Italiano",
"Italic": "курсивный",
"JPG - JPG\/JPEG Format": "JPG - формат JPG \/ JPEG",
"JPG, WEBP quality:": "JPG, WEBP качество:",
"JSON - Full layers data": "JSON - данные с полными слоями",
"Japanese": "Японский",
"Key-Points": "Ключевые пункты",
"JPG\/JPEG Format": "JPG\/JPEG Формат",
"Kerning:": "Интервал:",
"Key-Points": "Ключевые точки",
"KeyU": "КлючU",
"Keyboard Shortcuts": "Горячие клавиши",
"Keyword:": "Ключевое слово:",
"Korean": "Корейский",
"Language": "язык",
"Lanczos": "Lanczos",
"Landscape": "Альбомная",
"Language": "Язык",
"Last modified": "Последнее изменение",
"Layer details": "Детали слоя",
"Layer is already image.": "Слой уже является изображением.",
"Layer must be image, convert it to raster to apply this tool.": "Слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.",
"Layer": "Слой",
"Layer details": "Активный слой",
"Layer is empty.": "Слой пуст.",
"Layer is not compatible with resize": "Слой несовместим с изменением размера",
"Layer is vector, convert it to raster to apply this tool.": "Слой является векторным, преобразуйте его в растровый, чтобы применить этот инструмент.",
"Layers": "Слои",
"Layers:": "Слои:",
"Left": "Оставил",
"Layout:": "Ориентация:",
"Left": "Слева",
"Left to Right": "Слева направо",
"Level:": "Уровень:",
"Levels:": "Уровни:",
"Lietuvių": "Lietuvių",
"Line": "Линия",
"Lum:": "Lum:",
"Luminance:": "Luminance:",
"Magic Wand Tool": "Инструмент волшебной палочки",
"Merge Down": "Слить",
"Lo-fi": "Lo-fi",
"Luminance:": "Освещенность:",
"Luminosity": "Освещенность",
"Magic Eraser Tool": "Волшебный ластик",
"Merge Down": "Соединить вниз",
"Merge Layers": "Соединить слои",
"Merged": "Объединенное",
"Metrics": "Метрики",
"Middle": "Средний",
"Missing at least 1 size parameter.": "Отсутствует хотя бы 1 параметр размера.",
"Missing permissions to write to Clipboard.cc": "Отсутствуют разрешения на запись в Clipboard.cc",
"Mode:": "Режим:",
"Module function not found.": "Функция модуля не найдена.",
"Modules class not found:": "Класс модулей не найден:",
"Mosaic": "мозаика",
"Monospace": "Моноширинный",
"Mosaic": "Мозаика",
"Mouse:": "Мышь:",
"Move": "Переехать",
"Move down": "Переместить вниз",
"Move up": "Переместить вверх",
"Move": "Переместить",
"Move Layer": "Переместить слой",
"Move layer down": "Опустить слой ниже",
"Move layer up": "Поднять слой выше",
"Name:": "Имя:",
"Needs at least 2 layers.": "Требуется не менее 2 слоев.",
"Negative": "отрицательный",
"New": "новый",
"Negative": "Негатив",
"New": "Новый",
"New Bezier Layer": "Новый слой Безье",
"New Brush Layer": "Новый слой Кисти",
"New Ellipse Layer": "Новый слой Эллипса",
"New File": "Новый файл",
"New Gradient Layer": "Новый слой Градиента",
"New Layer": "Новый слой",
"New Line Layer": "Новый слой Линии",
"New Pencil Layer": "Новый слой Карандаша",
"New Polygon Layer": "Новый полигональный слой",
"New Rectangle Layer": "Новый слой Прямоугольника",
"New Text Layer": "Новый Текстовый слой",
"New file": "Новый файл",
"New from Selection": "Новое от выбора",
"New from Selection": "Новое из выделения",
"New layer": "Новый слой",
"New width can not be smaller then current width": "Новая ширина не может быть меньше текущей ширины",
"Normal": "Нормальный",
"Next": "Следующий",
"Night Vision": "Ночное видение",
"None": "Ничего",
"Nothing is selected.": "Ничего не выбрано.",
"Offset X:": "Смещение X:",
"Offset Y:": "Смещение Y:",
"Oil": "масло",
"Oil": "Масло",
"Ok": "ОК",
"Online image editor.": "Редактор онлайн-изображений.",
"Opacity": "помутнение",
"Opacity:": "Непрозрачность:",
"Open": "открыто",
"Open Data URL": "Открыть URL-адрес данных",
"Online image editor.": "Онлайн редактор изображений.",
"Opacity": "Непрозрачность",
"Opacity:": "Прозрачность:",
"Open": "Открыть",
"Open Data URL": "Открыть URL-адрес",
"Open Directory": "Открыть каталог",
"Open File": "Открыть файл",
"Open URL": "Открыть URL-адрес",
"Open data URL": "Открыть URL-адрес данных",
"Open File Data URL": "URL-адрес файла",
"Open File URL": "Открыть URL-адрес",
"Open File Webcam": "Изображение с веб-камеры",
"Open Image": "Открыть файл",
"Open JSON File": "Открыть Файл JSON",
"Open Test Template": "Шаблон открытого теста",
"Open URL": "Открыть URL",
"Open data URL": "Открыть URL-адрес",
"Open from Webcam": "Изображение с веб-камеры",
"Original Size": "Оригинальный размер",
"PNG - Portable Network Graphics": "PNG - портативная сетевая графика",
"Palette": "палитра",
"Parameter #1:": "Параметр №1:",
"Parameter #2:": "Параметр №2:",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Конвертировать изображение в SVG",
"PageDown": "Листать вниз",
"PageUp": "Листать вверх",
"Palette": "Палитра",
"Parameter #1:": "Параметр #1:",
"Parameter #2:": "Параметр #2:",
"Paste": "Вставить",
"Pencil": "Карандаш",
"Percentage:": "Процент:",
"Pick Color": "Выберите цвет",
"Pixels:": "Пиксели:",
"Play animation": "Игровая анимация",
"Portuguese": "португальский",
"Power:": "Мощность:",
"Powred by pixabay.com .": "Поражается pixabay.com.",
"Pre-Blur:": "Pre-Размытие:",
"Preview": "предварительный просмотр",
"Previous": "предыдущий",
"Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.",
"Placeholder comment for color channels": "Комментарий-заполнитель для цветовых каналов",
"Placeholder comment for color picker": "Комментарий-заполнитель для палитры цветов",
"Placeholder comment for color swatches": "Комментарий-заполнитель для образцов цвета",
"Portable Network Graphics": "Портативная Сетевая Графика",
"Portrait": "Портретная",
"Português": "Português",
"Position:": "Позиция:",
"Power:": "Сила:",
"Preview": "Навигация",
"Previous": "Предыдущий",
"Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, растрируйте его, чтобы применить этот инструмент.",
"Print": "Распечатать",
"Quality:": "Качественный:",
"Quick Load": "Быстрая нагрузка",
"Quality:": "Качество:",
"Quick Load": "Быстрое открытие",
"Quick Save": "Быстрое сохранение",
"Radial": "радиальный",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Удалить Фон Изображения",
"Radial": "Радиальный",
"Radial gradient": "Радиальный градиент",
"Radius:": "Радиус:",
"Range:": "Ассортимент:",
"Rectangle": "Прямоугольник",
"Red": "красный",
"Range:": "Диапазон:",
"Red": "Красный",
"Red channel:": "Красный канал:",
"Red:": "Красный:",
"Rename": "переименовывать",
"Redo": "Повторить",
"Remove all": "Удалить все",
"Rename": "Переименовать",
"Rename Layer": "Переименовать слой",
"Rendered with errors.": "Отрисовано с ошибками.",
"Rendering...": "Отрисовка ...",
"Replace Color": "Заменить цвет",
"Replace color": "Заменить цвет",
"Replacement:": "Замена:",
"Report Issues": "Проблемы с отчетами",
"Resample - Hermite": "Resample - Эрмит",
"Report Issues": "Сообщить о проблемах",
"Reset": "Сброс",
"Reset zoom level": "Сбросить уровень масштабирования",
"Resize": "Изменение размера",
"Resized as background": "Изменилось в качестве фона",
"Resize": "Изменить размер",
"Resize Boundary": "Изменить размер границы",
"Resize Layer": "Изменить размер слоя",
"Resize Layers": "Изменить размер слоев",
"Resize Text Layer": "Изменить размер текстового слоя",
"Resized as background": "Изменено в качестве фона",
"Resized:": "Изменён размер:",
"Resolution:": "Разрешение:",
"Restore Alpha": "Восстановить альфа",
"Right": "Правильно",
"Restore Alpha": "Восстановить прозрачность",
"Right": "Вправо",
"Right angle:": "Прямой угол:",
"Rotate": "Поворот",
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?",
"Rotate left": "Поверните влево",
"Right to Left": "Справа налево",
"Rotate": "Повернуть",
"Rotate Layer": "Повернуть слой",
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Растрировать?",
"Rotate left": "Повернуть влево",
"Rotate:": "Поворот:",
"Russian": "русский",
"Sat:": "Сидел:",
"Saturate": "насыщать",
"Ruler": "Линейки",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Сжатие и сравнение изображений",
"Saturate": "Насытить",
"Saturation": "Насыщенность",
"Saturation:": "Насыщенность:",
"Save": "Сохранить",
"Save As": "Сохранить как",
"Save As Data URL": "Сохранить как URL-адрес данных",
"Save As Data URL": "Сохранить как base64",
"Save as": "Сохранить как",
"Save as type:": "Сохранить как тип:",
"Save layers:": "Сохранить слои:",
"Save resolution:": "Сохранить разрешение:",
"Scaling up is not supported in Hermite, using Lanczos.": "В Hermite с использованием Lanczos масштабирование не поддерживается.",
"Scroll down": "Прокрутить вниз",
"Scroll up": "Прокрутка вверх",
"Search": "Поиск",
"Search Images": "Поиск изображений",
"Search for Font": "Поиск шрифта",
"Search:": "Поиск:",
"Select All": "Выбрать все",
"Select object tool": "Выберите инструмент объекта",
"Selected": "выбранный",
"Selection": "выбор",
"Select Text Layer": "Выбрать текстовый слой",
"Select object tool": "Выбор объекта",
"Selected": "Выбранный",
"Selection Tool": "Инструмент выделения",
"Sensitivity:": "Чувствительность:",
"Separated": "Отдельно",
"Separated (original types)": "Отдельно (оригинальный формат)",
"Sepia": "Сепия",
"Settings": "настройки",
"Set Image Size": "Установить размер изображения",
"Settings": "Настройки",
"Shadow": "Тень",
"Shadow:": "Тень:",
"Sharpen": "точить",
"Sharpen tool": "Инструмент «Резкость»",
"Sharpen:": "Резкость:",
"Show \/ Hide": "Показать спрятать",
"Show file size:": "Показать размер файла:",
"Simple": "просто",
"Size": "Размер",
"Size is too big, max": "Размер слишком большой, макс.",
"Shapes": "Фигуры",
"Shapes (H)": "Фигуры (H)",
"Sharpen": "Резкость",
"Sharpen Tool": "Инструмент резкости",
"Sharpen:": "Повысить четкость:",
"Shift + S": "Шифт + С",
"Shortcut Key:": "Быстрая клавиша:",
"Show": "Показывать",
"Show \/ Hide": "Показать \/ Спрятать",
"Show file size:": "Считать размер:",
"Simple": "Простой",
"Size is too big, max": "Размер слишком большой, максимум",
"Size:": "Размер:",
"Skip - layer must be image.": "Пропуск - слой должен быть изображением.",
"Solarize": "передержать",
"Solarize": "Высветлить",
"Sorry, cold not load getUserMedia() data:": "К сожалению, не удалось загрузить данные getUserMedia():",
"Sorry, image could not be loaded.": "К сожалению, изображение не может быть загружено.",
"Sorry, image could not be loaded. Try copy image and paste it.": "К сожалению, изображение не может быть загружено. Попробуйте скопировать изображение и вставьте его.",
"Sorry, image is too big, max 5 MB.": "К сожалению, изображение слишком велико, не более 5 МБ.",
"Source is empty, right click on image to save source position.": "Источник пуст, щелкните правой кнопкой мыши по изображению, чтобы сохранить исходную позицию.",
"Sorry, image is too big, max 5 MB.": "К сожалению, изображение слишком большое, максимум 5 МБ.",
"Source coordinates saved.": "Исходные координаты сохранены.",
"Source is empty, right click on image or use long press to save source position.": "Источник пуст, щелкните изображение правой кнопкой мыши или нажмите и удерживайте, чтобы сохранить исходное положение.",
"Sprites": "Спрайты",
"Square": "Квадрат",
"Stream:": "Поток:",
"Strength:": "Прочность:",
"Strict": "строгий",
"Stroke": "Инсульт",
"Stroke:": "Инсульт:",
"Strict": "Строго",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Сжатие PNG и JPEG",
"Tab": "Вкладка",
"Tag Image File Format": "Формат файла изображения тега",
"Tahoma": "Tahoma",
"Target:": "Цель:",
"Text": "Текст",
"Text example": "Пример текста",
"Text:": "Текст:",
"The quick brown fox jumps over the lazy dog.": "Быстрая коричневая лиса прыгает через ленивую собаку.",
"There": "Там",
"There are no layers behind.": "Позади нет слоев.",
"There is only 1 layer.": "Есть только 1 слой.",
"Tilt Shift": "Сдвиг наклона",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Слой должен содержать изображение, растрируйте его, чтобы применить этот инструмент.",
"Tilt Shift": "Tilt Shift",
"Times New Roman": "Times New Roman",
"Toggle": "тумблер",
"Tools": "инструменты",
"Tools class not found:": "Класс инструментов не найден:",
"Toaster": "Toaster",
"Toggle": " ",
"Toggle Color Channels": "Цветовые каналы",
"Toggle Color Picker": "Цветовая палитра",
"Toggle Menu": "Меню",
"Toggle Swatches": "Коллекция цветов",
"Tools": "Инструменты",
"Top": "Вверх",
"Top to Bottom": "Сверху вниз",
"Total pixels:": "Всего пикселей:",
"Translate": "Переведите",
"Translate error, can not find dictionary:": "Перевести ошибку, не найти словарь:",
"Transparency background:": "Прозрачный фон:",
"Transparent:": "Прозрачный:",
"Trim": "Отделка",
"Trim everything:": "Обрежьте все:",
"Translate": "Сдвинуть",
"Translate Layer": "Сдвинуть слой",
"Translate error, can not find dictionary:": "Ошибка перевода, не удалось найти словарь:",
"Transparent:": "Прозрачность:",
"Trim": "Обрезать",
"Trim Layers": "Обрезать слои",
"Trim borders:": "Обрезать границы:",
"Trim layer:": "Обрезной слой:",
"Trim white color?": "Обрезать белый цвет?",
"Turkish": "турецкий",
"Undo": "расстегивать",
"Undo disabled.": "Отменить.",
"Undo enabled.": "Отменить.",
"Undo is not available.": "Отмена недоступна.",
"Undo levels changed to 1.": "Уровни отмены отменены на 1.",
"Undo levels restored to": "Уровни отмены отменены",
"Type:": "Тип:",
"Türkçe": "Türkçe",
"Undo": "Отменить",
"Unique colors:": "Уникальные цвета:",
"Up": "вверх",
"Up": "Вверх",
"Update": "Обновить",
"Update Brush Layer": "Обновить слой Кисти",
"Update Pencil Layer": "Обновить слой карандаша",
"Update guides": "Обновить руководства",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Используйте комбинацию клавиш Ctrl + V для вставки из буфера обмена.",
"V Radius:": "V Радиус:",
"V Radius:": "В радиус:",
"V. Align:": "В. Выровнять:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Версия:",
"Vertical": "вертикальный",
"Vertical": "Вертикально",
"Vertical Alignment": "Вертикальное Выравнивание",
"Vertical blur:": "Вертикальное размытие:",
"Vibrance": "вибрация",
"Vertical:": "Вертикальное:",
"Vibrance": "Вибрация",
"View": "Вид",
"Vignette": "Виньетка",
"ViliusL": "ViliusL",
"Vintage": "марочный",
"Visible:": "Видимых:",
"WEBP - Weppy File Format": "WEBP - Формат файла Weppy",
"Vintage": "Винтаж",
"Webcam": "Веб-камера",
"Webcam #": "Веб-камера #",
"Website:": "Веб-сайт:",
"Weppy File Format": "Формат файла Weppy",
"Width (%):": "Ширина (%):",
"Width:": "Ширина:",
"Wrong file type, must be image or json.": "Неверный тип файла должен быть изображением или json.",
"Windows Bitmap": "Растровое изображение Windows",
"Word": "Слово",
"Word + Letter": "Слово + Буква",
"Wrap At:": "Обернуть в:",
"Wrap:": "Обвернуть:",
"Wrong dimensions": "Неправильные размеры",
"Wrong file type, must be image or json.": "Неверный тип файла, тип файла должен быть изображением или json.",
"X end:": "X конец:",
"X position:": "X позиция:",
"X start:": "Начало X:",
"X start:": "X начало:",
"X-Pro II": "X-Pro II",
"Y end:": "Y конец:",
"Y position:": "Y позиция:",
"Y start:": "Начало работы:",
"Y start:": "Y начало:",
"You can also drag and drop items into browser.": "Вы также можете перетаскивать элементы в браузер.",
"Your browser does not support canvas or JavaScript is not enabled.": "Ваш браузер не поддерживает холст или JavaScript не включен.",
"Your browser does not support this format.": "Ваш браузер не поддерживает этот формат.",
"Your search did not match any images.": "Ваш поиск не соответствовал изображениям.",
"Zoom": "Увеличить",
"Zoom Blur": "Zoom Blur",
"Zoom": "Приблизить",
"Zoom Blur": "Размытие Приближения",
"Zoom In": "Приблизить",
"Zoom Out": "Уменьшить",
"Zoom Out": "Отдалить",
"Zoom blur": "Масштабирование",
"Zoom in": "Приблизить",
"Zoom out": "Уменьшить",
"Zoom:": "Zoom:"
"Zoom out": "Отдалить",
"Zoom:": "Приблизить:"
}

View File

@ -1,210 +1,291 @@
{
"2d": "2d",
"480p": "480p",
"A problem occurred while removing undo history. It": "Geri alma geçmişini kaldırırken bir sorun oluştu. O",
"About": "hakkında",
"Active": "Aktif",
"Aden": "Aden",
"Advanced": "ileri",
"All": "Herşey",
"Alpha": "Alfa",
"Alpha:": "Alfa:",
"Anonymous": "Anonim",
"Anti aliasing": "Örtüşme önleme",
"Application markup may have changed,": "Uygulama işaretlemesi değişmiş olabilir,",
"Arial": "Arial",
"Arrow": "Ok",
"ArrowDown": "Aşağı ok",
"ArrowLeft": "ArrowLeft",
"ArrowRight": "ArrowRight",
"ArrowUp": "Yukarı ok",
"Author:": "Yazar:",
"Auto Adjust Colors": "Renkleri otomatik ayarla",
"Auto Kerning": "Otomatik Karakter Aralığı",
"Average:": "Ortalama:",
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
"Backspace": "Geri tuşu",
"Base": "baz",
"Basic": "Temel",
"Black and White": "Siyah ve beyaz",
"Blue": "Mavi",
"Blue channel:": "Mavi kanal:",
"Blue:": "Mavi:",
"Blueprint": "Taslak",
"Blur Radius:": "Bulanıklaştırma Yarıçapı:",
"Blur Tool": "Bulanıklık aracı",
"Blur power:": "Blur gücü:",
"Blur tool": "Bulanıklık aracı",
"Bold": "cesur",
"Bold Italic": "Kalın italik",
"Borders": "Sınırlar",
"Bottom": "Alt",
"Bottom to Top": "Alttan Üste",
"Bounds:": "Sınırlar:",
"Box": "Kutu",
"Box Blur": "Kutu bulanıklığı",
"Box blur": "Kutu bulanıklığı",
"Brightness": "Parlaklık",
"Brightness:": "Parlaklık:",
"Brush": "Fırça",
"Bulge\/Pinch tool": "Bulge \/ Sıkma aleti",
"Bulge\/Pinch Tool": "Bulge \/ Kıstırma Aracı",
"Burn": "Yanmak",
"CSS Filters": "CSS filtreleri",
"Can not animate 1 layer.": "1 katmana canlandırma yapılamıyor.",
"Can not find previous layer.": "Önceki katmanı bulamıyorum.",
"Can not use this tool on current layer: image already takes all area.": "Bu araç geçerli katmanda kullanılamıyor: görüntü zaten tüm alanı kaplıyor.",
"Cancel": "İptal etmek",
"Canvas Size": "Tuval Boyutu",
"Center": "merkez",
"Center x:": "Merkez x:",
"Center y:": "Merkez y:",
"Center:": "merkez:",
"Change Composition": "Kompozisyonu Değiştir",
"Change Layer Details": "Katman Ayrıntılarını Değiştir",
"Change Opacity": "Opaklığı Değiştir",
"Channel:": "Kanal:",
"Circle": "Daire",
"Clarendon": "Clarendon",
"Clear": "Açık",
"Clear Selection": "Seçimi Temizle",
"Clone Tool": "Klonlama Aracı",
"Clone count:": "Klon sayısı:",
"Clone tool": "Klon aracı",
"Clone tool disabled for resized image. Please rasterize first.": "Yeniden boyutlandırılan resim için klonlama aracı devre dışı bırakıldı. Lütfen önce rasterleştirin.",
"Cloned edges": "Klonlanmış kenarlar",
"Close": "Kapalı",
"Color #": "Renk #",
"Color Zoom": "Renkli Zoom",
"Color alpha value can not be zero.": "Renkli alfa değeri sıfır olamaz.",
"Color Corrections": "Renk düzeltmeleri",
"Color Palette": "Renk paleti",
"Color Zoom": "Renkli Zoom",
"Color alpha value can not be zero.": "Renkli alfa değeri sıfır olamaz.",
"Color to Alpha": "Alfanın renkleri",
"Color zoom": "Renkli yakınlaştırma",
"Color:": "Renk:",
"Colors": "Renkler",
"Colors:": "Renkler:",
"Common Filters": "Ortak Filtreler",
"Composition": "bileştirme, kompozisyon",
"Composition:": "Bileştirme, kompozisyon:",
"Content Fill": "İçerik doldurma",
"Contrast": "Kontrast",
"Contrast:": "Kontrast:",
"Convert layer to raster": "Katmanı raster'a dönüştür",
"Convert to Raster": "Rastera dönüştürün",
"Copy Selection": "Seçimi kopyala",
"Copy:": "Kopya:",
"Copy to Clipboard": "Panoya kopyala",
"Courier": "Kurye",
"Crop": "ekin",
"Crop Tool": "Kırpma aracı",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Döndürülmüş katmanda kırpma desteklenmez. Devam etmek için raster'e dönüştürün.",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl + A",
"Ctrl+C": "Ctrl + C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl + V",
"Ctrl-P": "Ctrl-P",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "Ctrl + Z",
"Current": "şimdiki",
"Curve": "eğri",
"Current Color Preview": "Mevcut Renk Önizlemesi",
"Custom": "görenek",
"Data URL": "Veri URL'si",
"Data URL:": "Veri URL'si:",
"Decrease": "Azaltmak",
"Decrease Color Depth": "Renk derinliğini azalt",
"Default": "Varsayılan",
"Degree:": "Derece:",
"Del": "Del",
"Delete": "silmek",
"Delete Selection": "Seçimi sil",
"Denoise": "Denoise",
"Desaturate": "Desaturate",
"Desaturate Tool": "Doygunluğu Azaltma Aracı",
"Description:": "Açıklama:",
"Deutsch": "Deutsch",
"Differences": "farklılıklar",
"Differences Down": "Farklar Aşağı",
"Direction:": "Yön:",
"Dither": "titreme",
"Dithering:": "taklidi:",
"Dominant color:": "Hakim renk:",
"Dot Screen": "Nokta Ekranı",
"Down": "Aşağı",
"Duplicate": "Çift",
"Duplicate Layer": "Yinelenen katman",
"Duplicate layer": "Yinelenen katman",
"Dynamic": "Dinamik",
"Edge": "kenar",
"Edit": "Düzenle",
"Edit text": "Metni düzenle",
"Edit text...": "Metni düzenle...",
"Effect browser": "Efekt tarayıcısı",
"Effects": "Etkileri",
"Effects browser": "Efekt tarayıcısı",
"Email:": "E-posta:",
"Emboss": "kabartma yapmak",
"Empty selection": "Boş seçim",
"Empty selection or type not image.": "Boş seçim veya resim değil yazın.",
"Enable autoresize:": "Otomatik yeniden boyutlandırmayı etkinleştir:",
"End": "Son",
"English": "ingilizce",
"English (UK)": "İngilizce (İngiltere)",
"Enrich": "Zenginleştirmek",
"Erase": "silmek",
"Erase on rotate object is disabled. Sorry.": "Döndürme nesnesinde silme devre dışı. Afedersiniz.",
"Enter": "Giriş",
"Erase Tool": "Silme Aracı",
"Erase on rotate object is disabled. Please rasterize first.": "Nesneyi döndürürken silme devre dışı bırakılır. Lütfen önce rasterleştirin.",
"Error": "Hata",
"Error connecting to service.": "Hizmete bağlanırken hata oluştu.",
"Error: can not load image.": "Hata: resim yüklenemiyor.",
"Error loading the list of fonts from Google.": "Google'dan yazı tipi listesi yüklenirken hata oluştu.",
"Error registering service worker": "Hizmet çalışanı kaydedilirken hata oluştu",
"Error: can not find filter:": "Hata: filtre bulunamıyor:",
"Error: can not find layer with id:": "Hata: kimliğine sahip katman bulunamıyor:",
"Error: missing details event target": "Hata: eksik olan ayrıntılar etkinlik hedefi",
"Error: unknown layer type:": "Hata: bilinmeyen katman türü:",
"Error: unsupported attribute type:": "Hata: desteklenmeyen özellik türü:",
"Error: wrong key:": "Hata: yanlış anahtar:",
"Esc": "ESC",
"Escape": "Kaçış",
"Español": "Español",
"Expand edges": "Kenarları genişlet",
"Exponent:": "Üs:",
"Export": "İhracat",
"External": "Harici",
"Factor:": "Faktör:",
"File": "Dosya",
"File name:": "Dosya adı:",
"File size:": "Dosya boyutu:",
"Fill": "doldurmak",
"Fill Tool": "Doldurma Aracı",
"Fit": "Fit",
"Fit Window": "Pencereye sığdır",
"Fit window": "Pencereyi sığdır",
"Flatten Image": "Resmi Düzleştir",
"Flip": "fiske",
"FloydSteinberg-serpentine": "FloydSteinberg-serpantin",
"French": "Fransızca",
"Font": "Yazı tipi",
"Français": "Français",
"Full HD, 1080p": "Tam HD, 1080p",
"GIF - Graphics Interchange Format": "GIF - Grafik Değişim Biçimi",
"Full Screen": "Tam ekran",
"Full layers data": "Tam katman verileri",
"Gap:": "boşluk:",
"Gaussian Blur": "Gauss Bulanıklığı",
"German": "Almanca",
"Gif delay:": "Gif gecikmesi:",
"Gingham": "Şemsiye",
"GitHub:": "GitHub:",
"Gradient": "meyil",
"Gradient Radius:": "Gradyan Yarıçapı:",
"Grains": "Taneler",
"Graphics Interchange Format": "Grafik Değişim Biçimi",
"Gray": "Gri",
"Grayscale": "Gri tonlama",
"Greek": "Yunan",
"Green": "Yeşil",
"Green channel:": "Yeşil kanal:",
"Green:": "Yeşil:",
"Greyscale:": "Gri tonlama:",
"Grid": "Kafes",
"Grid on\/off": "Izgara açık \/ kapalı",
"Guides": "Kılavuzlar",
"Guides enabled.": "Kılavuzlar etkinleştirildi.",
"H Radius:": "H Radius:",
"H. Align:": "H. Hizala:",
"Heatmap": "Sıcaklık haritası",
"Height (%):": "Yükseklik (%):",
"Height:": "Yükseklik:",
"Help": "yardım et",
"Helvetica": "Helvetica",
"Hermite": "Hermite",
"Hex:": "hex:",
"Hex": "Hex",
"Hide": "Saklamak",
"Histogram": "Histogram",
"Histogram:": "Histogram:",
"Home": "Ev",
"Horizontal": "Yatay",
"Horizontal Alignment": "Yatay hizalama",
"Horizontal blur:": "Yatay bulanıklık:",
"Horizontal:": "Yatay:",
"Hue": "Ton",
"Hue Rotate": "Ton Döndür",
"Hue:": "Ton:",
"Image": "görüntü",
"Image data with multi-layers. Can be opened using miniPaint -": "Çok katmanlı görüntü verileri. MiniPaint ile açılabilir -",
"Impact": "darbe",
"In proportion:": "Orantılı olarak:",
"Increase": "Artırmak",
"Information": "Bilgi",
"Insert:": "ekle:",
"Inkwell": "Inkwell",
"Insert": "Sokmak",
"Insert guides": "Kılavuzları ekle",
"Insert new layer": "Yeni katman ekle",
"Instagram Filters": "Instagram Filtreleri",
"Invalid Hex Code": "Geçersiz Hex Kodu",
"Italiano": "Italiano",
"Italic": "İtalik",
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG Biçimi",
"JPG, WEBP quality:": "JPG, WEBP kalitesi:",
"JSON - Full layers data": "JSON - Tam katmanlı veriler",
"Japanese": "Japonca",
"JPG\/JPEG Format": "JPG \/ JPEG Biçimi",
"Kerning:": "Karakter aralığı:",
"Key-Points": "Anahtar noktaları",
"KeyU": "KeyU",
"Keyboard Shortcuts": "Klavye kısayolları",
"Keyword:": "Anahtar kelime:",
"Korean": "Koreli",
"Lanczos": "Lanczos",
"Landscape": "Manzara",
"Language": "Dil",
"Last modified": "Son düzenleme",
"Layer": "Katman",
"Layer details": "Katman ayrıntıları",
"Layer is already image.": "Tabaka zaten görüntü.",
"Layer must be image, convert it to raster to apply this tool.": "Katman görüntü olmalı, onu uygulamak için rastgele dönüştürmelidir.",
"Layer is empty.": "Katman boş.",
"Layer is not compatible with resize": "Katman yeniden boyutlandırmayla uyumlu değil",
"Layer is vector, convert it to raster to apply this tool.": "Katman vektördür, bu aracı uygulamak için onu raster'e dönüştürün.",
"Layers": "Katmanlar",
"Layers:": "Katmanlar:",
"Layout:": "Düzen:",
"Left": "Ayrıldı",
"Left to Right": "Soldan sağa",
"Level:": "Seviye:",
"Levels:": "Seviyeleri:",
"Lietuvių": "Litvanya",
"Line": "Hat",
"Lum:": "Lum:",
"Lo-fi": "Lo-fi",
"Luminance:": "Parlaklık:",
"Magic Wand Tool": "Sihirli değnek aracı",
"Luminosity": "Parlaklık",
"Magic Eraser Tool": "Sihirli Silgi Aracı",
"Merge Down": "Aşağı Birleştir",
"Merge Layers": "Katmanları birleştirmek",
"Merged": "Birleştirilmiş",
"Metrics": "Metrikler",
"Middle": "Orta",
"Missing at least 1 size parameter.": "En az 1 boyut parametresi eksik.",
"Missing permissions to write to Clipboard.cc": "Clipboard.cc'ye yazma izinleri eksik",
"Mode:": "Mod:",
"Module function not found.": "Modül işlevi bulunamadı.",
"Modules class not found:": "Modüller sınıf bulunamadı:",
"Monospace": "Tek aralıklı",
"Mosaic": "Mozaik",
"Mouse:": "Fare:",
"Move": "Hareket",
"Move down": "Aşağı inmek",
"Move up": "Yukarı çık",
"Move Layer": "Katmanı Taşı",
"Move layer down": "Katmanı aşağı taşı",
"Move layer up": "Katmanı yukarı taşı",
"Name:": "Adı:",
"Needs at least 2 layers.": "En az 2 kat gerekir.",
"Negative": "Negatif",
"New": "Yeni",
"New Bezier Layer": "Yeni Bezier Katmanı",
"New Brush Layer": "Yeni Fırça Katmanı",
"New Ellipse Layer": "Yeni Elips Katmanı",
"New File": "Yeni dosya",
"New Gradient Layer": "Yeni Gradyan Katmanı",
"New Layer": "Yeni tabaka",
"New Line Layer": "Yeni Çizgi Katmanı",
"New Pencil Layer": "Yeni Kalem Katmanı",
"New Polygon Layer": "Yeni Çokgen Katmanı",
"New Rectangle Layer": "Yeni Dikdörtgen Katman",
"New Text Layer": "Yeni Metin Katmanı",
"New file": "Yeni dosya",
"New from Selection": "Seçimden yeni",
"New layer": "Yeni katman",
"New width can not be smaller then current width": "Yeni genişlik o andaki genişlikten daha küçük olamaz",
"Normal": "Normal",
"Next": "Sonraki",
"Night Vision": "Gece görüşü",
"None": "Yok",
"Nothing is selected.": "Hiçbir şey seçilmedi.",
"Offset X:": "Ofset X:",
"Offset Y:": "Ofset Y:",
@ -217,23 +298,34 @@
"Open Data URL": "Açık Veri URL'si",
"Open Directory": "Açık sözlük",
"Open File": "Açık dosya",
"Open File Data URL": "Dosya Verileri URL'sini Aç",
"Open File URL": "Dosya URL'sini Aç",
"Open File Webcam": "Dosya Web Kamerasını Aç",
"Open Image": "Resmi Aç",
"Open JSON File": "JSON Dosyasını Aç",
"Open Test Template": "Test Şablonunu Aç",
"Open URL": "Link aç",
"Open data URL": "Açık veri URL'si",
"Open from Webcam": "Web Kamerasından Aç",
"Original Size": "Orijinal boyut",
"PNG - Portable Network Graphics": "PNG - Taşınabilir Ağ Grafikleri",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Resmi SVG'ye Dönüştür",
"PageDown": "PageDown",
"PageUp": "Sayfa yukarı",
"Palette": "palet",
"Parameter #1:": "Parametre # 1:",
"Parameter #2:": "Parametre # 2:",
"Paste": "Yapıştırmak",
"Pencil": "Kalem",
"Percentage:": "Yüzde:",
"Pick Color": "Renk seç",
"Pixels:": "Piksel:",
"Play animation": "Animasyonu oynat",
"Portuguese": "Portekizce",
"Placeholder comment for color channels": "Renk kanalları için yer tutucu yorumu",
"Placeholder comment for color picker": "Renk seçici için yer tutucu yorumu",
"Placeholder comment for color swatches": "Renk örnekleri için yer tutucu yorumu",
"Portable Network Graphics": "taşınabilir Ağ Grafikleri",
"Portrait": "Vesika",
"Português": "Português",
"Position:": "Konum:",
"Power:": "Güç:",
"Powred by pixabay.com .": "Pixabay.com tarafından çekildi.",
"Pre-Blur:": "Ön Bulanıklık:",
"Preview": "Ön izleme",
"Previous": "Önceki",
"Previous layer must be image, convert it to raster to apply this tool.": "Önceki katman resim olmalıdır, bu aracı uygulamak için raster haline getirin.",
@ -241,123 +333,168 @@
"Quality:": "Kalite:",
"Quick Load": "Hızlı yükleme",
"Quick Save": "Hızlı kaydet",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Resim Arka Planını Kaldır",
"Radial": "Radyal",
"Radial gradient": "Radyal degrade",
"Radius:": "radius:",
"Range:": "aralık:",
"Rectangle": "Dikdörtgen",
"Red": "Kırmızı",
"Red channel:": "Kırmızı kanal:",
"Red:": "Kırmızı:",
"Redo": "Yeniden yap",
"Remove all": "Hepsini kaldır",
"Rename": "Adını değiştirmek",
"Rename Layer": "Katmanı Yeniden Adlandır",
"Rendered with errors.": "Hatalarla oluşturuldu.",
"Rendering...": "Oluşturuluyor ...",
"Replace Color": "Renk Değiştir",
"Replace color": "Rengi değiştir",
"Replacement:": "Değiştirme:",
"Report Issues": "Sorunları bildir",
"Resample - Hermite": "Resample - Hermite",
"Reset": "Reset",
"Reset zoom level": "Zum düzeyini sıfırla",
"Resize": "yeniden boyutlandırma",
"Resize Boundary": "Sınırı Yeniden Boyutlandır",
"Resize Layer": "Katmanı Yeniden Boyutlandır",
"Resize Layers": "Katmanları Yeniden Boyutlandır",
"Resize Text Layer": "Metin Katmanını Yeniden Boyutlandır",
"Resized as background": "Arka plan olarak yeniden boyutlandırıldı",
"Resized:": "Yeniden boyutlandırıldı:",
"Resolution:": "Çözüm:",
"Restore Alpha": "Alfa geri yükle",
"Right": "Sağ",
"Right angle:": "Doğru açı:",
"Right to Left": "Sağdan sola",
"Rotate": "Döndürme",
"Rotate Layer": "Katmanı Döndür",
"Rotate is not supported on this type of object. Convert to raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?",
"Rotate left": "Sola dön",
"Rotate:": "Dönüşümlü:",
"Russian": "Rusça",
"Sat:": "Oturdu:",
"Ruler": "Cetvel",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Resimleri Sıkıştır ve Karşılaştır",
"Saturate": "bombalamak",
"Saturation": "Doyma",
"Saturation:": "Doyma:",
"Save": "Kayıt etmek",
"Save As": "Farklı kaydet",
"Save As Data URL": "Veri URL'si olarak kaydet",
"Save as": "Farklı kaydet",
"Save as type:": "Türünü kaydet:",
"Save layers:": "Katmanları kaydet:",
"Save resolution:": "Çözünürlüğü kaydet:",
"Scaling up is not supported in Hermite, using Lanczos.": "Lanczos kullanılarak Hermite'de ölçek büyütme desteklenmez.",
"Scroll down": "Aşağı kaydır",
"Scroll up": "Yukarı kaydırmak",
"Search": "Arama",
"Search Images": "Resimleri ara",
"Search for Font": "Yazı Tipi Ara",
"Search:": "Aramak:",
"Select All": "Hepsini seç",
"Select Text Layer": "Metin Katmanı Seçin",
"Select object tool": "Nesne aracını seçin",
"Selected": "seçilmiş",
"Selection": "seçim",
"Selection Tool": "Seçim aracı",
"Sensitivity:": "Duyarlılık:",
"Separated": "Ayrılmış",
"Separated (original types)": "Ayrılmış (orijinal türler)",
"Sepia": "Sepya",
"Set Image Size": "Görüntü Boyutunu Ayarla",
"Settings": "Ayarlar",
"Shadow": "Gölge",
"Shadow:": "Gölge:",
"Shapes": "Şekiller",
"Shapes (H)": "Şekiller (H)",
"Sharpen": "keskinleştirmek",
"Sharpen tool": "Aleti keskinleştir",
"Sharpen Tool": "Aleti keskinleştir",
"Sharpen:": "keskinleştir:",
"Shift + S": "Üst Karakter + S",
"Shortcut Key:": "Kısayol tuşu:",
"Show": "Göstermek",
"Show \/ Hide": "Göster \/ gizle",
"Show file size:": "Dosya boyutunu göster:",
"Simple": "Basit",
"Size": "Boyut",
"Size is too big, max": "Boyut çok büyük, maks.",
"Size:": "Boyut:",
"Skip - layer must be image.": "Atlama - katman resim olmalıdır.",
"Solarize": "güneşte bırakmak",
"Sorry, cold not load getUserMedia() data:": "Maalesef getUserMedia () verilerini yükleme değil:",
"Sorry, image could not be loaded.": "Maalesef resim yüklenemedi.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Üzgünüz, resim yüklenemedi. Resmi kopyala ve yapıştırmayı deneyin.",
"Sorry, image is too big, max 5 MB.": "Maalesef, resim çok büyük, maksimum 5 MB.",
"Source is empty, right click on image to save source position.": "Kaynak boş, kaynağı konumunu kaydetmek için görüntüye sağ tıklayın.",
"Source coordinates saved.": "Kaynak koordinatlar kaydedildi.",
"Source is empty, right click on image or use long press to save source position.": "Kaynak boş, görüntüye sağ tıklayın veya kaynak konumunu kaydetmek için uzun basın.",
"Sprites": "Spritelar",
"Square": "Kare",
"Stream:": "Akış:",
"Strength:": "Sertlik:",
"Strict": "sıkı",
"Stroke": "inme",
"Stroke:": "İnme:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - PNG ve JPEG'i sıkıştır",
"Tab": "Sekme",
"Tag Image File Format": "Etiket Görüntüsü Dosya Formatı",
"Tahoma": "Tahoma",
"Target:": "Hedef:",
"Text": "Metin",
"Text example": "Tipik örnek",
"Text:": "Metin:",
"The quick brown fox jumps over the lazy dog.": "Hızlı kahverengi tilki tembel köpeğin üzerinden atlıyor.",
"There": "Orada",
"There are no layers behind.": "Arkada hiçbir katman yok.",
"There is only 1 layer.": "Sadece bir tabaka var.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Katman görüntü olmalı, onu uygulamak için rastgele dönüştürmelidir.",
"Tilt Shift": "Eğim Kaydırma",
"Times New Roman": "Times New Roman",
"Toaster": "Tost makinası",
"Toggle": "geçiş",
"Toggle Color Channels": "Renk Kanallarını Değiştir",
"Toggle Color Picker": "Renk Seçiciyi Değiştir",
"Toggle Menu": "Menüyü Değiştir",
"Toggle Swatches": "Renk Örneklerini Aç \/ Kapat",
"Tools": "Araçlar",
"Tools class not found:": "Araçlar sınıfı bulunamadı:",
"Top": "Üst",
"Top to Bottom": "Yukarıdan Aşağıya",
"Total pixels:": "Toplam piksel:",
"Translate": "Çevirmek",
"Translate Layer": "Katmanı Çevir",
"Translate error, can not find dictionary:": "Çeviri hatası, sözlük bulunamadı:",
"Transparency background:": "Şeffaflık arka planı:",
"Transparent:": "Şeffaf:",
"Trim": "düzeltmek",
"Trim everything:": "Her şeyi silmelisin:",
"Trim Layers": "Katmanları Kırp",
"Trim borders:": "Kenarlıkları kırp:",
"Trim layer:": "Döşeme tabakası:",
"Trim white color?": "Beyaz rengini keser misin?",
"Turkish": "Türk",
"Type:": "Tip:",
"Türkçe": "Türkçe",
"Undo": "Geri alma",
"Undo disabled.": "Geri alınıyor devre dışı.",
"Undo enabled.": "Devre dışı bırakıldı.",
"Undo is not available.": "Geri al mevcut değil.",
"Undo levels changed to 1.": "Geri alma seviyeleri 1 olarak değiştirildi.",
"Undo levels restored to": "Geri yüklenen geri alma seviyeleri",
"Unique colors:": "Eşsiz renkler:",
"Up": "yukarı",
"Update": "Güncelleme",
"Update Brush Layer": "Fırça Katmanını Güncelle",
"Update Pencil Layer": "Kalem Katmanını Güncelle",
"Update guides": "Kılavuzları güncelleyin",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Pano'dan yapıştırmak için Ctrl + V klavye kısayolunu kullanın.",
"V Radius:": "V Yarıçapı:",
"V. Align:": "V. Hizala:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "Versiyon:",
"Vertical": "Dikey",
"Vertical Alignment": "Dikey hizalama",
"Vertical blur:": "Dikey bulanıklık:",
"Vertical:": "Dikey:",
"Vibrance": "Titreşim",
"View": "Görüş",
"Vignette": "skeç",
"ViliusL": "ViliusL",
"Vintage": "bağbozumu",
"Visible:": "Gözle görülür:",
"WEBP - Weppy File Format": "WEBP - Weppy Dosya Biçimi",
"Webcam": "Web kamerası",
"Webcam #": "Web kamerası #",
"Website:": "Web sitesi:",
"Weppy File Format": "Weppy Dosya Biçimi",
"Width (%):": "Genişlik (%):",
"Width:": "Genişlik:",
"Windows Bitmap": "Windows Bit Eşlem",
"Word": "Kelime",
"Word + Letter": "Kelime + Harf",
"Wrap At:": "Şuraya Sar:",
"Wrap:": "Paketlemek:",
"Wrong dimensions": "Yanlış boyutlar",
"Wrong file type, must be image or json.": "Yanlış dosya türü, resim veya json olmalı.",
"X end:": "X sonu:",
"X position:": "X konumu:",
"X start:": "X start:",
"X-Pro II": "X-Pro II",
"Y end:": "Sonum:",
"Y position:": "Y pozisyonu:",
"Y start:": "Y başlatın:",

507
src/js/languages/uk.json Normal file
View File

@ -0,0 +1,507 @@
{
"24-Points star": "",
"A problem occurred while removing undo history. It": "Sorry, a problem occurred while removing the undo history.",
"About": "",
"Active": "",
"Add Borders": "",
"Aden": "",
"Advanced": "",
"All": "",
"Alpha": "",
"Alpha:": "",
"Anonymous": "",
"Anti aliasing": "",
"Application markup may have changed,": "The application markup may have changed",
"Arial": "",
"Arrow": "",
"ArrowDown": "",
"ArrowLeft": "",
"ArrowRight": "",
"ArrowUp": "",
"Author:": "",
"Auto Adjust Colors": "Auto Adjust the Colours",
"Auto Kerning": "",
"Average:": "",
"Backspace": "",
"Base": "",
"Basic": "",
"Black and White": "",
"Blue": "",
"Blue channel:": "",
"Blueprint": "",
"Blur Radius:": "",
"Blur Tool": "",
"Blur power:": "",
"Borders": "",
"Bottom": "",
"Bottom to Top": "",
"Bounds:": "",
"Box": "",
"Box Blur": "",
"Box blur": "",
"Brightness": "",
"Brightness:": "",
"Bulge\/Pinch Tool": "",
"Burn": "",
"Can not animate 1 layer.": "Sorry, you can not animate just 1 layer, you need at least 2 layers.",
"Can not find previous layer.": "Sorry, I can not find the previous layer.",
"Cancel": "",
"Canvas Size": "",
"Canvas size": "",
"Center": "Centre",
"Center x:": "Centre x:",
"Center y:": "Centre y:",
"Center:": "Centre:",
"Change Composition": "",
"Change Layer Details": "",
"Change Opacity": "",
"Channel:": "",
"Circle": "",
"Clarendon": "",
"Clear": "",
"Clear Selection": "",
"Clone Tool": "",
"Clone count:": "",
"Clone tool disabled for resized image. Sorry.": "Sorry, the clone tool is disabled for use on a resized asset (image). Undo the resize, clone the asset (image) then resize it again.",
"Cloned edges": "",
"Color #": "Colour #",
"Color Corrections": "Colour Corrections",
"Color Palette": "Colour Palette",
"Color Zoom": "Colour Zoom",
"Color alpha value can not be zero.": "The colour alpha value can not be zero. Please change it.",
"Color to Alpha": "Colour to Alpha",
"Color zoom": "Colour zoom",
"Color:": "Colour:",
"Colors": "Colours",
"Colors:": "Colours:",
"Common Filters": "",
"Composition": "",
"Composition:": "",
"Content Fill": "",
"Contrast": "",
"Contrast:": "",
"Convert to Raster": "Convert to a Raster",
"Copy Selection": "",
"Copy to Clipboard": "",
"Copy:": "",
"Courier": "",
"Crop Tool": "",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "You can not crop a rotated layer. Please convert it to a raster to continue.",
"Ctrl+A": "",
"Ctrl+C": "",
"Ctrl+V": "",
"Ctrl+Y": "",
"Ctrl+Z": "",
"Ctrl-P": "",
"Current": "",
"Current Color Preview": "Current Colour Preview",
"Custom": "",
"Data URL": "",
"Data URL:": "",
"Decrease": "",
"Decrease Color Depth": "Decrease Colour Depth",
"Degree:": "",
"Del": "",
"Delete": "",
"Delete Selection": "",
"Denoise": "",
"Desaturate Tool": "",
"Description:": "",
"Deutsch": "",
"Differences": "",
"Differences Down": "",
"Direction:": "",
"Dither": "",
"Dithering:": "",
"Dominant color:": "Dominant colour:",
"Dot Screen": "",
"Down": "",
"Duplicate": "",
"Duplicate Layer": "",
"Dynamic": "",
"Edge": "",
"Edit": "",
"Edit text...": "",
"Effect browser": "",
"Effects": "",
"Effects browser": "",
"Email:": "",
"Emboss": "",
"Empty selection": "",
"Empty selection or type not image.": "You have selected nothing or the asset is not an image.",
"Enable guides:": "",
"Enable snap:": "",
"End": "",
"English": "English UK",
"Enrich": "",
"Enter": "",
"Erase Tool": "",
"Erase on rotate object is disabled. Sorry.": "Sorry you can not erase on rotated asset (object). Remove the rotation then you can delete it.",
"Error": "",
"Error connecting to service.": "",
"Error loading the list of fonts from Google.": "There is an error loading the list of fonts from Google. Please report this.",
"Error registering service worker": "",
"Error: can not find filter:": "",
"Error: can not find layer with id:": "",
"Error: missing details event target": "",
"Error: unknown layer type:": "",
"Esc": "",
"Escape": "",
"Español": "",
"Exit confirmation:": "",
"Expand edges": "",
"Exponent:": "",
"Export": "",
"External": "",
"Factor:": "",
"File": "",
"File name:": "",
"File size:": "",
"Fill": "",
"Fill Tool": "",
"Fit": "",
"Fit Window": "",
"Flatten Image": "",
"Flip": "",
"FloydSteinberg-serpentine": "",
"Font": "",
"Français": "",
"Full HD, 1080p": "",
"Full Screen": "",
"Full layers data": "",
"Gap:": "",
"Gaussian Blur": "",
"Gif delay:": "",
"Gingham": "",
"GitHub:": "",
"Gradient Radius:": "",
"Grains": "",
"Graphics Interchange Format": "",
"Gray": "",
"Grayscale": "",
"Greek": "",
"Green": "",
"Green channel:": "",
"Greyscale:": "",
"Grid": "",
"Grid on\/off": "",
"Guides": "",
"Guides enabled.": "",
"H Radius:": "",
"H. Align:": "",
"Heatmap": "",
"Height (%):": "",
"Height:": "",
"Help": "",
"Helvetica": "",
"Hermite": "",
"Hex": "",
"Histogram": "",
"Histogram:": "",
"Home": "",
"Horizontal": "",
"Horizontal Alignment": "",
"Horizontal blur:": "",
"Horizontal:": "",
"Hue": "",
"Hue Rotate": "",
"Hue:": "",
"Image": "",
"Image data with multi-layers. Can be opened using miniPaint -": "You can open asset (image) data with multi-layers using miniPaint. -",
"Impact": "",
"Increase": "",
"Information": "",
"Inkwell": "",
"Insert": "",
"Insert guides": "",
"Insert:": "",
"Instagram Filters": "",
"Invalid Hex Code": "",
"Italiano": "",
"JPG\/JPEG Format": "",
"Kerning:": "",
"Key-Points": "",
"KeyU": "",
"Keyboard Shortcuts": "",
"Keyword:": "",
"Lanczos": "",
"Language": "",
"Last modified": "",
"Layer": "",
"Layer details": "",
"Layer is not compatible with resize": "Sorry, this layer is not compatible with resize",
"Layer is vector, convert it to raster to apply this tool.": "Sorry this layer is a vector, please convert it to a raster to apply this tool. (Layer, Convert to a Raster)",
"Layers": "",
"Layers:": "",
"Left": "",
"Left to Right": "",
"Level:": "",
"Levels:": "",
"Lietuvių": "",
"Lo-fi": "",
"Luminance:": "",
"Luminosity": "",
"Magic Eraser Tool": "",
"Merge Down": "",
"Merge Layers": "",
"Merged": "",
"Metrics": "",
"Middle": "",
"Missing at least 1 size parameter.": "Sorry, you are missing at least 1 size parameter.",
"Missing permissions to write to Clipboard.cc": "",
"Mode:": "",
"Module function not found.": "",
"Modules class not found:": "",
"Monospace": "",
"Mosaic": "",
"Mouse:": "",
"Move": "",
"Move Layer": "",
"Move down": "",
"Move up": "",
"Name:": "",
"Needs at least 2 layers.": "You need at least 2 layers. Please make another layer using Layer, New or dragging a new asset (image) into the browser.",
"Negative": "",
"New": "",
"New Brush Layer": "",
"New Ellipse Layer": "",
"New File": "",
"New Gradient Layer": "",
"New Layer": "",
"New Line Layer": "",
"New Pencil Layer": "",
"New Rectangle Layer": "",
"New Text Layer": "",
"New file": "",
"New from Selection": "",
"New layer": "",
"New width can not be smaller then current width": "You can not make the new width smaller then current width.",
"Night Vision": "",
"None": "",
"Nothing is selected.": "Sorry, you have not selected anything, please try again.",
"Offset X:": "",
"Offset Y:": "",
"Oil": "",
"Ok": "",
"Online image editor.": "",
"Opacity": "",
"Opacity:": "",
"Open": "",
"Open Data URL": "",
"Open Directory": "",
"Open File": "",
"Open File Data URL": "",
"Open File URL": "",
"Open File Webcam": "",
"Open Image": "",
"Open JSON File": "",
"Open Test Template": "",
"Open URL": "",
"Open data URL": "",
"Open from Webcam": "",
"Original Size": "",
"PNGTOSVG - Convert Image to SVG": "",
"PageDown": "",
"PageUp": "",
"Palette": "",
"Parameter #1:": "",
"Parameter #2:": "",
"Paste": "",
"Pencil": "",
"Percentage:": "",
"Pixels:": "",
"Placeholder comment for color channels": "Placeholder comment for colour channels",
"Placeholder comment for color picker": "Placeholder comment for colour picker",
"Placeholder comment for color swatches": "Placeholder comment for colour swatches",
"Portable Network Graphics": "",
"Português": "",
"Position:": "",
"Power:": "",
"Preview": "",
"Previous": "",
"Previous layer must be image, convert it to raster to apply this tool.": "The previous layer must be an asset (image), please convert it to a raster to apply this tool.",
"Print": "",
"Quality:": "",
"Quick Load": "",
"Quick Save": "",
"REMOVE.BG - Remove Image Background": "",
"Radial": "",
"Radial gradient": "",
"Radius:": "",
"Range:": "",
"Red": "",
"Red channel:": "",
"Redo": "",
"Remove all": "",
"Rename": "",
"Rename Layer": "",
"Rendered with errors.": "",
"Rendering...": "",
"Replace Color": "Replace Colour",
"Replace color": "Replace colour",
"Replacement:": "",
"Report Issues": "",
"Reset": "",
"Resize": "",
"Resize Boundary": "",
"Resize Layer": "",
"Resize Layers": "",
"Resize Text Layer": "",
"Resized as background": "",
"Resized:": "",
"Resolution:": "",
"Restore Alpha": "",
"Right": "",
"Right angle:": "",
"Right to Left": "",
"Rotate": "",
"Rotate Layer": "",
"Rotate is not supported on this type of object. Convert to raster?": "Sorry, rotate is not supported on this type of asset (object), would you like to convert it to a raster?",
"Rotate left": "",
"Rotate:": "",
"Ruler": "",
"SQUOOSH - Compress and Compare Images": "",
"Safe search:": "",
"Saturate": "",
"Saturation": "",
"Saturation:": "",
"Save (Export)": "",
"Save As": "",
"Save As Data URL": "",
"Save as": "",
"Save as type:": "",
"Save layers:": "",
"Scaling up is not supported in Hermite, using Lanczos.": "",
"Scroll down": "",
"Scroll up": "",
"Search": "",
"Search Images": "",
"Search for Font": "",
"Select All": "",
"Select Text Layer": "",
"Select object tool": "",
"Selected": "",
"Selection Tool": "",
"Sensitivity:": "",
"Separated": "",
"Separated (original types)": "",
"Sepia": "",
"Set Image Size": "",
"Settings": "",
"Shadow": "",
"Shadow:": "",
"Shapes": "",
"Sharpen": "",
"Sharpen Tool": "",
"Sharpen:": "",
"Shortcut Key:": "",
"Show \/ Hide": "",
"Show file size:": "",
"Simple": "",
"Size is too big, max": "",
"Size:": "",
"Skip - layer must be image.": "Skip - layer must be an asset (image).",
"Solarize": "",
"Sorry, cold not load getUserMedia() data:": "Sorry, I could not load getUserMedia() data:",
"Sorry, image could not be loaded.": "Sorry, the asset (image) could not be loaded.",
"Sorry, image could not be loaded. Try copy image and paste it.": "Sorry, the asset (image) could not be loaded. Try copying the image and pasting it.",
"Sorry, image is too big, max 5 MB.": "Sorry, the asset (image) is too big, max size is 5 MB.",
"Source coordinates saved.": "",
"Source is empty, right click on image or use long press to save source position.": "Sorry, the source is empty, right click on the asset (image) or use a long press to save source position.",
"Sprites": "",
"Square": "",
"Stream:": "",
"Strength:": "",
"Strict": "",
"TINYPNG - Compress PNG and JPEG": "",
"Tab": "",
"Tag Image File Format": "",
"Tahoma": "",
"Target:": "",
"The quick brown fox jumps over the lazy dog.": "",
"Theme": "",
"There": "",
"There are no layers behind.": "",
"There is only 1 layer.": "",
"Thick guides:": "",
"This layer must contain an image. Please convert it to raster to apply this tool.": "Sorry, this layer must contain an asset (image). Please convert it to a raster to apply this tool.",
"Tilt Shift": "",
"Times New Roman": "",
"Toaster": "",
"Toggle": "",
"Toggle Color Channels": "Toggle Colour Channels",
"Toggle Color Picker": "Toggle Colour Picker",
"Toggle Menu": "",
"Toggle Swatches": "",
"Tools": "",
"Top": "",
"Top to Bottom": "",
"Total pixels:": "",
"Translate": "",
"Translate Layer": "",
"Translate error, can not find dictionary:": "Translate error, I can not find the dictionary:",
"Transparency background:": "",
"Transparent:": "",
"Trim": "",
"Trim Layers": "",
"Trim borders:": "",
"Trim layer:": "",
"Trim white color?": "Trim white colour?",
"Type:": "",
"Türkçe": "",
"Undo": "",
"Unique colors:": "Unique colours:",
"Units": "",
"Up": "",
"Update": "",
"Update Brush Layer": "",
"Update Pencil Layer": "",
"Update guides": "",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "You can use Ctrl+V on the keyboard shortcut to paste from the Clipboard.",
"V Radius:": "",
"V. Align:": "",
"Valencia": "",
"Verdana": "",
"Version:": "",
"Vertical": "",
"Vertical Alignment": "",
"Vertical blur:": "",
"Vertical:": "",
"Vibrance": "",
"View": "",
"Vignette": "",
"ViliusL": "",
"Vintage": "",
"Webcam": "",
"Webcam #": "",
"Website:": "",
"Weppy File Format": "",
"Width (%):": "",
"Width:": "",
"Windows Bitmap": "",
"Word": "",
"Word + Letter": "",
"Wrap At:": "",
"Wrap:": "",
"Wrong dimensions": "",
"Wrong file type, must be image or json.": "This is the wrong file type, it must be an asset (image) or json.",
"X end:": "",
"X position:": "",
"X start:": "",
"X-Pro II": "",
"Y end:": "",
"Y position:": "",
"Y start:": "",
"You can also drag and drop items into browser.": "You can also drag and drop assets (items) into browser.",
"Your browser does not support canvas or JavaScript is not enabled.": "",
"Your browser does not support this format.": "",
"Your search did not match any images.": "Your search did not match any assets (images).",
"Zoom": "",
"Zoom Blur": "",
"Zoom In": "",
"Zoom Out": "",
"Zoom blur": "",
"Zoom in": "",
"Zoom out": "",
"Zoom:": ""
}

View File

@ -1,376 +1,535 @@
{
"2d": "2D",
"480p": "480P",
"A problem occurred while removing undo history. It": "删除撤销历史记录时发生问题。它",
"About": "关于",
"Active": "活性",
"Active": "活动",
"Aden": "Aden",
"Advanced": "高级",
"All": "所有",
"Alpha:": "Α",
"All": "全部",
"Alpha": "透明度",
"Alpha:": "透明度:",
"Animation": "动画",
"Anonymous": "匿名",
"Anti aliasing": "消除锯齿",
"Arial": "宋体",
"Anti aliasing": "抗锯齿",
"Application markup may have changed,": "应用标记可能已更改,",
"Arial": "Arial",
"Arrow": "箭头",
"ArrowDown": "向下箭头",
"ArrowLeft": "向左箭头",
"ArrowRight": "向右箭头",
"ArrowUp": "向上箭头",
"Author:": "作者:",
"Auto Adjust Colors": "自动调整颜色",
"Average:": "平均:",
"BMP - Windows Bitmap": "BMP - Windows位图",
"Auto Kerning": "自动紧排",
"Auto select": "自动选择",
"Average:": "平均值:",
"Backspace": "退格键",
"Base": "基础",
"Basic": "基本",
"Black and White": "黑白",
"Black and White": "黑白",
"Blue": "蓝色",
"Blue channel:": "蓝色通道:",
"Blue:": "蓝色:",
"Blueprint": "蓝图",
"Blur": "模糊工具",
"Blur Radius:": "模糊半径:",
"Blur power:": "模糊力量:",
"Blur tool": "模糊工具",
"Bold": "胆大",
"Bold Italic": "加粗斜体",
"Borders": "国界",
"Box Blur": "框模糊",
"Box blur": "框模糊",
"Blur Tool": "模糊工具",
"Blur power:": "模糊强度:",
"Borders": "边框",
"Bottom": "底部",
"Bottom to Top": "从底部到顶部",
"Bounds:": "边界:",
"Box": "方框",
"Box Blur": "方框模糊",
"Box blur": "方框模糊",
"Brightness": "亮度",
"Brightness:": "亮度:",
"Brush": "刷",
"Bulge\/Pinch tool": "凸出\/捏合工具",
"Burn": "烧伤",
"CSS Filters": "CSS过滤器",
"Can not animate 1 layer.": "不能动画1层。",
"Can not find previous layer.": "找不到以前的图层。",
"Brush": "刷子工具",
"Bulge": "凸出",
"Bulge/Pinch Tool": "凸出/收缩工具",
"Burn": "加深",
"Can not animate 1 layer.": "无法对1个图层进行动画。",
"Can not find previous layer.": "找不到上一个图层。",
"Can not use this tool on current layer: image already takes all area.": "无法在当前图层上使用此工具:图像已覆盖整个区域。",
"Cancel": "取消",
"Center": "中央",
"Canvas Size": "画布尺寸",
"Center": "中心",
"Center x:": "中心x",
"Center y:": "中心y",
"Center:": "中央:",
"Channel:": "渠道:",
"Circle": "圈",
"Clear": "明确",
"Clone count:": "克隆数:",
"Clone tool": "克隆工具",
"Cloned edges": "克隆的边缘",
"Color #": "颜色#",
"Center:": "中心:",
"Change Composition": "更改合成",
"Change Layer Details": "更改图层详情",
"Change Opacity": "更改不透明度",
"Channel:": "通道:",
"Circle": "圆圈",
"Clarendon": "Clarendon",
"Clear": "清除",
"Clear Selection": "清除选区",
"Clone": "克隆工具",
"Clone Tool": "克隆工具",
"Clone count:": "克隆数量:",
"Clone tool disabled for resized image. Please rasterize first.": "对已调整大小的图像禁用克隆工具。请先栅格化。",
"Cloned edges": "克隆边缘",
"Close": "关闭",
"Color 1:": "颜色 1",
"Color 2:": "颜色 2",
"Color #": "颜色 #",
"Color Corrections": "颜色校正",
"Color Palette": "颜色调色板",
"Color Zoom": "颜色缩放",
"Color alpha value can not be zero.": "颜色alpha值不能为零。",
"Color Corrections": "颜色更正",
"Color Palette": "调色板",
"Color to Alpha": "颜色到阿尔法",
"Color zoom": "彩色变焦",
"Color alpha value can not be zero.": "颜色的 alpha 值不能为零。",
"Color to Alpha": "颜色转换为透明",
"Color zoom": "颜色缩放",
"Color:": "颜色:",
"Colors": "颜色",
"Colors:": "颜色:",
"Composition": "组成",
"Composition:": "组成:",
"Content Fill": "内容填写",
"Contrast": "对比",
"Contrast:": "对比:",
"Convert to Raster": "转换为光栅",
"Copy Selection": "复制选择",
"Copy:": "复制:",
"Courier": "信使",
"Crop": "作物",
"Ctrl+V": "按Ctrl + V",
"Ctrl-P": "按Ctrl-P",
"Common Filters": "常见滤镜",
"Composition": "合成",
"Composition:": "合成:",
"Content Fill": "内容填充",
"Contiguous": "连续",
"Contrast": "对比度",
"Contrast:": "对比度:",
"Convert layer to raster": "将图层转换为栅格图",
"Convert to Raster": "转换为栅格图",
"Copy Selection": "复制选区",
"Copy to Clipboard": "复制到剪贴板",
"Courier": "Courier",
"Crop": "裁剪工具",
"Crop Tool": "裁剪工具",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "不支持旋转图层上的裁剪。请将其转换为位图以继续。",
"Ctrl + C": "Ctrl + C",
"Ctrl+A": "Ctrl+A",
"Ctrl+C": "Ctrl+C",
"Ctrl+P": "Ctrl+P",
"Ctrl+V": "Ctrl+V",
"Ctrl+Y": "Ctrl+Y",
"Ctrl+Z": "Ctrl+Z",
"Current": "当前",
"Curve": "曲线",
"Custom": "习惯",
"Data URL": "数据网址",
"Data URL:": "数据网址:",
"Decrease Color Depth": "减少颜色深度",
"Default": "默认",
"Degree:": "度:",
"Del": "德尔",
"Current Color Preview": "当前颜色预览",
"Custom": "自定义",
"Data URL": "数据 URL",
"Data URL:": "数据 URL",
"Decrease": "减少",
"Decrease Color Depth": "减少色彩深度",
"Degree:": "角度:",
"Del": "删除",
"Delay:": "延迟:",
"Delete": "删除",
"Delete Selection": "删除选",
"Delete Selection": "删除选",
"Denoise": "降噪",
"Desaturate": "去色",
"Desaturate Tool": "去色工具",
"Description:": "描述:",
"Deutsch": "德语",
"Differences": "差异",
"Differences Down": "差异下降",
"Differences Down": "差异缩小",
"Direction:": "方向:",
"Dither": "抖动",
"Dithering:": "抖动:",
"Dominant color:": "主色:",
"Dot Screen": "点屏幕",
"Down": "下",
"Duplicate": "重复",
"Dominant color:": "主色调:",
"Dot Screen": "点阵",
"Down": "向下",
"Duplicate": "复制",
"Duplicate Layer": "复制图层",
"Duplicate layer": "复制图层",
"Dynamic": "动态",
"Edge": "边缘",
"Edit": "编辑",
"Edit text": "编辑文字",
"Edit text...": "编辑文字...",
"Effects": "效果",
"Email:": "电子邮件:",
"Edit text...": "编辑文本...",
"Effect browser": "特效浏览器",
"Effects": "特效",
"Effects browser": "特效浏览器",
"Email:": "邮箱:",
"Emboss": "浮雕",
"Empty selection": "空的选择",
"Empty selection or type not image.": "空的选择或输入不是图像。",
"Empty selection": "空选区",
"Empty selection or type not image.": "空选区或未输入图像。",
"Enable autoresize:": "启用自动调整大小:",
"End": "结束",
"English": "英语",
"Enrich": "丰富",
"Erase": "抹去",
"Erase on rotate object is disabled. Sorry.": "旋转对象上的擦除被禁用。抱歉。",
"English (UK)": "英语(英国)",
"Enrich": "增强",
"Enter": "输入",
"Erase Tool": "橡皮擦工具",
"Erase on rotate object is disabled. Please rasterize first.": "禁用旋转对象上的橡皮擦。请先栅格化。",
"Error": "错误",
"Error connecting to service.": "连接到服务时出错。",
"Error: can not load image.": "错误:无法加载图像。",
"Error loading the list of fonts from Google.": "加载 Google 字体列表时出错。",
"Error registering service worker": "注册服务工作者时出错",
"Error: can not find filter:": "错误:无法找到滤镜:",
"Error: can not find layer with id:": "错误:无法找到带有 ID 的图层:",
"Error: missing details event target": "错误:缺少详细信息事件目标",
"Error: unknown layer type:": "错误:未知的图层类型:",
"Error: unsupported attribute type:": "错误:不支持的属性类型:",
"Error: wrong key:": "错误:错误的键:",
"Esc": "退出",
"Escape": "逃脱",
"Español": "西班牙语",
"Expand edges": "边缘",
"Expand edges": "展边缘",
"Exponent:": "指数:",
"Export": "导出",
"External": "外部",
"Erase": "橡皮擦工具",
"Factor:": "因子:",
"File": "文件",
"File name:": "文件名:",
"File size:": "文件大小:",
"Fill": "填",
"Fit": "适合",
"Fit Window": "适合的窗口",
"Flatten Image": "拼合图像",
"Flip": "翻动",
"FloydSteinberg-serpentine": "FloydSteinberg蛇形",
"French": "法国",
"Full HD, 1080p": "全高清1080p",
"GIF - Graphics Interchange Format": "GIF - 图形交换格式",
"Gap:": "间隙:",
"Fill": "填充",
"Fill:": "填充:",
"Fill Tool": "填充工具",
"Fit": "适应",
"Fit Window": "适应窗口",
"Fit window": "适应窗口",
"Flatten Image": "图像拉平",
"Flip": "翻转",
"FloydSteinberg-serpentine": "FloydSteinberg-蛇形",
"Font": "字体",
"Font:": "字体:",
"Français": "法语",
"Full HD, 1080p": " 全高清1080p",
"Full Screen": "全屏",
"Full layers data": "全层数据",
"Gap:": "间距:",
"Gaussian Blur": "高斯模糊",
"German": "德语",
"Gif delay:": "Gif延迟",
"GitHub:": "GitHub的",
"Gradient": "梯度",
"Gif delay:": "动图延迟:",
"Gingham": "方格",
"GitHub:": "GitHub",
"Gradient": "渐变工具",
"Gradient Radius:": "渐变半径:",
"Grains": "谷物",
"Grains": "颗粒",
"Graphics Interchange Format": "图形交换格式",
"Gray": "灰色",
"Grayscale": "灰度",
"Greek": "希腊语",
"Green": "绿色",
"Green channel:": "绿色通道:",
"Green:": "绿色:",
"Greyscale:": "灰度:",
"Grid": "格",
"Grid on\/off": "网格开\/关",
"H Radius:": "H半径",
"Heatmap": "热图",
"Height (%):": "身高(%):",
"Grid": "网格",
"Grid on/off": "打开/关闭网格",
"Guides": "参考线",
"Guides enabled.": "参考线已启用。",
"H Radius:": "水平半径:",
"H. Align:": "水平对齐:",
"Heatmap": "热力图",
"Height (%):": "高度(%",
"Height:": "高度:",
"Help": "帮帮我",
"Help": "帮",
"Helvetica": "黑体",
"Hermite": "埃尔米特",
"Hex:": "十六进制:",
"Hermite": "Hermite",
"Hex": "十六进制",
"Hide": "隐藏",
"Histogram": "直方图",
"Histogram:": "柱状图:",
"Horizontal": "横",
"Histogram:": "直方图:",
"Home": "主页",
"Horizontal": "水平",
"Horizontal Alignment": "水平对齐",
"Horizontal blur:": "水平模糊:",
"Horizontal:": "水平:",
"Hue": "色调",
"Hue Rotate": "色调旋转",
"Hue:": "色调:",
"Image": "图片",
"Image data with multi-layers. Can be opened using miniPaint -": "图像数据与多层。可以使用miniPaint打开 -",
"Impact": "碰撞",
"Image data with multi-layers. Can be opened using miniPaint -": "图像数据带有多层。可使用miniPaint打开 -",
"Impact": "影响",
"In proportion:": "按比例:",
"Increase": "增加",
"Information": "信息",
"Insert:": "插:",
"Inkwell": "墨井",
"Insert": "插入",
"Insert guides": "插入参考线",
"Insert new layer": "插入新图层",
"Instagram Filters": "Instagram 滤镜",
"Invalid Hex Code": "无效的十六进制代码",
"Italiano": "意大利语",
"Italic": "斜体",
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG格式",
"JPG, WEBP quality:": "JPGWEBP质量",
"JSON - Full layers data": "JSON - 全层数据",
"Japanese": "日本",
"JPG/JPEG Format": "JPG / JPEG格式",
"Kerning:": "字距:",
"Key-Points": "关键点",
"KeyU": "键 U",
"Keyboard Shortcuts": "键盘快捷键",
"Keyword:": "关键词:",
"Korean": "朝鲜的",
"Keyword:": "关键字:",
"Lanczos": "Lanczos",
"Landscape": "横向",
"Language": "语言",
"Last modified": "上一次更改",
"Layer details": "图层细节",
"Layer is already image.": "图层已经是图像。",
"Layer must be image, convert it to raster to apply this tool.": "图层必须是图像,将其转换为栅格来应用此工具。",
"Last modified": "上次修改",
"Layer": "图层",
"Layer details": "图层详情",
"Layer is empty.": "图层为空。",
"Layer is not compatible with resize": "图层不兼容调整大小",
"Layer is vector, convert it to raster to apply this tool.": "图层为矢量,转换为栅格以应用此工具。",
"Layers": "图层",
"Layers:": "图层:",
"Left": "剩下",
"Level:": "水平:",
"Levels:": "级别:",
"Lietuvių": "立陶宛ų",
"Line": "线",
"Lum:": "绥:",
"Layout:": "布局:",
"Leading:": "行距:",
"Left": "左",
"Left to Right": "左到右",
"Level:": "层级:",
"Levels:": "层级:",
"Lietuvių": "立陶宛语",
"Lo-fi": "低保真",
"Luminance:": "亮度:",
"Magic Wand Tool": "魔术棒工具",
"Merge Down": "合并下来",
"Merged": "合并的",
"Luminosity": "亮度",
"Magic Eraser Tool": "魔术橡皮擦工具",
"Merge Down": "向下合并",
"Merge Layers": "合并图层",
"Merged": "已合并",
"Metrics": "指标",
"Middle": "居中",
"Missing at least 1 size parameter.": "至少缺少1个尺寸参数。",
"Missing permissions to write to Clipboard.cc": "缺少写入Clipboard.cc的权限",
"Mode:": "模式:",
"Module function not found.": "找不到模块功能。",
"Modules class not found:": "找不到模块类:",
"Mosaic": "镶嵌",
"Mouse:": "坐标:",
"Module function not found.": "未找到模块功能。",
"Modules class not found:": "未找到模块类:",
"Monospace": "等宽字体",
"Mosaic": "马赛克",
"Mouse:": "鼠标:",
"Move": "移动",
"Move down": "下移",
"Move up": "提升",
"Move Layer": "移动图层",
"Move layer down": "向下移动图层",
"Move layer up": "向上移动图层",
"Name:": "名称:",
"Needs at least 2 layers.": "至少需要2层。",
"Negative": "负",
"New": "新",
"New file": "新文件",
"New from Selection": "新的选择",
"New layer": "新的图层",
"New width can not be smaller then current width": "新的宽度不能小于当前的宽度",
"Normal": "正常",
"Nothing is selected.": "没有选择。",
"Offset X:": "偏移量X",
"Offset Y:": "偏移Y",
"Oil": "油",
"Ok": "好",
"Negative": "负片",
"New": "新建",
"New Bezier Layer": "新贝塞尔曲线图层",
"New Brush Layer": "新画笔图层",
"New Ellipse Layer": "新椭圆图层",
"New File": "新建文件",
"New Gradient Layer": "新渐变图层",
"New Layer": "新建图层",
"New Line Layer": "新线条图层",
"New Pencil Layer": "新铅笔图层",
"New Polygon Layer": "新多边形图层",
"New Rectangle Layer": "新矩形图层",
"New Text Layer": "新文本图层",
"New file": "新建文件",
"New from Selection": "从选择新建",
"New layer": "新建图层",
"Next": "下一个",
"Night Vision": "夜视",
"None": "无",
"Nothing is selected.": "未选择任何内容。",
"Offset X:": "X偏移",
"Offset Y:": "Y偏移",
"Oil": "油画",
"Ok": "确定",
"Online image editor.": "在线图像编辑器。",
"Opacity": "不透明度",
"Opacity:": "不透明度:",
"Open": "打开",
"Open Data URL": "打开数据网址",
"Open Data URL": "打开数据URL",
"Open Directory": "打开目录",
"Open File": "打开文件",
"Open File Data URL": "打开数据URL文件",
"Open File URL": "打开文件网址",
"Open File Webcam": "打开网络摄像头文件",
"Open Image": "打开图像",
"Open JSON File": "打开JSON文件",
"Open Test Template": "打开测试模板",
"Open URL": "打开网址",
"Open data URL": "打开数据网址",
"Original Size": "原始尺寸",
"PNG - Portable Network Graphics": "PNG - 便携式网络图形",
"Open data URL": "打开数据URL",
"Open from Webcam": "从摄像头打开",
"Original Size": "原始大小",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - 将图像转换为SVG格式",
"PageDown": "下一页",
"PageUp": "上一页",
"Palette": "调色板",
"Parameter #1:": "参数1",
"Parameter #2:": "参数2",
"Paste": "",
"Pencil": "铅笔",
"Parameter #1:": "参数1",
"Parameter #2:": "参数2",
"Paste": "粘贴",
"Pencil": "铅笔工具",
"Percentage:": "百分比:",
"Pick Color": "选择颜色",
"Pick color": "吸管工具",
"Pixels:": "像素:",
"Play animation": "播放动画",
"Portuguese": "葡萄牙语",
"Placeholder comment for color channels": "颜色通道的占位符注释",
"Placeholder comment for color picker": "颜色选择器的占位符注释",
"Placeholder comment for color swatches": "颜色样本的占位符注释",
"Play": "播放",
"Portable Network Graphics": "便携式网络图形",
"Portrait": "纵向",
"Português": "葡萄牙语",
"Position:": "位置:",
"Power:": "功率:",
"Powred by pixabay.com .": "pixabay.com粉丝。",
"Pre-Blur:": "预模糊:",
"Preview": "预览",
"Previous": "以前",
"Previous layer must be image, convert it to raster to apply this tool.": "上一层必须是图像,将其转换为栅格来应用此工具。",
"Previous": "上一个",
"Previous layer must be image, convert it to raster to apply this tool.": "前一图层必须为图像,将其转换为栅格以应用此工具。",
"Print": "打印",
"Quality:": "质量:",
"Quick Load": "快速加载",
"Quick Save": "快速保存",
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 移除图像背景",
"Radial": "径向",
"Radial gradient": "径向渐变",
"Radius:": "半径:",
"Range:": "范围:",
"Rectangle": "长方形",
"Red": "红",
"Red": "红色",
"Red channel:": "红色通道:",
"Red:": "红:",
"Rename": "改名",
"Redo": "重做",
"Remove all": "移除全部",
"Rename": "重命名",
"Rename Layer": "重命名图层",
"Rendered with errors.": "渲染出现错误。",
"Rendering...": "渲染中...",
"Replace Color": "替换颜色",
"Replace color": "替换颜色",
"Replacement:": "替代:",
"Replacement:": "替",
"Report Issues": "报告问题",
"Resample - Hermite": "重新取样 - Hermite",
"Reset": "重启",
"Reset zoom level": "重置缩放级别",
"Resize": "调整",
"Reset": "重置",
"Resize": "调整大小",
"Resize Boundary": "调整边界",
"Resize Layer": "调整图层大小",
"Resize Layers": "调整图层大小",
"Resize Text Layer": "调整文本图层大小",
"Resized as background": "调整为背景",
"Resolution:": "解析度:",
"Restore Alpha": "恢复阿尔法",
"Right": "对",
"Resized:": "调整大小:",
"Resolution:": "分辨率:",
"Restore Alpha": "恢复透明度",
"Right": "右",
"Right angle:": "直角:",
"Right to Left": "从右到左",
"Rotate": "旋转",
"Rotate is not supported on this type of object. Convert to raster?": "这种类型的对象不支持旋转。转换为光栅?",
"Rotate Layer": "旋转图层",
"Rotate is not supported on this type of object. Convert to raster?": "此类型对象不支持旋转。转换为栅格图?",
"Rotate left": "向左旋转",
"Rotate:": "旋转:",
"Russian": "俄语",
"Sat:": "星期六:",
"Saturate": "饱和",
"Saturation:": "饱和:",
"Save": "保存",
"Ruler": "标尺",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - 压缩和比较图像",
"Saturate": "饱和",
"Saturation": "饱和度",
"Saturation:": "饱和度:",
"Save As": "另存为",
"Save As Data URL": "另存为数据网址",
"Save As Data URL": "另存为数据URL",
"Save as": "另存为",
"Save as type:": "另存为类型:",
"Save layers:": "保存图层:",
"Save resolution:": "保存分辨率:",
"Scaling up is not supported in Hermite, using Lanczos.": "Hermite不支持放大请使用Lanczos。",
"Scroll down": "向下滚动",
"Scroll up": "向上动",
"Scroll up": "向上动",
"Search": "搜索",
"Search Images": "搜索图片",
"Search Images": "搜索图像",
"Search for Font": "搜索字体",
"Search:": "搜索:",
"Select All": "全选",
"Select Text Layer": "选择文本图层",
"Select object tool": "选择对象工具",
"Selected": "选",
"Selection": "选择",
"Selected": "已选择",
"Selection": "选择工具",
"Selection Tool": "选择工具",
"Sensitivity:": "灵敏度:",
"Sepia": "乌贼",
"Separated": "分离",
"Separated (original types)": "分离(原始类型)",
"Sepia": "棕褐色",
"Set Image Size": "设置图像尺寸",
"Settings": "设置",
"Shadow": "阴影",
"Shadow:": "阴影:",
"Sharpen": "削尖",
"Sharpen tool": "锐化工具",
"Shapes": "形状",
"Shapes (H)": "形状 (H)",
"Sharpen": "锐化",
"Sharpen Tool": "锐化工具",
"Sharpen:": "锐化:",
"Show \/ Hide": "显示隐藏",
"Shift + S": "Shift + S",
"Shortcut Key:": "快捷键:",
"Show": "显示",
"Show \/ Hide": "显示 \/ 隐藏",
"Show file size:": "显示文件大小:",
"Simple": "简单",
"Size": "尺寸",
"Size is too big, max": "尺寸太大,最大",
"Size is too big, max": "尺寸太大,最大值为",
"Size:": "尺寸:",
"Skip - layer must be image.": "跳过 - 图层必须是图像。",
"Solarize": "曝光过度",
"Sorry, image could not be loaded. Try copy image and paste it.": "对不起,图片无法加载。尝试复制图像并粘贴。",
"Sorry, image is too big, max 5 MB.": "对不起图片太大最大5 MB。",
"Source is empty, right click on image to save source position.": "源是空的,右键点击图像保存源位置。",
"Sprites": "精灵",
"Square": "广场",
"Solarize": "曝光反转",
"Sorry, cold not load getUserMedia() data:": "抱歉,无法加载 getUserMedia() 数据:",
"Sorry, image could not be loaded.": "抱歉,无法加载图片。",
"Sorry, image could not be loaded. Try copy image and paste it.": "抱歉,图片无法加载。尝试复制图像并粘贴。",
"Sorry, image is too big, max 5 MB.": "抱歉图片太大最大值为5 MB。",
"Source coordinates saved.": "源坐标已保存。",
"Source is empty, right click on image or use long press to save source position.": "源为空,右键单击图像或长按保存源位置。",
"Source layer:": "源图层:",
"Sprites": "图像精灵",
"Square": "正方形",
"Stream:": "流:",
"Strength:": "强度:",
"Strict": "严格",
"Stroke": "行程",
"Stroke:": "行程:",
"Stroke size:": "线条粗细:",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - 压缩PNG和JPEG",
"Tab": "标签",
"Tag Image File Format": "标记图像文件格式",
"Tahoma": "Tahoma",
"Target:": "目标:",
"Text": "文本",
"Text example": "文本示例",
"Text:": "文本:",
"There are no layers behind.": "背后没有层。",
"There is only 1 layer.": "只有1层。",
"Tilt Shift": "倾斜移位",
"Times New Roman": "英语字体格式一种",
"The quick brown fox jumps over the lazy dog.": "敏捷的棕色狐狸跳过了懒狗。",
"There": "那里",
"There are no layers behind.": "背后没有图层。",
"There is only 1 layer.": "只有1个图层。",
"This layer must contain an image. Please convert it to raster to apply this tool.": "此图层必须包含图像。请将其转换为光栅以应用此工具。",
"Tilt Shift": "视角移位",
"Times New Roman": "Times New Roman",
"Toaster": "Toaster",
"Toggle": "切换",
"Toggle Color Channels": "切换颜色通道",
"Toggle Color Picker": "切换颜色选择器",
"Toggle Menu": "切换菜单",
"Toggle Swatches": "切换样本",
"Tools": "工具",
"Tools class not found:": "找不到工具类:",
"Top": "顶部",
"Top to Bottom": "从上到下",
"Total pixels:": "总像素数:",
"Translate": "翻译",
"Translate Layer": "翻译图层",
"Translate error, can not find dictionary:": "翻译错误,找不到字典:",
"Transparency background:": "透明背景:",
"Transparent:": "透明:",
"Trim": "修剪",
"Trim everything:": "修剪一切:",
"Trim layer:": "修剪图层:",
"Trim white color?": "修剪白色的颜色?",
"Turkish": "土耳其",
"Undo": "解开",
"Undo disabled.": "撤消禁用。",
"Undo enabled.": "撤消启用。",
"Undo is not available.": "撤消不可用。",
"Undo levels changed to 1.": "撤消级别更改为1。",
"Undo levels restored to": "撤消级别恢复到",
"Unique colors:": "独特的颜色:",
"Trim": "裁剪",
"Trim Layers": "裁剪图层",
"Trim borders:": "裁剪边框:",
"Trim layer:": "裁剪图层:",
"Trim white color?": "裁剪白色吗?",
"Text": " 文本工具",
"Type:": "类型:",
"Türkçe": "土耳其语",
"Undo": "撤销",
"Unique colors:": "唯一颜色:",
"Up": "向上",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "使用Ctrl + V键盘快捷键从剪贴板粘贴。",
"V Radius:": "V半径",
"Verdana": "宋体",
"Version:": "版:",
"Update": "更新",
"Update Brush Layer": "更新画笔图层",
"Update Pencil Layer": "更新铅笔图层",
"Update guides": "更新指南",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "使用 Ctrl+V 快捷键从剪贴板粘贴。",
"V Radius:": "垂直半径:",
"V. Align:": "垂直对齐:",
"Valencia": "Valencia",
"Verdana": "Verdana",
"Version:": "版本:",
"Vertical": "垂直",
"Vertical blur:": "垂直迷离:",
"Vibrance": "鲜艳",
"Vignette": "小插图",
"Vertical Alignment": "垂直对齐",
"Vertical blur:": "垂直模糊:",
"Vertical:": "垂直:",
"Vibrance": "饱和度",
"View": "视图",
"Vignette": "晕影",
"ViliusL": "ViliusL",
"Vintage": "酿酒",
"Visible:": "可见:",
"WEBP - Weppy File Format": "WEBP - Weppy文件格式",
"Vintage": "复古",
"Webcam": "摄像头",
"Webcam #": "摄像头 #",
"Website:": "网站:",
"Width (%):": "宽度(%):",
"Weppy File Format": "Weppy文件格式",
"Width (%):": "宽度(%",
"Width:": "宽度:",
"Wrong file type, must be image or json.": "错误的文件类型必须是图像或JSON。",
"X end:": "X结束",
"X position:": "X位置",
"X start:": "X开始",
"Y end:": "Y结束",
"Y position:": "Y位置",
"Y start:": "Y开始",
"Windows Bitmap": "Windows位图",
"Word": "词",
"Word + Letter": "词 + 字母",
"Wrap At:": "在此处换行:",
"Wrap:": "自动换行:",
"Wrong dimensions": "尺寸错误",
"Wrong file type, must be image or json.": "文件类型错误必须是图像或JSON。",
"X end:": "X 结束:",
"X position:": "X 位置:",
"X start:": "X 开始:",
"X-Pro II": "X-Pro II",
"Y end:": "Y 结束:",
"Y position:": "Y 位置:",
"Y start:": "Y 开始:",
"You can also drag and drop items into browser.": "您也可以将项目拖放到浏览器中。",
"Your browser does not support canvas or JavaScript is not enabled.": "您的浏览器不支持画布或JavaScript未启用。",
"Your browser does not support this format.": "您的浏览器不支持这种格式。",
"Your search did not match any images.": "您的搜索与任何图片都不匹配。",
"Zoom": "放大",
"Zoom Blur": "变焦模糊",
"Your browser does not support this format.": "您的浏览器不支持格式。",
"Your search did not match any images.": "您的搜索未匹配任何图片。",
"Zoom": "放",
"Zoom Blur": "缩放模糊",
"Zoom In": "放大",
"Zoom Out": "缩小",
"Zoom blur": "变焦模糊",
"Zoom blur": "缩放模糊",
"Zoom in": "放大",
"Zoom out": "缩小",
"Zoom:": ""
}
"Zoom:": "放:"
}

309
src/js/libs/canvastotiff.js Normal file
View File

@ -0,0 +1,309 @@
/*!
canvas-to-tiff version 1.0.0
By Epistemex (c) 2015-2016
www.epistemex.com
MIT License (this header required)
*/
/**
* Static helper object that can convert a CORS-compliant canvas element
* to a 32-bits TIFF file (buffer, Blob and data-URI). The TIFF is by
* default saved in big-endian format with interleaved RGBA data.
*
* @type {{toArrayBuffer: Function, toBlob: Function, toDataURL: Function}}
* @namespace
*/
var CanvasToTIFF = {
/**
* @private
*/
_dly: 9,
/**
* @private
*/
_error: null,
/**
* Add error handler (function) in case of any error
* @param fn
*/
setErrorHandler: function(fn) {
this._error = fn
},
/**
* Convert a canvas element to ArrayBuffer containing a TIFF file
* with support for alpha. The call is asynchronous
* so a callback must be provided.
*
* Note that CORS requirement must be fulfilled.
*
* @param {HTMLCanvasElement} canvas - the canvas element to convert
* @param {function} callback - called when conversion is done. Argument is ArrayBuffer
* @param {object} [options] - an option object
* @param {boolean} [options.littleEndian=false] - set to true to produce a little-endian based TIFF
* @param {number} [options.dpi=96] - DPI for both X and Y directions. Default 96 DPI (PPI).
* @param {number} [options.dpiX=96] - DPI for X directions (overrides options.dpi).
* @param {number} [options.dpiY=96] - DPI for Y directions (overrides options.dpi).
* @static
*/
toArrayBuffer: function(canvas, callback, options) {
options = options || {};
var me = this;
try {
var w = canvas.width,
h = canvas.height,
offset = 0,
iOffset = 258, // todo calc based on offset field length, add to final offset when compiled
//iOffsetPtr,
entries = 0,
offsetList = [],
idfOffset,
sid = "\x63\x61\x6e\x76\x61\x73\x2d\x74\x6f\x2d\x74\x69\x66\x66\x20\x30\x2e\x34\0",
lsb = !!options.littleEndian,
dpiX = +(options.dpiX || options.dpi || 96)|0,
dpiY = +(options.dpiY || options.dpi || 96)|0,
idata = canvas.getContext("2d").getImageData(0, 0, w, h),
length = idata.data.length,
fileLength = iOffset + length,
file = new ArrayBuffer(fileLength),
file8 = new Uint8Array(file),
view = new DataView(file),
pos = 0,
date = new Date(),
dateStr;
// Header
set16(lsb ? 0x4949 : 0x4d4d); // II or MM
set16(42); // magic 42
set32(8); // offset to first IFD
// IFD
addIDF(); // IDF start
addEntry(0xfe, 4, 1, 0); // NewSubfileType
addEntry(0x100, 4, 1, w); // ImageWidth
addEntry(0x101, 4, 1, h); // ImageLength (height)
addEntry(0x102, 3, 4, offset, 8); // BitsPerSample
addEntry(0x103, 3, 1, 1); // Compression
addEntry(0x106, 3, 1, 2); // PhotometricInterpretation: RGB
addEntry(0x111, 4, 1, iOffset, 0); // StripOffsets
addEntry(0x115, 3, 1, 4); // SamplesPerPixel
addEntry(0x117, 4, 1, length); // StripByteCounts
addEntry(0x11a, 5, 1, offset, 8); // XResolution
addEntry(0x11b, 5, 1, offset, 8); // YResolution
addEntry(0x128, 3, 1, 2); // ResolutionUnit: inch
addEntry(0x131, 2, sid.length, offset, getStrLen(sid)); // sid
addEntry(0x132, 2, 0x14, offset, 0x14); // Datetime
addEntry(0x152, 3, 1, 2); // ExtraSamples
endIDF();
// Fields section > long ---------------------------
// BitsPerSample (2x4), 8,8,8,8
set32(0x00080008);
set32(0x00080008);
// StripOffset to bitmap data
//set32(iOffset);
// StripByteCounts
//set32(length);
// XRes PPI
set32(dpiX);
set32(1);
// YRes PPI
set32(dpiY);
set32(1);
// sid
setStr(sid);
// date
dateStr = date.getFullYear() + ":" + pad2(date.getMonth() + 1) + ":" + pad2(date.getDate()) + " ";
dateStr += pad2(date.getHours()) + ":" + pad2(date.getMinutes()) + ":" + pad2(date.getSeconds());
setStr(dateStr);
// Image data here (todo if very large, split into block based copy)
file8.set(idata.data, iOffset);
// make actual async
setTimeout(function() { callback(file) }, me._dly);
}
catch(err) {
if (me._error) me._error(err.toString())
}
function pad2(str) {
str += "";
return str.length === 1 ? "0" + str : str
}
// helper method to move current buffer position
function set16(data) {
view.setUint16(pos, data, lsb);
pos += 2
}
function set32(data) {
view.setUint32(pos, data, lsb);
pos += 4
}
function setStr(str) {
var i = 0;
while(i < str.length) view.setUint8(pos++, str.charCodeAt(i++) & 0xff, lsb);
if (pos & 1) pos++
}
function getStrLen(str) {
var l = str.length;
return l & 1 ? l + 1 : l
}
function addEntry(tag, type, count, value, dltOffset) {
set16(tag);
set16(type);
set32(count);
if (dltOffset) {
//if (tag === 0x111) iOffsetPtr = pos;
//iOffset += dltOffset;
offset += dltOffset;
offsetList.push(pos);
}
if (count === 1 && type === 3 && !dltOffset) {
set16(value);
set16(0); // pad
}
else {
set32(value);
}
entries++
}
function addIDF(offset) {
idfOffset = offset || pos;
pos += 2;
}
function endIDF() {
view.setUint16(idfOffset, entries, lsb);
set32(0);
var delta = 14 + entries * 12; // 14 = offset to IDF (8) + IDF count (2) + end pointer (4)
// compile offsets
for(var i = 0, p, o; i < offsetList.length; i++) {
p = offsetList[i];
o = view.getUint32(p, lsb);
view.setUint32(p, o + delta, lsb);
}
//view.setUint32(iOffsetPtr, iOffset + delta, lsb);
}
},
/**
* Converts a canvas to TIFF file, returns a Blob representing the
* file. This can be used with URL.createObjectURL(). The call is
* asynchronous so a callback must be provided.
*
* Note that CORS requirement must be fulfilled.
*
* @param {HTMLCanvasElement} canvas - the canvas element to convert
* @param {function} callback - called when conversion is done. Argument is a Blob
* @param {object} [options] - an option object - see toArrayBuffer for details
* @static
*/
toBlob: function(canvas, callback, options) {
this.toArrayBuffer(canvas, function(file) {
callback(new Blob([file], {type: "image/tiff"}));
}, options || {});
},
/**
* Converts a canvas to TIFF file, returns an ObjectURL (for Blob)
* representing the file. The call is asynchronous so a callback
* must be provided.
*
* **Important**: To avoid memory-leakage you must revoke the returned
* ObjectURL when no longer needed:
*
* var _URL = self.URL || self.webkitURL || self;
* _URL.revokeObjectURL(url);
*
* Note that CORS requirement must be fulfilled.
*
* @param {HTMLCanvasElement} canvas - the canvas element to convert
* @param {function} callback - called when conversion is done. Argument is a Blob
* @param {object} [options] - an option object - see toArrayBuffer for details
* @static
*/
toObjectURL: function(canvas, callback, options) {
this.toBlob(canvas, function(blob) {
var url = self.URL || self.webkitURL || self;
callback(url.createObjectURL(blob))
}, options || {});
},
/**
* Converts the canvas to a data-URI representing a BMP file. The
* call is asynchronous so a callback must be provided.
*
* Note that CORS requirement must be fulfilled.
*
* @param {HTMLCanvasElement} canvas - the canvas element to convert
* @param {function} callback - called when conversion is done. Argument is an data-URI (string)
* @param {object} [options] - an option object - see toArrayBuffer for details
* @static
*/
toDataURL: function(canvas, callback, options) {
var me = this;
me.toArrayBuffer(canvas, function(file) {
var buffer = new Uint8Array(file),
blockSize = 1<<20,
block = blockSize,
bs = "", base64 = "", i = 0, l = buffer.length;
// This is a necessary step before we can use btoa. We can
// replace this later with a direct byte-buffer to Base-64 routine.
// Will do for now, impacts only with very large bitmaps (in which
// case toBlob should be used).
(function prepBase64() {
while(i < l && block-- > 0) bs += String.fromCharCode(buffer[i++]);
if (i < l) {
block = blockSize;
setTimeout(prepBase64, me._dly);
}
else {
// convert string to Base-64
i = 0;
l = bs.length;
block = 180000; // must be divisible by 3
(function toBase64() {
base64 += btoa(bs.substr(i, block));
i += block;
(i < l)
? setTimeout(toBase64, me._dly)
: callback("data:image/tiff;base64," + base64);
})();
}
})();
}, options || {});
}
};
export default CanvasToTIFF;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -176,7 +176,7 @@ class Helper_class {
for (var i = 0; i < 3; i++)
hex += temp[i] + temp[i];
}
var triplets = /^([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i.exec(hex).slice(1);
var triplets = /^([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i.exec(hex).slice(1);
return {
r: parseInt(triplets[0], 16),
g: parseInt(triplets[1], 16),
@ -422,19 +422,16 @@ class Helper_class {
* JavaScript Number Formatter, author: KPL, KHL
*
* @param {int} n
* @param {int} decPlaces
* @param {string} thouSeparator
* @param {string} decSeparator
* @param {int} maximumFractionDigits
* @returns {string}
*/
number_format(n, decPlaces, thouSeparator, decSeparator) {
var decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces;
var decSeparator = decSeparator == undefined ? "." : decSeparator;
var thouSeparator = thouSeparator == undefined ? "," : thouSeparator;
var sign = n < 0 ? "-" : "";
var i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "";
var j = (j = i.length) > 3 ? j % 3 : 0;
return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : "");
number_format(n, maximumFractionDigits) {
let x = parseFloat(n);
var number = x.toLocaleString('us', {minimumFractionDigits: 0, maximumFractionDigits: maximumFractionDigits});
number = number.replaceAll(',', '');
number = parseFloat(number);
return number;
}
check_input_color_support() {
@ -635,5 +632,86 @@ class Helper_class {
ctx.stroke();
}
/**
* draws control point that is visible on white and black backgrounds.
*
* @param ctx
* @param x
* @param y
* @returns {Path2D}
*/
draw_control_point(ctx, x, y) {
var dx = 0;
var dy = 0;
var block_size = 12 / config.ZOOM;
const wholeLineWidth = 2 / config.ZOOM;
ctx.strokeStyle = "#000000";
ctx.fillStyle = "#ffffff";
ctx.lineWidth = wholeLineWidth;
//create path
const circle = new Path2D();
circle.arc(x + dx * block_size, y + dy * block_size, block_size / 2, 0, 2 * Math.PI);
//draw
ctx.fill(circle);
ctx.stroke(circle);
return circle;
}
/**
* converts internal unit (pixel) to user defined
*
* @param data
* @param type
* @param resolution
* @returns {string|number}
*/
get_user_unit(data, type, resolution){
data = parseFloat(data);
if(type == 'pixels'){
//no conversion
return parseInt(data);
}
else if(type == 'inches'){
return this.number_format(data / resolution, 3);
}
else if(type == 'centimeters'){
return this.number_format(data / resolution * 2.54, 3);
}
else if(type == 'millimetres'){
return this.number_format(data / resolution * 25.4, 3);
}
}
/**
* converts user defined unit to internal (pixels)
*
* @param data
* @param type
* @param resolution
* @returns {number}
*/
get_internal_unit(data, type, resolution){
data = parseFloat(data);
if(type == 'pixels'){
//no conversion
return parseInt(data);
}
else if(type == 'inches'){
return Math.ceil(data * resolution);
}
else if(type == 'centimeters'){
return Math.ceil(data * resolution / 2.54);
}
else if(type == 'millimetres'){
return Math.ceil(data * resolution / 25.4);
}
}
}
export default Helper_class;

View File

@ -41,40 +41,39 @@
import './../../css/popup.css';
import Base_layers_class from './../core/base-layers.js';
import Base_gui_class from './../core/base-gui.js';
import Help_translate_class from './../modules/help/translate.js';
var instance = null;
import Tools_translate_class from './../modules/tools/translate.js';
var template = `
<button type="button" class="close" id="popup_close">&times;</button>
<div id="pretitle_area"></div>
<span class="text_muted right" id="popup_comment"></span>
<h2 class="trn" id="popup_title"></h2>
<div id="dialog_content">
<div id="preview_content"></div>
<div id="params_content"></div>
<button type="button" class="close" data-id="popup_close" title="Close">&times;</button>
<div data-id="pretitle_area"></div>
<span class="text_muted right" data-id="popup_comment"></span>
<h2 class="trn" data-id="popup_title"></h2>
<div class="dialog_content" data-id="dialog_content">
<div data-id="preview_content"></div>
<div data-id="params_content"></div>
</div>
<div class="buttons">
<button type="button" id="popup_ok" class="button trn">Ok</button>
<button type="button" id="popup_cancel" class="button trn">Cancel</button>
<button type="button" data-id="popup_ok" class="button trn">Ok</button>
<button type="button" data-id="popup_cancel" class="button trn">Cancel</button>
</div>
`;
class Dialog_class {
constructor() {
//singleton
if (instance) {
return instance;
if (!window.POP) {
window.POP = this;
}
instance = this;
window.POP = this;
this.previousPOP = null;
this.el = null;
this.eventHandles = [];
this.active = false;
this.title = null;
this.onfinish = false;
this.oncancel = false;
this.preview = false;
this.preview_padding = 0;
this.onload = false;
this.onchange = false;
this.width_mini = 225;
@ -83,15 +82,13 @@ class Dialog_class {
this.parameters = [];
this.Base_layers = new Base_layers_class();
this.Base_gui = new Base_gui_class();
this.Help_translate = new Help_translate_class();
this.Tools_translate = new Tools_translate_class();
this.last_params_hash = '';
this.layer_active_small = document.createElement("canvas");
this.layer_active_small_ctx = this.layer_active_small.getContext("2d");
this.caller = null;
this.resize_clicked = {x: null, y: null}
this.element_offset = {x: null, y: null}
this.set_events();
}
/**
@ -100,6 +97,8 @@ class Dialog_class {
* @param {array} config
*/
show(config) {
this.previousPOP = window.POP;
window.POP = this;
if (this.active == true) {
this.hide();
@ -110,17 +109,22 @@ class Dialog_class {
this.onfinish = config.on_finish || false;
this.oncancel = config.on_cancel || false;
this.preview = config.preview || false;
this.preview_padding = config.preview_padding || 0;
this.onchange = config.on_change || false;
this.onload = config.on_load || false;
this.className = config.className || '';
this.comment = config.comment || '';
//reset position
var target = document.querySelector('#popup');
target.style.top = null;
target.style.left = null;
this.el = document.createElement('div');
this.el.classList = 'popup';
this.el.role = 'dialog';
document.querySelector('#popups').appendChild(this.el);
this.el.style.top = null;
this.el.style.left = null;
this.show_action();
this.set_events();
}
/**
@ -130,15 +134,19 @@ class Dialog_class {
* @returns {undefined}
*/
hide(success) {
window.POP = this.previousPOP;
var params = this.get_params();
if (success === false && this.oncancel) {
this.oncancel(params);
}
document.getElementById("popup").style.display = 'none';
if (this.el && this.el.parentNode) {
this.el.parentNode.removeChild(this.el);
}
this.parameters = [];
this.active = false;
this.preview = false;
this.preview_padding = 0;
this.onload = false;
this.onchange = false;
this.title = null;
@ -146,61 +154,83 @@ class Dialog_class {
this.comment = '';
this.onfinish = false;
this.oncancel = false;
this.remove_events();
}
get_active_instances() {
return document.getElementById('popups').children.length;
}
/* ----------------- private functions ---------------------------------- */
set_events() {
var _this = this;
addEventListener(target, type, listener, options) {
target.addEventListener(type, listener, options);
const handle = {
target, type, listener,
remove() {
target.removeEventListener(type, listener);
}
};
this.eventHandles.push(handle);
}
document.addEventListener('keydown', function (event) {
set_events() {
this.addEventListener(document, 'keydown', (event) => {
var code = event.code;
if (code == "Escape") {
//escape
_this.hide(false);
this.hide(false);
}
}, false);
//register events
document.addEventListener('mousedown', function (event) {
if(event.target != document.querySelector('#popup h2'))
this.addEventListener(document, 'mousedown', (event) => {
if(event.target != this.el.querySelector('h2'))
return;
event.preventDefault();
_this.resize_clicked.x = event.pageX;
_this.resize_clicked.y = event.pageY;
this.resize_clicked.x = event.pageX;
this.resize_clicked.y = event.pageY;
var target = document.querySelector('#popup');
_this.element_offset.x = target.offsetLeft;
_this.element_offset.y = target.offsetTop;
var target = this.el;
this.element_offset.x = target.offsetLeft;
this.element_offset.y = target.offsetTop;
}, false);
document.addEventListener('mousemove', function (event) {
if(_this.resize_clicked.x != null){
var dx = _this.resize_clicked.x - event.pageX;
var dy = _this.resize_clicked.y - event.pageY;
this.addEventListener(document, 'mousemove', (event) => {
if(this.resize_clicked.x != null){
var dx = this.resize_clicked.x - event.pageX;
var dy = this.resize_clicked.y - event.pageY;
var target = document.querySelector('#popup');
target.style.left = (_this.element_offset.x - dx) + "px";
target.style.top = (_this.element_offset.y - dy) + "px";
var target = this.el;
target.style.left = (this.element_offset.x - dx) + "px";
target.style.top = (this.element_offset.y - dy) + "px";
}
}, false);
document.addEventListener('mouseup', function (event) {
if(event.target != document.querySelector('#popup h2'))
this.addEventListener(document, 'mouseup', (event) => {
if(event.target != this.el.querySelector('h2'))
return;
event.preventDefault();
_this.resize_clicked.x = null;
_this.resize_clicked.y = null;
this.resize_clicked.x = null;
this.resize_clicked.y = null;
}, false);
window.addEventListener('resize', function (event) {
var target = document.querySelector('#popup');
this.addEventListener(window, 'resize', (event) => {
var target = this.el;
target.style.top = null;
target.style.left = null;
}, false);
}
remove_events() {
for (let handle of this.eventHandles) {
handle.remove();
}
this.eventHandles = [];
}
onChangeEvent(e) {
var params = this.get_params();
@ -213,11 +243,14 @@ class Dialog_class {
if (this.onchange != false) {
if (this.preview != false) {
var canvas_right = document.getElementById("pop_post");
var canvas_right = this.el.querySelector('[data-id="pop_post"]');
var ctx_right = canvas_right.getContext("2d");
ctx_right.clearRect(0, 0, this.width_mini, this.height_mini);
ctx_right.drawImage(this.layer_active_small, 0, 0, this.width_mini, this.height_mini);
ctx_right.drawImage(this.layer_active_small,
this.preview_padding, this.preview_padding,
this.width_mini - this.preview_padding * 2, this.height_mini - this.preview_padding * 2
);
this.onchange(params, ctx_right, this.width_mini, this.height_mini, canvas_right);
}
@ -255,7 +288,10 @@ class Dialog_class {
get_params() {
var response = {};
var inputs = document.getElementsByTagName('input');
if(this.el == undefined){
return null;
}
var inputs = this.el.querySelectorAll('input');
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].id.substr(0, 9) == 'pop_data_') {
var key = inputs[i].id.substr(9);
@ -284,14 +320,14 @@ class Dialog_class {
}
}
var selects = document.getElementsByTagName('select');
var selects = this.el.querySelectorAll('select');
for (var i = 0; i < selects.length; i++) {
if (selects[i].id.substr(0, 9) == 'pop_data_') {
var key = selects[i].id.substr(9);
response[key] = selects[i].value;
}
}
var textareas = document.getElementsByTagName('textarea');
var textareas = this.el.querySelectorAll('textarea');
for (var i = 0; i < textareas.length; i++) {
if (textareas[i].id.substr(0, 9) == 'pop_data_') {
var key = textareas[i].id.substr(9);
@ -319,17 +355,16 @@ class Dialog_class {
var html_preview_content = '';
var html_params = '';
//preview area
if (this.preview !== false) {
html_preview_content += '<div class="preview_container">';
html_preview_content += '<canvas class="preview_canvas_left" width="' + this.width_mini + '" height="'
+ this.height_mini + '" id="pop_pre"></canvas>';
+ this.height_mini + '" data-id="pop_pre"></canvas>';
html_preview_content += '<div class="canvas_preview_container">';
html_preview_content += ' <canvas class="preview_canvas_post_back" width="' + this.width_mini
+ '" height="' + this.height_mini + '" id="pop_post_back"></canvas>';
+ '" height="' + this.height_mini + '" data-id="pop_post_back"></canvas>';
html_preview_content += ' <canvas class="preview_canvas_post" width="' + this.width_mini + '" height="'
+ this.height_mini + '" id="pop_post"></canvas>';
+ this.height_mini + '" data-id="pop_post"></canvas>';
html_preview_content += '</div>';
html_preview_content += '</div>';
}
@ -337,44 +372,56 @@ class Dialog_class {
//generate params
html_params += this.generateParamsHtml();
document.getElementById("popup").innerHTML = template;
document.getElementById("pretitle_area").innerHTML = html_pretitle_area;
document.getElementById("popup_title").innerHTML = this.title;
document.getElementById("popup_comment").innerHTML = this.comment;
document.getElementById("preview_content").innerHTML = html_preview_content;
document.getElementById("params_content").innerHTML = html_params;
this.el.innerHTML = template;
this.el.querySelector('[data-id="pretitle_area"]').innerHTML = html_pretitle_area;
this.el.querySelector('[data-id="popup_title"]').innerHTML = this.title;
this.el.querySelector('[data-id="popup_comment"]').innerHTML = this.comment;
this.el.querySelector('[data-id="preview_content"]').innerHTML = html_preview_content;
this.el.querySelector('[data-id="params_content"]').innerHTML = html_params;
if (this.onfinish != false) {
document.getElementById("popup_cancel").style.display = '';
this.el.querySelector('[data-id="popup_cancel"]').style.display = '';
}
else {
document.getElementById("popup_cancel").style.display = 'none';
this.el.querySelector('[data-id="popup_cancel"]').style.display = 'none';
}
document.getElementById("popup").style.display = "block";
document.getElementById("popup").className = this.className;
this.el.style.display = "block";
if (this.className) {
this.el.classList.add(this.className);
}
//replace color inputs
this.el.querySelectorAll('input[type="color"]').forEach((colorInput) => {
const id = colorInput.getAttribute('id');
colorInput.removeAttribute('id');
$(colorInput)
.uiColorInput({ inputId: id })
.on('change', (e) => {
this.onChangeEvent(e);
});
});
//events
var _this = this;
document.getElementById('popup_ok').addEventListener('click', function (event) {
_this.save();
this.el.querySelector('[data-id="popup_ok"]').addEventListener('click', (event) => {
this.save();
});
document.getElementById('popup_cancel').addEventListener('click', function (event) {
_this.hide(false);
this.el.querySelector('[data-id="popup_cancel"]').addEventListener('click', (event) => {
this.hide(false);
});
document.getElementById('popup_close').addEventListener('click', function (event) {
_this.hide(false);
this.el.querySelector('[data-id="popup_close"]').addEventListener('click', (event) => {
this.hide(false);
});
var targets = document.querySelectorAll('#popup input');
var targets = this.el.querySelectorAll('input');
for (var i = 0; i < targets.length; i++) {
targets[i].addEventListener('keyup', function (event) {
_this.onkeyup(event);
targets[i].addEventListener('keyup', (event) => {
this.onkeyup(event);
});
}
//onload
if (this.onload) {
var params = this.get_params();
this.onload(params);
this.onload(params, this);
}
//load preview
@ -383,7 +430,7 @@ class Dialog_class {
var canvas = this.Base_layers.convert_layer_to_canvas();
//draw original image
var canvas_left = document.getElementById("pop_pre");
var canvas_left = this.el.querySelector('[data-id="pop_pre"]');
var pop_pre = canvas_left.getContext("2d");
pop_pre.clearRect(0, 0, this.width_mini, this.height_mini);
pop_pre.rect(0, 0, this.width_mini, this.height_mini);
@ -403,13 +450,15 @@ class Dialog_class {
this.layer_active_small_ctx.scale(1, 1);
//draw right background
var canvas_right_back = document.getElementById("pop_post_back").getContext("2d");
var canvas_right_back = this.el.querySelector('[data-id="pop_post_back"]').getContext("2d");
this.draw_background(canvas_right_back, this.width_mini, this.height_mini, 10);
//copy to right side
var canvas_right = document.getElementById("pop_post").getContext("2d");
var canvas_right = this.el.querySelector('[data-id="pop_post"]').getContext("2d");
canvas_right.clearRect(0, 0, this.width_mini, this.height_mini);
canvas_right.drawImage(canvas_left, 0, 0, this.width_mini, this.height_mini);
canvas_right.drawImage(canvas_left,
this.preview_padding, this.preview_padding,
this.width_mini - this.preview_padding * 2, this.height_mini - this.preview_padding * 2);
//prepare temp canvas
this.preview_handler();
@ -417,7 +466,7 @@ class Dialog_class {
//call translation again to translate popup
var lang = this.Base_gui.get_language();
this.Help_translate.translate(lang);
this.Tools_translate.translate(lang);
}
generateParamsHtml() {
@ -452,7 +501,7 @@ class Dialog_class {
//radio
html += '<td class="radios" colspan="2">';
if (parameter.values.length > 2)
html += '<div class="group">';
html += '<div class="group" id="popup-group-' + this.parameters[i].name + '">';
var k = 0;
for (var j in parameter.values) {
var ch = '';
@ -514,20 +563,27 @@ class Dialog_class {
if (parameter.placeholder == undefined)
parameter.placeholder = '';
if (parameter.type == 'textarea') {
//textarea
html += '<td><textarea rows="10" id="pop_data_' + parameter.name
+ '" onchange="POP.onChangeEvent();" placeholder="' + parameter.placeholder + '">'
+ '" onchange="POP.onChangeEvent();" placeholder="' + parameter.placeholder + '" ' + (parameter.prevent_submission ? 'data-prevent-submission=""' : '' ) + '>'
+ parameter.value + '</textarea></td>';
}
else {
//text or number
var input_type = "text";
if (parameter.placeholder != '' && !isNaN(parameter.placeholder))
input_type = 'number';
if (parameter.value != undefined && typeof parameter.value == 'number')
input_type = 'number';
var comment_html = '';
if (typeof parameter.comment !== 'undefined') {
comment_html = '<span class="field_comment trn">' + parameter.comment + '</span>';
}
html += '<td colspan="2"><input type="' + input_type + '" id="pop_data_' + parameter.name
+ '" onchange="POP.onChangeEvent();" value="' + parameter.value + '" placeholder="'
+ parameter.placeholder + '" /></td>';
+ parameter.placeholder + '" ' + (parameter.prevent_submission ? 'data-prevent-submission=""' : '' ) + ' />'+comment_html+'</td>';
}
}
}
@ -565,56 +621,17 @@ class Dialog_class {
return html;
}
//validate input field, unless browser supports input=range
validate(field) {
for (var i in this.parameters) {
var parameter = this.parameters[i];
if ("pop_data_" + parameter.name == field.id && parameter.range != undefined) {
if (field.value == '-' || field.value == '')
return true;
var value = parseFloat(field.value);
if (isNaN(value) || value != field.value)
field.value = parameter.value; //not number
if (value < parameter.range[0])
field.value = parameter.range[0]; //less then min
else if (value > parameter.range[1])
field.value = parameter.range[1]; //more then max
}
}
}
//on key press inside input text
onkeyup(event) {
if (event.keyCode == "13") {
//Enter was pressed
this.save();
if (event.key == 'Enter') {
if (event.target.hasAttribute('data-prevent-submission')) {
event.preventDefault();
} else {
this.save();
}
}
}
get_dimensions() {
var theWidth, theHeight;
if (window.innerWidth) {
theWidth = window.innerWidth;
}
else if (document.documentElement && document.documentElement.clientWidth) {
theWidth = document.documentElement.clientWidth;
}
else if (document.body) {
theWidth = document.body.clientWidth;
}
if (window.innerHeight) {
theHeight = window.innerHeight;
}
else if (document.documentElement && document.documentElement.clientHeight) {
theHeight = document.documentElement.clientHeight;
}
else if (document.body) {
theHeight = document.body.clientHeight;
}
return [theWidth, theHeight];
}
getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}

View File

@ -19,6 +19,7 @@ import Base_gui_class from './core/base-gui.js';
import Base_layers_class from './core/base-layers.js';
import Base_tools_class from './core/base-tools.js';
import Base_state_class from './core/base-state.js';
import Base_search_class from './core/base-search.js';
import File_open_class from './modules/file/open.js';
import File_save_class from './modules/file/save.js';
import * as Actions from './actions/index.js';
@ -31,6 +32,7 @@ window.addEventListener('load', function (e) {
var Base_state = new Base_state_class();
var File_open = new File_open_class();
var File_save = new File_save_class();
var Base_search = new Base_search_class();
// Register singletons in app module
app.Actions = Actions;
@ -50,9 +52,6 @@ window.addEventListener('load', function (e) {
window.FileSave = File_save;
// Render all
GUI.load_modules();
GUI.load_default_values();
GUI.render_main_gui();
GUI.init();
Layers.init();
}, false);

View File

@ -12,7 +12,7 @@ class Edit_selection_class {
select_all() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}
this.Selection.select_all();

View File

@ -1,9 +1,26 @@
import Base_state_class from './../../core/base-state.js';
var instance = null;
class Edit_undo_class {
constructor() {
//singleton
if (instance) {
return instance;
}
instance = this;
this.Base_state = new Base_state_class();
this.events();
}
events(){
var _this = this;
document.querySelector('#undo_button').addEventListener('click', function (event) {
_this.Base_state.undo();
});
}
undo() {

View File

@ -13,36 +13,51 @@ class Effects_common_class {
this.params = null;
}
show_dialog(type, params) {
show_dialog(type, params, filter_id) {
var _this = this;
var title = this.Helper.ucfirst(type);
title = title.replace(/-/g, ' ');
var preview_padding = 0;
if(typeof this.preview_padding != "undefined"){
preview_padding = this.preview_padding;
}
var settings = {
title: title,
preview: true,
preview_padding: preview_padding,
effects: true,
params: params,
on_change: function (params, canvas_preview, w, h) {
_this.params = params;
canvas_preview.filter = _this.preview(params, type);
canvas_preview.drawImage(this.layer_active_small, 0, 0);
canvas_preview.drawImage(this.layer_active_small,
preview_padding, preview_padding,
_this.POP.width_mini - preview_padding * 2, _this.POP.height_mini - preview_padding * 2
);
},
on_finish: function (params) {
_this.params = params;
_this.save(params, type);
_this.save(params, type, filter_id);
},
};
this.Base_layers.disable_filter(filter_id);
this.POP.show(settings);
this.Base_layers.disable_filter(null);
}
save(params, type) {
save(params, type, filter_id) {
return app.State.do_action(
new app.Actions.Add_layer_filter_action(null, type, params)
new app.Actions.Add_layer_filter_action(null, type, params, filter_id)
);
}
preview(params, type) {
if(type == 'shadow'){
type = 'drop-shadow';
}
var value = this.convert_value(params.value, params, 'preview');
return type + "(" + value + ")";
}

View File

@ -17,7 +17,7 @@ class Effects_backAndWhite_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -17,7 +17,7 @@ class Effects_blueprint_class {
blueprint() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -0,0 +1,107 @@
import app from './../../app.js';
import config from './../../config.js';
import Base_layers_class from './../../core/base-layers.js';
import Dialog_class from './../../libs/popup.js';
import alertify from './../../../../node_modules/alertifyjs/build/alertify.min.js';
import Effects_browser_class from "./browser";
class Effects_borders_class {
constructor() {
this.POP = new Dialog_class();
this.Base_layers = new Base_layers_class();
this.Effects_browser = new Effects_browser_class();
}
borders(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var _this = this;
var filter = this.Base_layers.find_filter_by_id(filter_id, 'borders');
var settings = {
title: 'Borders',
params: [
{name: "color", title: "Color:", value: filter.color ??= config.COLOR, type: 'color'},
{name: "size", title: "Size:", value: filter.size ??= 10},
],
on_finish: function (params) {
var target = Math.min(config.WIDTH, config.HEIGHT);
_this.add_borders(params, filter_id);
},
};
var rotate = config.layer.rotate;
config.layer.rotate = 0;
this.Base_layers.disable_filter(filter_id);
this.POP.show(settings);
config.layer.rotate = rotate;
this.Base_layers.disable_filter(null);
}
demo(canvas_id, canvas_thumb){
var canvas = document.getElementById(canvas_id);
var ctx = canvas.getContext("2d");
//draw
ctx.drawImage(canvas_thumb,
5, 5,
this.Effects_browser.preview_width - 10, this.Effects_browser.preview_height - 10);
//add borders
ctx.strokeStyle = '#000000';
ctx.lineWidth = 10;
ctx.beginPath();
ctx.rect(0, 0, canvas.width, canvas.height);
ctx.stroke();
}
render_pre(ctx, data) {
}
render_post(ctx, data, layer){
var size = Math.max(0, data.params.size);
var x = layer.x;
var y = layer.y;
var width = parseInt(layer.width);
var height = parseInt(layer.height);
//legacy check
if(x == null) x = 0;
if(y == null) y = 0;
if(!width) width = config.WIDTH;
if(!height) height = config.HEIGHT;
ctx.save();
//set styles
ctx.strokeStyle = data.params.color;
ctx.lineWidth = size;
//draw with rotation support
ctx.translate(layer.x + width / 2, layer.y + height / 2);
ctx.rotate(layer.rotate * Math.PI / 180);
var x_new = -width / 2;
var y_new = -height / 2;
ctx.beginPath();
ctx.rect(x_new - size * 0.5, y_new - size * 0.5, width + size, height + size);
ctx.stroke();
ctx.restore();
}
add_borders(params, filter_id) {
//apply effect
return app.State.do_action(
new app.Actions.Add_layer_filter_action(config.layer.id, 'borders', params, filter_id)
);
}
}
export default Effects_borders_class;

View File

@ -16,7 +16,7 @@ class Effects_boxBlur_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -17,7 +17,7 @@ class Effects_browser_class extends Base_tools_class {
var html = '';
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}
@ -40,13 +40,13 @@ class Effects_browser_class extends Base_tools_class {
var settings = {
title: 'Effects browser',
className: 'wide',
on_load: function (params) {
on_load: function (params, popup) {
var node = document.createElement("div");
node.classList.add('flex-container');
node.innerHTML = html;
document.querySelector('#popup #dialog_content').appendChild(node);
popup.el.querySelector('.dialog_content').appendChild(node);
//events
var targets = document.querySelectorAll('#popup .item canvas');
var targets = popup.el.querySelectorAll('.item canvas');
for (var i = 0; i < targets.length; i++) {
targets[i].addEventListener('click', function (event) {
//we have click
@ -130,7 +130,10 @@ class Effects_browser_class extends Base_tools_class {
get_function_from_path(path){
var parts = path.split("/");
return parts[parts.length - 1];
var result = parts[parts.length - 1];
result = result.replace(/-/, '_');
return result;
}
}

View File

@ -1,19 +1,29 @@
import config from '../../../config.js';
import Effects_common_class from '../abstract/css.js';
import Dialog_class from '../../../libs/popup.js';
import Base_layers_class from './../../../core/base-layers.js';
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_blur_class extends Effects_common_class {
constructor() {
super();
this.POP = new Dialog_class();
this.Base_layers = new Base_layers_class();
}
blur() {
blur(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'blur');
var params = [
{name: "value", title: "Percentage:", value: 5, range: [0, 50]},
{name: "value", title: "Percentage:", value: filter.value ??= 5, range: [0, 50]},
];
this.show_dialog('blur', params);
this.show_dialog('blur', params, filter_id);
}
convert_value(value, params, type) {
@ -25,7 +35,7 @@ class Effects_blur_class extends Effects_common_class {
value = value * diff;
}
return (value * config.ZOOM) + 'px';
return value + 'px';
}
demo(canvas_id, canvas_thumb){

View File

@ -1,12 +1,26 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_brightness_class extends Effects_common_class {
brightness() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
brightness(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'brightness');
var params = [
{name: "value", title: "Percentage:", value: 50, range: [-100, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= 50, range: [-100, 100]},
];
this.show_dialog('brightness', params);
this.show_dialog('brightness', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_contrast_class extends Effects_common_class {
contrast() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
contrast(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'contrast');
var params = [
{name: "value", title: "Percentage:", value: 40, range: [-100, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= 40, range: [-100, 100]},
];
this.show_dialog('contrast', params);
this.show_dialog('contrast', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_grayscale_class extends Effects_common_class {
grayscale() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
grayscale(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'grayscale');
var params = [
{name: "value", title: "Percentage:", value: 100, range: [0, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= 100, range: [0, 100]},
];
this.show_dialog('grayscale', params);
this.show_dialog('grayscale', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_hueRotate_class extends Effects_common_class {
hue_rotate() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
hue_rotate(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'hue-rotate');
var params = [
{name: "value", title: "Degree:", value: 90, range: [0, 360]},
{name: "value", title: "Degree:", value: filter.value ??= 90, range: [0, 360]},
];
this.show_dialog('hue-rotate', params);
this.show_dialog('hue-rotate', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_invert_class extends Effects_common_class {
invert() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
invert(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'invert');
var params = [
{name: "value", title: "Percentage:", value: 100, range: [0, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= 100, range: [0, 100]},
];
this.show_dialog('invert', params);
this.show_dialog('invert', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_saturate_class extends Effects_common_class {
saturate() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
saturate(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'saturate');
var params = [
{name: "value", title: "Percentage:", value: -50, range: [-100, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= -50, range: [-100, 100]},
];
this.show_dialog('saturate', params);
this.show_dialog('saturate', params, filter_id);
}
convert_value(value) {

View File

@ -1,12 +1,27 @@
import Effects_common_class from '../abstract/css.js';
import Base_layers_class from './../../../core/base-layers.js';
import config from "../../../config";
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_sepia_class extends Effects_common_class {
sepia() {
constructor() {
super();
this.Base_layers = new Base_layers_class();
}
sepia(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'sepia');
var params = [
{name: "value", title: "Percentage:", value: 60, range: [0, 100]},
{name: "value", title: "Percentage:", value: filter.value ??= 60, range: [0, 100]},
];
this.show_dialog('sepia', params);
this.show_dialog('sepia', params, filter_id);
}
convert_value(value) {

View File

@ -1,22 +1,35 @@
import config from '../../../config.js';
import Effects_common_class from '../abstract/css.js';
import Dialog_class from '../../../libs/popup.js';
import Effects_browser_class from '../browser.js';
import Base_layers_class from './../../../core/base-layers.js';
import alertify from './../../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_brightness_class extends Effects_common_class {
constructor() {
super();
this.POP = new Dialog_class();
this.Effects_browser = new Effects_browser_class();
this.Base_layers = new Base_layers_class();
this.preview_padding = 20;
}
shadow() {
shadow(filter_id) {
if (config.layer.type == null) {
alertify.error('Layer is empty.');
return;
}
var filter = this.Base_layers.find_filter_by_id(filter_id, 'shadow');
var params = [
{name: "x", title: "Offset X:", value: 10, range: [-100, 100]},
{name: "y", title: "Offset Y:", value: 10, range: [-100, 100]},
{name: "value", title: "Radius:", value: 5, range: [0, 100]},
{name: "color", title: "Color:", value: "#000000", type: 'color'},
{name: "x", title: "Offset X:", value: filter.x ??= 10, range: [-100, 100]},
{name: "y", title: "Offset Y:", value: filter.y ??= 10, range: [-100, 100]},
{name: "value", title: "Radius:", value: filter.value ??= 5, range: [0, 100]},
{name: "color", title: "Color:", value: filter.color ??= "#000000", type: 'color'},
];
this.show_dialog('shadow', params);
this.show_dialog('shadow', params, filter_id);
}
convert_value(value, params, type) {
@ -31,8 +44,7 @@ class Effects_brightness_class extends Effects_common_class {
params.value = params.value * diff;
}
return (params.x * config.ZOOM) + "px " + (params.y * config.ZOOM) + "px " + (params.value * config.ZOOM) + "px "
+ params.color;
return params.x + "px " + params.y + "px " + params.value + "px " + params.color;
}
demo(canvas_id, canvas_thumb){
@ -42,7 +54,9 @@ class Effects_brightness_class extends Effects_common_class {
//draw
var size = this.convert_value(null, {x: 5, y: 5, value: 5, color: '#000000'}, 'preview');
ctx.filter = "drop-shadow("+size+")";
ctx.drawImage(canvas_thumb, 0, 0);
ctx.drawImage(canvas_thumb,
10, 10,
this.Effects_browser.preview_width - 20, this.Effects_browser.preview_height - 20);
ctx.filter = 'none';
}

View File

@ -17,7 +17,7 @@ class Effects_denoise_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -16,7 +16,7 @@ class Effects_dither_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -17,7 +17,7 @@ class Effects_dotScreen_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -14,7 +14,7 @@ class Effects_edge_class {
edge() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -14,7 +14,7 @@ class Effects_emboss_class {
emboss() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -16,7 +16,7 @@ class Effects_enrich_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -17,7 +17,7 @@ class Effects_grains_class {
var _this = this;
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -13,7 +13,7 @@ class Effects_heatmap_class {
heatmap() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -14,7 +14,7 @@ class Effects_1977_class {
1977() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -1,4 +1,5 @@
import app from '../../../app.js';
import config from '../../../config.js';
import Dialog_class from '../../../libs/popup.js';
import Base_layers_class from '../../../core/base-layers.js';
import alertify from 'alertifyjs/build/alertify.min.js';
@ -12,7 +13,7 @@ class Effects_aden_class {
aden() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -14,7 +14,7 @@ class Effects_clarendon_class {
clarendon() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

View File

@ -13,7 +13,7 @@ class Effects_gingham_class {
gingham() {
if (config.layer.type != 'image') {
alertify.error('Layer must be image, convert it to raster to apply this tool.');
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}

Some files were not shown because too many files have changed in this diff Show More