mirror of
https://github.com/viliusle/miniPaint.git
synced 2026-02-06 19:46:48 +00:00
Compare commits
137 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f4ca0c96c | ||
|
|
6d0b95e50c | ||
|
|
c48593190f | ||
|
|
054d89cccd | ||
|
|
d32e925125 | ||
|
|
352a231973 | ||
|
|
e38f1040c0 | ||
|
|
faf9a2afc4 | ||
|
|
c47dcbf6e5 | ||
|
|
96d9e12017 | ||
|
|
9e57e09371 | ||
|
|
2ba14fe4ef | ||
|
|
df0f259172 | ||
|
|
f4aba673d4 | ||
|
|
7c2c056642 | ||
|
|
f22cb46515 | ||
|
|
1fce319dc9 | ||
|
|
1fed01dde0 | ||
|
|
1e11f8d590 | ||
|
|
b34b031f3d | ||
|
|
85e850b40d | ||
|
|
cf894ac34a | ||
|
|
79c79ca4a5 | ||
|
|
95b496c480 | ||
|
|
1032804da4 | ||
|
|
8189d9c4a6 | ||
|
|
153134809b | ||
|
|
b3cb94e7bd | ||
|
|
dcc3d08d33 | ||
|
|
8f255597e4 | ||
|
|
eff3ce5894 | ||
|
|
cef7e6f79c | ||
|
|
48bda1d41f | ||
|
|
53d3ef7f83 | ||
|
|
7ca23d9e07 | ||
|
|
d36fbadd86 | ||
|
|
9522fd4343 | ||
|
|
7b8ad8b6ac | ||
|
|
9dd908c390 | ||
|
|
e5af391390 | ||
|
|
39f8d5ed52 | ||
|
|
b71c64b227 | ||
|
|
e5022921e2 | ||
|
|
f5f79d055f | ||
|
|
69b08a1326 | ||
|
|
bf0b62e6c5 | ||
|
|
f9015fe58d | ||
|
|
736aea47e2 | ||
|
|
b424482e4d | ||
|
|
35acc344a8 | ||
|
|
fe020842b0 | ||
|
|
0bc28fcbc4 | ||
|
|
abc3704c9a | ||
|
|
ee7d8325cd | ||
|
|
790c1e100e | ||
|
|
f1eb954087 | ||
|
|
b9693d21db | ||
|
|
ddf97ca4c4 | ||
|
|
62ca359776 | ||
|
|
bbb17d5dc3 | ||
|
|
fc0ccf3fa7 | ||
|
|
3df83776c7 | ||
|
|
5350803089 | ||
|
|
b3ca4dbd49 | ||
|
|
92975b2dca | ||
|
|
59f80c16bc | ||
|
|
342086f3f0 | ||
|
|
a72e3f12a3 | ||
|
|
ce570658f7 | ||
|
|
1a9ea280e4 | ||
|
|
b249e2b70b | ||
|
|
ec27681450 | ||
|
|
caf9f03f1a | ||
|
|
9556235502 | ||
|
|
797f946aa8 | ||
|
|
885a162558 | ||
|
|
7e75b4c353 | ||
|
|
f1be2f3145 | ||
|
|
81afb22a39 | ||
|
|
0855adb797 | ||
|
|
7c5b8101e6 | ||
|
|
dae340d0ea | ||
|
|
7d54a2d73e | ||
|
|
a596d2e59b | ||
|
|
e37651a4d9 | ||
|
|
35adb236ad | ||
|
|
b9ab37497a | ||
|
|
7b1fac9fb5 | ||
|
|
170124f041 | ||
|
|
e8c784e2bd | ||
|
|
ff82f90435 | ||
|
|
db8d0af14f | ||
|
|
2fa0c079e9 | ||
|
|
5f32f3797e | ||
|
|
e2a7446725 | ||
|
|
82f641631b | ||
|
|
70938e3452 | ||
|
|
7cc20aaaa6 | ||
|
|
72647e4d0a | ||
|
|
46928a2b18 | ||
|
|
877d35ebfb | ||
|
|
0ea34e8997 | ||
|
|
5658ae0684 | ||
|
|
45103ef618 | ||
|
|
4c6204224d | ||
|
|
d71629e49a | ||
|
|
c2aa4594e3 | ||
|
|
f1e512ae2f | ||
|
|
d23b5e83fb | ||
|
|
ee53f86e83 | ||
|
|
c07d9f8c9f | ||
|
|
2c4717a9f9 | ||
|
|
68b6835c54 | ||
|
|
1951006cf9 | ||
|
|
e32e7d6a6e | ||
|
|
076ceae74e | ||
|
|
aa48644325 | ||
|
|
c9f93538df | ||
|
|
47dbbea3bc | ||
|
|
ae900ac17e | ||
|
|
dde4ab4f26 | ||
|
|
e062b421da | ||
|
|
5d489738f6 | ||
|
|
e6923445dc | ||
|
|
497b0054a5 | ||
|
|
a6e52102d2 | ||
|
|
6b22b1f80b | ||
|
|
c720c768bc | ||
|
|
8b8aa3cd38 | ||
|
|
b528b5d9d2 | ||
|
|
12e2e37a8a | ||
|
|
cd2bd75804 | ||
|
|
997089d506 | ||
|
|
fa6d7b69c7 | ||
|
|
b7a8e5eb9a | ||
|
|
28671d130c | ||
|
|
baba50ab7c |
46
README.md
46
README.md
@ -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, TIFF, 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/" allow="camera"></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
15
SECURITY.md
Normal 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
|
||||
3
dist/bundle.js
vendored
3
dist/bundle.js
vendored
File diff suppressed because one or more lines are too long
20
dist/bundle.js.LICENSE.txt
vendored
20
dist/bundle.js.LICENSE.txt
vendored
@ -19,28 +19,14 @@ https://github.com/nodeca/pica
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.6
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2021-02-16
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.6.0
|
||||
* jQuery JavaScript Library v3.7.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2021-03-02T17:08Z
|
||||
* Date: 2023-08-28T13:37Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
@ -51,6 +37,8 @@ https://github.com/nodeca/pica
|
||||
|
||||
/*! 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
|
||||
|
||||
5
images/icons/arrow-down.svg
Normal file
5
images/icons/arrow-down.svg
Normal 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 |
@ -68,7 +68,7 @@
|
||||
"opacity": 100,
|
||||
"order": 2,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": null,
|
||||
"params": {
|
||||
"size": 45,
|
||||
@ -124,7 +124,7 @@
|
||||
"opacity": 100,
|
||||
"order": 3,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": null,
|
||||
"params": {
|
||||
"size": 30,
|
||||
@ -180,7 +180,7 @@
|
||||
"opacity": 100,
|
||||
"order": 4,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": [
|
||||
[
|
||||
{
|
||||
@ -351,7 +351,7 @@
|
||||
"opacity": 100,
|
||||
"order": 5,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": [
|
||||
[
|
||||
{
|
||||
@ -399,7 +399,7 @@
|
||||
"opacity": 100,
|
||||
"order": 6,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": [
|
||||
[
|
||||
{
|
||||
@ -447,7 +447,7 @@
|
||||
"opacity": 100,
|
||||
"order": 7,
|
||||
"composition": "source-over",
|
||||
"rotate": null,
|
||||
"rotate": 0,
|
||||
"data": [
|
||||
[
|
||||
{
|
||||
@ -1605,7 +1605,9 @@
|
||||
"composition": "source-over",
|
||||
"rotate": 0,
|
||||
"data": null,
|
||||
"params": {},
|
||||
"params": {
|
||||
"fill_color": "#555555"
|
||||
},
|
||||
"status": null,
|
||||
"color": null,
|
||||
"filters": [],
|
||||
@ -1718,6 +1720,84 @@
|
||||
"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": [
|
||||
|
||||
@ -8,7 +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="manifest.json"> -->
|
||||
<!-- <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..." />
|
||||
@ -81,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">
|
||||
|
||||
@ -8,9 +8,9 @@
|
||||
"description": "miniPaint is free online image editor using HTML5.",
|
||||
"icons": [
|
||||
{
|
||||
"src": "images/manifest/48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
"src": "images/manifest/48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/72x72.png",
|
||||
|
||||
11652
package-lock.json
generated
11652
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "miniPaint",
|
||||
"version": "4.8.0",
|
||||
"version": "4.14.2",
|
||||
"author": "Vilius L.",
|
||||
"description": "Online graphics editing tool lets create, edit images using HTML5 technologies.",
|
||||
"keywords": [
|
||||
@ -29,9 +29,9 @@
|
||||
"css-loader": "^5.2.6",
|
||||
"source-map-loader": "^3.0.0",
|
||||
"style-loader": "^2.0.0",
|
||||
"webpack": "^5.38.1",
|
||||
"webpack": "^5.76.0",
|
||||
"webpack-cli": "^4.7.2",
|
||||
"webpack-dev-server": "^3.11.2"
|
||||
"webpack-dev-server": "^4.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.14.5",
|
||||
@ -39,10 +39,12 @@
|
||||
"blueimp-canvas-to-blob": "^3.28.0",
|
||||
"exif-js": "^2.3.0",
|
||||
"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": "^7.0.0",
|
||||
"semver-compare": "^1.0.0",
|
||||
"uuid": "^8.3.2",
|
||||
"webfontloader": "^1.6.28"
|
||||
}
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
|
||||
//IMPORTANT - this file is not used !!!
|
||||
|
||||
|
||||
// use a cacheName for cache versioning
|
||||
var cacheName = 'v1:static';
|
||||
|
||||
|
||||
@ -709,3 +709,24 @@ button img{
|
||||
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;
|
||||
}
|
||||
@ -300,7 +300,7 @@ body .sp-preview{
|
||||
}
|
||||
|
||||
/*
|
||||
IMPORTANT: any new icon should also must be added on /service-worker.js + its version should be updated !!!
|
||||
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'); }
|
||||
@ -362,6 +362,9 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
.canvas_preview_details{
|
||||
padding: 0 5px;
|
||||
}
|
||||
.canvas_preview_details button{
|
||||
margin: 0;
|
||||
}
|
||||
.preview canvas{
|
||||
cursor: pointer;
|
||||
}
|
||||
@ -396,6 +399,7 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
.layer_add{
|
||||
display:inline-block;
|
||||
padding:1px 8px;
|
||||
margin-right: 10px;
|
||||
background-color: #419147;
|
||||
background-color: var(--background-color-active);
|
||||
border:1px solid #444;
|
||||
@ -411,6 +415,8 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
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);
|
||||
@ -423,10 +429,32 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
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;
|
||||
@ -436,6 +464,9 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
width:20px;
|
||||
height:19px;
|
||||
opacity:0.1;
|
||||
border: none;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.layers_list .visibility:after{
|
||||
position: absolute;
|
||||
@ -456,8 +487,10 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
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{
|
||||
@ -481,22 +514,36 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
}
|
||||
.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);
|
||||
@ -506,6 +553,8 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
.block.details button.reset{
|
||||
position: relative;
|
||||
width: 25px;
|
||||
float: right;
|
||||
margin-right: 3px;
|
||||
overflow: hidden;
|
||||
opacity: 0.5;
|
||||
color: transparent;
|
||||
@ -525,6 +574,10 @@ IMPORTANT: any new icon should also must be added on /service-worker.js + its ve
|
||||
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{
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -663,6 +663,11 @@ const menuDefinition = [
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'de',
|
||||
},
|
||||
{
|
||||
name: 'Dutch',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'nl',
|
||||
},
|
||||
{
|
||||
name: 'English (UK)',
|
||||
target: 'tools/translate.translate',
|
||||
@ -722,6 +727,12 @@ const menuDefinition = [
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Search',
|
||||
shortcut: 'F3',
|
||||
ellipsis: true,
|
||||
target: 'tools/search.search'
|
||||
},
|
||||
{
|
||||
name: 'Settings',
|
||||
ellipsis: true,
|
||||
@ -746,6 +757,7 @@ const menuDefinition = [
|
||||
},
|
||||
{
|
||||
name: 'About',
|
||||
ellipsis: true,
|
||||
target: 'help/about.about'
|
||||
}
|
||||
]
|
||||
|
||||
@ -21,6 +21,7 @@ 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.
|
||||
};
|
||||
@ -28,6 +29,7 @@ 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 = [
|
||||
@ -99,6 +101,10 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'pencil',
|
||||
attributes: {
|
||||
size: 1,
|
||||
pressure: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'pick_color',
|
||||
@ -284,18 +290,8 @@ config.TOOLS = [
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'star24',
|
||||
title: '24-Points star',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
corners: 5,
|
||||
inner_radius: 40,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
@ -348,7 +344,16 @@ config.TOOLS = [
|
||||
{
|
||||
name: 'cog',
|
||||
visible: false,
|
||||
attributes: {},
|
||||
attributes: {
|
||||
fill_color: '#555555',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'bezier_curve',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 4,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'moon',
|
||||
@ -489,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
|
||||
|
||||
@ -222,6 +222,10 @@ class Base_gui_class {
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
|
||||
document.getElementById('canvas_minipaint').addEventListener('contextmenu', function (e) {
|
||||
e.preventDefault();
|
||||
}, false);
|
||||
}
|
||||
|
||||
check_canvas_offset() {
|
||||
@ -475,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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,15 +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 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';
|
||||
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;
|
||||
|
||||
@ -43,7 +43,6 @@ var instance = null;
|
||||
* - render_function (function)
|
||||
*/
|
||||
class Base_layers_class {
|
||||
|
||||
constructor() {
|
||||
//singleton
|
||||
if (instance) {
|
||||
@ -56,9 +55,11 @@ class Base_layers_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 = [];
|
||||
@ -79,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);
|
||||
}
|
||||
@ -91,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() {
|
||||
@ -123,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();
|
||||
}
|
||||
@ -131,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) {
|
||||
@ -142,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);
|
||||
@ -159,14 +170,15 @@ 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);
|
||||
@ -185,13 +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.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,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;
|
||||
@ -216,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();
|
||||
@ -249,108 +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];
|
||||
if(filter.id == this.disabled_filter_id){
|
||||
if (filter.id == this.disabled_filter_id) {
|
||||
continue;
|
||||
}
|
||||
|
||||
filter.name = filter.name.replace('drop-shadow', 'shadow');
|
||||
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];
|
||||
if(filter.id == this.disabled_filter_id){
|
||||
if (filter.id == this.disabled_filter_id) {
|
||||
continue;
|
||||
}
|
||||
filter.name = filter.name.replace('drop-shadow', 'shadow');
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -377,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
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ -388,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) {
|
||||
@ -396,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;
|
||||
}
|
||||
|
||||
@ -407,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));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -445,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));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -463,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,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@ -473,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));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -496,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
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -509,7 +634,11 @@ class Base_layers_class {
|
||||
is_layer_empty(id) {
|
||||
var link = this.get_layer(id);
|
||||
|
||||
if ((link.width == 0 || link.width === null) && (link.height == 0 || link.height === null) && link.data == null) {
|
||||
if (
|
||||
(link.width == 0 || link.width === null) &&
|
||||
(link.height == 0 || link.height === null) &&
|
||||
link.data == null
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -565,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
|
||||
@ -608,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
|
||||
@ -634,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);
|
||||
}
|
||||
}
|
||||
@ -734,23 +861,24 @@ class Base_layers_class {
|
||||
* @returns {object}
|
||||
*/
|
||||
find_filter_by_id(filter_id, filter_name, layer_id) {
|
||||
if(typeof layer_id == 'undefined'){
|
||||
if (typeof layer_id == "undefined") {
|
||||
var layer = config.layer;
|
||||
}
|
||||
else{
|
||||
} 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) {
|
||||
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
166
src/js/core/base-search.js
Normal 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;
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -134,10 +134,12 @@ class Base_tools_class {
|
||||
}
|
||||
|
||||
if (eventType === 'mousedown' || eventType === 'touchstart') {
|
||||
if ((event.target.id != 'canvas_minipaint' && event.target.id != 'main_wrapper') || (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;
|
||||
}
|
||||
|
||||
|
||||
@ -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,7 +13,7 @@ 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_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" />
|
||||
@ -23,7 +24,7 @@ const sidebarTemplate = `
|
||||
<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"/>
|
||||
@ -33,7 +34,7 @@ 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" title="Toggle Swatches">
|
||||
<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"/>
|
||||
@ -101,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>
|
||||
@ -177,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) {
|
||||
@ -190,6 +192,9 @@ 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);
|
||||
}
|
||||
|
||||
@ -10,22 +10,23 @@ 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" step="any" />
|
||||
<button class="extra reset" type="button" id="reset_x" title="Reset">Reset</button>
|
||||
<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" step="any" />
|
||||
<button class="extra reset" type="button" id="reset_y" title="Reset">Reset</button>
|
||||
<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" step="any" />
|
||||
<button class="extra reset" type="button" id="reset_size" title="Reset">Reset</button>
|
||||
<button class="extra reset trn" type="button" id="reset_size" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Height:</span>
|
||||
@ -35,18 +36,20 @@ var template = `
|
||||
<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"> </span>
|
||||
<button type="button" class="trn dots" id="detail_param_text">Edit text...</button>
|
||||
</div>
|
||||
@ -119,11 +122,15 @@ class GUI_details_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);
|
||||
}
|
||||
|
||||
@ -156,6 +163,9 @@ class GUI_details_class {
|
||||
}
|
||||
}
|
||||
|
||||
//add params
|
||||
this.render_more_parameters();
|
||||
|
||||
this.render_text(events);
|
||||
this.render_general_select_param('boundary', events);
|
||||
this.render_general_select_param('kerning', events);
|
||||
@ -345,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;
|
||||
@ -476,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, {
|
||||
@ -487,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
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -504,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;
|
||||
|
||||
@ -7,13 +7,19 @@ 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>
|
||||
`;
|
||||
|
||||
/**
|
||||
@ -25,7 +31,7 @@ class GUI_information_class {
|
||||
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');
|
||||
@ -34,6 +40,9 @@ class GUI_information_class {
|
||||
|
||||
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();
|
||||
}
|
||||
@ -76,6 +85,17 @@ class GUI_information_class {
|
||||
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;
|
||||
}
|
||||
|
||||
this.last_width = config.WIDTH;
|
||||
this.last_height = config.HEIGHT;
|
||||
}
|
||||
|
||||
@ -9,13 +9,17 @@ 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">↓</button>
|
||||
<button type="button" class="layers_arrow" title="Move up" id="layer_up">↑</button>
|
||||
<button type="button" class="layers_arrow trn" title="Move layer down" id="layer_down">↓</button>
|
||||
<button type="button" class="layers_arrow trn" title="Move layer up" id="layer_up">↑</button>
|
||||
|
||||
<div class="layers_list" id="layers"></div>
|
||||
`;
|
||||
@ -30,12 +34,17 @@ class GUI_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();
|
||||
}
|
||||
|
||||
@ -50,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(
|
||||
@ -128,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>';
|
||||
|
||||
@ -163,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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -16,9 +16,9 @@ var template = `
|
||||
<div class="canvas_preview_details">
|
||||
<div class="details">
|
||||
<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="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 class="layer_add trn" id="zoom_fit">Fit</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) {
|
||||
@ -275,6 +275,10 @@ class GUI_preview_class {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -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,13 +294,14 @@ 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;
|
||||
const values = typeof item.values === 'function' ? item.values() : item.values;
|
||||
for (var j in values) {
|
||||
for (let j in values) {
|
||||
var option = document.createElement("option");
|
||||
if (item.value == values[j]) {
|
||||
option.selected = 'selected';
|
||||
@ -339,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';
|
||||
|
||||
@ -1,13 +1,7 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24 نقطة نجمة",
|
||||
"2d": "2 د",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480 ص",
|
||||
"A problem occurred while removing undo history. It": "حدثت مشكلة أثناء إزالة محفوظات التراجع. هو - هي",
|
||||
"About": "حول",
|
||||
"Active": "نشيط",
|
||||
"Add Borders": "أضف الحدود",
|
||||
"Aden": "عدن",
|
||||
"Advanced": "متقدم",
|
||||
"All": "الجميع",
|
||||
@ -15,6 +9,7 @@
|
||||
"Alpha:": "ألفا:",
|
||||
"Anonymous": "مجهول",
|
||||
"Anti aliasing": "مكافحة التعرج",
|
||||
"Application markup may have changed,": "ربما تم تغيير ترميز التطبيق،",
|
||||
"Arial": "اريال",
|
||||
"Arrow": "سهم",
|
||||
"ArrowDown": "السهم للاسفل",
|
||||
@ -48,8 +43,9 @@
|
||||
"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": "حجم قماش",
|
||||
"Canvas Size": "حجم قماش",
|
||||
"Center": "مركز",
|
||||
"Center x:": "المركز x:",
|
||||
"Center y:": "مركز ص:",
|
||||
@ -64,8 +60,9 @@
|
||||
"Clear Selection": "التحديد الواضح",
|
||||
"Clone Tool": "أداة استنساخ",
|
||||
"Clone count:": "عدد النسخ:",
|
||||
"Clone tool disabled for resized image. Sorry.": "تم تعطيل أداة النسخ للصورة التي تم تغيير حجمها. آسف.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "تم تعطيل أداة النسخ للصورة التي تم تغيير حجمها. يرجى التنقيط أولا.",
|
||||
"Cloned edges": "حواف مستنسخة",
|
||||
"Close": "يغلق",
|
||||
"Color #": "اللون #",
|
||||
"Color Corrections": "تصحيحات اللون",
|
||||
"Color Palette": "لوحة الألوان",
|
||||
@ -82,19 +79,20 @@
|
||||
"Content Fill": "تعبئة المحتوى",
|
||||
"Contrast": "مقابلة",
|
||||
"Contrast:": "مقابلة:",
|
||||
"Convert layer to raster": "تحويل الطبقة إلى النقطية",
|
||||
"Convert to Raster": "تحويل إلى نقطي",
|
||||
"Copy Selection": "نسخ التحديد",
|
||||
"Copy to Clipboard": "نسخ إلى الحافظة",
|
||||
"Copy:": "ينسخ:",
|
||||
"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",
|
||||
"Ctrl-P": "السيطرة- P",
|
||||
"Current": "تيار",
|
||||
"Current Color Preview": "معاينة اللون الحالي",
|
||||
"Custom": "مخصص",
|
||||
@ -120,6 +118,7 @@
|
||||
"Down": "أسفل",
|
||||
"Duplicate": "ينسخ",
|
||||
"Duplicate Layer": "طبقة مكررة",
|
||||
"Duplicate layer": "طبقة مكررة",
|
||||
"Dynamic": "متحرك",
|
||||
"Edge": "حافة",
|
||||
"Edit": "يحرر",
|
||||
@ -131,21 +130,23 @@
|
||||
"Emboss": "زخرف",
|
||||
"Empty selection": "اختيار فارغ",
|
||||
"Empty selection or type not image.": "اختيار فارغ أو اكتب ليس صورة.",
|
||||
"Enable guides:": "تمكين الأدلة:",
|
||||
"Enable snap:": "تمكين المحاذاة:",
|
||||
"Enable autoresize:": "تمكين إعادة الحجم التلقائي:",
|
||||
"End": "نهاية",
|
||||
"English": "الإنجليزية",
|
||||
"English (UK)": "الإنجليزية (المملكة المتحدة)",
|
||||
"Enrich": "يثرى",
|
||||
"Enter": "يدخل",
|
||||
"Erase Tool": "أداة المحو",
|
||||
"Erase on rotate object is disabled. Sorry.": "تم تعطيل المحو عند تدوير الكائن. آسف.",
|
||||
"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": "الاسبانية",
|
||||
@ -161,6 +162,7 @@
|
||||
"Fill Tool": "أداة التعبئة",
|
||||
"Fit": "ملائم",
|
||||
"Fit Window": "تناسب النافذة",
|
||||
"Fit window": "نافذة مناسبة",
|
||||
"Flatten Image": "تسطيح الصورة",
|
||||
"Flip": "يواجه",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
@ -179,6 +181,7 @@
|
||||
"Graphics Interchange Format": "تنسيق تبادل الرسومات",
|
||||
"Gray": "رمادي",
|
||||
"Grayscale": "تدرج الرمادي",
|
||||
"Greek": "اليونانية",
|
||||
"Green": "لون أخضر",
|
||||
"Green channel:": "القناة الخضراء:",
|
||||
"Greyscale:": "الرمادي:",
|
||||
@ -195,6 +198,7 @@
|
||||
"Helvetica": "هيلفيتيكا",
|
||||
"Hermite": "هيرمايت",
|
||||
"Hex": "عرافة",
|
||||
"Hide": "يخفي",
|
||||
"Histogram": "الرسم البياني",
|
||||
"Histogram:": "الرسم البياني:",
|
||||
"Home": "الصفحة الرئيسية",
|
||||
@ -208,12 +212,13 @@
|
||||
"Image": "صورة",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "بيانات الصورة متعددة الطبقات. يمكن فتحه باستخدام miniPaint -",
|
||||
"Impact": "تأثير",
|
||||
"In proportion:": "في نسبة:",
|
||||
"Increase": "زيادة",
|
||||
"Information": "معلومة",
|
||||
"Inkwell": "محبرة",
|
||||
"Insert": "إدراج",
|
||||
"Insert guides": "أدلة إدراج",
|
||||
"Insert:": "إدراج:",
|
||||
"Insert new layer": "أدخل طبقة جديدة",
|
||||
"Instagram Filters": "مرشحات Instagram",
|
||||
"Invalid Hex Code": "رمز سداسي عشري غير صالح",
|
||||
"Italiano": "ايطالي",
|
||||
@ -224,14 +229,17 @@
|
||||
"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:": "مستوى:",
|
||||
@ -256,12 +264,12 @@
|
||||
"Mouse:": "الفأر:",
|
||||
"Move": "يتحرك",
|
||||
"Move Layer": "تحريك الطبقة",
|
||||
"Move down": "تحرك لأسفل",
|
||||
"Move up": "تحرك",
|
||||
"Move layer down": "انقل الطبقة إلى الأسفل",
|
||||
"Move layer up": "حرك الطبقة لأعلى",
|
||||
"Name:": "اسم:",
|
||||
"Needs at least 2 layers.": "تحتاج إلى طبقتين على الأقل.",
|
||||
"Negative": "سلبي",
|
||||
"New": "جديد",
|
||||
"New Bezier Layer": "طبقة بيزيير جديدة",
|
||||
"New Brush Layer": "طبقة فرشاة جديدة",
|
||||
"New Ellipse Layer": "طبقة Ellipse جديدة",
|
||||
"New File": "ملف جديد",
|
||||
@ -269,12 +277,13 @@
|
||||
"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": "لا يمكن أن يكون العرض الجديد أصغر من العرض الحالي",
|
||||
"Next": "التالي",
|
||||
"Night Vision": "الرؤية الليلية",
|
||||
"None": "لا أحد",
|
||||
"Nothing is selected.": "لم يتم اختيار شيء.",
|
||||
@ -313,6 +322,7 @@
|
||||
"Placeholder comment for color picker": "تعليق العنصر النائب لمنتقي الألوان",
|
||||
"Placeholder comment for color swatches": "تعليق العنصر النائب لحوامل اللون",
|
||||
"Portable Network Graphics": "رسومات الشبكة المحمولة",
|
||||
"Portrait": "لَوحَة",
|
||||
"Português": "البرتغالية",
|
||||
"Position:": "موقع:",
|
||||
"Power:": "قوة:",
|
||||
@ -341,13 +351,13 @@
|
||||
"Replacement:": "إستبدال:",
|
||||
"Report Issues": "الإبلاغ عن المشكلات",
|
||||
"Reset": "إعادة ضبط",
|
||||
"Reset zoom level": "إعادة تعيين مستوى التكبير",
|
||||
"Resize": "تغيير الحجم",
|
||||
"Resize Boundary": "تغيير حجم الحدود",
|
||||
"Resize Layer": "طبقة تغيير الحجم",
|
||||
"Resize Layers": "تغيير حجم الطبقات",
|
||||
"Resize Text Layer": "تغيير حجم طبقة النص",
|
||||
"Resized as background": "تم تغيير الحجم كخلفية",
|
||||
"Resized:": "تم تغيير الحجم:",
|
||||
"Resolution:": "القرار:",
|
||||
"Restore Alpha": "استعادة ألفا",
|
||||
"Right": "حق",
|
||||
@ -363,18 +373,18 @@
|
||||
"Saturate": "تشبع",
|
||||
"Saturation": "التشبع",
|
||||
"Saturation:": "التشبع:",
|
||||
"Save (Export)": "حفظ (تصدير)",
|
||||
"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.": "التوسع غير مدعوم في Hermite ، باستخدام Lanczos.",
|
||||
"Scroll down": "حرك الفأرة لأسفل",
|
||||
"Scroll up": "انتقل إلى أعلى",
|
||||
"Search": "بحث",
|
||||
"Search Images": "البحث عن الصور",
|
||||
"Search for Font": "البحث عن الخط",
|
||||
"Search:": "يبحث:",
|
||||
"Select All": "اختر الكل",
|
||||
"Select Text Layer": "حدد طبقة النص",
|
||||
"Select object tool": "حدد أداة الكائن",
|
||||
@ -382,20 +392,22 @@
|
||||
"Selection Tool": "آلة الاختيار",
|
||||
"Sensitivity:": "حساسية:",
|
||||
"Separated": "منفصل",
|
||||
"Separated (original types)": "منفصل (الأنواع الأصلية)",
|
||||
"Sepia": "بني داكن",
|
||||
"Set Image Size": "ضبط حجم الصورة",
|
||||
"Settings": "إعدادات",
|
||||
"Shadow": "ظل",
|
||||
"Shadow:": "ظل:",
|
||||
"Shapes": "الأشكال",
|
||||
"Shapes (H)": "الأشكال (ح)",
|
||||
"Sharpen": "شحذ",
|
||||
"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.": "تخطي - يجب أن تكون الطبقة عبارة عن صورة.",
|
||||
@ -416,7 +428,7 @@
|
||||
"Tag Image File Format": "تنسيق ملف صورة العلامة",
|
||||
"Tahoma": "تاهوما",
|
||||
"Target:": "استهداف:",
|
||||
"Theme": "سمة",
|
||||
"The quick brown fox jumps over the lazy dog.": "الثعلب البني السريع يقفز فوق الكلب الكسول.",
|
||||
"There": "هناك",
|
||||
"There are no layers behind.": "لا توجد طبقات خلف.",
|
||||
"There is only 1 layer.": "هناك طبقة واحدة فقط.",
|
||||
@ -436,7 +448,6 @@
|
||||
"Translate": "ترجمة",
|
||||
"Translate Layer": "طبقة الترجمة",
|
||||
"Translate error, can not find dictionary:": "خطأ في الترجمة ، لا يمكن العثور على القاموس:",
|
||||
"Transparency background:": "خلفية الشفافية:",
|
||||
"Transparent:": "شفاف:",
|
||||
"Trim": "تقليم",
|
||||
"Trim Layers": "طبقات القطع",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24-Punkte-Stern",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Rahmen hinzufügen",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Fortgeschritten",
|
||||
"All": "Alle",
|
||||
"Alpha": "Alpha",
|
||||
"Alpha:": "Alpha:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "Anonym",
|
||||
"Anti aliasing": "Kantenglättung",
|
||||
"Application markup may have changed,": "Das Anwendungs-Markup hat sich möglicherweise geändert.",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Pfeil",
|
||||
"ArrowDown": "Pfeil nach unten",
|
||||
"ArrowLeft": "Pfeil links",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Brennen",
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Auswahl löschen",
|
||||
"Clone Tool": "Klon-Tool",
|
||||
"Clone count:": "Klonanzahl:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Klon-Tool für Bildgröße deaktiviert. Es tut uns leid.",
|
||||
"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",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Schließen",
|
||||
"Color #": "Farbe #",
|
||||
"Color Corrections": "Farbkorrekturen",
|
||||
"Color Palette": "Farbpalette",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "In die Zwischenablage kopieren",
|
||||
"Copy:": "Kopieren:",
|
||||
"Courier": "Kurier",
|
||||
"Creepster": "Creepster",
|
||||
"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+Y": "Strg + Y.",
|
||||
"Ctrl+Z": "Strg + Z.",
|
||||
"Ctrl-P": "Strg-P",
|
||||
"Current": "Aktuell",
|
||||
"Current Color Preview": "Aktuelle Farbvorschau",
|
||||
"Custom": "Individuell",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "Runter",
|
||||
"Duplicate": "Duplikat",
|
||||
"Duplicate Layer": "Ebene duplizieren",
|
||||
"Duplicate layer": "Ebene duplizieren",
|
||||
"Dynamic": "Dynamisch",
|
||||
"Edge": "Kante",
|
||||
"Edit": "Bearbeiten",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "Prägen",
|
||||
"Empty selection": "Leere Auswahl",
|
||||
"Empty selection or type not image.": "Leere Auswahl oder kein Bildtyp.",
|
||||
"Enable snap:": "Snap aktivieren:",
|
||||
"Enable autoresize:": "Automatische Größenänderung aktivieren:",
|
||||
"End": "Ende",
|
||||
"English": "Englisch",
|
||||
"English (UK)": "Englisch UK)",
|
||||
"Enrich": "Bereichern",
|
||||
"Enter": "Eingeben",
|
||||
"Erase Tool": "Löschwerkzeug",
|
||||
"Erase on rotate object is disabled. Sorry.": "Das Objekt \"Erase on rotate\" ist deaktiviert. Es tut uns leid.",
|
||||
"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 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:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Flucht",
|
||||
"Español": "Spanisch",
|
||||
"Expand edges": "Kanten erweitern",
|
||||
"Exponent:": "Exponent:",
|
||||
"Export": "Export",
|
||||
"External": "Extern",
|
||||
"Factor:": "Faktor:",
|
||||
"File": "Datei",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Schriftart",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Volles HD, 1080p",
|
||||
"Full Screen": "Ganzer Bildschirm",
|
||||
"Full layers data": "Vollständige Layer-Daten",
|
||||
"Gap:": "Spalt:",
|
||||
"Gaussian Blur": "Gaußscher Weichzeichner",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "Grafikaustauschformat",
|
||||
"Gray": "Grau",
|
||||
"Grayscale": "Graustufen",
|
||||
"Greek": "griechisch",
|
||||
"Green": "Grün",
|
||||
"Green channel:": "Grüner Kanal:",
|
||||
"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",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Indie-Blume",
|
||||
"Information": "Information",
|
||||
"Inkwell": "Tintenfass",
|
||||
"Insert:": "Einfügen:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG-Format",
|
||||
"Kerning:": "Kerning:",
|
||||
"Key-Points": "Schlüsselpunkte",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Tastatürkürzel",
|
||||
"Keyword:": "Stichwort:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Landschaft",
|
||||
"Language": "Sprache",
|
||||
"Last modified": "Zuletzt bearbeitet",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Schicht",
|
||||
"Layer details": "Ebenendetails",
|
||||
"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",
|
||||
"Lo-fi": "Lo-Fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Leuchtdichte:",
|
||||
"Luminosity": "Helligkeit",
|
||||
"Magic Eraser Tool": "Magic Eraser Tool",
|
||||
"Merge Down": "Nach unten vereinigen",
|
||||
"Merge Layers": "Ebenen zusammenführen",
|
||||
"Merged": "Zusammengeführt",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Metriken",
|
||||
"Middle": "Mitte",
|
||||
"Missing at least 1 size parameter.": "Mindestens 1 Größenparameter fehlt.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Modulfunktion nicht gefunden.",
|
||||
"Modules class not found:": "Modulklasse nicht gefunden:",
|
||||
"Monospace": "Monospace",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Mosaic": "Mosaik",
|
||||
"Mouse:": "Maus:",
|
||||
"Move": "Bewegung",
|
||||
"Move Layer": "Ebene verschieben",
|
||||
"Move down": "Nach unten schieben",
|
||||
"Move up": "Nach oben schieben",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Nächste",
|
||||
"Night Vision": "Nachtsicht",
|
||||
"None": "Keiner",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Nichts ausgewählt.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
"Oil": "Öl",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "Öffne URL",
|
||||
"Open data URL": "Öffnen Sie die Daten-URL",
|
||||
"Open from Webcam": "Von der Webcam öffnen",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Originalgröße",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Bild in SVG konvertieren",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "Bild nach unten",
|
||||
"PageUp": "PageUp",
|
||||
"Palette": "Palette",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "Playfair-Anzeige",
|
||||
"Poppins": "Poppins",
|
||||
"Portable Network Graphics": "Tragbare Netzwerkgrafiken",
|
||||
"Portrait": "Porträt",
|
||||
"Português": "Português",
|
||||
"Position:": "Position:",
|
||||
"Power:": "Leistung:",
|
||||
"Preview": "Vorschau",
|
||||
"Previous": "Bisherige",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Radialer Verlauf",
|
||||
"Radius:": "Radius:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Angebot:",
|
||||
"Red": "Rot",
|
||||
"Red channel:": "Roter Kanal:",
|
||||
"Redo": "Wiederholen",
|
||||
"Remove all": "Alles entfernen",
|
||||
"Rename": "Umbenennen",
|
||||
"Rename Layer": "Ebene umbenennen",
|
||||
"Rendered with errors.": "Mit Fehlern gerendert.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Ersatz:",
|
||||
"Report Issues": "Probleme melden",
|
||||
"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",
|
||||
"Roboto": "Roboto",
|
||||
"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:",
|
||||
"Rubik": "Rubik",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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:": "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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Entschuldigung, das Bild ist zu groß, maximal 5 MB.",
|
||||
"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.",
|
||||
"Special Elite": "Spezielle Elite",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Rechteck",
|
||||
"Stream:": "Strom:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "Streng",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Komprimiert PNG und JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Markieren Sie das Bilddateiformat",
|
||||
"Tahoma": "Tahoma",
|
||||
"Tangerine": "Mandarine",
|
||||
"Target:": "Ziel:",
|
||||
"Theme": "Thema",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "Toaster",
|
||||
"Toggle": "Umschalten",
|
||||
"Toggle Color Channels": "Farbkanäle umschalten",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Schichten schneiden",
|
||||
"Trim borders:": "Rand schneiden:",
|
||||
"Trim layer:": "Trim-Ebene:",
|
||||
"Trim white color?": "Trim weiße Farbe?",
|
||||
"Type:": "Typ:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Rückgängig machen",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"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:",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Webseite:",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,7 @@
|
||||
{
|
||||
"24-Points star": "",
|
||||
"A problem occurred while removing undo history. It": "",
|
||||
"About": "",
|
||||
"Active": "",
|
||||
"Add Borders": "",
|
||||
"Aden": "",
|
||||
"Advanced": "",
|
||||
"All": "",
|
||||
@ -45,9 +43,9 @@
|
||||
"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": "",
|
||||
"Canvas size": "",
|
||||
"Center": "",
|
||||
"Center x:": "",
|
||||
"Center y:": "",
|
||||
@ -62,8 +60,9 @@
|
||||
"Clear Selection": "",
|
||||
"Clone Tool": "",
|
||||
"Clone count:": "",
|
||||
"Clone tool disabled for resized image. Sorry.": "",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "",
|
||||
"Cloned edges": "",
|
||||
"Close": "",
|
||||
"Color #": "",
|
||||
"Color Corrections": "",
|
||||
"Color Palette": "",
|
||||
@ -80,19 +79,20 @@
|
||||
"Content Fill": "",
|
||||
"Contrast": "",
|
||||
"Contrast:": "",
|
||||
"Convert layer to raster": "",
|
||||
"Convert to Raster": "",
|
||||
"Copy Selection": "",
|
||||
"Copy to Clipboard": "",
|
||||
"Copy:": "",
|
||||
"Courier": "",
|
||||
"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+Y": "",
|
||||
"Ctrl+Z": "",
|
||||
"Ctrl-P": "",
|
||||
"Current": "",
|
||||
"Current Color Preview": "",
|
||||
"Custom": "",
|
||||
@ -118,6 +118,7 @@
|
||||
"Down": "",
|
||||
"Duplicate": "",
|
||||
"Duplicate Layer": "",
|
||||
"Duplicate layer": "",
|
||||
"Dynamic": "",
|
||||
"Edge": "",
|
||||
"Edit": "",
|
||||
@ -129,14 +130,14 @@
|
||||
"Emboss": "",
|
||||
"Empty selection": "",
|
||||
"Empty selection or type not image.": "",
|
||||
"Enable guides:": "",
|
||||
"Enable snap:": "",
|
||||
"Enable autoresize:": "",
|
||||
"End": "",
|
||||
"English": "",
|
||||
"English (UK)": "",
|
||||
"Enrich": "",
|
||||
"Enter": "",
|
||||
"Erase Tool": "",
|
||||
"Erase on rotate object is disabled. Sorry.": "",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "",
|
||||
"Error": "",
|
||||
"Error connecting to service.": "",
|
||||
"Error loading the list of fonts from Google.": "",
|
||||
@ -145,10 +146,10 @@
|
||||
"Error: can not find layer with id:": "",
|
||||
"Error: missing details event target": "",
|
||||
"Error: unknown layer type:": "",
|
||||
"Error: unsupported attribute type:": "",
|
||||
"Esc": "",
|
||||
"Escape": "",
|
||||
"Español": "",
|
||||
"Exit confirmation:": "",
|
||||
"Expand edges": "",
|
||||
"Exponent:": "",
|
||||
"Export": "",
|
||||
@ -161,6 +162,7 @@
|
||||
"Fill Tool": "",
|
||||
"Fit": "",
|
||||
"Fit Window": "",
|
||||
"Fit window": "",
|
||||
"Flatten Image": "",
|
||||
"Flip": "",
|
||||
"FloydSteinberg-serpentine": "",
|
||||
@ -196,6 +198,7 @@
|
||||
"Helvetica": "",
|
||||
"Hermite": "",
|
||||
"Hex": "",
|
||||
"Hide": "",
|
||||
"Histogram": "",
|
||||
"Histogram:": "",
|
||||
"Home": "",
|
||||
@ -209,12 +212,13 @@
|
||||
"Image": "",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "",
|
||||
"Impact": "",
|
||||
"In proportion:": "",
|
||||
"Increase": "",
|
||||
"Information": "",
|
||||
"Inkwell": "",
|
||||
"Insert": "",
|
||||
"Insert guides": "",
|
||||
"Insert:": "",
|
||||
"Insert new layer": "",
|
||||
"Instagram Filters": "",
|
||||
"Invalid Hex Code": "",
|
||||
"Italiano": "",
|
||||
@ -225,14 +229,17 @@
|
||||
"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:": "",
|
||||
@ -257,12 +264,12 @@
|
||||
"Mouse:": "",
|
||||
"Move": "",
|
||||
"Move Layer": "",
|
||||
"Move down": "",
|
||||
"Move up": "",
|
||||
"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": "",
|
||||
@ -270,12 +277,13 @@
|
||||
"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": "",
|
||||
"Next": "",
|
||||
"Night Vision": "",
|
||||
"None": "",
|
||||
"Nothing is selected.": "",
|
||||
@ -314,6 +322,7 @@
|
||||
"Placeholder comment for color picker": "",
|
||||
"Placeholder comment for color swatches": "",
|
||||
"Portable Network Graphics": "",
|
||||
"Portrait": "",
|
||||
"Português": "",
|
||||
"Position:": "",
|
||||
"Power:": "",
|
||||
@ -361,11 +370,9 @@
|
||||
"Rotate:": "",
|
||||
"Ruler": "",
|
||||
"SQUOOSH - Compress and Compare Images": "",
|
||||
"Safe search:": "",
|
||||
"Saturate": "",
|
||||
"Saturation": "",
|
||||
"Saturation:": "",
|
||||
"Save (Export)": "",
|
||||
"Save As": "",
|
||||
"Save As Data URL": "",
|
||||
"Save as": "",
|
||||
@ -377,6 +384,7 @@
|
||||
"Search": "",
|
||||
"Search Images": "",
|
||||
"Search for Font": "",
|
||||
"Search:": "",
|
||||
"Select All": "",
|
||||
"Select Text Layer": "",
|
||||
"Select object tool": "",
|
||||
@ -389,12 +397,14 @@
|
||||
"Set Image Size": "",
|
||||
"Settings": "",
|
||||
"Shadow": "",
|
||||
"Shadow:": "",
|
||||
"Shapes": "",
|
||||
"Shapes (H)": "",
|
||||
"Sharpen": "",
|
||||
"Sharpen Tool": "",
|
||||
"Sharpen:": "",
|
||||
"Shift + S": "",
|
||||
"Shortcut Key:": "",
|
||||
"Show": "",
|
||||
"Show \/ Hide": "",
|
||||
"Show file size:": "",
|
||||
"Simple": "",
|
||||
@ -419,11 +429,9 @@
|
||||
"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.": "",
|
||||
"Tilt Shift": "",
|
||||
"Times New Roman": "",
|
||||
@ -440,7 +448,6 @@
|
||||
"Translate": "",
|
||||
"Translate Layer": "",
|
||||
"Translate error, can not find dictionary:": "",
|
||||
"Transparency background:": "",
|
||||
"Transparent:": "",
|
||||
"Trim": "",
|
||||
"Trim Layers": "",
|
||||
@ -451,7 +458,6 @@
|
||||
"Türkçe": "",
|
||||
"Undo": "",
|
||||
"Unique colors:": "",
|
||||
"Units": "",
|
||||
"Up": "",
|
||||
"Update": "",
|
||||
"Update Brush Layer": "",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "Estrella de 24 puntas",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Agregar bordes",
|
||||
"Aden": "Adén",
|
||||
"Advanced": "Avanzado",
|
||||
"All": "Todas",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"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",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Flecha",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "Flecha Izquierda",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Quemar",
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Selección clara",
|
||||
"Clone Tool": "Herramienta de clonación",
|
||||
"Clone count:": "Recuento de clones",
|
||||
"Clone tool disabled for resized image. Sorry.": "Herramienta de clonación desactivada para imagen redimensionada. Lo siento.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Herramienta de clonación deshabilitada para imágenes redimensionadas. Rasterice primero.",
|
||||
"Cloned edges": "Bordes clonados",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Cerca",
|
||||
"Color #": "Color #",
|
||||
"Color Corrections": "Correcciones de color",
|
||||
"Color Palette": "Paleta de color",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "Copiar al portapapeles",
|
||||
"Copy:": "Dupdo:",
|
||||
"Courier": "mensajero",
|
||||
"Creepster": "Creepster",
|
||||
"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+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "Corriente",
|
||||
"Current Color Preview": "Vista previa del color actual",
|
||||
"Custom": "Personalizado",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "Abajo",
|
||||
"Duplicate": "Duplicar",
|
||||
"Duplicate Layer": "Duplicar capa",
|
||||
"Duplicate layer": "Duplicar capa",
|
||||
"Dynamic": "Dinámica",
|
||||
"Edge": "Borde",
|
||||
"Edit": "Editar",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "Realzar",
|
||||
"Empty selection": "Selección vacía",
|
||||
"Empty selection or type not image.": "Vaciar selección o escribir no imagen.",
|
||||
"Enable snap:": "Habilitar snap:",
|
||||
"Enable autoresize:": "Habilitar tamaño automático:",
|
||||
"End": "Fin",
|
||||
"English": "Inglés",
|
||||
"English (UK)": "Inglés del Reino Unido)",
|
||||
"Enrich": "Enriquecer",
|
||||
"Enter": "Entrar",
|
||||
"Erase Tool": "Herramienta de borrado",
|
||||
"Erase on rotate object is disabled. Sorry.": "Borrar en rotar objeto está deshabilitado. Lo siento.",
|
||||
"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 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: 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",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Fuente",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "Pantalla completa",
|
||||
"Full layers data": "Datos de capas completas",
|
||||
"Gap:": "Brecha:",
|
||||
"Gaussian Blur": "Desenfoque gaussiano",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "formato de gráficos intercambeable",
|
||||
"Gray": "gris",
|
||||
"Grayscale": "Escala de grises",
|
||||
"Greek": "Griego",
|
||||
"Green": "Verde",
|
||||
"Green channel:": "Canal 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",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvética",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Flor indie",
|
||||
"Information": "Información",
|
||||
"Inkwell": "Tintero",
|
||||
"Insert:": "Insertar:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Interletrado:",
|
||||
"Key-Points": "Puntos clave",
|
||||
"KeyU": "ClaveU",
|
||||
"Keyboard Shortcuts": "Atajos de teclado",
|
||||
"Keyword:": "Palabra clave:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paisaje",
|
||||
"Language": "Idioma",
|
||||
"Last modified": "Última modificación",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Capa",
|
||||
"Layer details": "Detalles de la capa",
|
||||
"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ų",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Luminancia:",
|
||||
"Luminosity": "Luminosidad",
|
||||
"Magic Eraser Tool": "Herramienta de borrador mágico",
|
||||
"Merge Down": "Fusionar",
|
||||
"Merge Layers": "Fusionar capas",
|
||||
"Merged": "Fusionado",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Métrica",
|
||||
"Middle": "Medio",
|
||||
"Missing at least 1 size parameter.": "Falta al menos 1 parámetro de tamaño.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Función del módulo no encontrada.",
|
||||
"Modules class not found:": "Clase de módulos no encontrada:",
|
||||
"Monospace": "Monoespacio",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Mosaic": "Mosaico",
|
||||
"Mouse:": "Ratón:",
|
||||
"Move": "Movimiento",
|
||||
"Move Layer": "Mover capa",
|
||||
"Move down": "Mover hacia abajo",
|
||||
"Move up": "Ascender",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Próximo",
|
||||
"Night Vision": "Vision nocturna",
|
||||
"None": "Ninguna",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Nada está seleccionado.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Compensación X:",
|
||||
"Offset Y:": "Desplazamiento Y:",
|
||||
"Oil": "Petróleo",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "URL abierta",
|
||||
"Open data URL": "URL de datos abiertos",
|
||||
"Open from Webcam": "Abrir desde la webcam",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Tamaño original",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir imagen a SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "Página abajo",
|
||||
"PageUp": "Página arriba",
|
||||
"Palette": "Paleta",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "Pantalla Playfair",
|
||||
"Poppins": "Poppins",
|
||||
"Portable Network Graphics": "Gráficos de red portátiles",
|
||||
"Portrait": "Retrato",
|
||||
"Português": "Português",
|
||||
"Position:": "Posición:",
|
||||
"Power:": "Poder:",
|
||||
"Preview": "Avance",
|
||||
"Previous": "Anterior",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Gradiente radial",
|
||||
"Radius:": "Radio:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Distancia:",
|
||||
"Red": "rojo",
|
||||
"Red channel:": "Canal rojo:",
|
||||
"Redo": "Rehacer",
|
||||
"Remove all": "Eliminar todo",
|
||||
"Rename": "Rebautizar",
|
||||
"Rename Layer": "Cambiar nombre de capa",
|
||||
"Rendered with errors.": "Rendido con errores.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Reemplazo:",
|
||||
"Report Issues": "Informar problemas",
|
||||
"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",
|
||||
"Roboto": "Roboto",
|
||||
"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:",
|
||||
"Rubik": "Rubik",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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": "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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Lo sentimos, la imagen es demasiado grande, máximo 5 MB.",
|
||||
"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.",
|
||||
"Special Elite": "Elite especial",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Cuadrado",
|
||||
"Stream:": "Corriente:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "Estricto",
|
||||
"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",
|
||||
"Tangerine": "Mandarina",
|
||||
"Target:": "Objetivo:",
|
||||
"Theme": "Tema",
|
||||
"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",
|
||||
"Titillium Web": "Web de Titillium",
|
||||
"Toaster": "Tostadora",
|
||||
"Toggle": "Palanca",
|
||||
"Toggle Color Channels": "Alternar canales de color",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Recortar capas",
|
||||
"Trim borders:": "Recortar bordes:",
|
||||
"Trim layer:": "Capa de ajuste:",
|
||||
"Trim white color?": "Recortar el color blanco?",
|
||||
"Type:": "Tipo:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Deshacer",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"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:",
|
||||
"Webcam": "Cámara web",
|
||||
"Webcam #": "Cámara web #",
|
||||
"Website:": "Sitio web:",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "Étoile 24 points",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Ajouter des bordures",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avancé",
|
||||
"All": "Tout",
|
||||
"Alpha": "Alpha",
|
||||
"Alpha:": "Alpha :",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "Anonyme",
|
||||
"Anti aliasing": "Anticrénelage",
|
||||
"Application markup may have changed,": "Le balisage de l'application peut avoir changé,",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Flèche",
|
||||
"ArrowDown": "Flèche vers le bas",
|
||||
"ArrowLeft": "Flèche Gauche",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Brûler",
|
||||
"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 :",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Effacer la sélection",
|
||||
"Clone Tool": "Outil de clonage",
|
||||
"Clone count:": "Nombre de clones:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Outil de clonage désactivé pour l'image redimensionnée. Désolé.",
|
||||
"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",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Fermer",
|
||||
"Color #": "Couleur #",
|
||||
"Color Corrections": "Correction des couleurs",
|
||||
"Color Palette": "Palette de couleurs",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "Copier dans le presse-papier",
|
||||
"Copy:": "Copie:",
|
||||
"Courier": "Courier",
|
||||
"Creepster": "Creepster",
|
||||
"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+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "Actuel",
|
||||
"Current Color Preview": "Aperçu de la couleur actuelle",
|
||||
"Custom": "Personnalisé",
|
||||
@ -123,6 +118,7 @@
|
||||
"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",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "Embossage",
|
||||
"Empty selection": "Sélection vide",
|
||||
"Empty selection or type not image.": "Sélection vide ou tapez pas d'image.",
|
||||
"Enable snap:": "Activer l'accrochage:",
|
||||
"Enable autoresize:": "Activer le redimensionnement automatique :",
|
||||
"End": "Fin",
|
||||
"English": "Anglais",
|
||||
"English (UK)": "Anglais Royaume-Uni)",
|
||||
"Enrich": "Améliorer la netteté",
|
||||
"Enter": "Entrer",
|
||||
"Erase Tool": "Outil d'effacement",
|
||||
"Erase on rotate object is disabled. Sorry.": "L'effacement à la rotation de l'objet est désactivé. Pardon.",
|
||||
"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 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: 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",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Police de caractère",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "Plein écran",
|
||||
"Full layers data": "Données de couches complètes",
|
||||
"Gap:": "Ecart :",
|
||||
"Gaussian Blur": "Flou gaussien",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "Format d'échange graphique",
|
||||
"Gray": "Gris",
|
||||
"Grayscale": "Niveaux de gris",
|
||||
"Greek": "grec",
|
||||
"Green": "Vert",
|
||||
"Green channel:": "Niveau de 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",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Indie Flower",
|
||||
"Information": "Informations",
|
||||
"Inkwell": "Encrier",
|
||||
"Insert:": "Insérer:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "Format JPG \/ JPEG",
|
||||
"Kerning:": "Crénage:",
|
||||
"Key-Points": "Points clés",
|
||||
"KeyU": "CléU",
|
||||
"Keyboard Shortcuts": "Raccourcis clavier",
|
||||
"Keyword:": "Mot-clé:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paysage",
|
||||
"Language": "Langue",
|
||||
"Last modified": "Dernière mise à jour",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Couche",
|
||||
"Layer details": "Détails de la couche",
|
||||
"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",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Luminance :",
|
||||
"Luminosity": "Luminosité",
|
||||
"Magic Eraser Tool": "Outil Gomme magique",
|
||||
"Merge Down": "Fusionner avec le calque inférieur",
|
||||
"Merge Layers": "Fusionner les calques",
|
||||
"Merged": "Fusionné",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Métrique",
|
||||
"Middle": "Milieu",
|
||||
"Missing at least 1 size parameter.": "Il manque au moins 1 paramètre de taille.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Fonction du module introuvable.",
|
||||
"Modules class not found:": "Classe de modules introuvable:",
|
||||
"Monospace": "Monospace",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Mosaic": "Mosaïque",
|
||||
"Mouse:": "Souris :",
|
||||
"Move": "Déplacer",
|
||||
"Move Layer": "Déplacer le calque",
|
||||
"Move down": "Déplacer vers le bas",
|
||||
"Move up": "Déplacer vers le haut",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Suivant",
|
||||
"Night Vision": "Vision nocturne",
|
||||
"None": "Aucun",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Rien n'est sélectionné.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Décalage X:",
|
||||
"Offset Y:": "Décalage Y:",
|
||||
"Oil": "Peinture à l'huile",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "Ouvrir depuis le Web",
|
||||
"Open data URL": "URL de données ouvertes",
|
||||
"Open from Webcam": "Ouvrir depuis la webcam",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Format original",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir l'image en SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "Bas de page",
|
||||
"PageUp": "Page Up",
|
||||
"Palette": "Palette",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "Affichage Playfair",
|
||||
"Poppins": "Poppins",
|
||||
"Portable Network Graphics": "Portable Network Graphics",
|
||||
"Portrait": "Portrait",
|
||||
"Português": "Português",
|
||||
"Position:": "Position:",
|
||||
"Power:": "<abbr title='Tolérance'>Tol.<\/abbr> :",
|
||||
"Preview": "Aperçu",
|
||||
"Previous": "précédent",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Gradient radial",
|
||||
"Radius:": "Rayon :",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Gamme :",
|
||||
"Red": "Rouge",
|
||||
"Red channel:": "Niveau de rouge :",
|
||||
"Redo": "Refaire",
|
||||
"Remove all": "Enlever tout",
|
||||
"Rename": "Renommer",
|
||||
"Rename Layer": "Renommer le calque",
|
||||
"Rendered with errors.": "Rendu avec des erreurs.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Remplacement :",
|
||||
"Report Issues": "Signaler un problème",
|
||||
"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",
|
||||
"Roboto": "Roboto",
|
||||
"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:",
|
||||
"Rubik": "Rubik",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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": "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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Désolé, l'image est trop grande (5MB max).",
|
||||
"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.",
|
||||
"Special Elite": "Élite spéciale",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Carré",
|
||||
"Stream:": "Courant:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "Strict",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Compresser PNG et JPEG",
|
||||
"Tab": "Languette",
|
||||
"Tag Image File Format": "Format de fichier image de balise",
|
||||
"Tahoma": "Tahoma",
|
||||
"Tangerine": "Mandarine",
|
||||
"Target:": "Cible :",
|
||||
"Theme": "Thème",
|
||||
"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",
|
||||
"Titillium Web": "Web Titillium",
|
||||
"Toaster": "Grille-pain",
|
||||
"Toggle": "Basculer",
|
||||
"Toggle Color Channels": "Basculer les canaux de couleur",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Couper les couches",
|
||||
"Trim borders:": "Couper les bordures:",
|
||||
"Trim layer:": "Couche de garniture:",
|
||||
"Trim white color?": "Taillez la couleur blanche?",
|
||||
"Type:": "Taper:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Annuler",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"Vertical": "Verticalement",
|
||||
"Vertical Alignment": "Alignement vertical",
|
||||
"Vertical blur:": "Flou vertical:",
|
||||
"Vertical:": "Verticale:",
|
||||
"Vibrance": "Vibrance",
|
||||
"View": "Voir",
|
||||
"Vignette": "Vignette",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Visible:": "Visible :",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Site Internet:",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "Stella a 24 punti",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Aggiungi bordi",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avanzate",
|
||||
"All": "Tutti",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "Anonimo",
|
||||
"Anti aliasing": "Anti aliasing",
|
||||
"Application markup may have changed,": "Il markup dell'applicazione potrebbe essere cambiato",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Freccia",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Bruciare",
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Cancella selezione",
|
||||
"Clone Tool": "Strumento clone",
|
||||
"Clone count:": "Conteggio dei cloni:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Strumento di clonazione disabilitato per l'immagine ridimensionata. Scusate.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Strumento clone disabilitato per l'immagine ridimensionata. Per favore rasterizza prima.",
|
||||
"Cloned edges": "Bordi clonati",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Vicino",
|
||||
"Color #": "Colore #",
|
||||
"Color Corrections": "Correzioni di colore",
|
||||
"Color Palette": "Palette dei colori",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "Copia negli appunti",
|
||||
"Copy:": "Copia:",
|
||||
"Courier": "Corriere",
|
||||
"Creepster": "Creepster",
|
||||
"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+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "attuale",
|
||||
"Current Color Preview": "Anteprima colore corrente",
|
||||
"Custom": "costume",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "Giù",
|
||||
"Duplicate": "Duplicare",
|
||||
"Duplicate Layer": "Livello duplicato",
|
||||
"Duplicate layer": "Livello duplicato",
|
||||
"Dynamic": "Dinamico",
|
||||
"Edge": "Bordo",
|
||||
"Edit": "modificare",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "rilievo",
|
||||
"Empty selection": "Selezione vuota",
|
||||
"Empty selection or type not image.": "Selezione vuota o tipo non immagine.",
|
||||
"Enable snap:": "Abilita snap:",
|
||||
"Enable autoresize:": "Abilita ridimensionamento automatico:",
|
||||
"End": "Fine",
|
||||
"English": "Inglese",
|
||||
"English (UK)": "Inglese (Regno Unito)",
|
||||
"Enrich": "Arricchire",
|
||||
"Enter": "accedere",
|
||||
"Erase Tool": "Strumento di cancellazione",
|
||||
"Erase on rotate object is disabled. Sorry.": "Cancella su ruotare l'oggetto è disabilitato. Scusate.",
|
||||
"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 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:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Fuga",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Espandi i bordi",
|
||||
"Exponent:": "Esponente:",
|
||||
"Export": "Esportare",
|
||||
"External": "Esterno",
|
||||
"Factor:": "Fattore:",
|
||||
"File": "File",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Font",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "A schermo intero",
|
||||
"Full layers data": "Dati a strati completi",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Sfocatura gaussiana",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "Formato di interscambio grafico",
|
||||
"Gray": "Grigio",
|
||||
"Grayscale": "Scala di grigi",
|
||||
"Greek": "greco",
|
||||
"Green": "verde",
|
||||
"Green channel:": "Canale 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",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Fiore indie",
|
||||
"Information": "Informazione",
|
||||
"Inkwell": "Calamaio",
|
||||
"Insert:": "Inserire:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Crenatura:",
|
||||
"Key-Points": "Punti chiave",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Tasti rapidi",
|
||||
"Keyword:": "Parola chiave:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paesaggio",
|
||||
"Language": "linguaggio",
|
||||
"Last modified": "Ultima modifica",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Strato",
|
||||
"Layer details": "Dettagli del livello",
|
||||
"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ų",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Luminance:",
|
||||
"Luminosity": "Luminosità",
|
||||
"Magic Eraser Tool": "Strumento gomma magica",
|
||||
"Merge Down": "Unisci giù",
|
||||
"Merge Layers": "Unire i livelli",
|
||||
"Merged": "Fusione",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Metrica",
|
||||
"Middle": "Medio",
|
||||
"Missing at least 1 size parameter.": "Manca almeno 1 parametro di dimensione.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Funzione del modulo non trovata.",
|
||||
"Modules class not found:": "Classe di moduli non trovata:",
|
||||
"Monospace": "Monospace",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Mosaic": "Mosaico",
|
||||
"Mouse:": "Topo:",
|
||||
"Move": "Mossa",
|
||||
"Move Layer": "Sposta livello",
|
||||
"Move down": "Abbassati",
|
||||
"Move up": "Andare avanti",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Prossimo",
|
||||
"Night Vision": "Visione notturna",
|
||||
"None": "Nessuna",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Niente è selezionato.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
"Oil": "Olio",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "Apri URL",
|
||||
"Open data URL": "Apri l'URL dei dati",
|
||||
"Open from Webcam": "Apri da webcam",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Misura originale",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converti immagine in SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "Pagina giù",
|
||||
"PageUp": "Pagina su",
|
||||
"Palette": "Tavolozza",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "Playfair Display",
|
||||
"Poppins": "Poppins",
|
||||
"Portable Network Graphics": "Grafica di rete portatile",
|
||||
"Portrait": "Ritratto",
|
||||
"Português": "Português",
|
||||
"Position:": "Posizione:",
|
||||
"Power:": "Energia:",
|
||||
"Preview": "Anteprima",
|
||||
"Previous": "Precedente",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radiale",
|
||||
"Radial gradient": "Gradiente radiale",
|
||||
"Radius:": "Raggio:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Gamma:",
|
||||
"Red": "Rosso",
|
||||
"Red channel:": "Canale Rosso:",
|
||||
"Redo": "Rifare",
|
||||
"Remove all": "Rimuovi tutto",
|
||||
"Rename": "Rinominare",
|
||||
"Rename Layer": "Rinomina livello",
|
||||
"Rendered with errors.": "Resi con errori.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Sostituzione:",
|
||||
"Report Issues": "Segnala problemi",
|
||||
"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",
|
||||
"Roboto": "Roboto",
|
||||
"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:",
|
||||
"Rubik": "Rubik",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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": "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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Siamo spiacenti, l'immagine è troppo grande, max 5 MB.",
|
||||
"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.",
|
||||
"Special Elite": "Elite speciale",
|
||||
"Sprites": "sprites",
|
||||
"Square": "Piazza",
|
||||
"Stream:": "Stream:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "Rigoroso",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimi PNG e JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Etichetta il formato del file immagine",
|
||||
"Tahoma": "Tahoma",
|
||||
"Tangerine": "Mandarino",
|
||||
"Target:": "Bersaglio:",
|
||||
"Theme": "Tema",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "Tostapane",
|
||||
"Toggle": "Toggle",
|
||||
"Toggle Color Channels": "Attiva \/ disattiva i canali colore",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Livelli di taglio",
|
||||
"Trim borders:": "Taglia bordi:",
|
||||
"Trim layer:": "Strato di rifinitura:",
|
||||
"Trim white color?": "Tagliare il colore bianco?",
|
||||
"Type:": "Tipo:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Disfare",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"Vertical": "Verticale",
|
||||
"Vertical Alignment": "Allineamento verticale",
|
||||
"Vertical blur:": "Sfocatura verticale:",
|
||||
"Vertical:": "Verticale:",
|
||||
"Vibrance": "Vibrance",
|
||||
"View": "Visualizzazione",
|
||||
"Vignette": "vignette",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage ▾",
|
||||
"Visible:": "Visibile:",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Sito web:",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24ポイントスター",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "元に戻す履歴の削除中に問題が発生しました。それ",
|
||||
"About": "約",
|
||||
"About": "開発者について",
|
||||
"Active": "アクティブ",
|
||||
"Add Borders": "境界線を追加",
|
||||
"Aden": "アデン",
|
||||
"Advanced": "上級",
|
||||
"All": "すべて",
|
||||
"Alpha": "アルファ",
|
||||
"Alpha:": "アルファ:",
|
||||
"Amatic SC": "アマティックSC",
|
||||
"Anonymous": "匿名",
|
||||
"Anti aliasing": "アンチエイリアシング",
|
||||
"Application markup may have changed,": "アプリケーションのマークアップが変更されている可能性があります。",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "アリモ",
|
||||
"Arrow": "矢印",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
@ -50,7 +43,9 @@
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "明確な選択",
|
||||
"Clone Tool": "クローンツール",
|
||||
"Clone count:": "クローン数:",
|
||||
"Clone tool disabled for resized image. Sorry.": "サイズ変更された画像に対してクローンツールが無効になっています。ごめんなさい。",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "サイズ変更された画像に対してクローン ツールが無効になりました。まずはラスタライズを行ってください。",
|
||||
"Cloned edges": "クローンエッジ",
|
||||
"Codystar": "コーディスター",
|
||||
"Close": "近い",
|
||||
"Color #": "色 #",
|
||||
"Color Corrections": "色補正",
|
||||
"Color Palette": "カラーパレット",
|
||||
@ -79,25 +74,25 @@
|
||||
"Colors": "色",
|
||||
"Colors:": "色:",
|
||||
"Common Filters": "共通フィルター",
|
||||
"Composition": "組成",
|
||||
"Composition:": "組成:",
|
||||
"Composition": "レイヤーの合成",
|
||||
"Composition:": "レイヤーの合成:",
|
||||
"Content Fill": "コンテンツの埋め込み",
|
||||
"Contrast": "コントラスト",
|
||||
"Contrast:": "コントラスト:",
|
||||
"Convert layer to raster": "レイヤーをラスターに変換",
|
||||
"Convert to Raster": "ラスタに変換する",
|
||||
"Copy Selection": "選択コピー",
|
||||
"Copy to Clipboard": "クリップボードにコピー",
|
||||
"Copy:": "コピー:",
|
||||
"Courier": "宅配便",
|
||||
"Creepster": "クリープスター",
|
||||
"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",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "現在",
|
||||
"Current Color Preview": "現在のカラープレビュー",
|
||||
"Custom": "カスタム",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "ダウン",
|
||||
"Duplicate": "重複",
|
||||
"Duplicate Layer": "重複レイヤー",
|
||||
"Duplicate layer": "レイヤーの複製",
|
||||
"Dynamic": "動的",
|
||||
"Edge": "エッジ",
|
||||
"Edit": "編集",
|
||||
@ -134,25 +130,30 @@
|
||||
"Emboss": "エンボス",
|
||||
"Empty selection": "空の選択",
|
||||
"Empty selection or type not image.": "空の選択またはタイプではない画像。",
|
||||
"Enable snap:": "スナップを有効にする:",
|
||||
"Enable autoresize:": "自動サイズ変更を有効にする:",
|
||||
"End": "終わり",
|
||||
"English": "英語",
|
||||
"English (UK)": "英語(イギリス)",
|
||||
"Enrich": "エンリッチ",
|
||||
"Enter": "入る",
|
||||
"Erase Tool": "消去ツール",
|
||||
"Erase on rotate object is disabled. Sorry.": "回転オブジェクトの消去が無効になっています。ごめんなさい。",
|
||||
"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": "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:": "エラー: サポートされていない属性タイプ:",
|
||||
"Esc": "ESC",
|
||||
"Escape": "逃れる",
|
||||
"Español": "スペイン語",
|
||||
"Expand edges": "エッジを開く",
|
||||
"Exponent:": "指数:",
|
||||
"External": "外部",
|
||||
"Export": "エクスポート",
|
||||
"External": "外部サイト",
|
||||
"Factor:": "因子:",
|
||||
"File": "ファイル",
|
||||
"File name:": "ファイル名:",
|
||||
@ -161,12 +162,14 @@
|
||||
"Fill Tool": "塗りつぶしツール",
|
||||
"Fit": "フィット",
|
||||
"Fit Window": "ウィンドウに合わせる",
|
||||
"Fit window": "ウィンドウにフィット",
|
||||
"Flatten Image": "画像を平ら",
|
||||
"Flip": "フリップ",
|
||||
"Flip": "反転",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-蛇紋文字",
|
||||
"Font": "フォント",
|
||||
"Français": "フランス語",
|
||||
"Full HD, 1080p": "フルHD、1080p",
|
||||
"Full Screen": "全画面表示",
|
||||
"Full layers data": "フルレイヤーデータ",
|
||||
"Gap:": "ギャップ:",
|
||||
"Gaussian Blur": "ガウスぼかし",
|
||||
@ -174,73 +177,81 @@
|
||||
"Gingham": "ギンガム",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient Radius:": "勾配半径:",
|
||||
"Grains": "穀類",
|
||||
"Grains": "フィルムグレイン",
|
||||
"Graphics Interchange Format": "グラフィック交換フォーマット",
|
||||
"Gray": "グレー",
|
||||
"Grayscale": "グレースケール",
|
||||
"Greek": "ギリシャ語",
|
||||
"Green": "緑",
|
||||
"Green channel:": "グリーンチャネル:",
|
||||
"Greyscale:": "グレースケール:",
|
||||
"Grid": "グリッド",
|
||||
"Grid on\/off": "グリッドのオン\/オフ",
|
||||
"Guides": "ガイド",
|
||||
"Guides enabled.": "ガイドが有効になりました。",
|
||||
"H Radius:": "H半径:",
|
||||
"H. Align:": "H.整列:",
|
||||
"Heatmap": "ヒートマップ",
|
||||
"Height (%):": "高さ (%):",
|
||||
"Height:": "高さ:",
|
||||
"Help": "助けて",
|
||||
"Help": "Help",
|
||||
"Helvetica": "ヘルベチカ",
|
||||
"Hermite": "エルミート",
|
||||
"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": "増加する",
|
||||
"Indie Flower": "インディーフラワー",
|
||||
"Information": "情報",
|
||||
"Inkwell": "インク壺",
|
||||
"Insert:": "インサート:",
|
||||
"Insert": "追加",
|
||||
"Insert guides": "インサートガイド",
|
||||
"Insert new layer": "新しいレイヤーを挿入",
|
||||
"Instagram Filters": "Instagramフィルター",
|
||||
"Invalid Hex Code": "無効な16進コード",
|
||||
"Italiano": "イタリア語",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG形式",
|
||||
"Kerning:": "字詰め:",
|
||||
"Key-Points": "キーポイント",
|
||||
"KeyU": "キーユー",
|
||||
"Keyboard Shortcuts": "キーボードショートカット",
|
||||
"Keyword:": "キーワード:",
|
||||
"Lanczos": "ランチョス",
|
||||
"Landscape": "風景",
|
||||
"Language": "言語",
|
||||
"Last modified": "最終更新日",
|
||||
"Lato": "ラト",
|
||||
"Layer": "層",
|
||||
"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ų": "Lietuvių",
|
||||
"Lo-fi": "ローファイ",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "輝度:",
|
||||
"Luminosity": "光度",
|
||||
"Magic Eraser Tool": "魔法の消しゴムツール",
|
||||
"Merge Down": "マージダウン",
|
||||
"Merge Layers": "レイヤーをマージする",
|
||||
"Merged": "合併",
|
||||
"Merriweather": "メリウェザー",
|
||||
"Metrics": "指標",
|
||||
"Middle": "中間",
|
||||
"Missing at least 1 size parameter.": "少なくとも1つのサイズパラメータがありません。",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "モジュール機能が見つかりません。",
|
||||
"Modules class not found:": "モジュールクラスが見つかりません:",
|
||||
"Monospace": "モノスペース",
|
||||
"Monoton": "モノトン",
|
||||
"Montserrat": "モントセラト",
|
||||
"Mosaic": "モザイク",
|
||||
"Mouse:": "マウス:",
|
||||
"Move": "移動",
|
||||
"Move Layer": "レイヤーを移動",
|
||||
"Move down": "下に移動",
|
||||
"Move up": "上がる",
|
||||
"Mukta": "ムクタ",
|
||||
"Muli": "ムリ",
|
||||
"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": "新しいファイル",
|
||||
@ -270,17 +277,16 @@
|
||||
"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": "新しい幅は現在の幅より小さくすることはできません",
|
||||
"Night Vision": "夜間視力",
|
||||
"Next": "次",
|
||||
"Night Vision": "暗視ゴーグル 緑",
|
||||
"None": "なし",
|
||||
"Nosifer": "ノシファー",
|
||||
"Nothing is selected.": "何も選択されていません。",
|
||||
"Nunito": "ヌニート",
|
||||
"Offset X:": "オフセットX:",
|
||||
"Offset Y:": "オフセットY:",
|
||||
"Oil": "油",
|
||||
@ -288,9 +294,9 @@
|
||||
"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を開く",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "URLを開く",
|
||||
"Open data URL": "公開データURL",
|
||||
"Open from Webcam": "ウェブカメラから開く",
|
||||
"Orbitron": "オービトロン",
|
||||
"Original Size": "オリジナルサイズ",
|
||||
"Oswald": "オズワルド",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG-画像をSVGに変換",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PTセリフ",
|
||||
"Pacifico": "パシフィコ",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - 画像をSVGに変換",
|
||||
"PageDown": "ページダウン",
|
||||
"PageUp": "ページアップ",
|
||||
"Palette": "パレット",
|
||||
@ -320,10 +321,10 @@
|
||||
"Placeholder comment for color channels": "カラーチャンネルのプレースホルダーコメント",
|
||||
"Placeholder comment for color picker": "カラーピッカーのプレースホルダーコメント",
|
||||
"Placeholder comment for color swatches": "色見本のプレースホルダーコメント",
|
||||
"Playfair Display": "プレイフェアディスプレイ",
|
||||
"Poppins": "ポピンズ",
|
||||
"Portable Network Graphics": "ポータブルネットワークグラフィックス",
|
||||
"Portrait": "肖像画",
|
||||
"Português": "ポルトガル語",
|
||||
"Position:": "位置:",
|
||||
"Power:": "力:",
|
||||
"Preview": "プレビュー",
|
||||
"Previous": "前",
|
||||
@ -332,15 +333,15 @@
|
||||
"Quality:": "品質:",
|
||||
"Quick Load": "クイックロード",
|
||||
"Quick Save": "クイックセーブ",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG-画像の背景を削除する",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 画像の背景を削除する",
|
||||
"Radial": "ラジアル",
|
||||
"Radial gradient": "放射グラジエント",
|
||||
"Radius:": "半径:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "範囲:",
|
||||
"Red": "赤",
|
||||
"Red channel:": "赤いチャンネル:",
|
||||
"Redo": "やり直し",
|
||||
"Remove all": "すべて削除する",
|
||||
"Rename": "名前を変更する",
|
||||
"Rename Layer": "レイヤーの名前を変更",
|
||||
"Rendered with errors.": "エラーでレンダリングされました。",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "置換:",
|
||||
"Report Issues": "レポートの問題",
|
||||
"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": "右から左へ",
|
||||
"Roboto": "Roboto",
|
||||
"Rotate": "回転する",
|
||||
"Rotate Layer": "レイヤーを回転",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?",
|
||||
"Rotate left": "左に回転",
|
||||
"Rotate:": "回転:",
|
||||
"Rubik": "ルービック",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH-画像を圧縮して比較する",
|
||||
"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": "オブジェクトツールを選択",
|
||||
@ -392,20 +392,22 @@
|
||||
"Selection Tool": "選択ツール",
|
||||
"Sensitivity:": "感度:",
|
||||
"Separated": "分離",
|
||||
"Separated (original types)": "セパレート(オリジナルタイプ)",
|
||||
"Sepia": "セピア",
|
||||
"Set Image Size": "画像サイズを設定する",
|
||||
"Settings": "設定",
|
||||
"Shadow": "影",
|
||||
"Shadow:": "影:",
|
||||
"Shapes": "形",
|
||||
"Shapes (H)": "形状(H)",
|
||||
"Sharpen": "シャープ",
|
||||
"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.": "スキップ - レイヤはイメージでなければなりません。",
|
||||
@ -416,25 +418,23 @@
|
||||
"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.": "ソースが空です。画像を右クリックするか、長押ししてソースの位置を保存します。",
|
||||
"Special Elite": "スペシャルエリート",
|
||||
"Sprites": "スプライト",
|
||||
"Square": "平方",
|
||||
"Stream:": "ストリーム:",
|
||||
"Strength:": "力:",
|
||||
"Strict": "厳格",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG-PNGとJPEGを圧縮します",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - PNGとJPEGを圧縮します",
|
||||
"Tab": "タブ",
|
||||
"Tag Image File Format": "タグ画像ファイル形式",
|
||||
"Tahoma": "タホマ",
|
||||
"Tangerine": "タンジェリン",
|
||||
"Target:": "ターゲット:",
|
||||
"Theme": "テーマ",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "トースター",
|
||||
"Toggle": "トグル",
|
||||
"Toggle Color Channels": "カラーチャンネルを切り替えます",
|
||||
@ -445,23 +445,24 @@
|
||||
"Top": "上",
|
||||
"Top to Bottom": "上から下へ",
|
||||
"Total pixels:": "合計ピクセル数:",
|
||||
"Translate": "翻訳",
|
||||
"Translate": "画像を移動",
|
||||
"Translate Layer": "翻訳レイヤー",
|
||||
"Translate error, can not find dictionary:": "翻訳エラー、辞書が見つかりません:",
|
||||
"Transparency background:": "透明性の背景:",
|
||||
"Transparent:": "トランスペアレント:",
|
||||
"Trim": "トリム",
|
||||
"Trim Layers": "レイヤーのトリム",
|
||||
"Trim borders:": "境界線をトリミングします。",
|
||||
"Trim layer:": "トリムレイヤー:",
|
||||
"Trim white color?": "白い色をトリム?",
|
||||
"Type:": "タイプ:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"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半径:",
|
||||
"V. Align:": "V.整列:",
|
||||
@ -471,11 +472,12 @@
|
||||
"Vertical": "垂直",
|
||||
"Vertical Alignment": "垂直方向の配置",
|
||||
"Vertical blur:": "垂直方向のぼかし:",
|
||||
"Vertical:": "垂直:",
|
||||
"Vibrance": "バイブランス",
|
||||
"View": "ビュー",
|
||||
"Vignette": "ビネット",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "ビンテージ",
|
||||
"Visible:": "表示:",
|
||||
"Webcam": "ウェブカメラ",
|
||||
"Webcam #": "ウェブカメラ #",
|
||||
"Website:": "ウェブサイト:",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24 점 별",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "실행 취소 기록을 제거하는 동안 문제가 발생했습니다. 그것",
|
||||
"About": "약",
|
||||
"Active": "유효한",
|
||||
"Add Borders": "테두리 추가",
|
||||
"Aden": "아덴",
|
||||
"Advanced": "많은",
|
||||
"All": "모든",
|
||||
"Alpha": "알파",
|
||||
"Alpha:": "알파 :",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "익명",
|
||||
"Anti aliasing": "안티 앨리어싱",
|
||||
"Application markup may have changed,": "애플리케이션 마크업이 변경되었을 수 있습니다.",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "화살",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
@ -50,7 +43,9 @@
|
||||
"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 :",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "명확한 선택",
|
||||
"Clone Tool": "복제 도구",
|
||||
"Clone count:": "클론 횟수 :",
|
||||
"Clone tool disabled for resized image. Sorry.": "크기가 조정 된 이미지에 대해 복제 도구가 비활성화되었습니다. 죄송합니다.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "크기가 조정된 이미지에 대해 복제 도구가 비활성화되었습니다. 먼저 래스터화해 주세요.",
|
||||
"Cloned edges": "복제 된 가장자리",
|
||||
"Codystar": "코디 스타",
|
||||
"Close": "닫다",
|
||||
"Color #": "색깔 #",
|
||||
"Color Corrections": "색상 보정",
|
||||
"Color Palette": "색상 팔레트",
|
||||
@ -84,20 +79,20 @@
|
||||
"Content Fill": "콘텐츠 채우기",
|
||||
"Contrast": "대조",
|
||||
"Contrast:": "대조:",
|
||||
"Convert layer to raster": "레이어를 래스터로 변환",
|
||||
"Convert to Raster": "래스터로 변환",
|
||||
"Copy Selection": "선택 항목 복사",
|
||||
"Copy to Clipboard": "클립 보드에 복사",
|
||||
"Copy:": "부:",
|
||||
"Courier": "급사",
|
||||
"Creepster": "크립 스터",
|
||||
"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",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "흐름",
|
||||
"Current Color Preview": "현재 색상 미리보기",
|
||||
"Custom": "관습",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "하위",
|
||||
"Duplicate": "복제",
|
||||
"Duplicate Layer": "중복 레이어",
|
||||
"Duplicate layer": "레이어 복제",
|
||||
"Dynamic": "동적",
|
||||
"Edge": "가장자리",
|
||||
"Edit": "편집하다",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "엠보싱",
|
||||
"Empty selection": "빈 선택",
|
||||
"Empty selection or type not image.": "이미지를 선택하지 않거나 입력하지 마십시오.",
|
||||
"Enable snap:": "스냅 활성화 :",
|
||||
"Enable autoresize:": "자동 크기 조정 활성화:",
|
||||
"End": "종료",
|
||||
"English": "영어",
|
||||
"English (UK)": "영어(영국)",
|
||||
"Enrich": "높이다",
|
||||
"Enter": "시작하다",
|
||||
"Erase Tool": "지우기 도구",
|
||||
"Erase on rotate object is disabled. Sorry.": "회전 객체에서 지우기가 비활성화됩니다. 죄송합니다.",
|
||||
"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:": "오류 : ID가있는 레이어를 찾을 수 없습니다.",
|
||||
"Error: missing details event target": "오류 : 세부 정보 이벤트 대상이 누락되었습니다.",
|
||||
"Error: unknown layer type:": "오류 : 알 수없는 레이어 유형 :",
|
||||
"Error: unsupported attribute type:": "오류: 지원되지 않는 속성 유형:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "탈출",
|
||||
"Español": "스페인어",
|
||||
"Expand edges": "가장자리 확장",
|
||||
"Exponent:": "멱지수:",
|
||||
"Export": "내보내다",
|
||||
"External": "외부",
|
||||
"Factor:": "인자:",
|
||||
"File": "파일",
|
||||
@ -161,12 +162,14 @@
|
||||
"Fill Tool": "채우기 도구",
|
||||
"Fit": "적당한",
|
||||
"Fit Window": "창에 맞추기",
|
||||
"Fit window": "창 맞추기",
|
||||
"Flatten Image": "납작한 이미지",
|
||||
"Flip": "튀기다",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg- 사문석",
|
||||
"Font": "폰트",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "풀 HD, 1080p",
|
||||
"Full Screen": "전체 화면",
|
||||
"Full layers data": "전체 레이어 데이터",
|
||||
"Gap:": "갭:",
|
||||
"Gaussian Blur": "가우스 흐림",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "그래픽 교환 형식",
|
||||
"Gray": "회색",
|
||||
"Grayscale": "그레이 스케일",
|
||||
"Greek": "그리스 어",
|
||||
"Green": "녹색",
|
||||
"Green channel:": "녹색 통로:",
|
||||
"Greyscale:": "그레이 스케일 :",
|
||||
"Grid": "그리드",
|
||||
"Grid on\/off": "그리드 켜기 \/ 끄기",
|
||||
"Guides": "가이드",
|
||||
"Guides enabled.": "가이드가 활성화되었습니다.",
|
||||
"H Radius:": "H 반경 :",
|
||||
"H. Align:": "H. 정렬 :",
|
||||
"Heatmap": "히트 맵",
|
||||
@ -192,55 +198,60 @@
|
||||
"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": "증가하다",
|
||||
"Indie Flower": "인디 플라워",
|
||||
"Information": "정보",
|
||||
"Inkwell": "잉크 그릇",
|
||||
"Insert:": "끼워 넣다:",
|
||||
"Insert": "끼워 넣다",
|
||||
"Insert guides": "가이드 삽입",
|
||||
"Insert new layer": "새 레이어 삽입",
|
||||
"Instagram Filters": "Instagram 필터",
|
||||
"Invalid Hex Code": "잘못된 16 진수 코드",
|
||||
"Italiano": "이탈리아어",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG 형식",
|
||||
"Kerning:": "커닝 :",
|
||||
"Key-Points": "키 포인트",
|
||||
"KeyU": "키유",
|
||||
"Keyboard Shortcuts": "키보드 단축키",
|
||||
"Keyword:": "예어:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "풍경",
|
||||
"Language": "언어",
|
||||
"Last modified": "최종 수정일",
|
||||
"Lato": "Lato",
|
||||
"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ų": "Lietuvių",
|
||||
"Lo-fi": "Lo-Fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "휘도 :",
|
||||
"Luminosity": "밝기",
|
||||
"Magic Eraser Tool": "매직 지우개 도구",
|
||||
"Merge Down": "병합",
|
||||
"Merge Layers": "계층을 병합하다",
|
||||
"Merged": "병합 됨",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "지표",
|
||||
"Middle": "가운데",
|
||||
"Missing at least 1 size parameter.": "크기 매개 변수가 1 개 이상 누락되었습니다.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "모듈 기능을 찾을 수 없습니다.",
|
||||
"Modules class not found:": "모듈 클래스를 찾을 수 없음 :",
|
||||
"Monospace": "고정 폭",
|
||||
"Monoton": "모노톤",
|
||||
"Montserrat": "몬세 라트",
|
||||
"Mosaic": "모자이크",
|
||||
"Mouse:": "쥐:",
|
||||
"Move": "움직임",
|
||||
"Move Layer": "레이어 이동",
|
||||
"Move down": "아래로 이동",
|
||||
"Move up": "이동",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "물리",
|
||||
"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": "새로운 파일",
|
||||
@ -270,17 +277,16 @@
|
||||
"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": "새 너비는 현재 너비보다 작을 수 없습니다.",
|
||||
"Next": "다음",
|
||||
"Night Vision": "나이트 비전",
|
||||
"None": "없음",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "아무것도 선택되지 않았습니다.",
|
||||
"Nunito": "누 니토",
|
||||
"Offset X:": "오프셋 X :",
|
||||
"Offset Y:": "오프셋 Y :",
|
||||
"Oil": "기름",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "URL 열기",
|
||||
"Open data URL": "공개 데이터 URL",
|
||||
"Open from Webcam": "웹캠에서 열기",
|
||||
"Orbitron": "궤도 론",
|
||||
"Original Size": "원본 크기",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG-이미지를 SVG로 변환",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT 세리프",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "페이지 위로",
|
||||
"Palette": "팔레트",
|
||||
@ -320,10 +321,10 @@
|
||||
"Placeholder comment for color channels": "색상 채널에 대한 자리 표시 자 주석",
|
||||
"Placeholder comment for color picker": "색상 선택기에 대한 자리 표시 자 주석",
|
||||
"Placeholder comment for color swatches": "색상 견본에 대한 자리 표시 자 주석",
|
||||
"Playfair Display": "플레이 페어 디스플레이",
|
||||
"Poppins": "포핀스",
|
||||
"Portable Network Graphics": "휴대용 네트워크 그래픽",
|
||||
"Portrait": "초상화",
|
||||
"Português": "Português",
|
||||
"Position:": "위치:",
|
||||
"Power:": "힘:",
|
||||
"Preview": "시사",
|
||||
"Previous": "너무 이른",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "방사형",
|
||||
"Radial gradient": "방사형 그래디언트",
|
||||
"Radius:": "반지름:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "범위:",
|
||||
"Red": "빨간",
|
||||
"Red channel:": "적색 통로:",
|
||||
"Redo": "다시 하다",
|
||||
"Remove all": "모두 제거",
|
||||
"Rename": "이름 바꾸기",
|
||||
"Rename Layer": "레이어 이름 변경",
|
||||
"Rendered with errors.": "오류와 함께 렌더링됩니다.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "바꿔 놓음:",
|
||||
"Report Issues": "문제 신고",
|
||||
"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": "오른쪽에서 왼쪽으로",
|
||||
"Roboto": "Roboto",
|
||||
"Rotate": "회전",
|
||||
"Rotate Layer": "레이어 회전",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?",
|
||||
"Rotate left": "왼쪽으로 회전",
|
||||
"Rotate:": "회전 :",
|
||||
"Rubik": "루빅",
|
||||
"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": "오브젝트 도구 선택",
|
||||
@ -392,20 +392,22 @@
|
||||
"Selection Tool": "선택 도구",
|
||||
"Sensitivity:": "감광도:",
|
||||
"Separated": "분리됨",
|
||||
"Separated (original types)": "분리형(원본 유형)",
|
||||
"Sepia": "세피아",
|
||||
"Set Image Size": "이미지 크기 설정",
|
||||
"Settings": "설정",
|
||||
"Shadow": "그림자",
|
||||
"Shadow:": "그림자:",
|
||||
"Shapes": "모양",
|
||||
"Shapes (H)": "모양(H)",
|
||||
"Sharpen": "갈다",
|
||||
"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.": "건너 뛰기 - 레이어가 이미지 여야합니다.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "죄송합니다. 이미지가 너무 크고 최대 5MB입니다.",
|
||||
"Source coordinates saved.": "소스 좌표가 저장되었습니다.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "소스가 비어 있습니다. 이미지를 마우스 오른쪽 버튼으로 클릭하거나 길게 눌러 소스 위치를 저장하세요.",
|
||||
"Special Elite": "스페셜 엘리트",
|
||||
"Sprites": "스프라이트",
|
||||
"Square": "광장",
|
||||
"Stream:": "흐름:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "엄격한",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG-PNG 및 JPEG 압축",
|
||||
"Tab": "탭",
|
||||
"Tag Image File Format": "태그 이미지 파일 형식",
|
||||
"Tahoma": "타호 마",
|
||||
"Tangerine": "귤",
|
||||
"Target:": "목표:",
|
||||
"Theme": "테마",
|
||||
"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",
|
||||
"Titillium Web": "Titillium 웹",
|
||||
"Toaster": "토스터에",
|
||||
"Toggle": "비녀장",
|
||||
"Toggle Color Channels": "색상 채널 전환",
|
||||
@ -448,20 +448,21 @@
|
||||
"Translate": "옮기다",
|
||||
"Translate Layer": "레이어 번역",
|
||||
"Translate error, can not find dictionary:": "번역 오류, 사전을 찾을 수 없음 :",
|
||||
"Transparency background:": "투명도 배경 :",
|
||||
"Transparent:": "투명한:",
|
||||
"Trim": "손질",
|
||||
"Trim Layers": "레이어 트림",
|
||||
"Trim borders:": "테두리 자르기 :",
|
||||
"Trim layer:": "레이어 다듬기 :",
|
||||
"Trim white color?": "흰색을 다듬을까요?",
|
||||
"Type:": "유형:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "우분투",
|
||||
"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 반경 :",
|
||||
"V. Align:": "V. 정렬 :",
|
||||
@ -471,11 +472,12 @@
|
||||
"Vertical": "수직선",
|
||||
"Vertical Alignment": "수직 정렬",
|
||||
"Vertical blur:": "수직 흐림 효과 :",
|
||||
"Vertical:": "수직의:",
|
||||
"Vibrance": "활기찬",
|
||||
"View": "보다",
|
||||
"Vignette": "삽화",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "포도 수확",
|
||||
"Visible:": "명백한:",
|
||||
"Webcam": "웹캠",
|
||||
"Webcam #": "웹캠 #",
|
||||
"Website:": "웹 사이트 :",
|
||||
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24 taškų žvaigždė",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Pašalinant anuliavimo istoriją įvyko problema. Tai",
|
||||
"About": "Apie",
|
||||
"Active": "Aktyvus",
|
||||
"Add Borders": "Pridėti sienos",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Pažangus",
|
||||
"All": "Visi",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Amatic SC": "„Amatic SC“",
|
||||
"Anonymous": "Anoniminis",
|
||||
"Anti aliasing": "Sulieti",
|
||||
"Application markup may have changed,": "Programos žymėjimas galėjo pasikeisti,",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Rodyklė",
|
||||
"ArrowDown": "Rodyklė žemyn",
|
||||
"ArrowLeft": "Rodyklė kairėn",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Deginti",
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Išvalyti pasirinkimą",
|
||||
"Clone Tool": "Klonų įrankis",
|
||||
"Clone count:": "Klonų skaičius:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Klonavimo įrankis išjungtas pakeitus vaizdo dydį. Atsiprašau.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Klonavimo įrankis išjungtas norint pakeisti vaizdo dydį. Pirmiausia rastruokite.",
|
||||
"Cloned edges": "Klonuoti kraštai",
|
||||
"Codystar": "„Codystar“",
|
||||
"Close": "Uždaryti",
|
||||
"Color #": "Spalva #",
|
||||
"Color Corrections": "Spalvų korekcijos",
|
||||
"Color Palette": "Spalvų paletė",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "Nukopijuoti į iškarpinę",
|
||||
"Copy:": "Kopijuoti:",
|
||||
"Courier": "Courier",
|
||||
"Creepster": "Creepster",
|
||||
"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+A": "„Ctrl“ + A",
|
||||
"Ctrl+C": "„Ctrl“ + C",
|
||||
"Ctrl+V": "Ctrl + v",
|
||||
"Ctrl+Y": "„Ctrl“ + Y",
|
||||
"Ctrl+Z": "„Ctrl“ + Z",
|
||||
"Ctrl-P": "Ctrl-p",
|
||||
"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",
|
||||
"Current Color Preview": "Dabartinė spalvų peržiūra",
|
||||
"Custom": "Kitas",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "Žemyn",
|
||||
"Duplicate": "Pasikartojantis",
|
||||
"Duplicate Layer": "Pasikartojantis sluoksnis",
|
||||
"Duplicate layer": "Dubliuoti sluoksnį",
|
||||
"Dynamic": "Dinamiškas",
|
||||
"Edge": "Kraštas",
|
||||
"Edit": "Redaguoti",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "Įspausti",
|
||||
"Empty selection": "Tuščias pasirinkimas",
|
||||
"Empty selection or type not image.": "Tuščias pasirinkimas arba įveskite ne vaizdą.",
|
||||
"Enable snap:": "Įgalinti snap:",
|
||||
"Enable autoresize:": "Įjungti automatinį dydžio nustatymą:",
|
||||
"End": "Galas",
|
||||
"English": "Anglų",
|
||||
"English (UK)": "anglų (JK)",
|
||||
"Enrich": "Praturtinti",
|
||||
"Enter": "Įveskite",
|
||||
"Erase Tool": "Ištrinti įrankį",
|
||||
"Erase on rotate object is disabled. Sorry.": "Ištrinti objektą pasukti yra išjungtas. atsiprašau",
|
||||
"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 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:",
|
||||
"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",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Šriftas",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "Per visą ekraną",
|
||||
"Full layers data": "Visų sluoksnių duomenys",
|
||||
"Gap:": "Atotrūkis:",
|
||||
"Gaussian Blur": "Gauso suliejimo",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "Grafikos mainų formatas",
|
||||
"Gray": "Pilkas",
|
||||
"Grayscale": "Pelės skalė",
|
||||
"Greek": "graikų",
|
||||
"Green": "Žalias",
|
||||
"Green channel:": "Žalias kanalas:",
|
||||
"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",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Indie gėlė",
|
||||
"Information": "Informacija",
|
||||
"Inkwell": "Rašalo kasykla",
|
||||
"Insert:": "Įdėti:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG formatas",
|
||||
"Kerning:": "Kerningas:",
|
||||
"Key-Points": "Pagrindiniai klausimai",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Klaviatūros nuorodos",
|
||||
"Keyword:": "Raktinis žodis:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Peizažas",
|
||||
"Language": "Kalba",
|
||||
"Last modified": "Paskutinį kartą keistas",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Sluoksnis",
|
||||
"Layer details": "Sluoksnio detalės",
|
||||
"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ų",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Skaisčio:",
|
||||
"Luminosity": "Šviesumas",
|
||||
"Magic Eraser Tool": "„Magic Eraser“ įrankis",
|
||||
"Merge Down": "Sujungti žemyn",
|
||||
"Merge Layers": "Sujungti sluoksnius",
|
||||
"Merged": "Sujungta",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Metrika",
|
||||
"Middle": "Vidurinis",
|
||||
"Missing at least 1 size parameter.": "Trūksta bent 1 dydžio parametro.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Modulio funkcija nerasta.",
|
||||
"Modules class not found:": "Modulio klasė nerasta:",
|
||||
"Monospace": "Monospace",
|
||||
"Monoton": "Monotonas",
|
||||
"Montserrat": "Montseratas",
|
||||
"Mosaic": "Mozaika",
|
||||
"Mouse:": "Pelė:",
|
||||
"Move": "Perkelti",
|
||||
"Move Layer": "Perkelti sluoksnį",
|
||||
"Move down": "Judėti žemyn",
|
||||
"Move up": "Perkelti",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Kitas",
|
||||
"Night Vision": "Naktinis matymas",
|
||||
"None": "Nė vienas",
|
||||
"Nosifer": "Nosiferis",
|
||||
"Nothing is selected.": "Niekas nėra pasirinktas.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Nuokrypis x:",
|
||||
"Offset Y:": "Kompensuoti:",
|
||||
"Oil": "Aliejus",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "Atidaryti url",
|
||||
"Open data URL": "Atidaryti duomenų url",
|
||||
"Open from Webcam": "Atidarykite iš interneto kameros",
|
||||
"Orbitron": "Orbitronas",
|
||||
"Original Size": "Originalus dydis",
|
||||
"Oswald": "Osvaldas",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - konvertuoti vaizdą į SVG",
|
||||
"PT Sans": "„PT Sans“",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "„PageDown“",
|
||||
"PageUp": "Į viršų",
|
||||
"Palette": "Paletė",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "„Playfair“ ekranas",
|
||||
"Poppins": "Popinsas",
|
||||
"Portable Network Graphics": "Nešiojama tinklo grafika",
|
||||
"Portrait": "Portretas",
|
||||
"Português": "Português",
|
||||
"Position:": "Padėtis:",
|
||||
"Power:": "Galia:",
|
||||
"Preview": "Peržiūrėti",
|
||||
"Previous": "Ankstesnis",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radialinis",
|
||||
"Radial gradient": "Radialinis gradientas",
|
||||
"Radius:": "Spindulys:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Kategorijos:",
|
||||
"Red": "Raudonas",
|
||||
"Red channel:": "Raudonasis kanalas:",
|
||||
"Redo": "Perdaryti",
|
||||
"Remove all": "Pašalinti visus",
|
||||
"Rename": "Pervadinti",
|
||||
"Rename Layer": "Pervardyti sluoksnį",
|
||||
"Rendered with errors.": "Pateikta su klaidomis.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Pakeitimas:",
|
||||
"Report Issues": "Pranešti apie problemas",
|
||||
"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ę",
|
||||
"Roboto": "Robotas",
|
||||
"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:",
|
||||
"Rubik": "Rubikas",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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": "Aštrinimo įrankis",
|
||||
"Sharpen:": "Paryškinti:",
|
||||
"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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Atsiprašome, vaizdas yra per didelis, daugiausiai 5 MB.",
|
||||
"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į.",
|
||||
"Special Elite": "Ypatingas elitas",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Langelis",
|
||||
"Stream:": "Srautas:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "Griežtas",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - suspausti PNG ir JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Žymės vaizdo failo formatas",
|
||||
"Tahoma": "Tahoma",
|
||||
"Tangerine": "Mandarinas",
|
||||
"Target:": "Tikslas:",
|
||||
"Theme": "Tema",
|
||||
"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",
|
||||
"Titillium Web": "„Titillium Web“",
|
||||
"Toaster": "Skrudintuvas",
|
||||
"Toggle": "Perjungti",
|
||||
"Toggle Color Channels": "Perjungti spalvų kanalus",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Apdailos sluoksniai",
|
||||
"Trim borders:": "Apkirpti kraštus:",
|
||||
"Trim layer:": "Trim sluoksnis:",
|
||||
"Trim white color?": "Trim balta spalva?",
|
||||
"Type:": "Tipas:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "„Ubuntu“",
|
||||
"Undo": "Anuliuoti",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"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:",
|
||||
"Webcam": "Internetinė kamera",
|
||||
"Webcam #": "Internetinė kamera #",
|
||||
"Website:": "Interneto svetainė:",
|
||||
|
||||
514
src/js/languages/nl.json
Normal file
514
src/js/languages/nl.json
Normal 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:"
|
||||
}
|
||||
@ -1,27 +1,20 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "Estrela de 24 pontos",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Adicionar Fronteiras",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avançado",
|
||||
"All": "Todos",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "Anônimo",
|
||||
"Anti aliasing": "Anti-aliasing",
|
||||
"Application markup may have changed,": "A marcação do aplicativo pode ter mudado,",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Flecha",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
"ArrowRight": "ArrowRight",
|
||||
"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",
|
||||
@ -34,23 +27,25 @@
|
||||
"Blue": "Azul",
|
||||
"Blue channel:": "Canal azul:",
|
||||
"Blueprint": "Blueprint",
|
||||
"Blur Radius:": "Blur Radius:",
|
||||
"Blur Radius:": "Raio de desfoque:",
|
||||
"Blur Tool": "Ferramenta de desfoque",
|
||||
"Blur power:": "Blur power:",
|
||||
"Borders": "Fronteiras",
|
||||
"Blur power:": "Intensidade do desfoque:",
|
||||
"Borders": "Bordas",
|
||||
"Bottom": "Inferior",
|
||||
"Bottom to Top": "De baixo para cima",
|
||||
"Bounds:": "Limites:",
|
||||
"Box": "Caixa",
|
||||
"Box Blur": "Borrão de caixa",
|
||||
"Box blur": "Borrão de caixa",
|
||||
"Box Blur": "Desfoque de caixa",
|
||||
"Box blur": "Desfoque de caixa",
|
||||
"Brightness": "Brilho",
|
||||
"Brightness:": "Brilho:",
|
||||
"Bulge\/Pinch Tool": "Ferramenta Bulge \/ Pinch",
|
||||
"Burn": "Queimar",
|
||||
"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:",
|
||||
@ -61,18 +56,18 @@
|
||||
"Channel:": "Canal:",
|
||||
"Circle": "Círculo",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Claro",
|
||||
"Clear Selection": "Seleção clara",
|
||||
"Clear": "Limpar",
|
||||
"Clear Selection": "Limpar seleção",
|
||||
"Clone Tool": "Ferramenta Clone",
|
||||
"Clone count:": "Contagem de clones:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Ferramenta de clonagem desativada para imagem redimensionada. Desculpa.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Ferramenta de clonagem desativada para imagem redimensionada. Por favor, rasterize primeiro.",
|
||||
"Cloned edges": "Bordas clonadas",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Fechar",
|
||||
"Color #": "Cor #",
|
||||
"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 alpha colorido não pode ser zero.",
|
||||
"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:",
|
||||
@ -84,23 +79,23 @@
|
||||
"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 to Clipboard": "Copiar para área de transferência",
|
||||
"Copy:": "Cópia de:",
|
||||
"Courier": "Correio",
|
||||
"Creepster": "Creepster",
|
||||
"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. Converta em raster para continuar.",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"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",
|
||||
"Current Color Preview": "Antevisão da Cor Atual",
|
||||
"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",
|
||||
@ -108,8 +103,8 @@
|
||||
"Degree:": "Grau:",
|
||||
"Del": "Del",
|
||||
"Delete": "Excluir",
|
||||
"Delete Selection": "Eliminar seleção",
|
||||
"Denoise": "Denoise",
|
||||
"Delete Selection": "Excluir seleção",
|
||||
"Denoise": "Reduzir ruído",
|
||||
"Desaturate Tool": "Ferramenta de dessaturação",
|
||||
"Description:": "Descrição:",
|
||||
"Deutsch": "Deutsch",
|
||||
@ -120,38 +115,44 @@
|
||||
"Dithering:": "Dithering:",
|
||||
"Dominant color:": "Cor dominante:",
|
||||
"Dot Screen": "Tela de ponto",
|
||||
"Down": "Baixa",
|
||||
"Down": "Abaixo",
|
||||
"Duplicate": "Duplicado",
|
||||
"Duplicate Layer": "Duplicar Camada",
|
||||
"Duplicate layer": "Duplicar Camada",
|
||||
"Dynamic": "Dinâmico",
|
||||
"Edge": "Beira",
|
||||
"Edge": "Borda",
|
||||
"Edit": "Editar",
|
||||
"Edit text...": "Editar texto...",
|
||||
"Effect browser": "Navegador de efeitos",
|
||||
"Effect browser": "Buscador de efeitos",
|
||||
"Effects": "Efeitos",
|
||||
"Effects browser": "Navegador de 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.",
|
||||
"Enable snap:": "Habilitar snap:",
|
||||
"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": "Inglês",
|
||||
"English": "English",
|
||||
"English (UK)": "English (UK)",
|
||||
"Enrich": "Enriquecer",
|
||||
"Enter": "Entrar",
|
||||
"Erase Tool": "Ferramenta Apagar",
|
||||
"Erase on rotate object is disabled. Sorry.": "Apagar no objeto rotativo está desabilitado. Desculpa.",
|
||||
"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 find filter:": "Erro: não consigo encontrar o filtro:",
|
||||
"Error: can not find layer with id:": "Erro: não é possível encontrar camada com id:",
|
||||
"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:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Escapar",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Expandir bordas",
|
||||
"Exponent:": "Expoente:",
|
||||
"Export": "Exportar",
|
||||
"External": "Externo",
|
||||
"Factor:": "Fator:",
|
||||
"File": "Arquivo",
|
||||
@ -159,88 +160,98 @@
|
||||
"File size:": "Tamanho do arquivo:",
|
||||
"Fill": "Preencher",
|
||||
"Fill Tool": "Ferramenta de Preenchimento",
|
||||
"Fit": "Em forma",
|
||||
"Fit Window": "Janela de ajuste",
|
||||
"Fit": "Ajustar",
|
||||
"Fit Window": "Ajuste de Janela",
|
||||
"Fit window": "Ajustar janela",
|
||||
"Flatten Image": "Achatar imagem",
|
||||
"Flip": "Giro",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"Font": "Fonte",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "Tela cheia",
|
||||
"Full layers data": "Dados de camadas completas",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Gaussian Blur",
|
||||
"Gif delay:": "Retardo GIF:",
|
||||
"Gap:": "Espaçamento:",
|
||||
"Gaussian Blur": "Desfoque Gaussiano",
|
||||
"Gif delay:": "Atraso do GIF:",
|
||||
"Gingham": "Tecido de algodão",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient Radius:": "Radiação de gradiente:",
|
||||
"Gradient Radius:": "Raio do Gradiente:",
|
||||
"Grains": "Grãos",
|
||||
"Graphics Interchange Format": "Formato de intercâmbio de gráficos",
|
||||
"Gray": "cinzento",
|
||||
"Gray": "Cinza",
|
||||
"Grayscale": "Escala de cinza",
|
||||
"Greek": "Ελληνικά (Greek)",
|
||||
"Green": "Verde",
|
||||
"Green channel:": "Canal verde:",
|
||||
"Greyscale:": "Greyscale:",
|
||||
"Greyscale:": "Escala de cinza:",
|
||||
"Grid": "Grade",
|
||||
"Grid on\/off": "Grid on \/ off",
|
||||
"H Radius:": "H Radius:",
|
||||
"H. Align:": "H. Alinhar:",
|
||||
"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",
|
||||
"Hide": "Ocultar",
|
||||
"Histogram": "Histograma",
|
||||
"Histogram:": "Histograma:",
|
||||
"Home": "Casa",
|
||||
"Home": "Início",
|
||||
"Horizontal": "Horizontal",
|
||||
"Horizontal Alignment": "Alinhamento horizontal",
|
||||
"Horizontal blur:": "Desfoque horizontal:",
|
||||
"Horizontal:": "Horizontal:",
|
||||
"Hue": "Matiz",
|
||||
"Hue Rotate": "Hue Rotate",
|
||||
"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",
|
||||
"Impact": "Impact",
|
||||
"In proportion:": "Na proporção:",
|
||||
"Increase": "Aumentar",
|
||||
"Indie Flower": "Flor indie",
|
||||
"Information": "Em formação",
|
||||
"Information": "Informação",
|
||||
"Inkwell": "Tinteiro",
|
||||
"Insert:": "Inserir:",
|
||||
"Instagram Filters": "Filtros Instagram",
|
||||
"Invalid Hex Code": "Código hexadecimal inválido",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Kerning:",
|
||||
"Key-Points": "Pontos chave",
|
||||
"Keyboard Shortcuts": "Atalhos do teclado",
|
||||
"Key-Points": "Pontos-chave",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Atalhos de teclado",
|
||||
"Keyword:": "Palavra-chave:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Language": "Língua",
|
||||
"Landscape": "Paisagem",
|
||||
"Language": "Idioma",
|
||||
"Last modified": "Última modificação",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Camada",
|
||||
"Layer details": "Detalhes da camada",
|
||||
"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, converta-o em raster para aplicar esta ferramenta.",
|
||||
"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ų",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Luminância:",
|
||||
"Luminosity": "Luminosidade",
|
||||
"Magic Eraser Tool": "Ferramenta de borracha mágica",
|
||||
"Merge Down": "Fusionar",
|
||||
"Merge Down": "Mesclar para Baixo",
|
||||
"Merge Layers": "Mesclar Camadas",
|
||||
"Merged": "Mesclado",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Métricas",
|
||||
"Middle": "Meio",
|
||||
"Missing at least 1 size parameter.": "Falta pelo menos 1 parâmetro de tamanho.",
|
||||
@ -248,143 +259,132 @@
|
||||
"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": "Monoespaço",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "mosaico",
|
||||
"Mouse:": "Rato:",
|
||||
"Mouse:": "Mouse:",
|
||||
"Move": "Mover",
|
||||
"Move Layer": "Mover Camada",
|
||||
"Move down": "Mover para baixo",
|
||||
"Move up": "Subir",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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": "Camada de Nova Linha",
|
||||
"New Line Layer": "Nova Camada de Linha",
|
||||
"New Pencil Layer": "Nova Camada de Lápis",
|
||||
"New Rectangle Layer": "Nova Camada Retângulo",
|
||||
"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",
|
||||
"Next": "Próximo",
|
||||
"Night Vision": "Visão noturna",
|
||||
"None": "Nenhum",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Nada é selecionado.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
"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 File Data URL": "URL de dados de arquivo aberto",
|
||||
"Open File URL": "URL do arquivo aberto",
|
||||
"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": "Imagem Aberta",
|
||||
"Open Image": "Abrir Imagem",
|
||||
"Open JSON File": "Abrir arquivo JSON",
|
||||
"Open Test Template": "Modelo de teste aberto",
|
||||
"Open URL": "Url aberta",
|
||||
"Open Test Template": "Abrir modelo de teste",
|
||||
"Open URL": "Abrir URL",
|
||||
"Open data URL": "Abrir URL de dados",
|
||||
"Open from Webcam": "Abrir na webcam",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Tamanho original",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converter imagem para SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacífico",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "Subir página",
|
||||
"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:",
|
||||
"Percentage:": "Porcentagem:",
|
||||
"Pixels:": "Píxeis:",
|
||||
"Placeholder comment for color channels": "Comentário de espaço reservado para canais de cores",
|
||||
"Placeholder comment for color picker": "Comentário do marcador de posição para o seletor de cores",
|
||||
"Placeholder comment for color swatches": "Comentário de espaço reservado para amostras de cores",
|
||||
"Playfair Display": "Playfair Display",
|
||||
"Poppins": "Poppins",
|
||||
"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:",
|
||||
"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:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Alcance:",
|
||||
"Red": "Vermelho",
|
||||
"Red channel:": "Canal vermelho:",
|
||||
"Redo": "Refazer",
|
||||
"Remove all": "Remover tudo",
|
||||
"Rename": "Renomear",
|
||||
"Rename Layer": "Renomear Camada",
|
||||
"Rendered with errors.": "Renderizado com erros.",
|
||||
"Rendering...": "Renderização...",
|
||||
"Replace Color": "Substituir cor",
|
||||
"Replace color": "Substitua a cor",
|
||||
"Rendering...": "Renderizando...",
|
||||
"Replace Color": "Substituir Cor",
|
||||
"Replace color": "Substitua cor",
|
||||
"Replacement:": "Substituição:",
|
||||
"Report Issues": "Relatar problemas",
|
||||
"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:",
|
||||
"Right to Left": "Direita para esquerda",
|
||||
"Roboto": "Roboto",
|
||||
"Rotate": "Girar",
|
||||
"Rotate Layer": "Rodar Camada",
|
||||
"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:",
|
||||
"Rubik": "Rubik",
|
||||
"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:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "O aumento de escala não é compatível com Hermite, usando Lanczos.",
|
||||
"Scroll down": "Rolar para baixo",
|
||||
"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",
|
||||
@ -392,51 +392,51 @@
|
||||
"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:",
|
||||
"Shapes": "Formas",
|
||||
"Sharpen": "Sharpen",
|
||||
"Sharpen Tool": "Ferramenta Afiar",
|
||||
"Sharpen:": "Sharpen:",
|
||||
"Shapes (H)": "Formas (H)",
|
||||
"Sharpen": "Afiar",
|
||||
"Sharpen Tool": "Ferramenta de Afiar",
|
||||
"Sharpen:": "Afiar:",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "Tecla de atalho:",
|
||||
"Show \/ Hide": "Aparecer esconder",
|
||||
"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, cold not load getUserMedia() data:": "Não carreguei os dados getUserMedia () a frio:",
|
||||
"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 imagem e cole-a.",
|
||||
"Sorry, image is too big, max 5 MB.": "Desculpe, a imagem é muito grande, no máximo 5 MB.",
|
||||
"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.",
|
||||
"Special Elite": "Elite Especial",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Quadrado",
|
||||
"Stream:": "Corrente:",
|
||||
"Stream:": "Transmissão:",
|
||||
"Strength:": "Força:",
|
||||
"Strict": "Rigoroso",
|
||||
"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",
|
||||
"Tangerine": "tangerina",
|
||||
"Target:": "Alvo:",
|
||||
"Theme": "Tema",
|
||||
"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.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "A camada deve ser imagem, converta-a em raster para aplicar esta ferramenta.",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "Torradeira",
|
||||
"Toggle": "Alternancia",
|
||||
"Toggle": "Alternar",
|
||||
"Toggle Color Channels": "Alternar canais de cores",
|
||||
"Toggle Color Picker": "Alternar seletor de cores",
|
||||
"Toggle Menu": "Alternar menu",
|
||||
@ -446,66 +446,68 @@
|
||||
"Top to Bottom": "De cima para baixo",
|
||||
"Total pixels:": "Total de pixels:",
|
||||
"Translate": "Traduzir",
|
||||
"Translate Layer": "Camada de tradução",
|
||||
"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 Layers": "Camadas de corte",
|
||||
"Trim borders:": "Bordas aparadas:",
|
||||
"Trim layer:": "Trim layer:",
|
||||
"Trim white color?": "Trim cor branca?",
|
||||
"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",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Desfazer",
|
||||
"Unique colors:": "Cores únicas:",
|
||||
"Up": "Acima",
|
||||
"Update Brush Layer": "Atualizar camada de pincel",
|
||||
"Update Pencil Layer": "Atualizar camada de lápis",
|
||||
"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. Align:": "V. Alinhar:",
|
||||
"V Radius:": "Raio V.",
|
||||
"V. Align:": "Alinhamento V.",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versão:",
|
||||
"Vertical": "Vertical",
|
||||
"Vertical Alignment": "Alinhamento vertical",
|
||||
"Vertical blur:": "Borrão vertical:",
|
||||
"Vertical blur:": "Desfoque vertical:",
|
||||
"Vertical:": "Vertical:",
|
||||
"Vibrance": "Vibração",
|
||||
"View": "Visualizar",
|
||||
"Vignette": "Vinheta",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Visible:": "Visível:",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Local na rede Internet:",
|
||||
"Website:": "Website:",
|
||||
"Weppy File Format": "Formato de arquivo Weppy",
|
||||
"Width (%):": "Largura (%):",
|
||||
"Width:": "Largura:",
|
||||
"Windows Bitmap": "Bitmap do Windows",
|
||||
"Word": "Palavra",
|
||||
"Word + Letter": "Palavra + Carta",
|
||||
"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 imagem ou json.",
|
||||
"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:"
|
||||
}
|
||||
@ -1,56 +1,51 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24-балльная звезда",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Ошибка при удалении истории отмен. Это",
|
||||
"About": "Около",
|
||||
"Active": "активный",
|
||||
"Add Borders": "Добавить границы",
|
||||
"Aden": "Аден",
|
||||
"Advanced": "продвинутый",
|
||||
"About": "О проекте",
|
||||
"Active": "Активный",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Продвинутый",
|
||||
"All": "Все",
|
||||
"Alpha": "Альфа",
|
||||
"Alpha:": "Альфа:",
|
||||
"Amatic SC": "Аматик СК",
|
||||
"Anonymous": "анонимное",
|
||||
"Anonymous": "Анонимное",
|
||||
"Anti aliasing": "Сглаживание",
|
||||
"Application markup may have changed,": "Разметка приложения могла измениться,",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Аримо",
|
||||
"Arrow": "Стрела",
|
||||
"Arrow": "Стрелка",
|
||||
"ArrowDown": "Стрелка вниз",
|
||||
"ArrowLeft": "Стрелка влево",
|
||||
"ArrowRight": "Стрелка вправо",
|
||||
"ArrowUp": "ArrowUp",
|
||||
"ArrowUp": "Стрелка вверх",
|
||||
"Author:": "Автор:",
|
||||
"Auto Adjust Colors": "Автоматическая настройка цветов",
|
||||
"Auto Adjust Colors": "Автоматическая настройка цвета",
|
||||
"Auto Kerning": "Автоматический кернинг",
|
||||
"Average:": "В среднем:",
|
||||
"Backspace": "Backspace",
|
||||
"Base": "База",
|
||||
"Basic": "основной",
|
||||
"Black and White": "Черное и белое",
|
||||
"Blue": "синий",
|
||||
"Blue channel:": "Голубой канал:",
|
||||
"Basic": "Основа",
|
||||
"Black and White": "Черный и Белый",
|
||||
"Blue": "Синий",
|
||||
"Blue channel:": "Синий канал:",
|
||||
"Blueprint": "Чертеж",
|
||||
"Blur Radius:": "Радиус размытия:",
|
||||
"Blur Tool": "Инструмент размытия",
|
||||
"Blur power:": "Размытие:",
|
||||
"Blur Radius:": "Радиус Размытия:",
|
||||
"Blur Tool": "Инструмент Размытия",
|
||||
"Blur power:": "Сила размытия:",
|
||||
"Borders": "Границы",
|
||||
"Bottom": "Дно",
|
||||
"Bottom to Top": "Снизу вверх",
|
||||
"Bounds:": "Границы:",
|
||||
"Box": "Коробка",
|
||||
"Box Blur": "Размытие ящика",
|
||||
"Box blur": "Размытие коробки",
|
||||
"Brightness": "яркость",
|
||||
"Box Blur": "Размытие по рамке",
|
||||
"Box blur": "Размытие по рамке",
|
||||
"Brightness": "Яркость",
|
||||
"Brightness:": "Яркость:",
|
||||
"Bulge\/Pinch Tool": "Инструмент выпуклости \/ защемления",
|
||||
"Burn": "жечь",
|
||||
"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:",
|
||||
@ -62,185 +57,201 @@
|
||||
"Circle": "Круг",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Очистить",
|
||||
"Clear Selection": "Очистить выбор",
|
||||
"Clear Selection": "Очистить Выбор",
|
||||
"Clone Tool": "Инструмент клонирования",
|
||||
"Clone count:": "Количество клонов:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Инструмент клонирования отключен для изображения с измененным размером. Сожалею.",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Инструмент клонирования отключен для изображения с измененным размером. Пожалуйста, сначала растрируйте.",
|
||||
"Cloned edges": "Клонированные края",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Закрывать",
|
||||
"Color #": "Цвет #",
|
||||
"Color Corrections": "Коррекция цвета",
|
||||
"Color Palette": "Цветовая палитра",
|
||||
"Color Zoom": "Цветное увеличение",
|
||||
"Color alpha value can not be zero.": "Значение цветной альфа не может быть равно нулю.",
|
||||
"Color to Alpha": "Цвет в альфа",
|
||||
"Color zoom": "Цветное увеличение",
|
||||
"Color Zoom": "Усиление цвета",
|
||||
"Color alpha value can not be zero.": "Значение цвета не может быть равно нулю.",
|
||||
"Color to Alpha": "Цвет в прозрачность",
|
||||
"Color zoom": "Усиление цвета",
|
||||
"Color:": "Цвет:",
|
||||
"Colors": "Цвета",
|
||||
"Colors:": "Цвета:",
|
||||
"Common Filters": "Общие фильтры",
|
||||
"Common Filters": "Обычные фильтры",
|
||||
"Composition": "Состав",
|
||||
"Composition:": "Состав:",
|
||||
"Content Fill": "Контент заполняется",
|
||||
"Contrast": "контрастировать",
|
||||
"Content Fill": "Заполнение содержимого",
|
||||
"Contrast": "Контраст",
|
||||
"Contrast:": "Контраст:",
|
||||
"Convert to Raster": "Преобразовать в растровый",
|
||||
"Copy Selection": "Выбор копии",
|
||||
"Copy to Clipboard": "Скопировать в буфер обмена",
|
||||
"Copy:": "Копирование:",
|
||||
"Courier": "курьер",
|
||||
"Creepster": "Creepster",
|
||||
"Crop Tool": "Инструмент для обрезки",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Обрезка повернутого слоя не поддерживается. Преобразуйте его в растр, чтобы продолжить.",
|
||||
"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+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "Текущий",
|
||||
"Current Color Preview": "Текущий просмотр цвета",
|
||||
"Custom": "изготовленный на заказ",
|
||||
"Data URL": "URL-адрес данных",
|
||||
"Data URL:": "URL-адрес данных:",
|
||||
"Current": "Выбранный",
|
||||
"Current Color Preview": "Выбранный цвет",
|
||||
"Custom": "Свой",
|
||||
"Data URL": "URL данных",
|
||||
"Data URL:": "URL данных:",
|
||||
"Decrease": "Уменьшить",
|
||||
"Decrease Color Depth": "Уменьшить глубину цвета",
|
||||
"Degree:": "Степень:",
|
||||
"Degree:": "Градус:",
|
||||
"Del": "Del",
|
||||
"Delete": "Удалить",
|
||||
"Delete Selection": "Удалить выделение",
|
||||
"Denoise": "Denoise",
|
||||
"Denoise": "Шумоподавление",
|
||||
"Desaturate Tool": "Инструмент обесцвечивания",
|
||||
"Description:": "Описание:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Различия",
|
||||
"Differences Down": "Разница вниз",
|
||||
"Direction:": "Направление:",
|
||||
"Dither": "трястись",
|
||||
"Dithering:": "Смешение:",
|
||||
"Dominant color:": "Доминирующий цвет:",
|
||||
"Dither": "Сгладить",
|
||||
"Dithering:": "Сглаживание:",
|
||||
"Dominant color:": "Доминирующий:",
|
||||
"Dot Screen": "Точечный экран",
|
||||
"Down": "вниз",
|
||||
"Duplicate": "дублировать",
|
||||
"Down": "Вниз",
|
||||
"Duplicate": "Дублировать",
|
||||
"Duplicate Layer": "Дублировать слой",
|
||||
"Duplicate layer": "Дублировать слой",
|
||||
"Dynamic": "Динамический",
|
||||
"Edge": "край",
|
||||
"Edit": "редактировать",
|
||||
"Edge": "Край",
|
||||
"Edit": "Редактировать",
|
||||
"Edit text...": "Редактировать текст...",
|
||||
"Effect browser": "Браузер эффектов",
|
||||
"Effects": "Последствия",
|
||||
"Effects browser": "Браузер эффектов",
|
||||
"Email:": "Эл. адрес:",
|
||||
"Emboss": "выбивать",
|
||||
"Effect browser": "Подборка фильтров",
|
||||
"Effects": "Фильтры",
|
||||
"Effects browser": "Подборка фильтров",
|
||||
"Email:": "Email:",
|
||||
"Emboss": "Тиснение",
|
||||
"Empty selection": "Пустой выбор",
|
||||
"Empty selection or type not image.": "Пустой выбор или введите не изображение.",
|
||||
"Enable snap:": "Включить привязку:",
|
||||
"Enable autoresize:": "Автоматически увеличивать холст:",
|
||||
"End": "Конец",
|
||||
"English": "английский",
|
||||
"Enrich": "обогащать",
|
||||
"English": "English",
|
||||
"English (UK)": "английский (Великобритания)",
|
||||
"Enrich": "Насытить",
|
||||
"Enter": "Войти",
|
||||
"Erase Tool": "Инструмент стирания",
|
||||
"Erase on rotate object is disabled. Sorry.": "Стереть объект поворота отключен. Сожалею.",
|
||||
"Error": "ошибка",
|
||||
"Erase Tool": "Ластик",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Стирание при повороте объекта отключено. Пожалуйста, сначала растрируйте.",
|
||||
"Error": "Ошибка",
|
||||
"Error connecting to service.": "Ошибка подключения к сервису.",
|
||||
"Error: can not find filter:": "Ошибка: не могу найти фильтр:",
|
||||
"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": "Esc",
|
||||
"Escape": "Побег",
|
||||
"Escape": "ESC",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Развернуть края",
|
||||
"Exponent:": "Экспонент:",
|
||||
"External": "Внешний",
|
||||
"Factor:": "фактор:",
|
||||
"File": "файл",
|
||||
"Export": "Экспорт",
|
||||
"External": "Внешние инструменты",
|
||||
"Factor:": "Фактор:",
|
||||
"File": "Файл",
|
||||
"File name:": "Имя файла:",
|
||||
"File size:": "Размер файла:",
|
||||
"Fill": "заполнить",
|
||||
"Fill Tool": "Инструмент заливки",
|
||||
"Fit": "Поместиться",
|
||||
"Fit Window": "Окно для установки",
|
||||
"Fill": "Заливка",
|
||||
"Fill Tool": "Инструмент Заливки",
|
||||
"Fit": "Вписать",
|
||||
"Fit Window": "Вписать в окно",
|
||||
"Fit window": "Вписать в окно",
|
||||
"Flatten Image": "Свести изображение",
|
||||
"Flip": "кувырок",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-змеевик",
|
||||
"Flip": "Отразить",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"Font": "Шрифт",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"Full Screen": "Полноэкранный",
|
||||
"Full layers data": "Данные полных слоев",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Гауссовское размытие",
|
||||
"Gap:": "Зазор:",
|
||||
"Gaussian Blur": "Гауссовское Размытие",
|
||||
"Gif delay:": "Задержка Gif:",
|
||||
"Gingham": "Зонтик",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient Radius:": "Радиус градиента:",
|
||||
"Grains": "зерна",
|
||||
"Grains": "Зерна",
|
||||
"Graphics Interchange Format": "Формат обмена графикой",
|
||||
"Gray": "Серый",
|
||||
"Grayscale": "Оттенки серого",
|
||||
"Green": "зеленый",
|
||||
"Green channel:": "Зеленый коридор:",
|
||||
"Greek": "Греческий",
|
||||
"Green": "Зеленый",
|
||||
"Green channel:": "Зеленый канал:",
|
||||
"Greyscale:": "Оттенки серого:",
|
||||
"Grid": "сетка",
|
||||
"Grid on\/off": "Включение \/ выключение сетки",
|
||||
"Grid": "Сетка",
|
||||
"Grid on\/off": "Сетка вкл\/выкл",
|
||||
"Guides": "Гайдлайны",
|
||||
"Guides enabled.": "Гайдлайны включены",
|
||||
"H Radius:": "H Радиус:",
|
||||
"H. Align:": "H. Выровнять:",
|
||||
"H. Align:": "H. Выравнивание:",
|
||||
"Heatmap": "Тепловая карта",
|
||||
"Height (%):": "Высота (%):",
|
||||
"Height:": "Высота:",
|
||||
"Help": "Помогите",
|
||||
"Help": "Помощь",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Эрмита",
|
||||
"Hermite": "Hermite",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Скрыть",
|
||||
"Histogram": "Гистограмма",
|
||||
"Histogram:": "Гистограмма:",
|
||||
"Home": "Главная",
|
||||
"Horizontal": "горизонтальный",
|
||||
"Horizontal": "Горизонтально",
|
||||
"Horizontal Alignment": "Горизонтальное выравнивание",
|
||||
"Horizontal blur:": "Горизонтальное размытие:",
|
||||
"Horizontal:": "Горизонтальный:",
|
||||
"Hue": "Оттенок",
|
||||
"Hue Rotate": "Оттенок",
|
||||
"Hue Rotate": "Вращение оттенка",
|
||||
"Hue:": "Оттенок:",
|
||||
"Image": "Образ",
|
||||
"Image": "Изображение",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Данные изображения с несколькими слоями. Может быть открыт с помощью miniPaint -",
|
||||
"Impact": "Влияние",
|
||||
"Increase": "Увеличение",
|
||||
"Indie Flower": "Инди-цветок",
|
||||
"Impact": "Влиять",
|
||||
"In proportion:": "Сохранять пропорции:",
|
||||
"Increase": "Увеличить",
|
||||
"Information": "Информация",
|
||||
"Inkwell": "Чернильница",
|
||||
"Insert:": "Вставка:",
|
||||
"Inkwell": "Inkwell",
|
||||
"Insert": "Вставить",
|
||||
"Insert guides": "Добавить гайд",
|
||||
"Insert new layer": "Новый слой",
|
||||
"Instagram Filters": "Фильтры Instagram",
|
||||
"Invalid Hex Code": "Неверный шестнадцатеричный код",
|
||||
"Invalid Hex Code": "Неверный HEX код",
|
||||
"Italiano": "Italiano",
|
||||
"JPG\/JPEG Format": "Формат JPG \/ JPEG",
|
||||
"Kerning:": "Кернинг:",
|
||||
"Key-Points": "Ключевые пункты",
|
||||
"JPG\/JPEG Format": "JPG\/JPEG Формат",
|
||||
"Kerning:": "Интервал:",
|
||||
"Key-Points": "Ключевые точки",
|
||||
"KeyU": "КлючU",
|
||||
"Keyboard Shortcuts": "Горячие клавиши",
|
||||
"Keyword:": "Ключевое слово:",
|
||||
"Lanczos": "Ланцош",
|
||||
"Language": "язык",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Альбомная",
|
||||
"Language": "Язык",
|
||||
"Last modified": "Последнее изменение",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Слой",
|
||||
"Layer details": "Детали слоя",
|
||||
"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ų",
|
||||
"Lo-fi": "Лоу-фай",
|
||||
"Lora": "Лора",
|
||||
"Luminance:": "Luminance:",
|
||||
"Luminosity": "Яркость",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Освещенность:",
|
||||
"Luminosity": "Освещенность",
|
||||
"Magic Eraser Tool": "Волшебный ластик",
|
||||
"Merge Down": "Слить",
|
||||
"Merge Down": "Соединить вниз",
|
||||
"Merge Layers": "Соединить слои",
|
||||
"Merged": "Объединенное",
|
||||
"Merriweather": "Мерриуэзер",
|
||||
"Metrics": "Метрики",
|
||||
"Middle": "Средний",
|
||||
"Missing at least 1 size parameter.": "Отсутствует хотя бы 1 параметр размера.",
|
||||
@ -249,70 +260,60 @@
|
||||
"Module function not found.": "Функция модуля не найдена.",
|
||||
"Modules class not found:": "Класс модулей не найден:",
|
||||
"Monospace": "Моноширинный",
|
||||
"Monoton": "Монотонный",
|
||||
"Montserrat": "Монсеррат",
|
||||
"Mosaic": "мозаика",
|
||||
"Mosaic": "Мозаика",
|
||||
"Mouse:": "Мышь:",
|
||||
"Move": "Переехать",
|
||||
"Move": "Переместить",
|
||||
"Move Layer": "Переместить слой",
|
||||
"Move down": "Переместить вниз",
|
||||
"Move up": "Переместить вверх",
|
||||
"Mukta": "Мукта",
|
||||
"Muli": "Мули",
|
||||
"Move layer down": "Опустить слой ниже",
|
||||
"Move layer up": "Поднять слой выше",
|
||||
"Name:": "Имя:",
|
||||
"Needs at least 2 layers.": "Требуется не менее 2 слоев.",
|
||||
"Negative": "отрицательный",
|
||||
"New": "новый",
|
||||
"New Brush Layer": "Новый слой кисти",
|
||||
"New Ellipse Layer": "Новый слой эллипса",
|
||||
"Negative": "Негатив",
|
||||
"New": "Новый",
|
||||
"New Bezier Layer": "Новый слой Безье",
|
||||
"New Brush Layer": "Новый слой Кисти",
|
||||
"New Ellipse Layer": "Новый слой Эллипса",
|
||||
"New File": "Новый файл",
|
||||
"New Gradient Layer": "Новый слой градиента",
|
||||
"New Gradient Layer": "Новый слой Градиента",
|
||||
"New Layer": "Новый слой",
|
||||
"New Line Layer": "Новый линейный слой",
|
||||
"New Pencil Layer": "Новый слой карандаша",
|
||||
"New Rectangle Layer": "Новый слой прямоугольника",
|
||||
"New Text 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": "Новая ширина не может быть меньше текущей ширины",
|
||||
"Next": "Следующий",
|
||||
"Night Vision": "Ночное видение",
|
||||
"None": "Никто",
|
||||
"Nosifer": "Носифер",
|
||||
"None": "Ничего",
|
||||
"Nothing is selected.": "Ничего не выбрано.",
|
||||
"Nunito": "Нунито",
|
||||
"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 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": "Открыть с веб-камеры",
|
||||
"Orbitron": "Орбитрон",
|
||||
"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": "Оригинальный размер",
|
||||
"Oswald": "Освальд",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - конвертировать изображение в SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Конвертировать изображение в SVG",
|
||||
"PageDown": "Листать вниз",
|
||||
"PageUp": "PageUp",
|
||||
"Palette": "палитра",
|
||||
"Parameter #1:": "Параметр №1:",
|
||||
"Parameter #2:": "Параметр №2:",
|
||||
"PageUp": "Листать вверх",
|
||||
"Palette": "Палитра",
|
||||
"Parameter #1:": "Параметр #1:",
|
||||
"Parameter #2:": "Параметр #2:",
|
||||
"Paste": "Вставить",
|
||||
"Pencil": "Карандаш",
|
||||
"Percentage:": "Процент:",
|
||||
@ -320,192 +321,193 @@
|
||||
"Placeholder comment for color channels": "Комментарий-заполнитель для цветовых каналов",
|
||||
"Placeholder comment for color picker": "Комментарий-заполнитель для палитры цветов",
|
||||
"Placeholder comment for color swatches": "Комментарий-заполнитель для образцов цвета",
|
||||
"Playfair Display": "Дисплей Playfair",
|
||||
"Poppins": "Поппинс",
|
||||
"Portable Network Graphics": "Переносимая сетевая графика",
|
||||
"Portable Network Graphics": "Портативная Сетевая Графика",
|
||||
"Portrait": "Портретная",
|
||||
"Português": "Português",
|
||||
"Power:": "Мощность:",
|
||||
"Preview": "предварительный просмотр",
|
||||
"Previous": "предыдущий",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.",
|
||||
"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": "Быстрое сохранение",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Удалить фон изображения",
|
||||
"Radial": "радиальный",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Удалить Фон Изображения",
|
||||
"Radial": "Радиальный",
|
||||
"Radial gradient": "Радиальный градиент",
|
||||
"Radius:": "Радиус:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "Ассортимент:",
|
||||
"Red": "красный",
|
||||
"Range:": "Диапазон:",
|
||||
"Red": "Красный",
|
||||
"Red channel:": "Красный канал:",
|
||||
"Redo": "Повторить",
|
||||
"Rename": "переименовывать",
|
||||
"Remove all": "Удалить все",
|
||||
"Rename": "Переименовать",
|
||||
"Rename Layer": "Переименовать слой",
|
||||
"Rendered with errors.": "Отрисовано с ошибками.",
|
||||
"Rendering...": "Рендеринг ...",
|
||||
"Rendering...": "Отрисовка ...",
|
||||
"Replace Color": "Заменить цвет",
|
||||
"Replace color": "Заменить цвет",
|
||||
"Replacement:": "Замена:",
|
||||
"Report Issues": "Проблемы с отчетами",
|
||||
"Report Issues": "Сообщить о проблемах",
|
||||
"Reset": "Сброс",
|
||||
"Reset zoom level": "Сбросить уровень масштабирования",
|
||||
"Resize": "Изменение размера",
|
||||
"Resize": "Изменить размер",
|
||||
"Resize Boundary": "Изменить размер границы",
|
||||
"Resize Layer": "Изменить размер слоя",
|
||||
"Resize Layers": "Изменить размер слоев",
|
||||
"Resize Text Layer": "Изменить размер текстового слоя",
|
||||
"Resized as background": "Изменилось в качестве фона",
|
||||
"Resized as background": "Изменено в качестве фона",
|
||||
"Resized:": "Изменён размер:",
|
||||
"Resolution:": "Разрешение:",
|
||||
"Restore Alpha": "Восстановить альфа",
|
||||
"Right": "Правильно",
|
||||
"Restore Alpha": "Восстановить прозрачность",
|
||||
"Right": "Вправо",
|
||||
"Right angle:": "Прямой угол:",
|
||||
"Right to Left": "Справа налево",
|
||||
"Roboto": "Робото",
|
||||
"Rotate": "Поворот",
|
||||
"Rotate": "Повернуть",
|
||||
"Rotate Layer": "Повернуть слой",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?",
|
||||
"Rotate left": "Поверните влево",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Растрировать?",
|
||||
"Rotate left": "Повернуть влево",
|
||||
"Rotate:": "Поворот:",
|
||||
"Rubik": "Рубик",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - сжатие и сравнение изображений",
|
||||
"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 Text Layer": "Выбрать текстовый слой",
|
||||
"Select object tool": "Выберите инструмент объекта",
|
||||
"Selected": "выбранный",
|
||||
"Select object tool": "Выбор объекта",
|
||||
"Selected": "Выбранный",
|
||||
"Selection Tool": "Инструмент выделения",
|
||||
"Sensitivity:": "Чувствительность:",
|
||||
"Separated": "Отдельно",
|
||||
"Separated (original types)": "Отдельно (оригинальный формат)",
|
||||
"Sepia": "Сепия",
|
||||
"Set Image Size": "Установить размер изображения",
|
||||
"Settings": "настройки",
|
||||
"Settings": "Настройки",
|
||||
"Shadow": "Тень",
|
||||
"Shadow:": "Тень:",
|
||||
"Shapes": "Формы",
|
||||
"Sharpen": "точить",
|
||||
"Sharpen Tool": "Инструмент повышения резкости",
|
||||
"Sharpen:": "Резкость:",
|
||||
"Shapes": "Фигуры",
|
||||
"Shapes (H)": "Фигуры (H)",
|
||||
"Sharpen": "Резкость",
|
||||
"Sharpen Tool": "Инструмент резкости",
|
||||
"Sharpen:": "Повысить четкость:",
|
||||
"Shift + S": "Шифт + С",
|
||||
"Shortcut Key:": "Быстрая клавиша:",
|
||||
"Show \/ Hide": "Показать спрятать",
|
||||
"Show file size:": "Показать размер файла:",
|
||||
"Simple": "просто",
|
||||
"Size": "Размер",
|
||||
"Size is too big, max": "Размер слишком большой, макс.",
|
||||
"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 () не выполняется:",
|
||||
"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 МБ.",
|
||||
"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.": "Источник пуст, щелкните изображение правой кнопкой мыши или нажмите и удерживайте, чтобы сохранить исходное положение.",
|
||||
"Special Elite": "Особая элита",
|
||||
"Sprites": "Спрайты",
|
||||
"Square": "Квадрат",
|
||||
"Stream:": "Поток:",
|
||||
"Strength:": "Прочность:",
|
||||
"Strict": "строгий",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - сжатие PNG и JPEG",
|
||||
"Strict": "Строго",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Сжатие PNG и JPEG",
|
||||
"Tab": "Вкладка",
|
||||
"Tahoma": "Тахома",
|
||||
"Tangerine": "мандарин",
|
||||
"Tag Image File Format": "Формат файла изображения тега",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Цель:",
|
||||
"Theme": "Тема",
|
||||
"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": "Сдвиг наклона",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "Тостер",
|
||||
"Toggle": "тумблер",
|
||||
"Toggle Color Channels": "Переключить цветовые каналы",
|
||||
"Toggle Color Picker": "Переключить палитру цветов",
|
||||
"Toggle Menu": "Переключить меню",
|
||||
"Toggle Swatches": "Переключить образцы",
|
||||
"Tools": "инструменты",
|
||||
"Top": "верхний",
|
||||
"Toaster": "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:": "Перевести ошибку, не найти словарь:",
|
||||
"Transparency background:": "Прозрачный фон:",
|
||||
"Transparent:": "Прозрачный:",
|
||||
"Trim": "Отделка",
|
||||
"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",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "расстегивать",
|
||||
"Undo": "Отменить",
|
||||
"Unique colors:": "Уникальные цвета:",
|
||||
"Up": "вверх",
|
||||
"Update Brush Layer": "Обновить слой кисти",
|
||||
"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": "Валенсия",
|
||||
"V Radius:": "В радиус:",
|
||||
"V. Align:": "В. Выровнять:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Версия:",
|
||||
"Vertical": "вертикальный",
|
||||
"Vertical Alignment": "Вертикальное выравнивание",
|
||||
"Vertical": "Вертикально",
|
||||
"Vertical Alignment": "Вертикальное Выравнивание",
|
||||
"Vertical blur:": "Вертикальное размытие:",
|
||||
"Vibrance": "вибрация",
|
||||
"Vertical:": "Вертикальное:",
|
||||
"Vibrance": "Вибрация",
|
||||
"View": "Вид",
|
||||
"Vignette": "Виньетка",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "марочный",
|
||||
"Visible:": "Видимых:",
|
||||
"Webcam": "Вебкамера",
|
||||
"Webcam #": "Вебкамера #",
|
||||
"Vintage": "Винтаж",
|
||||
"Webcam": "Веб-камера",
|
||||
"Webcam #": "Веб-камера #",
|
||||
"Website:": "Веб-сайт:",
|
||||
"Weppy File Format": "Формат файла Weppy",
|
||||
"Width (%):": "Ширина (%):",
|
||||
"Width:": "Ширина:",
|
||||
"Windows Bitmap": "Растровое изображение Windows",
|
||||
"Word": "слово",
|
||||
"Word + Letter": "Слово + письмо",
|
||||
"Word": "Слово",
|
||||
"Word + Letter": "Слово + Буква",
|
||||
"Wrap At:": "Обернуть в:",
|
||||
"Wrap:": "Заворачивать:",
|
||||
"Wrap:": "Обвернуть:",
|
||||
"Wrong dimensions": "Неправильные размеры",
|
||||
"Wrong file type, must be image or json.": "Неверный тип файла должен быть изображением или json.",
|
||||
"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:": "Приблизить:"
|
||||
}
|
||||
@ -1,23 +1,16 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24 Puan yıldız",
|
||||
"2d": "2d",
|
||||
"3a0339": "3a0339",
|
||||
"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",
|
||||
"Add Borders": "Kenarlıklar Ekle",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "ileri",
|
||||
"All": "Herşey",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"Anonymous": "Anonim",
|
||||
"Anti aliasing": "Örtüşme önleme",
|
||||
"Application markup may have changed,": "Uygulama işaretlemesi değişmiş olabilir,",
|
||||
"Arial": "Arial",
|
||||
"Arimo": "Arimo",
|
||||
"Arrow": "Ok",
|
||||
"ArrowDown": "Aşağı ok",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
@ -50,7 +43,9 @@
|
||||
"Burn": "Yanmak",
|
||||
"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:",
|
||||
@ -65,9 +60,9 @@
|
||||
"Clear Selection": "Seçimi Temizle",
|
||||
"Clone Tool": "Klonlama Aracı",
|
||||
"Clone count:": "Klon sayısı:",
|
||||
"Clone tool disabled for resized image. Sorry.": "Yeniden boyutlandırılan görüntü için klonlama aracı devre dışı bırakıldı. Afedersiniz.",
|
||||
"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",
|
||||
"Codystar": "Codystar",
|
||||
"Close": "Kapalı",
|
||||
"Color #": "Renk #",
|
||||
"Color Corrections": "Renk düzeltmeleri",
|
||||
"Color Palette": "Renk paleti",
|
||||
@ -84,20 +79,20 @@
|
||||
"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 to Clipboard": "Panoya kopyala",
|
||||
"Copy:": "Kopya:",
|
||||
"Courier": "Kurye",
|
||||
"Creepster": "Sürüngen",
|
||||
"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+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "şimdiki",
|
||||
"Current Color Preview": "Mevcut Renk Önizlemesi",
|
||||
"Custom": "görenek",
|
||||
@ -123,6 +118,7 @@
|
||||
"Down": "Aşağı",
|
||||
"Duplicate": "Çift",
|
||||
"Duplicate Layer": "Yinelenen katman",
|
||||
"Duplicate layer": "Yinelenen katman",
|
||||
"Dynamic": "Dinamik",
|
||||
"Edge": "kenar",
|
||||
"Edit": "Düzenle",
|
||||
@ -134,24 +130,29 @@
|
||||
"Emboss": "kabartma yapmak",
|
||||
"Empty selection": "Boş seçim",
|
||||
"Empty selection or type not image.": "Boş seçim veya resim değil yazın.",
|
||||
"Enable snap:": "Snap'i etkinleştir:",
|
||||
"Enable autoresize:": "Otomatik yeniden boyutlandırmayı etkinleştir:",
|
||||
"End": "Son",
|
||||
"English": "ingilizce",
|
||||
"English (UK)": "İngilizce (İngiltere)",
|
||||
"Enrich": "Zenginleştirmek",
|
||||
"Enter": "Giriş",
|
||||
"Erase Tool": "Silme Aracı",
|
||||
"Erase on rotate object is disabled. Sorry.": "Döndürme nesnesinde silme devre dışı. Afedersiniz.",
|
||||
"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 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ü:",
|
||||
"Esc": "ESC",
|
||||
"Escape": "Kaçış",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Kenarları genişlet",
|
||||
"Exponent:": "Üs:",
|
||||
"Export": "İhracat",
|
||||
"External": "Harici",
|
||||
"Factor:": "Faktör:",
|
||||
"File": "Dosya",
|
||||
@ -161,12 +162,14 @@
|
||||
"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",
|
||||
"Font": "Yazı tipi",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Tam HD, 1080p",
|
||||
"Full Screen": "Tam ekran",
|
||||
"Full layers data": "Tam katman verileri",
|
||||
"Gap:": "boşluk:",
|
||||
"Gaussian Blur": "Gauss Bulanıklığı",
|
||||
@ -178,11 +181,14 @@
|
||||
"Graphics Interchange Format": "Grafik Değişim Biçimi",
|
||||
"Gray": "Gri",
|
||||
"Grayscale": "Gri tonlama",
|
||||
"Greek": "Yunan",
|
||||
"Green": "Yeşil",
|
||||
"Green channel:": "Yeşil kanal:",
|
||||
"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ı",
|
||||
@ -192,55 +198,60 @@
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"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",
|
||||
"Indie Flower": "Indie Flower",
|
||||
"Information": "Bilgi",
|
||||
"Inkwell": "Inkwell",
|
||||
"Insert:": "ekle:",
|
||||
"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",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG Biçimi",
|
||||
"Kerning:": "Karakter aralığı:",
|
||||
"Key-Points": "Anahtar noktaları",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Klavye kısayolları",
|
||||
"Keyword:": "Anahtar kelime:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Manzara",
|
||||
"Language": "Dil",
|
||||
"Last modified": "Son düzenleme",
|
||||
"Lato": "Lato",
|
||||
"Layer": "Katman",
|
||||
"Layer details": "Katman ayrıntıları",
|
||||
"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",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Lora": "Lora",
|
||||
"Luminance:": "Parlaklık:",
|
||||
"Luminosity": "Parlaklık",
|
||||
"Magic Eraser Tool": "Sihirli Silgi Aracı",
|
||||
"Merge Down": "Aşağı Birleştir",
|
||||
"Merge Layers": "Katmanları birleştirmek",
|
||||
"Merged": "Birleştirilmiş",
|
||||
"Merriweather": "Merriweather",
|
||||
"Metrics": "Metrikler",
|
||||
"Middle": "Orta",
|
||||
"Missing at least 1 size parameter.": "En az 1 boyut parametresi eksik.",
|
||||
@ -249,20 +260,16 @@
|
||||
"Module function not found.": "Modül işlevi bulunamadı.",
|
||||
"Modules class not found:": "Modüller sınıf bulunamadı:",
|
||||
"Monospace": "Tek aralıklı",
|
||||
"Monoton": "Monoton",
|
||||
"Montserrat": "Montserrat",
|
||||
"Mosaic": "Mozaik",
|
||||
"Mouse:": "Fare:",
|
||||
"Move": "Hareket",
|
||||
"Move Layer": "Katmanı Taşı",
|
||||
"Move down": "Aşağı inmek",
|
||||
"Move up": "Yukarı çık",
|
||||
"Mukta": "Mukta",
|
||||
"Muli": "Muli",
|
||||
"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",
|
||||
@ -270,17 +277,16 @@
|
||||
"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",
|
||||
"Next": "Sonraki",
|
||||
"Night Vision": "Gece görüşü",
|
||||
"None": "Yok",
|
||||
"Nosifer": "Nosifer",
|
||||
"Nothing is selected.": "Hiçbir şey seçilmedi.",
|
||||
"Nunito": "Nunito",
|
||||
"Offset X:": "Ofset X:",
|
||||
"Offset Y:": "Ofset Y:",
|
||||
"Oil": "Sıvı yağ",
|
||||
@ -301,13 +307,8 @@
|
||||
"Open URL": "Link aç",
|
||||
"Open data URL": "Açık veri URL'si",
|
||||
"Open from Webcam": "Web Kamerasından Aç",
|
||||
"Orbitron": "Orbitron",
|
||||
"Original Size": "Orijinal boyut",
|
||||
"Oswald": "Oswald",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Resmi SVG'ye Dönüştür",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT Serif",
|
||||
"Pacifico": "Pacifico",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "Sayfa yukarı",
|
||||
"Palette": "palet",
|
||||
@ -320,10 +321,10 @@
|
||||
"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",
|
||||
"Playfair Display": "Playfair Ekranı",
|
||||
"Poppins": "Poppins",
|
||||
"Portable Network Graphics": "taşınabilir Ağ Grafikleri",
|
||||
"Portrait": "Vesika",
|
||||
"Português": "Português",
|
||||
"Position:": "Konum:",
|
||||
"Power:": "Güç:",
|
||||
"Preview": "Ön izleme",
|
||||
"Previous": "Önceki",
|
||||
@ -336,11 +337,11 @@
|
||||
"Radial": "Radyal",
|
||||
"Radial gradient": "Radyal degrade",
|
||||
"Radius:": "radius:",
|
||||
"Raleway": "Raleway",
|
||||
"Range:": "aralık:",
|
||||
"Red": "Kırmızı",
|
||||
"Red channel:": "Kırmızı kanal:",
|
||||
"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.",
|
||||
@ -350,41 +351,40 @@
|
||||
"Replacement:": "Değiştirme:",
|
||||
"Report Issues": "Sorunları bildir",
|
||||
"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",
|
||||
"Roboto": "Roboto",
|
||||
"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ü:",
|
||||
"Rubik": "Rubik",
|
||||
"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",
|
||||
@ -392,20 +392,22 @@
|
||||
"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:": "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.",
|
||||
@ -416,7 +418,6 @@
|
||||
"Sorry, image is too big, max 5 MB.": "Maalesef, resim çok büyük, maksimum 5 MB.",
|
||||
"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.",
|
||||
"Special Elite": "Özel Elit",
|
||||
"Sprites": "Spritelar",
|
||||
"Square": "Kare",
|
||||
"Stream:": "Akış:",
|
||||
@ -424,17 +425,16 @@
|
||||
"Strict": "sıkı",
|
||||
"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",
|
||||
"Tangerine": "Mandalina",
|
||||
"Target:": "Hedef:",
|
||||
"Theme": "Tema",
|
||||
"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",
|
||||
"Titillium Web": "Titillium Web",
|
||||
"Toaster": "Tost makinası",
|
||||
"Toggle": "geçiş",
|
||||
"Toggle Color Channels": "Renk Kanallarını Değiştir",
|
||||
@ -448,20 +448,21 @@
|
||||
"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 Layers": "Katmanları Kırp",
|
||||
"Trim borders:": "Kenarlıkları kırp:",
|
||||
"Trim layer:": "Döşeme tabakası:",
|
||||
"Trim white color?": "Beyaz rengini keser misin?",
|
||||
"Type:": "Tip:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Ubuntu": "Ubuntu",
|
||||
"Undo": "Geri alma",
|
||||
"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:",
|
||||
@ -471,11 +472,12 @@
|
||||
"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:",
|
||||
"Webcam": "Web kamerası",
|
||||
"Webcam #": "Web kamerası #",
|
||||
"Website:": "Web sitesi:",
|
||||
|
||||
@ -1,511 +1,535 @@
|
||||
{
|
||||
"1em": "1em",
|
||||
"24-Points star": "24点星",
|
||||
"2d": "2D",
|
||||
"3a0339": "3a0339",
|
||||
"480p": "480P",
|
||||
"A problem occurred while removing undo history. It": "删除撤消历史记录时发生问题。它",
|
||||
"A problem occurred while removing undo history. It": "删除撤销历史记录时发生问题。它",
|
||||
"About": "关于",
|
||||
"Active": "活性",
|
||||
"Add Borders": "添加边框",
|
||||
"Aden": "亚丁",
|
||||
"Active": "活动",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "高级",
|
||||
"All": "所有",
|
||||
"Alpha": "Α",
|
||||
"Alpha:": "Α:",
|
||||
"Amatic SC": "Amatic SC",
|
||||
"All": "全部",
|
||||
"Alpha": "透明度",
|
||||
"Alpha:": "透明度:",
|
||||
"Animation": "动画",
|
||||
"Anonymous": "匿名",
|
||||
"Anti aliasing": "消除锯齿",
|
||||
"Arial": "宋体",
|
||||
"Arimo": "有力",
|
||||
"Anti aliasing": "抗锯齿",
|
||||
"Application markup may have changed,": "应用标记可能已更改,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "箭头",
|
||||
"ArrowDown": "向下箭头",
|
||||
"ArrowLeft": "左箭头",
|
||||
"ArrowLeft": "向左箭头",
|
||||
"ArrowRight": "向右箭头",
|
||||
"ArrowUp": "向上箭头",
|
||||
"Author:": "作者:",
|
||||
"Auto Adjust Colors": "自动调整颜色",
|
||||
"Auto Kerning": "自动紧缩",
|
||||
"Average:": "平均:",
|
||||
"Auto Kerning": "自动紧排",
|
||||
"Auto select": "自动选择",
|
||||
"Average:": "平均值:",
|
||||
"Backspace": "退格键",
|
||||
"Base": "基础",
|
||||
"Basic": "基本",
|
||||
"Black and White": "黑与白",
|
||||
"Black and White": "黑白",
|
||||
"Blue": "蓝色",
|
||||
"Blue channel:": "蓝色通道:",
|
||||
"Blueprint": "蓝图",
|
||||
"Blur": "模糊工具",
|
||||
"Blur Radius:": "模糊半径:",
|
||||
"Blur Tool": "模糊工具",
|
||||
"Blur power:": "模糊力量:",
|
||||
"Borders": "国界",
|
||||
"Blur power:": "模糊强度:",
|
||||
"Borders": "边框",
|
||||
"Bottom": "底部",
|
||||
"Bottom to Top": "从下到上",
|
||||
"Bounds:": "界线:",
|
||||
"Box": "框",
|
||||
"Box Blur": "框模糊",
|
||||
"Box blur": "框模糊",
|
||||
"Bottom to Top": "从底部到顶部",
|
||||
"Bounds:": "边界:",
|
||||
"Box": "方框",
|
||||
"Box Blur": "方框模糊",
|
||||
"Box blur": "方框模糊",
|
||||
"Brightness": "亮度",
|
||||
"Brightness:": "亮度:",
|
||||
"Bulge\/Pinch Tool": "凸出\/收缩工具",
|
||||
"Burn": "烧伤",
|
||||
"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:": "中央:",
|
||||
"Change Composition": "变更组成",
|
||||
"Change Layer Details": "更改图层详细信息",
|
||||
"Center:": "中心:",
|
||||
"Change Composition": "更改合成",
|
||||
"Change Layer Details": "更改图层详情",
|
||||
"Change Opacity": "更改不透明度",
|
||||
"Channel:": "渠道:",
|
||||
"Circle": "圈",
|
||||
"Clarendon": "克拉伦登",
|
||||
"Clear": "明确",
|
||||
"Clear Selection": "清空选项",
|
||||
"Channel:": "通道:",
|
||||
"Circle": "圆圈",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "清除",
|
||||
"Clear Selection": "清除选区",
|
||||
"Clone": "克隆工具",
|
||||
"Clone Tool": "克隆工具",
|
||||
"Clone count:": "克隆数:",
|
||||
"Clone tool disabled for resized image. Sorry.": "无法使用克隆工具调整大小的图像。抱歉。",
|
||||
"Cloned edges": "克隆的边缘",
|
||||
"Codystar": "科迪斯塔",
|
||||
"Color #": "颜色#",
|
||||
"Color Corrections": "颜色更正",
|
||||
"Color Palette": "调色板",
|
||||
"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 to Alpha": "颜色到阿尔法",
|
||||
"Color zoom": "彩色变焦",
|
||||
"Color alpha value can not be zero.": "颜色的 alpha 值不能为零。",
|
||||
"Color to Alpha": "颜色转换为透明",
|
||||
"Color zoom": "颜色缩放",
|
||||
"Color:": "颜色:",
|
||||
"Colors": "颜色",
|
||||
"Colors:": "颜色:",
|
||||
"Common Filters": "常用过滤器",
|
||||
"Composition": "组成",
|
||||
"Composition:": "组成:",
|
||||
"Content Fill": "内容填写",
|
||||
"Contrast": "对比",
|
||||
"Contrast:": "对比:",
|
||||
"Convert to Raster": "转换为光栅",
|
||||
"Copy Selection": "复制选择",
|
||||
"Common Filters": "常见滤镜",
|
||||
"Composition": "合成",
|
||||
"Composition:": "合成:",
|
||||
"Content Fill": "内容填充",
|
||||
"Contiguous": "连续",
|
||||
"Contrast": "对比度",
|
||||
"Contrast:": "对比度:",
|
||||
"Convert layer to raster": "将图层转换为栅格图",
|
||||
"Convert to Raster": "转换为栅格图",
|
||||
"Copy Selection": "复制选区",
|
||||
"Copy to Clipboard": "复制到剪贴板",
|
||||
"Copy:": "复制:",
|
||||
"Courier": "信使",
|
||||
"Creepster": "爬行者",
|
||||
"Courier": "Courier",
|
||||
"Crop": "裁剪工具",
|
||||
"Crop Tool": "裁剪工具",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "不支持在旋转图层上裁剪。将其转换为栅格以继续。",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+V": "按Ctrl + V",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Ctrl-P": "按Ctrl-P",
|
||||
"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": "数据网址",
|
||||
"Data URL:": "数据网址:",
|
||||
"Custom": "自定义",
|
||||
"Data URL": "数据 URL",
|
||||
"Data URL:": "数据 URL:",
|
||||
"Decrease": "减少",
|
||||
"Decrease Color Depth": "减少颜色深度",
|
||||
"Degree:": "度:",
|
||||
"Del": "德尔",
|
||||
"Decrease Color Depth": "减少色彩深度",
|
||||
"Degree:": "角度:",
|
||||
"Del": "删除",
|
||||
"Delay:": "延迟:",
|
||||
"Delete": "删除",
|
||||
"Delete Selection": "删除选择",
|
||||
"Delete Selection": "删除选区",
|
||||
"Denoise": "降噪",
|
||||
"Desaturate Tool": "脱饱和工具",
|
||||
"Desaturate Tool": "去色工具",
|
||||
"Description:": "描述:",
|
||||
"Deutsch": "德意志",
|
||||
"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...": "编辑文字...",
|
||||
"Effect browser": "效果浏览器",
|
||||
"Effects": "效果",
|
||||
"Effects browser": "效果浏览器",
|
||||
"Email:": "电子邮件:",
|
||||
"Edit text...": "编辑文本...",
|
||||
"Effect browser": "特效浏览器",
|
||||
"Effects": "特效",
|
||||
"Effects browser": "特效浏览器",
|
||||
"Email:": "邮箱:",
|
||||
"Emboss": "浮雕",
|
||||
"Empty selection": "空的选择",
|
||||
"Empty selection or type not image.": "空的选择或输入不是图像。",
|
||||
"Enable snap:": "启用捕捉:",
|
||||
"Empty selection": "空选区",
|
||||
"Empty selection or type not image.": "空选区或未输入图像。",
|
||||
"Enable autoresize:": "启用自动调整大小:",
|
||||
"End": "结束",
|
||||
"English": "英语",
|
||||
"Enrich": "丰富",
|
||||
"English (UK)": "英语(英国)",
|
||||
"Enrich": "增强",
|
||||
"Enter": "输入",
|
||||
"Erase Tool": "删除工具",
|
||||
"Erase on rotate object is disabled. Sorry.": "旋转对象上的擦除被禁用。抱歉。",
|
||||
"Erase Tool": "橡皮擦工具",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "禁用旋转对象上的橡皮擦。请先栅格化。",
|
||||
"Error": "错误",
|
||||
"Error connecting to service.": "连接到服务时出错。",
|
||||
"Error: can not find filter:": "错误:找不到过滤器:",
|
||||
"Error: can not find layer with id:": "错误:找不到ID为以下的图层:",
|
||||
"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: unknown layer type:": "错误:未知的图层类型:",
|
||||
"Error: unsupported attribute type:": "错误:不支持的属性类型:",
|
||||
"Esc": "退出",
|
||||
"Escape": "逃逸",
|
||||
"Escape": "逃脱",
|
||||
"Español": "西班牙语",
|
||||
"Expand edges": "展开边缘",
|
||||
"Expand edges": "扩展边缘",
|
||||
"Exponent:": "指数:",
|
||||
"Export": "导出",
|
||||
"External": "外部",
|
||||
"Erase": "橡皮擦工具",
|
||||
"Factor:": "因子:",
|
||||
"File": "文件",
|
||||
"File name:": "文件名:",
|
||||
"File size:": "文件大小:",
|
||||
"Fill": "填",
|
||||
"Fill": "填充",
|
||||
"Fill:": "填充:",
|
||||
"Fill Tool": "填充工具",
|
||||
"Fit": "适合",
|
||||
"Fit Window": "适合的窗口",
|
||||
"Flatten Image": "拼合图像",
|
||||
"Flip": "翻动",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg蛇形",
|
||||
"Font": "字形",
|
||||
"Français": "法兰西",
|
||||
"Full HD, 1080p": "全高清,1080p",
|
||||
"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:": "间隙:",
|
||||
"Gap:": "间距:",
|
||||
"Gaussian Blur": "高斯模糊",
|
||||
"Gif delay:": "Gif延迟:",
|
||||
"Gif delay:": "动图延迟:",
|
||||
"Gingham": "方格",
|
||||
"GitHub:": "GitHub的:",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "渐变工具",
|
||||
"Gradient Radius:": "渐变半径:",
|
||||
"Grains": "谷物",
|
||||
"Grains": "颗粒",
|
||||
"Graphics Interchange Format": "图形交换格式",
|
||||
"Gray": "灰色",
|
||||
"Grayscale": "灰度",
|
||||
"Greek": "希腊语",
|
||||
"Green": "绿色",
|
||||
"Green channel:": "绿色通道:",
|
||||
"Greyscale:": "灰度:",
|
||||
"Grid": "格",
|
||||
"Grid on\/off": "网格开\/关",
|
||||
"H Radius:": "H半径:",
|
||||
"H. Align:": "H.对齐:",
|
||||
"Heatmap": "热图",
|
||||
"Height (%):": "身高(%):",
|
||||
"Grid": "网格",
|
||||
"Grid on/off": "打开/关闭网格",
|
||||
"Guides": "参考线",
|
||||
"Guides enabled.": "参考线已启用。",
|
||||
"H Radius:": "水平半径:",
|
||||
"H. Align:": "水平对齐:",
|
||||
"Heatmap": "热力图",
|
||||
"Height (%):": "高度(%):",
|
||||
"Height:": "高度:",
|
||||
"Help": "帮帮我",
|
||||
"Help": "帮助",
|
||||
"Helvetica": "黑体",
|
||||
"Hermite": "埃尔米特",
|
||||
"Hermite": "Hermite",
|
||||
"Hex": "十六进制",
|
||||
"Hide": "隐藏",
|
||||
"Histogram": "直方图",
|
||||
"Histogram:": "柱状图:",
|
||||
"Home": "家",
|
||||
"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": "增加",
|
||||
"Indie Flower": "独立花",
|
||||
"Information": "信息",
|
||||
"Inkwell": "墨well",
|
||||
"Insert:": "插:",
|
||||
"Instagram Filters": "Instagram过滤器",
|
||||
"Inkwell": "墨井",
|
||||
"Insert": "插入",
|
||||
"Insert guides": "插入参考线",
|
||||
"Insert new layer": "插入新图层",
|
||||
"Instagram Filters": "Instagram 滤镜",
|
||||
"Invalid Hex Code": "无效的十六进制代码",
|
||||
"Italiano": "意大利语",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG格式",
|
||||
"Kerning:": "紧缩",
|
||||
"JPG/JPEG Format": "JPG / JPEG格式",
|
||||
"Kerning:": "字距:",
|
||||
"Key-Points": "关键点",
|
||||
"KeyU": "键 U",
|
||||
"Keyboard Shortcuts": "键盘快捷键",
|
||||
"Keyword:": "关键词:",
|
||||
"Lanczos": "兰佐斯",
|
||||
"Keyword:": "关键字:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "横向",
|
||||
"Language": "语言",
|
||||
"Last modified": "上一次更改",
|
||||
"Lato": "拉托",
|
||||
"Layer": "层",
|
||||
"Layer details": "图层细节",
|
||||
"Layer is not compatible with resize": "图层与调整大小不兼容",
|
||||
"Layer is vector, 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": "剩下",
|
||||
"Layout:": "布局:",
|
||||
"Leading:": "行距:",
|
||||
"Left": "左",
|
||||
"Left to Right": "左到右",
|
||||
"Level:": "水平:",
|
||||
"Levels:": "级别:",
|
||||
"Lietuvių": "立陶宛ų",
|
||||
"Level:": "层级:",
|
||||
"Levels:": "层级:",
|
||||
"Lietuvių": "立陶宛语",
|
||||
"Lo-fi": "低保真",
|
||||
"Lora": "罗拉",
|
||||
"Luminance:": "亮度:",
|
||||
"Luminosity": "亮度",
|
||||
"Magic Eraser Tool": "魔术橡皮擦工具",
|
||||
"Merge Down": "合并下来",
|
||||
"Merge Down": "向下合并",
|
||||
"Merge Layers": "合并图层",
|
||||
"Merged": "合并的",
|
||||
"Merriweather": "梅里韦瑟",
|
||||
"Merged": "已合并",
|
||||
"Metrics": "指标",
|
||||
"Middle": "中间",
|
||||
"Missing at least 1 size parameter.": "缺少至少1个size参数。",
|
||||
"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": "等宽空间",
|
||||
"Monoton": "莫顿",
|
||||
"Montserrat": "蒙特塞拉特",
|
||||
"Mosaic": "镶嵌",
|
||||
"Mouse:": "坐标:",
|
||||
"Module function not found.": "未找到模块功能。",
|
||||
"Modules class not found:": "未找到模块类:",
|
||||
"Monospace": "等宽字体",
|
||||
"Mosaic": "马赛克",
|
||||
"Mouse:": "鼠标:",
|
||||
"Move": "移动",
|
||||
"Move Layer": "移动图层",
|
||||
"Move down": "下移",
|
||||
"Move up": "提升",
|
||||
"Mukta": "木塔",
|
||||
"Muli": "木里",
|
||||
"Move layer down": "向下移动图层",
|
||||
"Move layer up": "向上移动图层",
|
||||
"Name:": "名称:",
|
||||
"Needs at least 2 layers.": "至少需要2层。",
|
||||
"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": "新的宽度不能小于当前的宽度",
|
||||
"Night Vision": "夜间视力",
|
||||
"None": "没有",
|
||||
"Nosifer": "诺西弗",
|
||||
"Nothing is selected.": "没有选择。",
|
||||
"Nunito": "努尼托",
|
||||
"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 File Data URL": "打开数据URL文件",
|
||||
"Open File URL": "打开文件网址",
|
||||
"Open File Webcam": "打开网络摄像头文件",
|
||||
"Open Image": "打开图像",
|
||||
"Open JSON File": "打开JSON文件",
|
||||
"Open Test Template": "开放测试模板",
|
||||
"Open Test Template": "打开测试模板",
|
||||
"Open URL": "打开网址",
|
||||
"Open data URL": "打开数据网址",
|
||||
"Open from Webcam": "从网络摄像头打开",
|
||||
"Orbitron": "轨道器",
|
||||
"Original Size": "原始尺寸",
|
||||
"Oswald": "奥斯瓦尔德",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG-将图像转换为SVG",
|
||||
"PT Sans": "PT Sans",
|
||||
"PT Serif": "PT衬线",
|
||||
"Pacifico": "太平洋",
|
||||
"PageDown": "向下翻页",
|
||||
"PageUp": "PageUp",
|
||||
"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": "吸管工具",
|
||||
"Pixels:": "像素:",
|
||||
"Placeholder comment for color channels": "颜色通道的占位符评论",
|
||||
"Placeholder comment for color picker": "颜色选择器的占位符评论",
|
||||
"Placeholder comment for color swatches": "色板的占位符注释",
|
||||
"Playfair Display": "游乐场展示",
|
||||
"Poppins": "罂粟花",
|
||||
"Placeholder comment for color channels": "颜色通道的占位符注释",
|
||||
"Placeholder comment for color picker": "颜色选择器的占位符注释",
|
||||
"Placeholder comment for color swatches": "颜色样本的占位符注释",
|
||||
"Play": "播放",
|
||||
"Portable Network Graphics": "便携式网络图形",
|
||||
"Portrait": "纵向",
|
||||
"Português": "葡萄牙语",
|
||||
"Position:": "位置:",
|
||||
"Power:": "功率:",
|
||||
"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-删除图像背景",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 移除图像背景",
|
||||
"Radial": "径向",
|
||||
"Radial gradient": "径向渐变",
|
||||
"Radius:": "半径:",
|
||||
"Raleway": "拉雷韦",
|
||||
"Range:": "范围:",
|
||||
"Red": "红",
|
||||
"Red": "红色",
|
||||
"Red channel:": "红色通道:",
|
||||
"Redo": "重做",
|
||||
"Rename": "改名",
|
||||
"Remove all": "移除全部",
|
||||
"Rename": "重命名",
|
||||
"Rename Layer": "重命名图层",
|
||||
"Rendered with errors.": "呈现错误。",
|
||||
"Rendered with errors.": "渲染出现错误。",
|
||||
"Rendering...": "渲染中...",
|
||||
"Replace Color": "替换颜色",
|
||||
"Replace color": "替换颜色",
|
||||
"Replacement:": "替代:",
|
||||
"Replacement:": "替换:",
|
||||
"Report Issues": "报告问题",
|
||||
"Reset": "重启",
|
||||
"Reset zoom level": "重置缩放级别",
|
||||
"Resize": "调整",
|
||||
"Reset": "重置",
|
||||
"Resize": "调整大小",
|
||||
"Resize Boundary": "调整边界",
|
||||
"Resize Layer": "调整图层大小",
|
||||
"Resize Layers": "调整图层大小",
|
||||
"Resize Text Layer": "调整文字层大小",
|
||||
"Resize Text Layer": "调整文本图层大小",
|
||||
"Resized as background": "调整为背景",
|
||||
"Resolution:": "解析度:",
|
||||
"Restore Alpha": "恢复阿尔法",
|
||||
"Right": "对",
|
||||
"Resized:": "调整大小:",
|
||||
"Resolution:": "分辨率:",
|
||||
"Restore Alpha": "恢复透明度",
|
||||
"Right": "右",
|
||||
"Right angle:": "直角:",
|
||||
"Right to Left": "右到左",
|
||||
"Roboto": "机械手",
|
||||
"Right to Left": "从右到左",
|
||||
"Rotate": "旋转",
|
||||
"Rotate Layer": "旋转图层",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "这种类型的对象不支持旋转。转换为光栅?",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "此类型对象不支持旋转。转换为栅格图?",
|
||||
"Rotate left": "向左旋转",
|
||||
"Rotate:": "旋转:",
|
||||
"Rubik": "鲁比克",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH-压缩和比较图像",
|
||||
"Saturate": "饱和",
|
||||
"Saturation": "饱和",
|
||||
"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.": "使用Lanczos在Hermite中不支持放大。",
|
||||
"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 Text Layer": "选择文本图层",
|
||||
"Select object tool": "选择对象工具",
|
||||
"Selected": "选",
|
||||
"Selected": "已选择",
|
||||
"Selection": "选择工具",
|
||||
"Selection Tool": "选择工具",
|
||||
"Sensitivity:": "灵敏度:",
|
||||
"Separated": "分开的",
|
||||
"Sepia": "乌贼",
|
||||
"Separated": "分离",
|
||||
"Separated (original types)": "分离(原始类型)",
|
||||
"Sepia": "棕褐色",
|
||||
"Set Image Size": "设置图像尺寸",
|
||||
"Settings": "设置",
|
||||
"Shadow": "阴影",
|
||||
"Shadow:": "阴影:",
|
||||
"Shapes": "形状",
|
||||
"Sharpen": "削尖",
|
||||
"Shapes (H)": "形状 (H)",
|
||||
"Sharpen": "锐化",
|
||||
"Sharpen Tool": "锐化工具",
|
||||
"Sharpen:": "锐化:",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "快捷键:",
|
||||
"Show \/ Hide": "显示隐藏",
|
||||
"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, cold not load getUserMedia() data:": "抱歉,无法加载getUserMedia()数据:",
|
||||
"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。",
|
||||
"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.": "信号源为空,右键单击图像或长按保存信号源位置。",
|
||||
"Special Elite": "特别精英",
|
||||
"Sprites": "精灵",
|
||||
"Square": "广场",
|
||||
"Source is empty, right click on image or use long press to save source position.": "源为空,右键单击图像或长按保存源位置。",
|
||||
"Source layer:": "源图层:",
|
||||
"Sprites": "图像精灵",
|
||||
"Square": "正方形",
|
||||
"Stream:": "流:",
|
||||
"Strength:": "强度:",
|
||||
"Strict": "严格",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG-压缩PNG和JPEG",
|
||||
"Stroke size:": "线条粗细:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - 压缩PNG和JPEG",
|
||||
"Tab": "标签",
|
||||
"Tahoma": "塔豪玛",
|
||||
"Tangerine": "柑橘",
|
||||
"Tag Image File Format": "标记图像文件格式",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "目标:",
|
||||
"Theme": "主题",
|
||||
"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": "英语字体格式一种",
|
||||
"Titillium Web": "钛网",
|
||||
"Toaster": "烤面包机",
|
||||
"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": "切换色板",
|
||||
"Toggle Swatches": "切换样本",
|
||||
"Tools": "工具",
|
||||
"Top": "最佳",
|
||||
"Top": "顶部",
|
||||
"Top to Bottom": "从上到下",
|
||||
"Total pixels:": "总像素数:",
|
||||
"Translate": "翻译",
|
||||
"Translate Layer": "翻译层",
|
||||
"Translate Layer": "翻译图层",
|
||||
"Translate error, can not find dictionary:": "翻译错误,找不到字典:",
|
||||
"Transparency background:": "透明背景:",
|
||||
"Transparent:": "透明:",
|
||||
"Trim": "修剪",
|
||||
"Trim Layers": "修剪层",
|
||||
"Trim borders:": "修剪边框:",
|
||||
"Trim layer:": "修剪图层:",
|
||||
"Trim white color?": "修剪白色的颜色?",
|
||||
"Türkçe": "图尔克",
|
||||
"Ubuntu": "的Ubuntu",
|
||||
"Undo": "解开",
|
||||
"Unique colors:": "独特的颜色:",
|
||||
"Trim": "裁剪",
|
||||
"Trim Layers": "裁剪图层",
|
||||
"Trim borders:": "裁剪边框:",
|
||||
"Trim layer:": "裁剪图层:",
|
||||
"Trim white color?": "裁剪白色吗?",
|
||||
"Text": " 文本工具",
|
||||
"Type:": "类型:",
|
||||
"Türkçe": "土耳其语",
|
||||
"Undo": "撤销",
|
||||
"Unique colors:": "唯一颜色:",
|
||||
"Up": "向上",
|
||||
"Update Brush Layer": "更新笔刷层",
|
||||
"Update Pencil Layer": "更新铅笔层",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "使用Ctrl + V键盘快捷键从剪贴板粘贴。",
|
||||
"V Radius:": "V半径:",
|
||||
"V. Align:": "V.对齐:",
|
||||
"Valencia": "巴伦西亚",
|
||||
"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 Alignment": "垂直对齐",
|
||||
"Vertical blur:": "垂直迷离:",
|
||||
"Vibrance": "鲜艳",
|
||||
"Vignette": "小插图",
|
||||
"Vertical blur:": "垂直模糊:",
|
||||
"Vertical:": "垂直:",
|
||||
"Vibrance": "饱和度",
|
||||
"View": "视图",
|
||||
"Vignette": "晕影",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "酿酒",
|
||||
"Visible:": "可见:",
|
||||
"Vintage": "复古",
|
||||
"Webcam": "摄像头",
|
||||
"Webcam #": "摄像头 #",
|
||||
"Webcam #": "摄像头 #",
|
||||
"Website:": "网站:",
|
||||
"Weppy File Format": "Weppy文件格式",
|
||||
"Width (%):": "宽度(%):",
|
||||
"Width (%):": "宽度(%):",
|
||||
"Width:": "宽度:",
|
||||
"Windows Bitmap": "Windows位图",
|
||||
"Word": "字",
|
||||
"Word + Letter": "单词+字母",
|
||||
"Wrap At:": "包装在:",
|
||||
"Wrap:": "包:",
|
||||
"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开始:",
|
||||
"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开始:",
|
||||
"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:": "缩放:"
|
||||
}
|
||||
2
src/js/libs/gifjs/gif.js
Normal file
2
src/js/libs/gifjs/gif.js
Normal file
File diff suppressed because one or more lines are too long
2
src/js/libs/gifjs/gif.worker.js
Normal file
2
src/js/libs/gifjs/gif.worker.js
Normal file
File diff suppressed because one or more lines are too long
@ -422,20 +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;
|
||||
var result = 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) : "");
|
||||
return parseFloat(result);
|
||||
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() {
|
||||
@ -636,6 +632,35 @@ 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
|
||||
*
|
||||
|
||||
@ -44,7 +44,7 @@ import Base_gui_class from './../core/base-gui.js';
|
||||
import Tools_translate_class from './../modules/tools/translate.js';
|
||||
|
||||
var template = `
|
||||
<button type="button" class="close" data-id="popup_close">×</button>
|
||||
<button type="button" class="close" data-id="popup_close" title="Close">×</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>
|
||||
@ -181,9 +181,7 @@ class Dialog_class {
|
||||
|
||||
if (code == "Escape") {
|
||||
//escape
|
||||
if (window.POP === this) {
|
||||
this.hide(false);
|
||||
}
|
||||
this.hide(false);
|
||||
}
|
||||
}, false);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -35,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){
|
||||
|
||||
@ -44,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){
|
||||
|
||||
@ -8,6 +8,7 @@ import Clipboard_class from './../../libs/clipboard.js';
|
||||
import alertify from './../../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
import EXIF from './../../../../node_modules/exif-js/exif.js';
|
||||
import GUI_tools_class from "../../core/gui/gui-tools";
|
||||
import semver_compare from './../../../../node_modules/semver-compare/';
|
||||
|
||||
var instance = null;
|
||||
|
||||
@ -347,7 +348,7 @@ class File_open_class {
|
||||
var items = e.dataTransfer.items;
|
||||
for (var i=0; i<items.length; i++) {
|
||||
var item = items[i].webkitGetAsEntry();
|
||||
if (item) {
|
||||
if (item && item.isDirectory == true) {
|
||||
this.traverseFileTree(item);
|
||||
}
|
||||
}
|
||||
@ -365,7 +366,9 @@ class File_open_class {
|
||||
FR.file = file;
|
||||
|
||||
FR.onload = function (event) {
|
||||
if (this.file.type.match('image.*')) {
|
||||
if (this.file.type.match('image.*')
|
||||
//below is fix for firefox, it has empty type
|
||||
|| (this.file.type == '' && this.file.name.match(/\.(png|jpg|jpeg|webp|gif|avif)/g))) {
|
||||
//image
|
||||
var new_layer = {
|
||||
name: this.file.name,
|
||||
@ -426,7 +429,7 @@ class File_open_class {
|
||||
}
|
||||
|
||||
/**
|
||||
* includes provided resource (iamge or json)
|
||||
* includes provided resource (image or json)
|
||||
*
|
||||
* @param string resource_url
|
||||
*/
|
||||
@ -496,11 +499,11 @@ class File_open_class {
|
||||
else
|
||||
json = data;
|
||||
if (json.info.version == undefined) {
|
||||
json.info.version = "3";
|
||||
json.info.version = "3.0.0";
|
||||
}
|
||||
|
||||
//migration
|
||||
if (json.info.version < "4") {
|
||||
if(semver_compare(json.info.version, '4.0.0') < 0) {
|
||||
//convert from v3 to v4
|
||||
for (var i in json.layers) {
|
||||
//layers data
|
||||
@ -531,7 +534,7 @@ class File_open_class {
|
||||
);
|
||||
}
|
||||
}
|
||||
if(json.info.version < "4.5.0"){
|
||||
if(semver_compare(json.info.version, '4.5.0') < 0) {
|
||||
//migrate "rectangle", "circle" and "line" types to "shape"
|
||||
for (var i in json.layers) {
|
||||
var old_type = json.layers[i].type;
|
||||
@ -547,7 +550,7 @@ class File_open_class {
|
||||
json.layers[i].params.border_size = json.layers[i].params.size;
|
||||
delete json.layers[i].params.size;
|
||||
|
||||
if(json.layers[i].params.fill == true){
|
||||
if(json.layers[i].params.fill == true) {
|
||||
json.layers[i].params.border = false;
|
||||
}
|
||||
else{
|
||||
@ -565,7 +568,7 @@ class File_open_class {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(json.info.version < "4.8.0"){
|
||||
if(semver_compare(json.info.version, '4.8.0') < 0) {
|
||||
//migrate "borders" layer to rectangle
|
||||
for (var i in json.layers) {
|
||||
var old_type = json.layers[i].type;
|
||||
@ -586,9 +589,30 @@ class File_open_class {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(semver_compare(json.info.version, '4.11.0') < 0) {
|
||||
//migrate star and star24 objects
|
||||
for (var i in json.layers) {
|
||||
var old_type = json.layers[i].type;
|
||||
|
||||
if(old_type == 'star' && typeof json.layers[i].params.corners == "undefined"){
|
||||
json.layers[i].params.corners = 5;
|
||||
json.layers[i].params.inner_radius = 40;
|
||||
json.layers[i].render_function = ["star", "render"];
|
||||
}
|
||||
else if(old_type == 'star24'){
|
||||
json.layers[i].type = 'star';
|
||||
json.layers[i].params.corners = 24;
|
||||
json.layers[i].params.inner_radius = 80;
|
||||
json.layers[i].render_function = ["star", "render"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const actions = [];
|
||||
|
||||
//reset zoom
|
||||
await this.Base_gui.GUI_preview.zoom(100); //reset zoom
|
||||
|
||||
//set attributes
|
||||
actions.push(
|
||||
new app.Actions.Refresh_action_attributes_action('undo'),
|
||||
@ -635,7 +659,12 @@ class File_open_class {
|
||||
config.guides = json.info.guides;
|
||||
}
|
||||
actions.push(
|
||||
new app.Actions.Set_object_property_action(this.Base_layers, 'auto_increment', max_id_order + 1)
|
||||
new app.Actions.Set_object_property_action(this.Base_layers, 'auto_increment', max_id_order + 1),
|
||||
new app.Actions.Update_config_action({
|
||||
WIDTH: parseInt(json.info.width),
|
||||
HEIGHT: parseInt(json.info.height),
|
||||
}),
|
||||
new app.Actions.Prepare_canvas_action('do')
|
||||
);
|
||||
await app.State.do_action(
|
||||
new app.Actions.Bundle_action('open_json_file', 'Open JSON File', actions)
|
||||
|
||||
@ -8,6 +8,7 @@ import canvasToBlob from './../../../../node_modules/blueimp-canvas-to-blob/js/c
|
||||
import filesaver from './../../../../node_modules/file-saver/dist/FileSaver.min.js';
|
||||
import GIF from './../../../../node_modules/gif.js.optimized/';
|
||||
import CanvasToTIFF from './../../libs/canvastotiff.js';
|
||||
import Tools_settings_class from "../tools/settings";
|
||||
|
||||
var instance = null;
|
||||
|
||||
@ -28,6 +29,7 @@ class File_save_class {
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.POP = new Dialog_class();
|
||||
this.Tools_settings = new Tools_settings_class();
|
||||
|
||||
this.set_events();
|
||||
|
||||
@ -121,6 +123,7 @@ class File_save_class {
|
||||
if (parts.length > 1)
|
||||
file_name = parts[parts.length - 2];
|
||||
file_name = file_name.replace(/ /g, "-");
|
||||
file_name = this.Helper.escapeHtml(file_name);
|
||||
|
||||
var save_types = [];
|
||||
for(var i in file_types) {
|
||||
@ -133,6 +136,7 @@ class File_save_class {
|
||||
'Separated',
|
||||
'Separated (original types)',
|
||||
];
|
||||
var resolution = this.Tools_settings.get_setting('resolution');
|
||||
|
||||
var settings = {
|
||||
title: title,
|
||||
@ -141,6 +145,7 @@ class File_save_class {
|
||||
{name: "type", title: "Save as type:", values: save_types, value: save_default},
|
||||
{name: "quality", title: "Quality:", value: 90, range: [1, 100]},
|
||||
{title: "File size:", html: '<span id="file_size">-</span>'},
|
||||
{title: "Resolution:", value: resolution},
|
||||
{name: "calc_size", title: "Show file size:", value: calc_size_value},
|
||||
{name: "layers", title: "Save layers:", values: save_layers_types},
|
||||
{name: "delay", title: "Gif delay:", value: 400},
|
||||
@ -593,7 +598,7 @@ class File_save_class {
|
||||
width: config.WIDTH,
|
||||
height: config.HEIGHT,
|
||||
dither: 'FloydSteinberg-serpentine',
|
||||
workerScript: './../../../../node_modules/gif.js.optimized/dist/gif.worker.js',
|
||||
workerScript: './src/js/libs/gifjs/gif.worker.js',
|
||||
};
|
||||
if (config.TRANSPARENCY == true) {
|
||||
gif_settings.transparent = 'rgba(0,0,0,0)';
|
||||
|
||||
@ -10,8 +10,10 @@ class Help_shortcuts_class {
|
||||
shortcuts() {
|
||||
var settings = {
|
||||
title: 'Keyboard Shortcuts',
|
||||
className: 'shortcuts',
|
||||
params: [
|
||||
{title: "F", value: 'Auto Adjust Colors'},
|
||||
{title: "F3 / ⌘ + F", value: 'Search'},
|
||||
{title: "Ctrl + C", value: 'Copy to Clipboard'},
|
||||
{title: "D", value: 'Duplicate'},
|
||||
{title: "S", value: 'Export'},
|
||||
|
||||
@ -74,6 +74,8 @@ class Image_resize_class {
|
||||
},
|
||||
};
|
||||
this.POP.show(settings);
|
||||
|
||||
document.getElementById("pop_data_width").select();
|
||||
}
|
||||
|
||||
async do_resize(params) {
|
||||
|
||||
@ -20,6 +20,7 @@ class Image_size_class {
|
||||
var common_dimensions = this.Base_gui.common_dimensions;
|
||||
var units = this.Tools_settings.get_setting('default_units');
|
||||
var resolution = this.Tools_settings.get_setting('resolution');
|
||||
var enable_autoresize = this.Tools_settings.get_setting('enable_autoresize');
|
||||
|
||||
var resolutions = ['Custom'];
|
||||
for (var i in common_dimensions) {
|
||||
@ -32,12 +33,14 @@ class Image_size_class {
|
||||
var height = this.Helper.get_user_unit(config.HEIGHT, units, resolution);
|
||||
|
||||
var settings = {
|
||||
title: 'Canvas size',
|
||||
title: 'Canvas Size',
|
||||
params: [
|
||||
{name: "w", title: "Width:", value: width, placeholder: width, comment: units},
|
||||
{name: "h", title: "Height:", value: height, placeholder: height, comment: units},
|
||||
{name: "resolution", title: "Resolution:", values: resolutions},
|
||||
{name: "layout", title: "Layout:", value: "Custom", values: ["Custom", "Landscape", "Portrait"]},
|
||||
{name: "enable_autoresize", title: "Enable autoresize:", value: enable_autoresize},
|
||||
{name: "in_proportion", title: "In proportion:", value: false},
|
||||
],
|
||||
on_finish: function (params) {
|
||||
_this.size_handler(params);
|
||||
@ -53,12 +56,14 @@ class Image_size_class {
|
||||
var units = this.Tools_settings.get_setting('default_units');
|
||||
var resolution = this.Tools_settings.get_setting('resolution');
|
||||
|
||||
if (width < 1){
|
||||
if (width < 0){
|
||||
width = 1;
|
||||
}
|
||||
if (height < 1){
|
||||
if (height < 0){
|
||||
height = 1;
|
||||
}
|
||||
|
||||
this.Tools_settings.save_setting('enable_autoresize', data.enable_autoresize);
|
||||
|
||||
//aspect ratio
|
||||
if (isNaN(width) && isNaN(height)){
|
||||
@ -90,15 +95,44 @@ class Image_size_class {
|
||||
height = this.Helper.get_internal_unit(height, units, resolution);
|
||||
}
|
||||
|
||||
var actions = [
|
||||
new app.Actions.Prepare_canvas_action('undo'),
|
||||
new app.Actions.Update_config_action({
|
||||
WIDTH: parseInt(width),
|
||||
HEIGHT: parseInt(height)
|
||||
}),
|
||||
];
|
||||
|
||||
if(data.in_proportion == true) {
|
||||
//resize object and change coordinates
|
||||
var width_ratio = config.WIDTH / width;
|
||||
var height_ratio = config.HEIGHT / height;
|
||||
var ratio = Math.max(width_ratio, height_ratio);
|
||||
|
||||
for (var i in config.layers) {
|
||||
var layer = config.layers[i];
|
||||
if(layer.x != null && layer.y != null) {
|
||||
var data_new = {
|
||||
x: Math.round(layer.x / width_ratio),
|
||||
y: Math.round(layer.y / height_ratio),
|
||||
};
|
||||
actions.push(new app.Actions.Update_layer_action(layer.id, data_new));
|
||||
}
|
||||
if(layer.width != null && layer.height != null) {
|
||||
var data_new = {
|
||||
width: Math.round(layer.width / ratio),
|
||||
height: Math.round(layer.height / ratio),
|
||||
};
|
||||
actions.push(new app.Actions.Update_layer_action(layer.id, data_new));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
actions.push(new app.Actions.Prepare_canvas_action('do'));
|
||||
|
||||
//execute
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('set_image_size', 'Set Image Size', [
|
||||
new app.Actions.Prepare_canvas_action('undo'),
|
||||
new app.Actions.Update_config_action({
|
||||
WIDTH: parseInt(width),
|
||||
HEIGHT: parseInt(height)
|
||||
}),
|
||||
new app.Actions.Prepare_canvas_action('do')
|
||||
])
|
||||
new app.Actions.Bundle_action('set_image_size', 'Set Image Size', actions)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ class Image_trim_class {
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
|
||||
|
||||
trim() {
|
||||
var _this = this;
|
||||
var removeWhiteColor = false;
|
||||
@ -50,27 +50,25 @@ class Image_trim_class {
|
||||
params: [
|
||||
{name: "trim_layer", title: "Trim layer:", value: true},
|
||||
{name: "trim_all", title: "Trim borders:", value: true},
|
||||
{}, //gap
|
||||
{name: "power", title: "Power:", value: 0, max: 255},
|
||||
{name: "remove_white", title: "Trim white color?", value: removeWhiteColor},
|
||||
],
|
||||
on_finish: (params) => {
|
||||
on_finish: async (params) => {
|
||||
if (params.trim_layer == true) {
|
||||
//first trim
|
||||
let actions = [];
|
||||
actions = actions.concat(this.trim_layer(config.layer.id, params.remove_white));
|
||||
app.State.do_action(
|
||||
actions = actions.concat(this.trim_layer(config.layer.id, params.remove_white, params.power));
|
||||
await app.State.do_action(
|
||||
new app.Actions.Bundle_action('trim_layers', 'Trim Layers', actions)
|
||||
);
|
||||
}
|
||||
if (params.trim_all == true) {
|
||||
//second trim
|
||||
setTimeout(function(){
|
||||
let actions = [];
|
||||
actions = actions.concat(_this.trim_all(params.remove_white));
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('trim_layers', 'Trim Layers', actions)
|
||||
);
|
||||
}, 100); //ust wait a little after first trim, ugly, but works...
|
||||
let actions = [];
|
||||
actions = actions.concat(_this.trim_all(params.remove_white, params.power));
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('trim_layers', 'Trim Layers', actions)
|
||||
);
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -83,8 +81,9 @@ class Image_trim_class {
|
||||
*
|
||||
* @param layer_id
|
||||
* @param removeWhiteColor
|
||||
* @param {int} power
|
||||
*/
|
||||
trim_layer(layer_id, removeWhiteColor = false) {
|
||||
trim_layer(layer_id, removeWhiteColor = false, power = 0) {
|
||||
var layer = this.Base_layers.get_layer(layer_id);
|
||||
|
||||
if (layer.type != 'image') {
|
||||
@ -92,7 +91,7 @@ class Image_trim_class {
|
||||
return false;
|
||||
}
|
||||
|
||||
var trim = this.get_trim_info(layer_id, removeWhiteColor);
|
||||
var trim = this.get_trim_info(layer_id, removeWhiteColor, power);
|
||||
trim = trim.relative;
|
||||
|
||||
//if image was stretched
|
||||
@ -128,8 +127,9 @@ class Image_trim_class {
|
||||
* this affect canvas size and all layers positions
|
||||
*
|
||||
* @param removeWhiteColor
|
||||
* @param {int} power
|
||||
*/
|
||||
trim_all(removeWhiteColor = false) {
|
||||
trim_all(removeWhiteColor = false, power = 0) {
|
||||
let actions = [];
|
||||
|
||||
var all_top = config.HEIGHT;
|
||||
@ -150,7 +150,7 @@ class Image_trim_class {
|
||||
|
||||
if (layer.width == null || layer.height == null || layer.x == null || layer.y == null) {
|
||||
//layer without dimensions
|
||||
const trim_info = this.get_trim_info(layer.id, removeWhiteColor);
|
||||
const trim_info = this.get_trim_info(layer.id, removeWhiteColor, power);
|
||||
|
||||
all_top = Math.min(all_top, trim_info.top);
|
||||
all_left = Math.min(all_left, trim_info.left);
|
||||
@ -196,15 +196,19 @@ class Image_trim_class {
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {boolean} trim_white
|
||||
* @param {int} power
|
||||
* @returns {object} keys: top, left, bottom, right, width, height, relative
|
||||
*/
|
||||
get_trim_info(layer_id, trim_white) {
|
||||
get_trim_info(layer_id, trim_white, power) {
|
||||
if (trim_white == undefined) {
|
||||
trim_white = false;
|
||||
if (config.TRANSPARENCY == false) {
|
||||
trim_white = true;
|
||||
}
|
||||
}
|
||||
if (power == undefined) {
|
||||
power = 0;
|
||||
}
|
||||
var layer = this.Base_layers.get_layer(layer_id);
|
||||
|
||||
var canvas = this.Base_layers.convert_layer_to_canvas(layer_id, null, false);
|
||||
@ -216,16 +220,16 @@ class Image_trim_class {
|
||||
var left = 0;
|
||||
var bottom = 0;
|
||||
var right = 0;
|
||||
if (trim_white == undefined)
|
||||
trim_white = true;
|
||||
|
||||
//check top
|
||||
main1:
|
||||
for (var y = 0; y < img.height; y++) {
|
||||
for (var x = 0; x < img.width; x++) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main1;
|
||||
}
|
||||
@ -236,9 +240,10 @@ class Image_trim_class {
|
||||
for (var x = 0; x < img.width; x++) {
|
||||
for (var y = 0; y < img.height; y++) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main2;
|
||||
}
|
||||
@ -249,9 +254,10 @@ class Image_trim_class {
|
||||
for (var y = img.height - 1; y >= 0; y--) {
|
||||
for (var x = img.width - 1; x >= 0; x--) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main3;
|
||||
}
|
||||
@ -262,9 +268,10 @@ class Image_trim_class {
|
||||
for (var x = img.width - 1; x >= 0; x--) {
|
||||
for (var y = img.height - 1; y >= 0; y--) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main4;
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Dialog_class from './../../libs/popup.js';
|
||||
import Base_gui_class from "../../core/base-gui.js";
|
||||
|
||||
class Layer_composition_class {
|
||||
|
||||
constructor() {
|
||||
this.POP = new Dialog_class();
|
||||
this.Base_gui_class = new Base_gui_class();
|
||||
}
|
||||
|
||||
composition() {
|
||||
@ -41,6 +43,7 @@ class Layer_composition_class {
|
||||
];
|
||||
|
||||
var initial_composition = config.layer.composition;
|
||||
var _this = this;
|
||||
|
||||
var settings = {
|
||||
title: 'Composition',
|
||||
@ -55,6 +58,7 @@ class Layer_composition_class {
|
||||
}
|
||||
config.layer.composition = params.composition;
|
||||
config.need_render = true;
|
||||
_this.Base_gui_class.GUI_layers.render_layers();
|
||||
},
|
||||
on_finish: function (params) {
|
||||
config.layer.composition = initial_composition;
|
||||
@ -72,6 +76,7 @@ class Layer_composition_class {
|
||||
on_cancel: function (params) {
|
||||
config.layer.composition = initial_composition;
|
||||
config.need_render = true;
|
||||
_this.Base_gui_class.GUI_layers.render_layers();
|
||||
},
|
||||
};
|
||||
this.POP.show(settings);
|
||||
|
||||
@ -38,7 +38,18 @@ class Layer_duplicate_class {
|
||||
var params = JSON.parse(JSON.stringify(config.layer));
|
||||
delete params.id;
|
||||
delete params.order;
|
||||
params.name = "Copy: " + params.name;
|
||||
|
||||
//generate name
|
||||
var name_number = params.name.match(/^(.*) #([0-9]+)$/);
|
||||
if(name_number == null){
|
||||
//first duplicate
|
||||
params.name = params.name + " #2";
|
||||
}
|
||||
else{
|
||||
//nth duplicate - name like "query #17"
|
||||
params.name = name_number[1] + " #" + (parseInt(name_number[2]) + 1)
|
||||
}
|
||||
|
||||
if(params.x != 0 || params.y != 0 || params.width != config.WIDTH || params.height != config.HEIGHT){
|
||||
params.x += 10;
|
||||
params.y += 10;
|
||||
|
||||
@ -10,11 +10,6 @@ class Layer_flatten_class {
|
||||
}
|
||||
|
||||
flatten() {
|
||||
if (config.layers.length == 1) {
|
||||
alertify.error('Needs at least 2 layers.');
|
||||
return;
|
||||
}
|
||||
|
||||
//create tmp canvas
|
||||
var canvas = document.createElement('canvas');
|
||||
canvas.width = config.WIDTH;
|
||||
|
||||
@ -2,21 +2,25 @@ 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 Helper_class from './../../libs/helpers.js';
|
||||
|
||||
class Layer_rename_class {
|
||||
|
||||
constructor() {
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.POP = new Dialog_class();
|
||||
this.Helper = new Helper_class();
|
||||
}
|
||||
|
||||
rename(id = null) {
|
||||
var _this = this;
|
||||
|
||||
var name_ = this.Helper.escapeHtml(config.layer.name);
|
||||
|
||||
var settings = {
|
||||
title: 'Rename',
|
||||
params: [
|
||||
{name: "name", title: "Name:", value: config.layer.name},
|
||||
{name: "name", title: "Name:", value: name_},
|
||||
],
|
||||
on_load: function () {
|
||||
document.querySelector('#pop_data_name').select();
|
||||
@ -26,7 +30,7 @@ class Layer_rename_class {
|
||||
new app.Actions.Bundle_action('rename_layer', 'Rename Layer', [
|
||||
new app.Actions.Refresh_layers_gui_action('undo'),
|
||||
new app.Actions.Update_layer_action(id || config.layer.id, {
|
||||
name: params.name
|
||||
name: _this.validate_name(params.name)
|
||||
}),
|
||||
new app.Actions.Refresh_layers_gui_action('do')
|
||||
])
|
||||
@ -35,6 +39,17 @@ class Layer_rename_class {
|
||||
};
|
||||
this.POP.show(settings);
|
||||
}
|
||||
|
||||
validate_name(text) {
|
||||
text = text
|
||||
.replace(/&/g, "-")
|
||||
.replace(/</g, "-")
|
||||
.replace(/>/g, "-")
|
||||
.replace(/"/g, "-")
|
||||
.replace(/'/g, "-");
|
||||
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
export default Layer_rename_class;
|
||||
|
||||
@ -21,6 +21,11 @@ class Tools_contentFill_class {
|
||||
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
|
||||
return;
|
||||
}
|
||||
if (config.layer.x == 0 && config.layer.y == 0 && config.layer.width == config.WIDTH
|
||||
&& config.layer.height == config.HEIGHT) {
|
||||
alertify.error('Can not use this tool on current layer: image already takes all area.');
|
||||
return;
|
||||
}
|
||||
|
||||
var settings = {
|
||||
title: 'Content Fill',
|
||||
|
||||
@ -28,16 +28,19 @@ class Tools_keypoints_class {
|
||||
|
||||
//generate key points for image
|
||||
keypoints(return_data) {
|
||||
var W = config.WIDTH;
|
||||
var H = config.HEIGHT;
|
||||
|
||||
if (config.layer.type != 'image') {
|
||||
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
|
||||
return;
|
||||
}
|
||||
|
||||
var W = config.layer.width;
|
||||
var H = config.layer.height;
|
||||
|
||||
//get canvas from layer
|
||||
var clone = this.Base_layers.convert_layer_to_canvas();
|
||||
var ctx = clone.getContext("2d");
|
||||
|
||||
//get source data
|
||||
this.Base_layers.render_object(ctx, config.layer);
|
||||
|
||||
//greyscale
|
||||
var imageData = ctx.getImageData(0, 0, W, H);
|
||||
var data = this.convert_to_grayscale(imageData);
|
||||
|
||||
15
src/js/modules/tools/search.js
Normal file
15
src/js/modules/tools/search.js
Normal file
@ -0,0 +1,15 @@
|
||||
import Base_search_class from './../../core/base-search.js';
|
||||
|
||||
class Tools_search_class {
|
||||
|
||||
constructor() {
|
||||
this.Base_search = new Base_search_class();
|
||||
}
|
||||
|
||||
search() {
|
||||
this.Base_search.search();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Tools_search_class;
|
||||
@ -9,14 +9,20 @@ class Tools_settings_class {
|
||||
this.Base_gui = new Base_gui_class();
|
||||
this.POP = new Dialog_class();
|
||||
this.Helper = new Helper_class();
|
||||
|
||||
this.default_units_config = {
|
||||
pixels: 'px',
|
||||
inches: '"',
|
||||
centimeters: 'cm',
|
||||
millimetres: 'mm',
|
||||
};
|
||||
}
|
||||
|
||||
settings() {
|
||||
var _this = this;
|
||||
var transparency_values = ['squares', 'green', 'grey'];
|
||||
var default_units_all = ['pixels', 'inches', 'centimeters', 'millimetres'];
|
||||
var resolutions_values = [72, 150, 300, 600];
|
||||
|
||||
var default_units_all = Object.keys(this.default_units_config);
|
||||
var transparency = this.get_setting('transparency');
|
||||
var theme = this.get_setting('theme');
|
||||
var snap = this.get_setting('snap');
|
||||
@ -26,6 +32,7 @@ class Tools_settings_class {
|
||||
var default_units = this.get_setting('default_units');
|
||||
var resolution = this.get_setting('resolution');
|
||||
var thick_guides = this.get_setting('thick_guides');
|
||||
var enable_autoresize = this.get_setting('enable_autoresize');
|
||||
|
||||
var settings = {
|
||||
title: 'Settings',
|
||||
@ -42,6 +49,7 @@ class Tools_settings_class {
|
||||
{name: "safe_search", title: "Safe search:", value: safe_search},
|
||||
{name: "exit_confirm", title: "Exit confirmation:", value: exit_confirm},
|
||||
{name: "thick_guides", title: "Thick guides:", value: thick_guides},
|
||||
{name: "enable_autoresize", title: "Enable autoresize:", value: enable_autoresize},
|
||||
],
|
||||
on_change: function (params) {
|
||||
this.Base_gui.change_theme(params.theme);
|
||||
@ -67,8 +75,10 @@ class Tools_settings_class {
|
||||
this.save_setting('safe_search', params.safe_search);
|
||||
this.save_setting('exit_confirm', params.exit_confirm);
|
||||
this.save_setting('default_units', params.default_units);
|
||||
this.save_setting('default_units_short', this.default_units_config[params.default_units]);
|
||||
this.save_setting('resolution', params.resolution);
|
||||
this.save_setting('thick_guides', params.thick_guides);
|
||||
this.save_setting('enable_autoresize', params.enable_autoresize);
|
||||
|
||||
//update config
|
||||
config.TRANSPARENCY = this.get_setting('transparency');
|
||||
@ -109,15 +119,17 @@ class Tools_settings_class {
|
||||
*/
|
||||
get_setting(key) {
|
||||
var default_values = {
|
||||
'theme': config.themes[0],
|
||||
'theme': null,
|
||||
'transparency': false,
|
||||
'snap': true,
|
||||
'guides': true,
|
||||
'safe_search': true,
|
||||
'exit_confirm': true,
|
||||
'default_units': 'pixels',
|
||||
'default_units': Object.keys(this.default_units_config)[0],
|
||||
'default_units_short': Object.values(this.default_units_config)[0],
|
||||
'resolution': 72,
|
||||
'thick_guides': false,
|
||||
'enable_autoresize': config.enable_autoresize_by_default,
|
||||
};
|
||||
|
||||
var value = this.Helper.getCookie(key);
|
||||
@ -129,6 +141,19 @@ class Tools_settings_class {
|
||||
//not allowed
|
||||
value = 1;
|
||||
}
|
||||
if(key == 'theme' && value == null) {
|
||||
value = config.themes[0];
|
||||
/*if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
&& config.themes.includes('dark')) {
|
||||
//dark mode
|
||||
value = 'dark';
|
||||
}
|
||||
else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches
|
||||
&& config.themes.includes('light')) {
|
||||
//light mode
|
||||
value = 'light';
|
||||
}*/
|
||||
}
|
||||
|
||||
//finalize values
|
||||
if(value === 1){
|
||||
|
||||
@ -7,8 +7,6 @@ import Base_gui_class from './../core/base-gui.js';
|
||||
import Base_selection_class from './../core/base-selection.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
|
||||
var instance = null;
|
||||
|
||||
class Animation_class extends Base_tools_class {
|
||||
|
||||
constructor(ctx) {
|
||||
@ -40,6 +38,8 @@ class Animation_class extends Base_tools_class {
|
||||
enable_background: false,
|
||||
enable_borders: false,
|
||||
enable_controls: false,
|
||||
enable_rotation: false,
|
||||
enable_move: false,
|
||||
data_function: function () {
|
||||
return null;
|
||||
},
|
||||
|
||||
@ -46,7 +46,7 @@ class Blur_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
this.started = true;
|
||||
|
||||
@ -127,7 +127,7 @@ class Clone_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
if (e.which == 3 && mouse.valid == true) {
|
||||
@ -156,7 +156,7 @@ class Clone_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@ class Clone_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
if (this.clone_coords === null) {
|
||||
@ -197,13 +197,13 @@ class Clone_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (layer.width != layer.width_original || layer.height != layer.height_original) {
|
||||
alertify.error('Clone tool disabled for resized image. Sorry.');
|
||||
alertify.error('Clone tool disabled for resized image. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
if (params.source_layer.value == 'Previous' &&
|
||||
(previous_layer.width != previous_layer.width_original
|
||||
|| previous_layer.height != previous_layer.height_original)) {
|
||||
alertify.error('Clone tool disabled for resized image. Sorry.');
|
||||
alertify.error('Clone tool disabled for resized image. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
if (params.source_layer.value == 'Previous') {
|
||||
|
||||
@ -28,6 +28,8 @@ class Crop_class extends Base_tools_class {
|
||||
enable_borders: true,
|
||||
enable_controls: true,
|
||||
crop_lines: true,
|
||||
enable_rotation: false,
|
||||
enable_move: false,
|
||||
data_function: function () {
|
||||
return _this.selection;
|
||||
},
|
||||
@ -143,7 +145,7 @@ class Crop_class extends Base_tools_class {
|
||||
};
|
||||
}
|
||||
|
||||
//controll boundaries
|
||||
//control boundaries
|
||||
if (this.selection.x < 0) {
|
||||
this.selection.width += this.selection.x;
|
||||
this.selection.x = 0;
|
||||
|
||||
@ -46,7 +46,7 @@ class Desaturate_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
this.started = true;
|
||||
|
||||
@ -64,7 +64,7 @@ class Erase_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
this.started = true;
|
||||
|
||||
@ -43,7 +43,7 @@ class Fill_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ class Gradient_class extends Base_tools_class {
|
||||
y: mouse.y,
|
||||
rotate: null,
|
||||
is_vector: is_vector,
|
||||
color: params.color_1,
|
||||
color: null,
|
||||
data: {
|
||||
center_x: mouse.x,
|
||||
center_y: mouse.y,
|
||||
@ -138,7 +138,7 @@ class Gradient_class extends Base_tools_class {
|
||||
power = 255;
|
||||
}
|
||||
|
||||
var color1 = layer.color;
|
||||
var color1 = params.color_1;
|
||||
var color2 = params.color_2;
|
||||
var radial = params.radial;
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@ class Magic_erase_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import Base_tools_class from './../core/base-tools.js';
|
||||
import File_open_class from './../modules/file/open.js';
|
||||
@ -61,7 +62,7 @@ class Media_class extends Base_tools_class {
|
||||
|
||||
//paging
|
||||
html_paging += '<div class="media-paging" id="media_paging">';
|
||||
html_paging += '<button type="button" data-value="1"><</button> ';
|
||||
html_paging += '<button type="button" data-value="1" title="Previous"><</button> ';
|
||||
for(var i = 1; i <= Math.min(10, pages); i++) {
|
||||
var selected = '';
|
||||
if(this.page == i){
|
||||
@ -69,7 +70,7 @@ class Media_class extends Base_tools_class {
|
||||
}
|
||||
html_paging += '<button type="button" class="'+selected+'" data-value="'+i+'">'+i+'</button> ';
|
||||
}
|
||||
html_paging += '<button type="button" data-value="'+Math.min(this.page + 1, pages)+'">></button> ';
|
||||
html_paging += '<button type="button" data-value="'+Math.min(this.page + 1, pages)+'" title="Next">></button> ';
|
||||
html_paging += '</div>';
|
||||
}
|
||||
else{
|
||||
@ -98,6 +99,8 @@ class Media_class extends Base_tools_class {
|
||||
};
|
||||
_this.File_open.file_open_url_handler(data);
|
||||
_this.POP.hide();
|
||||
|
||||
new app.Actions.Activate_tool_action('select', true).do();
|
||||
});
|
||||
}
|
||||
var targets = popup.el.querySelectorAll('#media_paging button');
|
||||
@ -153,6 +156,8 @@ class Media_class extends Base_tools_class {
|
||||
},
|
||||
};
|
||||
this.POP.show(settings);
|
||||
|
||||
document.getElementById("pop_data_query").select();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,9 +11,21 @@ class Pencil_class extends Base_tools_class {
|
||||
this.name = 'pencil';
|
||||
this.layer = {};
|
||||
this.params_hash = false;
|
||||
this.pressure_supported = false;
|
||||
this.pointer_pressure = 0; // has range [0 - 1]
|
||||
}
|
||||
|
||||
load() {
|
||||
var _this = this;
|
||||
|
||||
//pointer events
|
||||
document.addEventListener('pointerdown', function (event) {
|
||||
_this.pointerdown(event);
|
||||
});
|
||||
document.addEventListener('pointermove', function (event) {
|
||||
_this.pointermove(event);
|
||||
});
|
||||
|
||||
this.default_events();
|
||||
}
|
||||
|
||||
@ -23,13 +35,31 @@ class Pencil_class extends Base_tools_class {
|
||||
this.mousemove(event);
|
||||
}
|
||||
|
||||
pointerdown(e) {
|
||||
// Devices that don't actually support pen pressure can give 0.5 as a false reading.
|
||||
// It is highly unlikely a real pen will read exactly 0.5 at the start of a stroke.
|
||||
if (e.pressure && e.pressure !== 0 && e.pressure !== 0.5 && e.pressure <= 1) {
|
||||
this.pressure_supported = true;
|
||||
this.pointer_pressure = e.pressure;
|
||||
} else {
|
||||
this.pressure_supported = false;
|
||||
}
|
||||
}
|
||||
|
||||
pointermove(e) {
|
||||
// Pressure of exactly 1 seems to be an input error, sometimes I see it when lifting the pen
|
||||
// off the screen when pressure reading should be near 0.
|
||||
if (this.pressure_supported && e.pressure < 1) {
|
||||
this.pointer_pressure = e.pressure;
|
||||
}
|
||||
}
|
||||
|
||||
mousedown(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false)
|
||||
return;
|
||||
|
||||
var params_hash = this.get_params_hash();
|
||||
var params = this.getParams();
|
||||
var opacity = Math.round(config.ALPHA / 255 * 100);
|
||||
|
||||
if (config.layer.type != this.name || params_hash != this.params_hash) {
|
||||
@ -80,8 +110,20 @@ class Pencil_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
|
||||
//detect line size
|
||||
var size = params.size;
|
||||
var new_size = size;
|
||||
|
||||
if (params.pressure == true && this.pressure_supported) {
|
||||
new_size = size * this.pointer_pressure * 2;
|
||||
}
|
||||
|
||||
//more data
|
||||
config.layer.data.push([Math.ceil(mouse.x - config.layer.x), Math.ceil(mouse.y - config.layer.y)]);
|
||||
config.layer.data.push([
|
||||
Math.ceil(mouse.x - config.layer.x),
|
||||
Math.ceil(mouse.y - config.layer.y),
|
||||
new_size
|
||||
]);
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
@ -93,8 +135,20 @@ class Pencil_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
|
||||
//detect line size
|
||||
var size = params.size;
|
||||
var new_size = size;
|
||||
|
||||
if (params.pressure == true && this.pressure_supported) {
|
||||
new_size = size * this.pointer_pressure * 2;
|
||||
}
|
||||
|
||||
//more data
|
||||
config.layer.data.push([Math.ceil(mouse.x - config.layer.x), Math.ceil(mouse.y - config.layer.y)]);
|
||||
config.layer.data.push([
|
||||
Math.ceil(mouse.x - config.layer.x),
|
||||
Math.ceil(mouse.y - config.layer.y),
|
||||
new_size
|
||||
]);
|
||||
|
||||
this.check_dimensions();
|
||||
|
||||
@ -103,76 +157,9 @@ class Pencil_class extends Base_tools_class {
|
||||
}
|
||||
|
||||
render(ctx, layer) {
|
||||
var params = layer.params;
|
||||
|
||||
if (params.antialiasing == true) {
|
||||
this.render_antialiased(ctx, layer); // remove it in future, users should use brush
|
||||
}
|
||||
else {
|
||||
this.render_aliased(ctx, layer);
|
||||
}
|
||||
this.render_aliased(ctx, layer);
|
||||
}
|
||||
|
||||
/**
|
||||
* draw with antialiasing, nice mode
|
||||
*
|
||||
* @param {object} ctx
|
||||
* @param {object} layer
|
||||
*/
|
||||
render_antialiased(ctx, layer) {
|
||||
if (layer.data.length == 0)
|
||||
return;
|
||||
|
||||
var params = layer.params;
|
||||
var data = layer.data;
|
||||
var n = data.length;
|
||||
var size = params.size || 1;
|
||||
|
||||
//set styles
|
||||
ctx.save();
|
||||
ctx.fillStyle = layer.color;
|
||||
ctx.strokeStyle = layer.color;
|
||||
ctx.lineWidth = size;
|
||||
ctx.lineCap = 'round';
|
||||
ctx.lineJoin = 'round';
|
||||
|
||||
ctx.translate(layer.x, layer.y);
|
||||
|
||||
//draw
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(data[0][0], data[0][1]);
|
||||
for (var i = 1; i < n; i++) {
|
||||
if (data[i] === null) {
|
||||
//break
|
||||
ctx.beginPath();
|
||||
}
|
||||
else {
|
||||
//line
|
||||
if (data[i - 1] == null) {
|
||||
//exception - point
|
||||
ctx.arc(data[i][0], data[i][1], size / 2, 0, 2 * Math.PI, false);
|
||||
ctx.fill();
|
||||
}
|
||||
else {
|
||||
//lines
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(data[i - 1][0], data[i - 1][1]);
|
||||
ctx.lineTo(data[i][0], data[i][1]);
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (n == 1 || data[1] == null) {
|
||||
//point
|
||||
ctx.beginPath();
|
||||
ctx.arc(data[0][0], data[0][1], size / 2, 0, 2 * Math.PI, false);
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
ctx.translate(-layer.x, -layer.y);
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
/**
|
||||
* draw without antialiasing, sharp, ugly mode.
|
||||
*
|
||||
@ -183,13 +170,14 @@ class Pencil_class extends Base_tools_class {
|
||||
if (layer.data.length == 0)
|
||||
return;
|
||||
|
||||
var params = layer.params;
|
||||
var data = layer.data;
|
||||
var n = data.length;
|
||||
var size = params.size;
|
||||
|
||||
//set styles
|
||||
ctx.fillStyle = layer.color;
|
||||
ctx.strokeStyle = layer.color;
|
||||
|
||||
ctx.translate(layer.x, layer.y);
|
||||
|
||||
//draw
|
||||
@ -202,21 +190,43 @@ class Pencil_class extends Base_tools_class {
|
||||
}
|
||||
else {
|
||||
//line
|
||||
size = data[i][2];
|
||||
if(size == undefined){
|
||||
size = 1;
|
||||
}
|
||||
|
||||
if (data[i - 1] == null) {
|
||||
//exception - point
|
||||
ctx.fillRect(data[i][0] - 1, data[i][1] - 1, 1, 1);
|
||||
ctx.fillRect(
|
||||
data[i][0] - Math.floor(size / 2) - 1,
|
||||
data[i][1] - Math.floor(size / 2) - 1,
|
||||
size,
|
||||
size
|
||||
);
|
||||
}
|
||||
else {
|
||||
//lines
|
||||
ctx.beginPath();
|
||||
this.draw_simple_line(ctx, data[i - 1][0], data[i - 1][1], data[i][0], data[i][1]);
|
||||
this.draw_simple_line(
|
||||
ctx,
|
||||
data[i - 1][0],
|
||||
data[i - 1][1],
|
||||
data[i][0],
|
||||
data[i][1],
|
||||
size
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (n == 1 || data[1] == null) {
|
||||
//point
|
||||
ctx.beginPath();
|
||||
ctx.fillRect(data[0][0] - 1, data[0][1] - 1, 1, 1);
|
||||
ctx.fillRect(
|
||||
data[0][0] - Math.floor(size / 2) - 1,
|
||||
data[0][1] - Math.floor(size / 2) - 1,
|
||||
size,
|
||||
size
|
||||
);
|
||||
}
|
||||
|
||||
ctx.translate(-layer.x, -layer.y);
|
||||
@ -230,17 +240,19 @@ class Pencil_class extends Base_tools_class {
|
||||
* @param {int} from_y
|
||||
* @param {int} to_x
|
||||
* @param {int} to_y
|
||||
* @param {int} size
|
||||
*/
|
||||
draw_simple_line(ctx, from_x, from_y, to_x, to_y) {
|
||||
draw_simple_line(ctx, from_x, from_y, to_x, to_y, size) {
|
||||
var dist_x = from_x - to_x;
|
||||
var dist_y = from_y - to_y;
|
||||
var distance = Math.sqrt((dist_x * dist_x) + (dist_y * dist_y));
|
||||
var radiance = Math.atan2(dist_y, dist_x);
|
||||
for (var j = 0; j < distance; j++) {
|
||||
var x_tmp = Math.round(to_x - 1 + Math.cos(radiance) * j);
|
||||
var y_tmp = Math.round(to_y - 1 + Math.sin(radiance) * j);
|
||||
|
||||
ctx.fillRect(x_tmp, y_tmp, 1, 1);
|
||||
for (var j = 0; j < distance; j++) {
|
||||
var x_tmp = Math.round(to_x + Math.cos(radiance) * j) - Math.floor(size / 2) - 1;
|
||||
var y_tmp = Math.round(to_y + Math.sin(radiance) * j) - Math.floor(size / 2) - 1;
|
||||
|
||||
ctx.fillRect(x_tmp, y_tmp, size, size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,6 @@ import Base_layers_class from './../core/base-layers.js';
|
||||
import Base_selection_class from './../core/base-selection.js';
|
||||
import Helper_class from './../libs/helpers.js';
|
||||
import Dialog_class from './../libs/popup.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
|
||||
class Select_tool_class extends Base_tools_class {
|
||||
|
||||
@ -22,12 +21,15 @@ class Select_tool_class extends Base_tools_class {
|
||||
this.moving = false;
|
||||
this.resizing = false;
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
this.rotate_initial = null;
|
||||
|
||||
var sel_config = {
|
||||
enable_background: false,
|
||||
enable_borders: true,
|
||||
enable_controls: true,
|
||||
keep_ratio: true,
|
||||
enable_rotation: true,
|
||||
enable_move: true,
|
||||
data_function: function () {
|
||||
return config.layer;
|
||||
},
|
||||
@ -115,28 +117,46 @@ class Select_tool_class extends Base_tools_class {
|
||||
}
|
||||
|
||||
dragStart(event) {
|
||||
var mouse = this.get_mouse_info(event);
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.mousedown(event);
|
||||
}
|
||||
|
||||
dragMove(event) {
|
||||
var mouse = this.get_mouse_info(event);
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.mousemove(event);
|
||||
}
|
||||
|
||||
dragEnd(event) {
|
||||
var mouse = this.get_mouse_info(event);
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.mouseup(event);
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
async mousedown(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false)
|
||||
if (mouse.click_valid == false || config.mouse_lock === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.rotate_initial = config.layer.rotate;
|
||||
|
||||
if (this.Base_selection.mouse_lock != null) {
|
||||
this.resizing = true;
|
||||
@ -162,12 +182,17 @@ class Select_tool_class extends Base_tools_class {
|
||||
|
||||
mousemove(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.is_drag == false)
|
||||
return;
|
||||
if (mouse.click_valid == false) {
|
||||
if (mouse.is_drag == false || mouse.click_valid == false || config.mouse_lock === true) {
|
||||
return;
|
||||
}
|
||||
if (this.resizing) {
|
||||
|
||||
//also handle rotation
|
||||
let rotate = this.Base_selection.current_angle
|
||||
if(config.layer.rotate != rotate && rotate !== null){
|
||||
config.layer.rotate = rotate;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (this.moving) {
|
||||
@ -192,7 +217,7 @@ class Select_tool_class extends Base_tools_class {
|
||||
|
||||
mouseup(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false) {
|
||||
if (mouse.click_valid == false || config.mouse_lock === true) {
|
||||
return;
|
||||
}
|
||||
if (this.resizing) {
|
||||
@ -200,6 +225,8 @@ class Select_tool_class extends Base_tools_class {
|
||||
let y = config.layer.y;
|
||||
let width = config.layer.width;
|
||||
let height = config.layer.height;
|
||||
|
||||
//reset values
|
||||
config.layer.x = this.mousedown_dimensions.x;
|
||||
config.layer.y = this.mousedown_dimensions.y;
|
||||
config.layer.width = this.mousedown_dimensions.width;
|
||||
@ -216,6 +243,20 @@ class Select_tool_class extends Base_tools_class {
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
//also handle rotation
|
||||
let rotate = this.Base_selection.current_angle;
|
||||
if(this.rotate_initial != rotate && rotate !== null){
|
||||
//save state
|
||||
config.layer.rotate = this.rotate_initial;
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('resize_layer', 'Resize Layer', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
rotate
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
}
|
||||
else if (this.moving) {
|
||||
var new_x = Math.round(mouse.x - mouse.click_x + this.mousedown_dimensions.x);
|
||||
@ -254,6 +295,21 @@ class Select_tool_class extends Base_tools_class {
|
||||
var ctx = this.Base_layers.ctx;
|
||||
var mouse = this.get_mouse_info(event);
|
||||
|
||||
//maybe related tool have additional overlay render handlers?
|
||||
if(config.layer.render_function != null) {
|
||||
var render_class = config.layer.render_function[0];
|
||||
var render_function = 'select';
|
||||
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 (mouse.is_drag == false)
|
||||
return;
|
||||
|
||||
|
||||
@ -41,6 +41,8 @@ class Selection_class extends Base_tools_class {
|
||||
enable_background: true,
|
||||
enable_borders: true,
|
||||
enable_controls: false,
|
||||
enable_rotation: false,
|
||||
enable_move: false,
|
||||
data_function: function () {
|
||||
return _this.selection;
|
||||
},
|
||||
|
||||
482
src/js/tools/shapes/bezier_curve.js
Normal file
482
src/js/tools/shapes/bezier_curve.js
Normal file
@ -0,0 +1,482 @@
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Base_tools_class from './../../core/base-tools.js';
|
||||
import Base_layers_class from './../../core/base-layers.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
|
||||
class Bezier_Curve_class extends Base_tools_class {
|
||||
|
||||
constructor(ctx) {
|
||||
super();
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.ctx = ctx;
|
||||
this.name = 'bezier_curve';
|
||||
this.layer = {};
|
||||
this.best_ratio = 1;
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
this.params_hash = false;
|
||||
this.selected_obj_positions = {};
|
||||
this.mouse_lock = null;
|
||||
this.selected_object_drag_type = null;
|
||||
this.old_data = null;
|
||||
|
||||
this.events();
|
||||
}
|
||||
|
||||
load() {
|
||||
var _this = this;
|
||||
this.default_events();
|
||||
document.addEventListener('keydown', function (event) {
|
||||
if (config.TOOL.name != _this.name) {
|
||||
return;
|
||||
}
|
||||
var code = event.code;
|
||||
if (code == "Escape") {
|
||||
//escape
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* events for handling helping lines only
|
||||
*/
|
||||
events() {
|
||||
document.addEventListener('mousedown', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mouseup', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
|
||||
// touch
|
||||
document.addEventListener('touchstart', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
document.addEventListener('touchmove', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
}, {passive: false});
|
||||
document.addEventListener('touchend', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
}
|
||||
|
||||
mousedown(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
var params_hash = this.get_params_hash();
|
||||
|
||||
var mouse_x = mouse.x;
|
||||
var mouse_y = mouse.y;
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
const data_clone = JSON.parse(JSON.stringify(config.layer.data));
|
||||
|
||||
if (config.layer.type != this.name || params_hash != this.params_hash
|
||||
|| (data_clone != null && data_clone.cp2.x !== null)) {
|
||||
//register new object - current layer is not ours or params changed
|
||||
this.layer = {
|
||||
type: this.name,
|
||||
data: {
|
||||
start: {x: mouse_x, y: mouse_y},
|
||||
cp1: {x: null, y: null},
|
||||
cp2: {x: null, y: null},
|
||||
end: {x: null, y: null}
|
||||
},
|
||||
params: this.clone(this.getParams()),
|
||||
render_function: [this.name, 'render'],
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: null,
|
||||
height: null,
|
||||
hide_selection_if_active: true,
|
||||
rotate: null,
|
||||
is_vector: true,
|
||||
color: config.COLOR,
|
||||
status: 'draft',
|
||||
};
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('new_bezier_layer', 'New Bezier Layer', [
|
||||
new app.Actions.Insert_layer_action(this.layer)
|
||||
])
|
||||
);
|
||||
this.params_hash = params_hash;
|
||||
}
|
||||
else {
|
||||
//add more data
|
||||
config.layer.data.end.x = mouse_x;
|
||||
config.layer.data.end.y = mouse_y;
|
||||
}
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
mousemove(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
var click_x = Math.round(mouse.click_x);
|
||||
var click_y = Math.round(mouse.click_y);
|
||||
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
if (mouse.is_drag == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x - click_x;
|
||||
var height = mouse_y - click_y;
|
||||
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
mouse_y = click_y;
|
||||
else
|
||||
mouse_x = click_x;
|
||||
}
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
//add more data
|
||||
if(config.layer.data.end.x === null){
|
||||
//still first step
|
||||
config.layer.data.cp1.x = mouse_x;
|
||||
config.layer.data.cp1.y = mouse_y;
|
||||
}
|
||||
else{
|
||||
config.layer.data.cp2.x = mouse_x;
|
||||
config.layer.data.cp2.y = mouse_y;
|
||||
}
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
mouseup(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
var click_x = Math.round(mouse.click_x);
|
||||
var click_y = Math.round(mouse.click_y);
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x - click_x;
|
||||
var height = mouse_y - click_y;
|
||||
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
mouse_y = click_y;
|
||||
else
|
||||
mouse_x = click_x;
|
||||
}
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
|
||||
//add more data
|
||||
if(config.layer.data.end.x === null){
|
||||
//still first step
|
||||
config.layer.data.cp1.x = mouse_x;
|
||||
config.layer.data.cp1.y = mouse_y;
|
||||
}
|
||||
else{
|
||||
config.layer.data.cp2.x = mouse_x;
|
||||
config.layer.data.cp2.y = mouse_y;
|
||||
config.layer.status = null;
|
||||
}
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
render_overlay(ctx){
|
||||
var ctx = this.Base_layers.ctx;
|
||||
this.render_overlay_parent(ctx);
|
||||
|
||||
//also draw control lines
|
||||
if(config.layer.type == this.name){
|
||||
var bezier = config.layer.data;
|
||||
this.selected_obj_positions = {};
|
||||
|
||||
var x = config.layer.x;
|
||||
var y = config.layer.y;
|
||||
|
||||
//draw corners
|
||||
if (bezier.start.x != null) {
|
||||
this.Helper.draw_special_line(
|
||||
this.ctx,
|
||||
x + bezier.start.x,
|
||||
y + bezier.start.y,
|
||||
x + bezier.cp1.x,
|
||||
y + bezier.cp1.y
|
||||
);
|
||||
if(config.TOOL.name == 'select') {
|
||||
this.selected_obj_positions.cp1_start = this.Helper.draw_control_point(
|
||||
this.ctx,
|
||||
x + bezier.start.x,
|
||||
y + bezier.start.y
|
||||
);
|
||||
this.selected_obj_positions.cp1_end = this.Helper.draw_control_point(
|
||||
this.ctx,
|
||||
x + bezier.cp1.x,
|
||||
y + bezier.cp1.y
|
||||
);
|
||||
}
|
||||
}
|
||||
if (bezier.end.x != null && bezier.cp2.x != null) {
|
||||
this.Helper.draw_special_line(
|
||||
this.ctx,
|
||||
x + bezier.end.x,
|
||||
y + bezier.end.y,
|
||||
x + bezier.cp2.x,
|
||||
y + bezier.cp2.y
|
||||
);
|
||||
if(config.TOOL.name == 'select') {
|
||||
this.selected_obj_positions.cp2_start = this.Helper.draw_control_point(
|
||||
this.ctx,
|
||||
x + bezier.end.x,
|
||||
y + bezier.end.y
|
||||
);
|
||||
this.selected_obj_positions.cp2_end = this.Helper.draw_control_point(
|
||||
this.ctx,
|
||||
x + bezier.cp2.x,
|
||||
y + bezier.cp2.y
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
select(ctx) {
|
||||
this.render_overlay(ctx);
|
||||
}
|
||||
|
||||
demo(ctx, x, y, width, height) {
|
||||
var data = {
|
||||
start: {x: x, y: y},
|
||||
cp1: {x: x + width, y: y},
|
||||
cp2: {x: x, y: y + height},
|
||||
end: {x: x + width, y: y + height}
|
||||
};
|
||||
|
||||
this.draw_bezier(ctx, 0, 0, data, 2, '#555');
|
||||
}
|
||||
|
||||
render(ctx, layer) {
|
||||
var params = layer.params;
|
||||
this.draw_bezier(ctx, layer.x, layer.y, layer.data, params.size, layer.color);
|
||||
}
|
||||
|
||||
draw_bezier(ctx, x, y, data, lineWidth, color) {
|
||||
if(data.end.x == null || data.cp2.x == null){
|
||||
return;
|
||||
}
|
||||
|
||||
//set styles
|
||||
ctx.fillStyle = color;
|
||||
ctx.strokeStyle = color;
|
||||
ctx.lineWidth = lineWidth;
|
||||
ctx.lineCap = 'round';
|
||||
|
||||
//draw bezier
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x + data.start.x, y + data.start.y);
|
||||
ctx.bezierCurveTo(
|
||||
x + data.cp1.x, y + data.cp1.y,
|
||||
x + data.cp2.x, y + data.cp2.y,
|
||||
x + data.end.x, y + data.end.y
|
||||
);
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
selected_object_actions(e) {
|
||||
if(config.TOOL.name != 'select' || config.layer.type != this.name || config.layer.status == 'draft'){
|
||||
return;
|
||||
}
|
||||
|
||||
var ctx = this.Base_layers.ctx;
|
||||
|
||||
var mouse = this.get_mouse_info(e);
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
var click_x = Math.round(mouse.click_x);
|
||||
var click_y = Math.round(mouse.click_y);
|
||||
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
|
||||
//simplify checks
|
||||
var event_type = e.type;
|
||||
if(event_type == 'touchstart') event_type = 'mousedown';
|
||||
if(event_type == 'touchmove') event_type = 'mousemove';
|
||||
if(event_type == 'touchend') event_type = 'mouseup';
|
||||
|
||||
if (event_type == 'mouseup') {
|
||||
//reset
|
||||
config.mouse_lock = null;
|
||||
if (mainWrapper.style.cursor != 'default') {
|
||||
mainWrapper.style.cursor = 'default';
|
||||
}
|
||||
}
|
||||
|
||||
if (event_type == 'mousedown' && config.mouse.valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event_type == 'mousemove' && this.mouse_lock == 'move_point' && mouse.is_drag) {
|
||||
mainWrapper.style.cursor = "move";
|
||||
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
var type = this.selected_object_drag_type;
|
||||
var bezier = config.layer.data;
|
||||
|
||||
// Do transformations
|
||||
var dx = Math.round(mouse.x - mouse.click_x) - config.layer.x;
|
||||
var dy = Math.round(mouse.y - mouse.click_y) - config.layer.y;
|
||||
|
||||
// Set values
|
||||
if(type == 'cp1_start') {
|
||||
bezier.start.x = mouse.click_x + dx;
|
||||
bezier.start.y = mouse.click_y + dy;
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x - bezier.cp1.x;
|
||||
var height = mouse_y - bezier.cp1.y;
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
bezier.start.y = bezier.cp1.y;
|
||||
else
|
||||
bezier.start.x = bezier.cp1.x;
|
||||
}
|
||||
}
|
||||
else if(type == 'cp1_end') {
|
||||
bezier.cp1.x = mouse.click_x + dx;
|
||||
bezier.cp1.y = mouse.click_y + dy;
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x -bezier.start.x;
|
||||
var height = mouse_y - bezier.start.y;
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
bezier.cp1.y = bezier.start.y;
|
||||
else
|
||||
bezier.cp1.x = bezier.start.x;
|
||||
}
|
||||
}
|
||||
else if(type == 'cp2_start') {
|
||||
bezier.end.x = mouse.click_x+ dx;
|
||||
bezier.end.y = mouse.click_y + dy;
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x - bezier.cp2.x;
|
||||
var height = mouse_y - bezier.cp2.y;
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
bezier.end.y = bezier.cp2.y;
|
||||
else
|
||||
bezier.end.x = bezier.cp2.x;
|
||||
}
|
||||
}
|
||||
else if(type == 'cp2_end') {
|
||||
bezier.cp2.x = mouse.click_x + dx;
|
||||
bezier.cp2.y = mouse.click_y + dy;
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
//one direction only
|
||||
var width = mouse_x - bezier.end.x;
|
||||
var height = mouse_y - bezier.end.y;
|
||||
if (Math.abs(width) > Math.abs(height))
|
||||
bezier.cp2.y = bezier.end.y;
|
||||
else
|
||||
bezier.cp2.x = bezier.end.x;
|
||||
}
|
||||
}
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (event_type == 'mouseup' && this.mouse_lock == 'move_point') {
|
||||
this.mouse_lock = null;
|
||||
var type = this.selected_object_drag_type;
|
||||
var bezier = config.layer.data;
|
||||
|
||||
//reset sate
|
||||
config.layer.data = this.old_data;
|
||||
|
||||
//save state
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
data: bezier,
|
||||
})
|
||||
])
|
||||
);
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
if (!mouse.is_drag && ['mousedown', 'mouseup'].includes(event_type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.mouse_lock) {
|
||||
for (let current_drag_type in this.selected_obj_positions) {
|
||||
const position = this.selected_obj_positions[current_drag_type];
|
||||
if (position && this.ctx.isPointInPath(position, mouse.x, mouse.y)) {
|
||||
// match
|
||||
if (event_type == 'mousedown') {
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
this.mouse_lock = 'move_point';
|
||||
this.selected_object_drag_type = current_drag_type;
|
||||
}
|
||||
config.mouse_lock = true;
|
||||
this.old_data = JSON.parse(JSON.stringify(config.layer.data));
|
||||
}
|
||||
if (event_type == 'mousemove') {
|
||||
mainWrapper.style.cursor = 'move';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Bezier_Curve_class;
|
||||
@ -47,13 +47,11 @@ class Cog_class extends Base_tools_class {
|
||||
|
||||
render(ctx, layer) {
|
||||
var params = layer.params;
|
||||
var fill = params.fill;
|
||||
|
||||
ctx.save();
|
||||
|
||||
//set styles
|
||||
ctx.fillStyle = config.COLOR;
|
||||
ctx.strokeStyle = config.COLOR;
|
||||
ctx.fillStyle = params.fill_color;
|
||||
ctx.lineWidth = 1;
|
||||
|
||||
//draw with rotation support
|
||||
@ -76,7 +74,6 @@ class Cog_class extends Base_tools_class {
|
||||
var p = new Path2D("M190.883 502.932c-4.517 0-9.082-.991-13.368-3.055l-63.216-30.438c-13.348-6.426-20.255-21.479-16.422-35.794 3.684-13.757 8.609-29.81 14.376-46.879a195.425 195.425 0 0 1-15.733-19.711c-17.979 1.837-34.736 3.07-48.937 3.594-14.773.515-27.899-9.536-31.195-23.975L.776 278.273c-3.297-14.444 4.167-29.229 17.748-35.156 13.056-5.697 28.669-11.851 45.59-17.977a193.78 193.78 0 0 1 5.601-24.614c-12.655-12.922-24.061-25.246-33.297-35.989-9.643-11.217-9.939-27.761-.706-39.339l43.744-54.854c9.239-11.584 25.453-14.963 38.552-8.043 12.556 6.636 27.096 15.004 42.466 24.433a194.25 194.25 0 0 1 22.746-10.969c2.209-17.923 4.735-34.522 7.381-48.468 2.757-14.532 15.506-25.079 30.315-25.079h70.161c14.815 0 27.569 10.567 30.325 25.126 2.646 13.983 5.17 30.564 7.377 48.422a193.854 193.854 0 0 1 22.75 10.971c15.42-9.466 29.975-17.843 42.506-24.458 13.079-6.901 29.275-3.512 38.509 8.066l43.743 54.855c9.237 11.582 8.928 28.142-.738 39.374-9.254 10.756-20.646 23.066-33.263 35.957a193.79 193.79 0 0 1 5.601 24.62c16.986 6.145 32.615 12.304 45.634 17.992h.001c13.553 5.923 20.997 20.699 17.701 35.137l-15.615 68.4c-3.299 14.446-16.455 24.532-31.247 23.972-14.229-.531-30.97-1.762-48.889-3.588a195.251 195.251 0 0 1-15.728 19.703c5.791 17.122 10.723 33.189 14.394 46.921 3.819 14.291-3.093 29.324-16.436 35.748l-63.214 30.438c-13.351 6.428-29.426 2.438-38.224-9.484-8.455-11.455-17.931-25.313-27.679-40.466-8.425.548-16.745.548-25.176 0-9.772 15.201-19.257 29.075-27.702 40.508-5.964 8.075-15.283 12.499-24.824 12.5zm-61.851-61.915l61.516 29.619c15.437-20.988 29.097-42.937 36.43-54.579 26.665 3.104 31.829 3.053 58.035.001 6.932 10.997 20.8 33.291 36.445 54.576l61.515-29.619c-6.794-25.207-15.471-49.669-19.957-62.54 19.028-18.834 22.066-22.637 36.219-45.367 13.048 1.451 39.007 4.495 65.388 5.533l15.195-66.562c-24.034-10.441-48.695-18.946-61.337-23.387-2.824-26.58-3.888-31.341-12.882-56.619 9.27-9.299 27.886-27.753 45.083-47.657l-42.566-53.381c-22.622 12.001-44 25.528-56.513 33.37-22.495-14.328-26.889-16.481-52.31-25.228-1.474-12.904-4.292-38.972-9.156-64.958H221.86c-4.53 24.145-7.144 47.395-9.144 64.955-25.185 8.667-29.587 10.755-52.309 25.223-11.055-6.923-33.256-21.009-56.521-33.362l-42.568 53.379c16.896 19.57 35.133 37.669 45.088 47.647-8.943 25.131-10.043 29.878-12.885 56.613-12.366 4.348-37.104 12.879-61.339 23.397l15.192 66.562c25.642-.998 50.721-3.907 65.381-5.542 14.147 22.727 17.192 26.54 36.221 45.377-4.265 12.257-13.059 37.034-19.944 62.549zm351.667-168.554l.009.004-.009-.004zM256 347.486c-50.446 0-91.486-41.041-91.486-91.486s41.041-91.486 91.486-91.486c50.445 0 91.486 41.041 91.486 91.486S306.445 347.486 256 347.486zm0-150.972c-32.801 0-59.486 26.686-59.486 59.486S223.2 315.486 256 315.486 315.486 288.8 315.486 256 288.801 196.514 256 196.514z");
|
||||
|
||||
ctx.closePath();
|
||||
ctx.stroke(p);
|
||||
ctx.fill(p);
|
||||
}
|
||||
|
||||
|
||||
369
src/js/tools/shapes/polygon.js
Normal file
369
src/js/tools/shapes/polygon.js
Normal file
@ -0,0 +1,369 @@
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Base_tools_class from './../../core/base-tools.js';
|
||||
import Base_layers_class from './../../core/base-layers.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
|
||||
class Polygon_class extends Base_tools_class {
|
||||
|
||||
constructor(ctx) {
|
||||
super();
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.ctx = ctx;
|
||||
this.name = 'polygon';
|
||||
this.layer = {};
|
||||
this.best_ratio = 1;
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
this.params_hash = false;
|
||||
this.selected_obj_positions = {};
|
||||
this.mouse_lock = null;
|
||||
this.selected_object_drag_type = null;
|
||||
this.old_data = null;
|
||||
|
||||
this.events();
|
||||
}
|
||||
|
||||
load() {
|
||||
var _this = this;
|
||||
this.default_events();
|
||||
document.addEventListener('keydown', function (event) {
|
||||
var code = event.code;
|
||||
if (config.TOOL.name == _this.name && code == "Escape") {
|
||||
//escape
|
||||
config.layer.status = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* events for handling helping lines only
|
||||
*/
|
||||
events() {
|
||||
document.addEventListener('mousedown', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mouseup', (e) => {
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
|
||||
// touch
|
||||
document.addEventListener('touchstart', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
document.addEventListener('touchmove', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
}, {passive: false});
|
||||
document.addEventListener('touchend', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
}
|
||||
|
||||
mousedown(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
var params_hash = this.get_params_hash();
|
||||
|
||||
var mouse_x = mouse.x;
|
||||
var mouse_y = mouse.y;
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
if (config.layer.type != this.name || params_hash != this.params_hash
|
||||
|| (config.layer.data != null && config.layer.status != 'draft')) {
|
||||
//register new object - current layer is not ours or params changed
|
||||
this.layer = {
|
||||
type: this.name,
|
||||
data: [
|
||||
{x: mouse_x, y: mouse_y}
|
||||
],
|
||||
params: this.clone(this.getParams()),
|
||||
render_function: [this.name, 'render'],
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: null,
|
||||
height: null,
|
||||
hide_selection_if_active: true,
|
||||
rotate: null,
|
||||
is_vector: true,
|
||||
color: null,
|
||||
status: 'draft',
|
||||
};
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('new_polygon_layer', 'New Polygon Layer', [
|
||||
new app.Actions.Insert_layer_action(this.layer)
|
||||
])
|
||||
);
|
||||
this.params_hash = params_hash;
|
||||
}
|
||||
else {
|
||||
//add more data
|
||||
config.layer.data.push(
|
||||
{x: mouse_x, y: mouse_y}
|
||||
);
|
||||
}
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
mousemove(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
if (mouse.is_drag == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
//add more data
|
||||
config.layer.data[config.layer.data.length - 1] = {x: mouse_x, y: mouse_y};
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
mouseup(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
|
||||
//add more data
|
||||
config.layer.data[config.layer.data.length - 1] = {x: mouse_x, y: mouse_y};
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
render_overlay(ctx){
|
||||
var ctx = this.Base_layers.ctx;
|
||||
this.render_overlay_parent(ctx);
|
||||
|
||||
if(config.TOOL.name != 'select'){
|
||||
return;
|
||||
}
|
||||
|
||||
//also draw control lines
|
||||
if(config.layer.type == this.name){
|
||||
var data = config.layer.data;
|
||||
this.selected_obj_positions = {};
|
||||
|
||||
//draw corners
|
||||
for(var i in data) {
|
||||
var point = data[i];
|
||||
|
||||
this.selected_obj_positions[i] = this.Helper.draw_control_point(
|
||||
this.ctx,
|
||||
config.layer.x + point.x,
|
||||
config.layer.y + point.y
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
select(ctx) {
|
||||
this.render_overlay(ctx);
|
||||
}
|
||||
|
||||
demo(ctx, x, y, width, height) {
|
||||
ctx.fillStyle = '#aaa';
|
||||
ctx.strokeStyle = '#555';
|
||||
ctx.lineWidth = 2;
|
||||
|
||||
var width_all = width + x * 2;
|
||||
width = height * this.best_ratio;
|
||||
x = (width_all - width) / 2;
|
||||
|
||||
var data = [
|
||||
{x: 0, y: 0},
|
||||
{x: width, y: 0},
|
||||
{x: width * 1.1, y: height * 2 / 3},
|
||||
{x: width / 2, y: height / 3},
|
||||
{x: -1 * width * 0.2, y: height},
|
||||
];
|
||||
|
||||
ctx.save();
|
||||
ctx.translate(x + width / 2, y + height / 2);
|
||||
this.draw_polygon(ctx, -width / 2, -height / 2, width, height, data);
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
render(ctx, layer) {
|
||||
var params = layer.params;
|
||||
|
||||
ctx.save();
|
||||
|
||||
//set styles
|
||||
ctx.strokeStyle = 'transparent';
|
||||
ctx.fillStyle = 'transparent';
|
||||
if(params.border)
|
||||
ctx.strokeStyle = params.border_color;
|
||||
if(params.fill)
|
||||
ctx.fillStyle = params.fill_color;
|
||||
ctx.lineWidth = params.border_size;
|
||||
|
||||
//draw with rotation support
|
||||
ctx.translate(layer.x + layer.width / 2, layer.y + layer.height / 2);
|
||||
ctx.rotate(layer.rotate * Math.PI / 180);
|
||||
this.draw_polygon(ctx, -layer.width / 2, -layer.height / 2, layer.width, layer.height, layer.data);
|
||||
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
draw_polygon(ctx, x, y, width, height, data) {
|
||||
if(data.length == 0){
|
||||
return;
|
||||
}
|
||||
|
||||
//draw
|
||||
ctx.beginPath();
|
||||
for(var i in data) {
|
||||
if(i == 0){
|
||||
ctx.moveTo(x + data[i].x, y + data[i].y);
|
||||
}
|
||||
else{
|
||||
ctx.lineTo(x + data[i].x, y + data[i].y);
|
||||
}
|
||||
}
|
||||
ctx.closePath();
|
||||
ctx.fill()
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
selected_object_actions(e) {
|
||||
if(config.TOOL.name != 'select' || config.layer.type != this.name){
|
||||
return;
|
||||
}
|
||||
|
||||
var ctx = this.Base_layers.ctx;
|
||||
var mouse = this.get_mouse_info(e);
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
|
||||
//simplify checks
|
||||
var event_type = e.type;
|
||||
if(event_type == 'touchstart') event_type = 'mousedown';
|
||||
if(event_type == 'touchmove') event_type = 'mousemove';
|
||||
if(event_type == 'touchend') event_type = 'mouseup';
|
||||
|
||||
if (event_type == 'mouseup') {
|
||||
//reset
|
||||
config.mouse_lock = null;
|
||||
if (mainWrapper.style.cursor != 'default') {
|
||||
mainWrapper.style.cursor = 'default';
|
||||
}
|
||||
}
|
||||
|
||||
if (event_type == 'mousedown' && config.mouse.valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event_type == 'mousemove' && this.mouse_lock == 'move_point' && mouse.is_drag) {
|
||||
mainWrapper.style.cursor = "move";
|
||||
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
var type = this.selected_object_drag_type;
|
||||
var bezier = config.layer.data;
|
||||
|
||||
// Do transformations
|
||||
var dx = Math.round(mouse.x - mouse.click_x) - config.layer.x;
|
||||
var dy = Math.round(mouse.y - mouse.click_y) - config.layer.y;
|
||||
|
||||
// Set values
|
||||
config.layer.data[type] = {
|
||||
x: mouse.click_x + dx,
|
||||
y: mouse.click_y + dy
|
||||
};
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (event_type == 'mouseup' && this.mouse_lock == 'move_point') {
|
||||
this.mouse_lock = null;
|
||||
var bezier = config.layer.data;
|
||||
|
||||
//reset sate
|
||||
config.layer.data = this.old_data;
|
||||
|
||||
//save state
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
data: bezier,
|
||||
})
|
||||
])
|
||||
);
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
if (!mouse.is_drag && ['mousedown', 'mouseup'].includes(event_type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.mouse_lock) {
|
||||
for (let current_drag_type in this.selected_obj_positions) {
|
||||
const position = this.selected_obj_positions[current_drag_type];
|
||||
if (position && this.ctx.isPointInPath(position, mouse.x, mouse.y)) {
|
||||
// match
|
||||
if (event_type == 'mousedown') {
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
this.mouse_lock = 'move_point';
|
||||
this.selected_object_drag_type = current_drag_type;
|
||||
}
|
||||
config.mouse_lock = true;
|
||||
this.old_data = JSON.parse(JSON.stringify(config.layer.data));
|
||||
}
|
||||
if (event_type == 'mousemove') {
|
||||
mainWrapper.style.cursor = 'move';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Polygon_class;
|
||||
@ -11,14 +11,13 @@ class Star_class extends Base_tools_class {
|
||||
this.ctx = ctx;
|
||||
this.name = 'star';
|
||||
this.layer = {};
|
||||
this.best_ratio = 1.051;
|
||||
this.best_ratio = 1;
|
||||
this.coords = [];
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
}
|
||||
|
||||
load() {
|
||||
this.default_events();
|
||||
this.generate_coords();
|
||||
}
|
||||
|
||||
mousedown(e) {
|
||||
@ -38,13 +37,26 @@ class Star_class extends Base_tools_class {
|
||||
this.render_overlay_parent(ctx);
|
||||
}
|
||||
|
||||
generate_coords() {
|
||||
generate_coords(spikes, innerRadius) {
|
||||
//settings
|
||||
var spikes = 5;
|
||||
var outerRadius = 53;
|
||||
var innerRadius = 20;
|
||||
|
||||
innerRadius = parseInt(innerRadius) / 2;
|
||||
innerRadius = Math.min(Math.max(innerRadius, 0), 100);
|
||||
|
||||
spikes = parseInt(spikes);
|
||||
spikes = Math.max(spikes, 3);
|
||||
|
||||
var outerRadius = 50;
|
||||
if(spikes == 5){
|
||||
outerRadius = 53;
|
||||
}
|
||||
|
||||
var cx = 50;
|
||||
var cy = 55;
|
||||
|
||||
var cy = 50;
|
||||
if(spikes == 5){
|
||||
cy = 55;
|
||||
}
|
||||
|
||||
var rot = Math.PI / 2 * 3;
|
||||
var x = cx;
|
||||
@ -67,10 +79,7 @@ class Star_class extends Base_tools_class {
|
||||
}
|
||||
|
||||
demo(ctx, x, y, width, height) {
|
||||
ctx.fillStyle = '#aaa';
|
||||
ctx.strokeStyle = '#555';
|
||||
ctx.lineWidth = 2;
|
||||
|
||||
this.generate_coords(5, 40);
|
||||
this.draw_shape(ctx, x, y, width, height, this.coords);
|
||||
}
|
||||
|
||||
@ -78,6 +87,8 @@ class Star_class extends Base_tools_class {
|
||||
var params = layer.params;
|
||||
var fill = params.fill;
|
||||
|
||||
this.generate_coords(params.corners, params.inner_radius);
|
||||
|
||||
ctx.save();
|
||||
|
||||
//set styles
|
||||
@ -97,37 +108,6 @@ class Star_class extends Base_tools_class {
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
draw_shape(ctx, x, y, width, height, coords) {
|
||||
ctx.lineJoin = "round";
|
||||
|
||||
ctx.beginPath();
|
||||
|
||||
ctx.scale(1, 1.051);
|
||||
|
||||
for(var i in coords){
|
||||
if(coords[i] === null){
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
continue;
|
||||
}
|
||||
|
||||
//coords in 100x100 box
|
||||
var pos_x = x + coords[i][0] * width / 100;
|
||||
var pos_y = y + coords[i][1] * height / 100;
|
||||
|
||||
if(i == '0')
|
||||
ctx.moveTo(pos_x, pos_y);
|
||||
else
|
||||
ctx.lineTo(pos_x, pos_y);
|
||||
}
|
||||
ctx.closePath();
|
||||
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Star_class;
|
||||
|
||||
@ -1,98 +0,0 @@
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Base_tools_class from './../../core/base-tools.js';
|
||||
import Base_layers_class from './../../core/base-layers.js';
|
||||
|
||||
class Star24_class extends Base_tools_class {
|
||||
|
||||
constructor(ctx) {
|
||||
super();
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.ctx = ctx;
|
||||
this.name = 'star24';
|
||||
this.layer = {};
|
||||
this.best_ratio = 1;
|
||||
this.coords = [];
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
}
|
||||
|
||||
load() {
|
||||
this.default_events();
|
||||
this.generate_coords();
|
||||
}
|
||||
|
||||
mousedown(e) {
|
||||
this.shape_mousedown(e);
|
||||
}
|
||||
|
||||
mousemove(e) {
|
||||
this.shape_mousemove(e);
|
||||
}
|
||||
|
||||
mouseup(e) {
|
||||
this.shape_mouseup(e);
|
||||
}
|
||||
|
||||
render_overlay(ctx){
|
||||
var ctx = this.Base_layers.ctx;
|
||||
this.render_overlay_parent(ctx);
|
||||
}
|
||||
|
||||
generate_coords() {
|
||||
//settings
|
||||
var spikes = 24;
|
||||
var outerRadius = 50;
|
||||
var innerRadius = 40;
|
||||
var cx = 50;
|
||||
var cy = 50;
|
||||
|
||||
var rot = Math.PI / 2 * 3;
|
||||
var x = cx;
|
||||
var y = cy;
|
||||
var step = Math.PI / spikes;
|
||||
this.coords = [];
|
||||
this.coords.push([cx, cy - outerRadius]);
|
||||
for (var i = 0; i < spikes; i++) {
|
||||
x = cx + Math.cos(rot) * outerRadius;
|
||||
y = cy + Math.sin(rot) * outerRadius;
|
||||
this.coords.push([x, y]);
|
||||
rot += step;
|
||||
|
||||
x = cx + Math.cos(rot) * innerRadius;
|
||||
y = cy + Math.sin(rot) * innerRadius;
|
||||
this.coords.push([x, y]);
|
||||
rot += step;
|
||||
}
|
||||
this.coords.push([cx, cy - outerRadius]);
|
||||
}
|
||||
|
||||
demo(ctx, x, y, width, height) {
|
||||
this.draw_shape(ctx, x, y, width, height, this.coords);
|
||||
}
|
||||
|
||||
render(ctx, layer) {
|
||||
var params = layer.params;
|
||||
var fill = params.fill;
|
||||
|
||||
ctx.save();
|
||||
|
||||
//set styles
|
||||
ctx.strokeStyle = 'transparent';
|
||||
ctx.fillStyle = 'transparent';
|
||||
if(params.border)
|
||||
ctx.strokeStyle = params.border_color;
|
||||
if(params.fill)
|
||||
ctx.fillStyle = params.fill_color;
|
||||
ctx.lineWidth = params.border_size;
|
||||
|
||||
//draw with rotation support
|
||||
ctx.translate(layer.x + layer.width / 2, layer.y + layer.height / 2);
|
||||
ctx.rotate(layer.rotate * Math.PI / 180);
|
||||
this.draw_shape(ctx, -layer.width / 2, -layer.height / 2, layer.width, layer.height, this.coords, false);
|
||||
|
||||
ctx.restore();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Star24_class;
|
||||
@ -46,7 +46,7 @@ class Sharpen_class extends Base_tools_class {
|
||||
return;
|
||||
}
|
||||
if (config.layer.rotate || 0 > 0) {
|
||||
alertify.error('Erase on rotate object is disabled. Sorry.');
|
||||
alertify.error('Erase on rotate object is disabled. Please rasterize first.');
|
||||
return;
|
||||
}
|
||||
this.started = true;
|
||||
|
||||
@ -15,7 +15,6 @@ import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
* - Add leading, superscript, subscript
|
||||
* - Implement text direction (right to left, top to bottom, etc.); currently partial implementation
|
||||
* - Allow search & add google fonts
|
||||
* - Enable text layer rotation
|
||||
* - Undo history
|
||||
*/
|
||||
|
||||
@ -1234,6 +1233,50 @@ class Text_editor_class {
|
||||
return fontMetrics;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the complete text of the document.
|
||||
*/
|
||||
get_complete_text() {
|
||||
let completeText = '';
|
||||
for (let line of this.document.lines) {
|
||||
for (let span of line) {
|
||||
completeText += span.text;
|
||||
}
|
||||
if (this.document.lines.indexOf(line) !== this.document.lines.length - 1) {
|
||||
completeText += '\n';
|
||||
}
|
||||
}
|
||||
return completeText;
|
||||
}
|
||||
|
||||
replace_entire_IME_text(beforeTempText, newText) {
|
||||
const cursorPosition = this.selection.get_position();
|
||||
let allText = beforeTempText;
|
||||
let lines = allText.split('\n');
|
||||
let currentLineText = lines[cursorPosition.line];
|
||||
let beforeText = currentLineText.substring(0, cursorPosition.character);
|
||||
let afterText = currentLineText.substring(cursorPosition.character);
|
||||
let updatedLineText = beforeText + newText + afterText;
|
||||
lines[cursorPosition.line] = updatedLineText;
|
||||
|
||||
const newLines = lines.map(lineText => {
|
||||
return [{ text: lineText, meta: {} }];
|
||||
});
|
||||
this.set_lines(newLines);
|
||||
this.hasValueChanged = true;
|
||||
}
|
||||
|
||||
set_IME_position(newText) {
|
||||
const cursorPosition = this.selection.get_position();
|
||||
let newTextLines = newText.split('\n');
|
||||
let newCursorLine = cursorPosition.line + newTextLines.length - 1;
|
||||
let newCursorCharacter = newText.length;
|
||||
this.selection.set_position(newCursorLine, newCursorCharacter + cursorPosition.character);
|
||||
this.hasValueChanged = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
insert_text_at_current_position(text) {
|
||||
if (!this.selection.is_empty()) {
|
||||
this.delete_character_at_current_position();
|
||||
@ -1622,6 +1665,16 @@ class Text_editor_class {
|
||||
let wrapIndex = 0;
|
||||
const cursorLine = this.selection.isActiveSideEnd ? this.selection.end.line : this.selection.start.line;
|
||||
const cursorCharacter = this.selection.isActiveSideEnd ? this.selection.end.character : this.selection.start.character;
|
||||
if(layer.rotate){
|
||||
const alpha = (layer.rotate * Math.PI) / 180;
|
||||
ctx.save();
|
||||
// Move the canvas to the center before rotating
|
||||
ctx.translate(layer.x + layer.width / 2, layer.y + layer.height / 2);
|
||||
ctx.rotate(alpha);
|
||||
// Move it back after it
|
||||
ctx.translate(-layer.x - layer.width / 2, -layer.y - layer.height / 2);
|
||||
|
||||
}
|
||||
for (let line of this.lineRenderInfo.lines) {
|
||||
let lineLetterCount = 0;
|
||||
for (let [localWrapIndex, wrap] of line.wraps.entries()) {
|
||||
@ -1674,6 +1727,8 @@ class Text_editor_class {
|
||||
ctx.lineWidth = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Loop through each letter in each span and draw it
|
||||
for (let c = 0; c < span.text.length; c++) {
|
||||
const letter = span.text.charAt(c);
|
||||
@ -1750,6 +1805,8 @@ class Text_editor_class {
|
||||
lineLetterCount++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (span.text.length === 0) {
|
||||
if (cursorLine === lineIndex && cursorCharacter === lineLetterCount) {
|
||||
const lineStart = Math.round(drawOffsetTop + wrapSizes[wrapIndex].offset);
|
||||
@ -1795,6 +1852,9 @@ class Text_editor_class {
|
||||
}
|
||||
lineIndex++;
|
||||
}
|
||||
if(layer.rotate){
|
||||
ctx.restore();
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
}
|
||||
@ -1982,6 +2042,8 @@ class Text_class extends Base_tools_class {
|
||||
enable_background: false,
|
||||
enable_borders: true,
|
||||
enable_controls: true,
|
||||
enable_rotation: true,
|
||||
enable_move: false,
|
||||
data_function: () => {
|
||||
return this.selection;
|
||||
},
|
||||
@ -2022,8 +2084,33 @@ class Text_class extends Base_tools_class {
|
||||
this.Base_layers.render();
|
||||
}, true);
|
||||
|
||||
let isComposing = false;
|
||||
let beforeImeText = "";
|
||||
this.textarea.addEventListener('compositionstart', () => {
|
||||
beforeImeText = "";
|
||||
isComposing = true;
|
||||
if (config.layer) {
|
||||
const editor = this.get_editor(config.layer);
|
||||
beforeImeText = editor.get_complete_text();
|
||||
}
|
||||
});
|
||||
|
||||
this.textarea.addEventListener('compositionend', (e) => {
|
||||
const editor = this.get_editor(config.layer);
|
||||
editor.set_IME_position(e.target.value);
|
||||
beforeImeText = "";
|
||||
isComposing = false;
|
||||
e.target.value = '';
|
||||
});
|
||||
|
||||
this.textarea.addEventListener('input', (e) => {
|
||||
if (config.layer) {
|
||||
if(isComposing){
|
||||
const editor = this.get_editor(config.layer);
|
||||
editor.replace_entire_IME_text(beforeImeText, e.target.value);
|
||||
this.Base_layers.render();
|
||||
this.extend_fixed_bounds(config.layer, editor);
|
||||
}
|
||||
else if (config.layer) {
|
||||
const editor = this.get_editor(config.layer);
|
||||
editor.insert_text_at_current_position(e.target.value);
|
||||
e.target.value = '';
|
||||
@ -2234,7 +2321,7 @@ class Text_class extends Base_tools_class {
|
||||
render_function: [this.name, 'render'],
|
||||
x: mouse.x,
|
||||
y: mouse.y,
|
||||
rotate: null,
|
||||
rotate: 0,
|
||||
is_vector: true,
|
||||
};
|
||||
app.State.do_action(
|
||||
@ -2515,6 +2602,7 @@ class Text_class extends Base_tools_class {
|
||||
this.selection.y = layer.y;
|
||||
this.selection.width = layer.width;
|
||||
this.selection.height = layer.height;
|
||||
this.selection.rotate = layer.rotate;
|
||||
} else if (config.layer.type !== 'text') {
|
||||
this.selection.x = -100000;
|
||||
this.selection.y = -100000;
|
||||
@ -2639,4 +2727,4 @@ class Text_class extends Base_tools_class {
|
||||
|
||||
}
|
||||
|
||||
export default Text_class;
|
||||
export default Text_class;
|
||||
@ -25,6 +25,7 @@ $LANGUAGES = [
|
||||
'tr',
|
||||
'zh',
|
||||
'el',
|
||||
'nl',
|
||||
];
|
||||
|
||||
$LANG_DIR = __DIR__ . '/../../src/js/languages/';
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
<?php
|
||||
global $LANGUAGES;
|
||||
|
||||
require_once(__DIR__ . '/libs/translator.php');
|
||||
$translator = new Translator();
|
||||
?>
|
||||
@ -20,7 +22,13 @@ $translator = new Translator();
|
||||
<br /><br />
|
||||
<b>Actions</b>:
|
||||
<input type="submit" name="action" value="Generate empty.json" />
|
||||
<input style="font-weight:bold;" type="submit" name="action" value="Auto Translate" />
|
||||
<input type="submit" name="action" value="Auto Translate: all" /> or
|
||||
|
||||
<?php
|
||||
foreach ($LANGUAGES as $lang) {
|
||||
echo '<button type="submit" name="action" value="Auto Translate: '.strtolower($lang).'">'.strtoupper($lang).'</button> ';
|
||||
}
|
||||
?>
|
||||
<br /><br />
|
||||
<?php
|
||||
if (count($_POST) > 0) {
|
||||
@ -54,13 +62,13 @@ $translator = new Translator();
|
||||
if ($_POST['action'] == 'Merge') {
|
||||
$translator->merge();
|
||||
}
|
||||
if ($_POST['action'] == 'Auto Translate') {
|
||||
if (stripos($_POST['action'], 'Auto Translate') !== false) {
|
||||
//prepare
|
||||
$translator->scan();
|
||||
$translator->extract();
|
||||
$translator->filter();
|
||||
|
||||
$translator->auto_translate();
|
||||
$translator->auto_translate($_POST['action']);
|
||||
}
|
||||
if ($_POST['action'] == 'Generate empty.json') {
|
||||
//prepare
|
||||
|
||||
@ -81,6 +81,7 @@ class Translator {
|
||||
'\.style\.',
|
||||
'aria-label',
|
||||
'\.font',
|
||||
'Path2D\(',
|
||||
];
|
||||
foreach ($ignore_matches as $ignore_match) {
|
||||
$content = preg_replace('/' . $ignore_match . '.*/', '', $content);
|
||||
@ -250,13 +251,22 @@ class Translator {
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function auto_translate() {
|
||||
public function auto_translate($action_string) {
|
||||
global $LANGUAGES, $LANG_DIR;
|
||||
|
||||
$action_string = str_replace('Auto Translate: ', '', $action_string);
|
||||
if($action_string == 'all'){
|
||||
$action_string = '';
|
||||
}
|
||||
|
||||
$service = new GoogleTranslate();
|
||||
$text = implode("\n", $this->strings);
|
||||
|
||||
foreach ($LANGUAGES as $lang) {
|
||||
if($action_string != '' && $action_string != $lang){
|
||||
continue;
|
||||
}
|
||||
|
||||
echo "<br />$lang: ";
|
||||
|
||||
$file_path = $LANG_DIR . strtolower($lang) . ".json";
|
||||
|
||||
@ -48,7 +48,9 @@ module.exports = {
|
||||
devtool: "cheap-module-source-map",
|
||||
devServer: {
|
||||
// host: '0.0.0.0',
|
||||
contentBase: "./",
|
||||
compress: true
|
||||
//contentBase: "./",
|
||||
static: {
|
||||
directory: path.resolve(__dirname, "./"),
|
||||
},
|
||||
}
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user