diff --git a/editor/canvg/canvg.js b/editor/canvg/canvg.js
index b612470d..2880150d 100644
--- a/editor/canvg/canvg.js
+++ b/editor/canvg/canvg.js
@@ -15,2932 +15,2932 @@ var canvg;
// target: canvas element or the id of a canvas element
// s: svg string, url to svg file, or xml document
// opts: optional hash of options
-// ignoreMouse: true => ignore mouse events
-// ignoreAnimation: true => ignore animations
-// ignoreDimensions: true => does not try to resize canvas
-// ignoreClear: true => does not clear canvas
-// offsetX: int => draws at a x offset
-// offsetY: int => draws at a y offset
-// scaleWidth: int => scales horizontally to width
-// scaleHeight: int => scales vertically to height
-// renderCallback: function => will call the function after the first render is completed
-// forceRedraw: function => will call the function on every frame, if it returns true, will redraw
+// ignoreMouse: true => ignore mouse events
+// ignoreAnimation: true => ignore animations
+// ignoreDimensions: true => does not try to resize canvas
+// ignoreClear: true => does not clear canvas
+// offsetX: int => draws at a x offset
+// offsetY: int => draws at a y offset
+// scaleWidth: int => scales horizontally to width
+// scaleHeight: int => scales vertically to height
+// renderCallback: function => will call the function after the first render is completed
+// forceRedraw: function => will call the function on every frame, if it returns true, will redraw
canvg = function (target, s, opts) {
- // no parameters
- if (target == null && s == null && opts == null) {
- var svgTags = document.querySelectorAll('svg');
- for (var i = 0; i < svgTags.length; i++) {
- var svgTag = svgTags[i];
- var c = document.createElement('canvas');
- c.width = svgTag.clientWidth;
- c.height = svgTag.clientHeight;
- svgTag.parentNode.insertBefore(c, svgTag);
- svgTag.parentNode.removeChild(svgTag);
- var div = document.createElement('div');
- div.appendChild(svgTag);
- canvg(c, div.innerHTML);
- }
- return;
- }
+ // no parameters
+ if (target == null && s == null && opts == null) {
+ var svgTags = document.querySelectorAll('svg');
+ for (var i = 0; i < svgTags.length; i++) {
+ var svgTag = svgTags[i];
+ var c = document.createElement('canvas');
+ c.width = svgTag.clientWidth;
+ c.height = svgTag.clientHeight;
+ svgTag.parentNode.insertBefore(c, svgTag);
+ svgTag.parentNode.removeChild(svgTag);
+ var div = document.createElement('div');
+ div.appendChild(svgTag);
+ canvg(c, div.innerHTML);
+ }
+ return;
+ }
- if (typeof target === 'string') {
- target = document.getElementById(target);
- }
+ if (typeof target === 'string') {
+ target = document.getElementById(target);
+ }
- // store class on canvas
- if (target.svg != null) target.svg.stop();
- var svg = build(opts || {});
- // on i.e. 8 for flash canvas, we can't assign the property so check for it
- if (!(target.childNodes.length === 1 && target.childNodes[0].nodeName === 'OBJECT')) {
- target.svg = svg;
- }
+ // store class on canvas
+ if (target.svg != null) target.svg.stop();
+ var svg = build(opts || {});
+ // on i.e. 8 for flash canvas, we can't assign the property so check for it
+ if (!(target.childNodes.length === 1 && target.childNodes[0].nodeName === 'OBJECT')) {
+ target.svg = svg;
+ }
- var ctx = target.getContext('2d');
- if (typeof s.documentElement !== 'undefined') {
- // load from xml doc
- svg.loadXmlDoc(ctx, s);
- } else if (s.substr(0, 1) === '<') {
- // load from xml string
- svg.loadXml(ctx, s);
- } else {
- // load from url
- svg.load(ctx, s);
- }
+ var ctx = target.getContext('2d');
+ if (typeof s.documentElement !== 'undefined') {
+ // load from xml doc
+ svg.loadXmlDoc(ctx, s);
+ } else if (s.substr(0, 1) === '<') {
+ // load from xml string
+ svg.loadXml(ctx, s);
+ } else {
+ // load from url
+ svg.load(ctx, s);
+ }
};
function build (opts) {
- var svg = {opts: opts};
-
- svg.FRAMERATE = 30;
- svg.MAX_VIRTUAL_PIXELS = 30000;
-
- svg.log = function (msg) {};
- if (svg.opts.log === true && typeof console !== 'undefined') {
- svg.log = function (msg) { console.log(msg); };
- };
-
- // globals
- svg.init = function (ctx) {
- var uniqueId = 0;
- svg.UniqueId = function () { uniqueId++; return 'canvg' + uniqueId; };
- svg.Definitions = {};
- svg.Styles = {};
- svg.Animations = [];
- svg.Images = [];
- svg.ctx = ctx;
- svg.ViewPort = new function () {
- this.viewPorts = [];
- this.Clear = function () { this.viewPorts = []; };
- this.SetCurrent = function (width, height) { this.viewPorts.push({ width: width, height: height }); };
- this.RemoveCurrent = function () { this.viewPorts.pop(); };
- this.Current = function () { return this.viewPorts[this.viewPorts.length - 1]; };
- this.width = function () { return this.Current().width; };
- this.height = function () { return this.Current().height; };
- this.ComputeSize = function (d) {
- if (d != null && typeof d === 'number') return d;
- if (d === 'x') return this.width();
- if (d === 'y') return this.height();
- return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2);
- };
- }();
- };
- svg.init();
-
- // images loaded
- svg.ImagesLoaded = function () {
- for (var i = 0; i < svg.Images.length; i++) {
- if (!svg.Images[i].loaded) return false;
- }
- return true;
- };
-
- // trim
- svg.trim = function (s) { return s.replace(/^\s+|\s+$/g, ''); };
-
- // compress spaces
- svg.compressSpaces = function (s) { return s.replace(/[\s\r\t\n]+/gm, ' '); };
-
- // ajax
- svg.ajax = function (url) {
- var AJAX;
- if (window.XMLHttpRequest) {
- AJAX = new XMLHttpRequest();
- } else {
- AJAX = new ActiveXObject('Microsoft.XMLHTTP');
- }
- if (AJAX) {
- AJAX.open('GET', url, false);
- AJAX.send(null);
- return AJAX.responseText;
- }
- return null;
- };
-
- // parse xml
- svg.parseXml = function (xml) {
- if (window.DOMParser) {
- var parser = new DOMParser();
- return parser.parseFromString(xml, 'text/xml');
- } else {
- xml = xml.replace(/]*>/, '');
- var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
- xmlDoc.async = 'false';
- xmlDoc.loadXML(xml);
- return xmlDoc;
- }
- };
-
- svg.Property = function (name, value) {
- this.name = name;
- this.value = value;
- };
- svg.Property.prototype.getValue = function () {
- return this.value;
- };
-
- svg.Property.prototype.hasValue = function () {
- return (this.value != null && this.value !== '');
- };
-
- // return the numerical value of the property
- svg.Property.prototype.numValue = function () {
- if (!this.hasValue()) return 0;
-
- var n = parseFloat(this.value);
- if ((this.value + '').match(/%$/)) {
- n = n / 100.0;
- }
- return n;
- };
-
- svg.Property.prototype.valueOrDefault = function (def) {
- if (this.hasValue()) return this.value;
- return def;
- };
-
- svg.Property.prototype.numValueOrDefault = function (def) {
- if (this.hasValue()) return this.numValue();
- return def;
- };
-
- // color extensions
- // augment the current color value with the opacity
- svg.Property.prototype.addOpacity = function (opacityProp) {
- var newValue = this.value;
- if (opacityProp.value != null && opacityProp.value !== '' && typeof this.value === 'string') { // can only add opacity to colors, not patterns
- var color = new RGBColor(this.value);
- if (color.ok) {
- newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacityProp.numValue() + ')';
- }
- }
- return new svg.Property(this.name, newValue);
- };
-
- // definition extensions
- // get the definition from the definitions table
- svg.Property.prototype.getDefinition = function () {
- var name = this.value.match(/#([^)'"]+)/);
- if (name) { name = name[1]; }
- if (!name) { name = this.value; }
- return svg.Definitions[name];
- };
-
- svg.Property.prototype.isUrlDefinition = function () {
- return this.value.indexOf('url(') === 0;
- };
-
- svg.Property.prototype.getFillStyleDefinition = function (e, opacityProp) {
- var def = this.getDefinition();
-
- // gradient
- if (def != null && def.createGradient) {
- return def.createGradient(svg.ctx, e, opacityProp);
- }
-
- // pattern
- if (def != null && def.createPattern) {
- if (def.getHrefAttribute().hasValue()) {
- var pt = def.attribute('patternTransform');
- def = def.getHrefAttribute().getDefinition();
- if (pt.hasValue()) { def.attribute('patternTransform', true).value = pt.value; }
- }
- return def.createPattern(svg.ctx, e);
- }
-
- return null;
- };
-
- // length extensions
- svg.Property.prototype.getDPI = function (viewPort) {
- return 96.0; // TODO: compute?
- };
-
- svg.Property.prototype.getEM = function (viewPort) {
- var em = 12;
-
- var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
- if (fontSize.hasValue()) em = fontSize.toPixels(viewPort);
-
- return em;
- };
-
- svg.Property.prototype.getUnits = function () {
- var s = this.value + '';
- return s.replace(/[0-9.-]/g, '');
- };
-
- // get the length as pixels
- svg.Property.prototype.toPixels = function (viewPort, processPercent) {
- if (!this.hasValue()) return 0;
- var s = this.value + '';
- if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort);
- if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2.0;
- if (s.match(/px$/)) return this.numValue();
- if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1.0 / 72.0);
- if (s.match(/pc$/)) return this.numValue() * 15;
- if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54;
- if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4;
- if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort);
- if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort);
- var n = this.numValue();
- if (processPercent && n < 1.0) return n * svg.ViewPort.ComputeSize(viewPort);
- return n;
- };
-
- // time extensions
- // get the time as milliseconds
- svg.Property.prototype.toMilliseconds = function () {
- if (!this.hasValue()) return 0;
- var s = this.value + '';
- if (s.match(/s$/)) return this.numValue() * 1000;
- if (s.match(/ms$/)) return this.numValue();
- return this.numValue();
- };
-
- // angle extensions
- // get the angle as radians
- svg.Property.prototype.toRadians = function () {
- if (!this.hasValue()) return 0;
- var s = this.value + '';
- if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180.0);
- if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200.0);
- if (s.match(/rad$/)) return this.numValue();
- return this.numValue() * (Math.PI / 180.0);
- };
-
- // text extensions
- // get the text baseline
- var textBaselineMapping = {
- 'baseline': 'alphabetic',
- 'before-edge': 'top',
- 'text-before-edge': 'top',
- 'middle': 'middle',
- 'central': 'middle',
- 'after-edge': 'bottom',
- 'text-after-edge': 'bottom',
- 'ideographic': 'ideographic',
- 'alphabetic': 'alphabetic',
- 'hanging': 'hanging',
- 'mathematical': 'alphabetic'
- };
- svg.Property.prototype.toTextBaseline = function () {
- if (!this.hasValue()) return null;
- return textBaselineMapping[this.value];
- };
-
- // fonts
- svg.Font = new function () {
- this.Styles = 'normal|italic|oblique|inherit';
- this.Variants = 'normal|small-caps|inherit';
- this.Weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
-
- this.CreateFont = function (fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
- var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font);
- return {
- fontFamily: fontFamily || f.fontFamily,
- fontSize: fontSize || f.fontSize,
- fontStyle: fontStyle || f.fontStyle,
- fontWeight: fontWeight || f.fontWeight,
- fontVariant: fontVariant || f.fontVariant,
- toString: function () {
- return [
- this.fontStyle, this.fontVariant, this.fontWeight,
- this.fontSize, this.fontFamily
- ].join(' ');
- }
- };
- };
-
- var that = this;
- this.Parse = function (s) {
- var f = {};
- var d = svg.trim(svg.compressSpaces(s || '')).split(' ');
- var set = {fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false};
- var ff = '';
- for (var i = 0; i < d.length; i++) {
- if (!set.fontStyle && that.Styles.indexOf(d[i]) > -1) {
- if (d[i] !== 'inherit') f.fontStyle = d[i]; set.fontStyle = true;
- } else if (!set.fontVariant && that.Variants.indexOf(d[i]) > -1) {
- if (d[i] !== 'inherit') f.fontVariant = d[i]; set.fontStyle = set.fontVariant = true;
- } else if (!set.fontWeight && that.Weights.indexOf(d[i]) > -1) {
- if (d[i] !== 'inherit') f.fontWeight = d[i]; set.fontStyle = set.fontVariant = set.fontWeight = true;
- } else if (!set.fontSize) {
- if (d[i] !== 'inherit') f.fontSize = d[i].split('/')[0]; set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true;
- } else {
- if (d[i] !== 'inherit') ff += d[i];
- }
- }
- if (ff !== '') f.fontFamily = ff;
- return f;
- };
- }();
-
- // points and paths
- svg.ToNumberArray = function (s) {
- var a = svg.trim(svg.compressSpaces((s || '').replace(/,/g, ' '))).split(' ');
- for (var i = 0; i < a.length; i++) {
- a[i] = parseFloat(a[i]);
- }
- return a;
- };
- svg.Point = function (x, y) {
- this.x = x;
- this.y = y;
- };
- svg.Point.prototype.angleTo = function (p) {
- return Math.atan2(p.y - this.y, p.x - this.x);
- };
-
- svg.Point.prototype.applyTransform = function (v) {
- var xp = this.x * v[0] + this.y * v[2] + v[4];
- var yp = this.x * v[1] + this.y * v[3] + v[5];
- this.x = xp;
- this.y = yp;
- };
-
- svg.CreatePoint = function (s) {
- var a = svg.ToNumberArray(s);
- return new svg.Point(a[0], a[1]);
- };
- svg.CreatePath = function (s) {
- var a = svg.ToNumberArray(s);
- var path = [];
- for (var i = 0; i < a.length; i += 2) {
- path.push(new svg.Point(a[i], a[i + 1]));
- }
- return path;
- };
-
- // bounding box
- svg.BoundingBox = function (x1, y1, x2, y2) { // pass in initial points if you want
- this.x1 = Number.NaN;
- this.y1 = Number.NaN;
- this.x2 = Number.NaN;
- this.y2 = Number.NaN;
-
- this.x = function () { return this.x1; };
- this.y = function () { return this.y1; };
- this.width = function () { return this.x2 - this.x1; };
- this.height = function () { return this.y2 - this.y1; };
-
- this.addPoint = function (x, y) {
- if (x != null) {
- if (isNaN(this.x1) || isNaN(this.x2)) {
- this.x1 = x;
- this.x2 = x;
- }
- if (x < this.x1) this.x1 = x;
- if (x > this.x2) this.x2 = x;
- }
-
- if (y != null) {
- if (isNaN(this.y1) || isNaN(this.y2)) {
- this.y1 = y;
- this.y2 = y;
- }
- if (y < this.y1) this.y1 = y;
- if (y > this.y2) this.y2 = y;
- }
- };
- this.addX = function (x) { this.addPoint(x, null); };
- this.addY = function (y) { this.addPoint(null, y); };
-
- this.addBoundingBox = function (bb) {
- this.addPoint(bb.x1, bb.y1);
- this.addPoint(bb.x2, bb.y2);
- };
-
- this.addQuadraticCurve = function (p0x, p0y, p1x, p1y, p2x, p2y) {
- var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
- var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
- var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
- var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
- this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
- };
-
- this.addBezierCurve = function (p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
- // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
- var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y];
- this.addPoint(p0[0], p0[1]);
- this.addPoint(p3[0], p3[1]);
-
- for (var i = 0; i <= 1; i++) {
- var f = function (t) {
- return Math.pow(1 - t, 3) * p0[i] +
- 3 * Math.pow(1 - t, 2) * t * p1[i] +
- 3 * (1 - t) * Math.pow(t, 2) * p2[i] +
- Math.pow(t, 3) * p3[i];
- };
-
- var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
- var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
- var c = 3 * p1[i] - 3 * p0[i];
-
- if (a === 0) {
- if (b === 0) continue;
- var t = -c / b;
- if (t > 0 && t < 1) {
- if (i === 0) this.addX(f(t));
- if (i === 1) this.addY(f(t));
- }
- continue;
- }
-
- var b2ac = Math.pow(b, 2) - 4 * c * a;
- if (b2ac < 0) continue;
- var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
- if (t1 > 0 && t1 < 1) {
- if (i === 0) this.addX(f(t1));
- if (i === 1) this.addY(f(t1));
- }
- var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
- if (t2 > 0 && t2 < 1) {
- if (i === 0) this.addX(f(t2));
- if (i === 1) this.addY(f(t2));
- }
- }
- };
-
- this.isPointInBox = function (x, y) {
- return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2);
- };
-
- this.addPoint(x1, y1);
- this.addPoint(x2, y2);
- };
-
- // transforms
- svg.Transform = function (v) {
- var that = this;
- this.Type = {};
-
- // translate
- this.Type.translate = function (s) {
- this.p = svg.CreatePoint(s);
- this.apply = function (ctx) {
- ctx.translate(this.p.x || 0.0, this.p.y || 0.0);
- };
- this.unapply = function (ctx) {
- ctx.translate(-1.0 * this.p.x || 0.0, -1.0 * this.p.y || 0.0);
- };
- this.applyToPoint = function (p) {
- p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
- };
- };
-
- // rotate
- this.Type.rotate = function (s) {
- var a = svg.ToNumberArray(s);
- this.angle = new svg.Property('angle', a[0]);
- this.cx = a[1] || 0;
- this.cy = a[2] || 0;
- this.apply = function (ctx) {
- ctx.translate(this.cx, this.cy);
- ctx.rotate(this.angle.toRadians());
- ctx.translate(-this.cx, -this.cy);
- };
- this.unapply = function (ctx) {
- ctx.translate(this.cx, this.cy);
- ctx.rotate(-1.0 * this.angle.toRadians());
- ctx.translate(-this.cx, -this.cy);
- };
- this.applyToPoint = function (p) {
- var a = this.angle.toRadians();
- p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
- p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);
- p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]);
- };
- };
-
- this.Type.scale = function (s) {
- this.p = svg.CreatePoint(s);
- this.apply = function (ctx) {
- ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0);
- };
- this.unapply = function (ctx) {
- ctx.scale(1.0 / this.p.x || 1.0, 1.0 / this.p.y || this.p.x || 1.0);
- };
- this.applyToPoint = function (p) {
- p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]);
- };
- };
-
- this.Type.matrix = function (s) {
- this.m = svg.ToNumberArray(s);
- this.apply = function (ctx) {
- ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]);
- };
- this.applyToPoint = function (p) {
- p.applyTransform(this.m);
- };
- };
-
- this.Type.SkewBase = function (s) {
- this.base = that.Type.matrix;
- this.base(s);
- this.angle = new svg.Property('angle', s);
- };
- this.Type.SkewBase.prototype = new this.Type.matrix();
-
- this.Type.skewX = function (s) {
- this.base = that.Type.SkewBase;
- this.base(s);
- this.m = [1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0];
- };
- this.Type.skewX.prototype = new this.Type.SkewBase();
-
- this.Type.skewY = function (s) {
- this.base = that.Type.SkewBase;
- this.base(s);
- this.m = [1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0];
- };
- this.Type.skewY.prototype = new this.Type.SkewBase();
-
- this.transforms = [];
-
- this.apply = function (ctx) {
- for (var i = 0; i < this.transforms.length; i++) {
- this.transforms[i].apply(ctx);
- }
- };
-
- this.unapply = function (ctx) {
- for (var i = this.transforms.length - 1; i >= 0; i--) {
- this.transforms[i].unapply(ctx);
- }
- };
-
- this.applyToPoint = function (p) {
- for (var i = 0; i < this.transforms.length; i++) {
- this.transforms[i].applyToPoint(p);
- }
- };
-
- var data = svg.trim(svg.compressSpaces(v)).replace(/\)([a-zA-Z])/g, ') $1').replace(/\)(\s?,\s?)/g, ') ').split(/\s(?=[a-z])/);
- for (var i = 0; i < data.length; i++) {
- var type = svg.trim(data[i].split('(')[0]);
- var s = data[i].split('(')[1].replace(')', '');
- var transform = new this.Type[type](s);
- transform.type = type;
- this.transforms.push(transform);
- }
- };
-
- // aspect ratio
- svg.AspectRatio = function (ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) {
- // aspect ratio - https://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
- aspectRatio = svg.compressSpaces(aspectRatio);
- aspectRatio = aspectRatio.replace(/^defer\s/, ''); // ignore defer
- var align = aspectRatio.split(' ')[0] || 'xMidYMid';
- var meetOrSlice = aspectRatio.split(' ')[1] || 'meet';
-
- // calculate scale
- var scaleX = width / desiredWidth;
- var scaleY = height / desiredHeight;
- var scaleMin = Math.min(scaleX, scaleY);
- var scaleMax = Math.max(scaleX, scaleY);
- if (meetOrSlice === 'meet') { desiredWidth *= scaleMin; desiredHeight *= scaleMin; }
- if (meetOrSlice === 'slice') { desiredWidth *= scaleMax; desiredHeight *= scaleMax; }
-
- refX = new svg.Property('refX', refX);
- refY = new svg.Property('refY', refY);
- if (refX.hasValue() && refY.hasValue()) {
- ctx.translate(-scaleMin * refX.toPixels('x'), -scaleMin * refY.toPixels('y'));
- } else {
- // align
- if (align.match(/^xMid/) && ((meetOrSlice === 'meet' && scaleMin === scaleY) || (meetOrSlice === 'slice' && scaleMax === scaleY))) ctx.translate(width / 2.0 - desiredWidth / 2.0, 0);
- if (align.match(/YMid$/) && ((meetOrSlice === 'meet' && scaleMin === scaleX) || (meetOrSlice === 'slice' && scaleMax === scaleX))) ctx.translate(0, height / 2.0 - desiredHeight / 2.0);
- if (align.match(/^xMax/) && ((meetOrSlice === 'meet' && scaleMin === scaleY) || (meetOrSlice === 'slice' && scaleMax === scaleY))) ctx.translate(width - desiredWidth, 0);
- if (align.match(/YMax$/) && ((meetOrSlice === 'meet' && scaleMin === scaleX) || (meetOrSlice === 'slice' && scaleMax === scaleX))) ctx.translate(0, height - desiredHeight);
- }
-
- // scale
- if (align === 'none') ctx.scale(scaleX, scaleY);
- else if (meetOrSlice === 'meet') ctx.scale(scaleMin, scaleMin);
- else if (meetOrSlice === 'slice') ctx.scale(scaleMax, scaleMax);
-
- // translate
- ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY);
- };
-
- // elements
- svg.Element = {};
-
- svg.EmptyProperty = new svg.Property('EMPTY', '');
-
- svg.Element.ElementBase = function (node) {
- this.attributes = {};
- this.styles = {};
- this.children = [];
-
- // get or create attribute
- this.attribute = function (name, createIfNotExists) {
- var a = this.attributes[name];
- if (a != null) return a;
-
- if (createIfNotExists === true) { a = new svg.Property(name, ''); this.attributes[name] = a; }
- return a || svg.EmptyProperty;
- };
-
- this.getHrefAttribute = function () {
- for (var a in this.attributes) {
- if (a.match(/:href$/)) {
- return this.attributes[a];
- }
- }
- return svg.EmptyProperty;
- };
-
- // get or create style, crawls up node tree
- this.style = function (name, createIfNotExists, skipAncestors) {
- var s = this.styles[name];
- if (s != null) return s;
-
- var a = this.attribute(name);
- if (a != null && a.hasValue()) {
- this.styles[name] = a; // move up to me to cache
- return a;
- }
-
- if (skipAncestors !== true) {
- var p = this.parent;
- if (p != null) {
- var ps = p.style(name);
- if (ps != null && ps.hasValue()) {
- return ps;
- }
- }
- }
-
- if (createIfNotExists === true) { s = new svg.Property(name, ''); this.styles[name] = s; }
- return s || svg.EmptyProperty;
- };
-
- // base render
- this.render = function (ctx) {
- // don't render display=none
- if (this.style('display').value === 'none') return;
-
- // don't render visibility=hidden
- if (this.style('visibility').value === 'hidden') return;
-
- ctx.save();
- if (this.attribute('mask').hasValue()) { // mask
- var mask = this.attribute('mask').getDefinition();
- if (mask != null) mask.apply(ctx, this);
- } else if (this.style('filter').hasValue()) { // filter
- var filter = this.style('filter').getDefinition();
- if (filter != null) filter.apply(ctx, this);
- } else {
- this.setContext(ctx);
- this.renderChildren(ctx);
- this.clearContext(ctx);
- }
- ctx.restore();
- };
-
- // base set context
- this.setContext = function (ctx) {
- // OVERRIDE ME!
- };
-
- // base clear context
- this.clearContext = function (ctx) {
- // OVERRIDE ME!
- };
-
- // base render children
- this.renderChildren = function (ctx) {
- for (var i = 0; i < this.children.length; i++) {
- this.children[i].render(ctx);
- }
- };
-
- this.addChild = function (childNode, create) {
- var child = childNode;
- if (create) child = svg.CreateElement(childNode);
- child.parent = this;
- if (child.type !== 'title') { this.children.push(child); }
- };
-
- if (node != null && node.nodeType === 1) { // ELEMENT_NODE
- // add children
- for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
- if (childNode.nodeType === 1) this.addChild(childNode, true); // ELEMENT_NODE
- if (this.captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
- var text = childNode.nodeValue || childNode.text || '';
- if (svg.trim(svg.compressSpaces(text)) !== '') {
- this.addChild(new svg.Element.tspan(childNode), false); // TEXT_NODE
- }
- }
- }
-
- // add attributes
- for (var i = 0; i < node.attributes.length; i++) {
- var attribute = node.attributes[i];
- this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue);
- }
-
- // add tag styles
- var styles = svg.Styles[node.nodeName];
- if (styles != null) {
- for (var name in styles) {
- this.styles[name] = styles[name];
- }
- }
-
- // add class styles
- if (this.attribute('class').hasValue()) {
- var classes = svg.compressSpaces(this.attribute('class').value).split(' ');
- for (var j = 0; j < classes.length; j++) {
- styles = svg.Styles['.' + classes[j]];
- if (styles != null) {
- for (var name in styles) {
- this.styles[name] = styles[name];
- }
- }
- styles = svg.Styles[node.nodeName + '.' + classes[j]];
- if (styles != null) {
- for (var name in styles) {
- this.styles[name] = styles[name];
- }
- }
- }
- }
-
- // add id styles
- if (this.attribute('id').hasValue()) {
- var styles = svg.Styles['#' + this.attribute('id').value];
- if (styles != null) {
- for (var name in styles) {
- this.styles[name] = styles[name];
- }
- }
- }
-
- // add inline styles
- if (this.attribute('style').hasValue()) {
- var styles = this.attribute('style').value.split(';');
- for (var i = 0; i < styles.length; i++) {
- if (svg.trim(styles[i]) !== '') {
- var style = styles[i].split(':');
- var name = svg.trim(style[0]);
- var value = svg.trim(style[1]);
- this.styles[name] = new svg.Property(name, value);
- }
- }
- }
-
- // add id
- if (this.attribute('id').hasValue()) {
- if (svg.Definitions[this.attribute('id').value] == null) {
- svg.Definitions[this.attribute('id').value] = this;
- }
- }
- }
- };
-
- svg.Element.RenderedElementBase = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.setContext = function (ctx) {
- // fill
- if (this.style('fill').isUrlDefinition()) {
- var fs = this.style('fill').getFillStyleDefinition(this, this.style('fill-opacity'));
- if (fs != null) ctx.fillStyle = fs;
- } else if (this.style('fill').hasValue()) {
- var fillStyle = this.style('fill');
- if (fillStyle.value === 'currentColor') fillStyle.value = this.style('color').value;
- ctx.fillStyle = (fillStyle.value === 'none' ? 'rgba(0,0,0,0)' : fillStyle.value);
- }
- if (this.style('fill-opacity').hasValue()) {
- var fillStyle = new svg.Property('fill', ctx.fillStyle);
- fillStyle = fillStyle.addOpacity(this.style('fill-opacity'));
- ctx.fillStyle = fillStyle.value;
- }
-
- // stroke
- if (this.style('stroke').isUrlDefinition()) {
- var fs = this.style('stroke').getFillStyleDefinition(this, this.style('stroke-opacity'));
- if (fs != null) ctx.strokeStyle = fs;
- } else if (this.style('stroke').hasValue()) {
- var strokeStyle = this.style('stroke');
- if (strokeStyle.value === 'currentColor') strokeStyle.value = this.style('color').value;
- ctx.strokeStyle = (strokeStyle.value === 'none' ? 'rgba(0,0,0,0)' : strokeStyle.value);
- }
- if (this.style('stroke-opacity').hasValue()) {
- var strokeStyle = new svg.Property('stroke', ctx.strokeStyle);
- strokeStyle = strokeStyle.addOpacity(this.style('stroke-opacity'));
- ctx.strokeStyle = strokeStyle.value;
- }
- if (this.style('stroke-width').hasValue()) {
- var newLineWidth = this.style('stroke-width').toPixels();
- ctx.lineWidth = newLineWidth === 0 ? 0.001 : newLineWidth; // browsers don't respect 0
- }
- if (this.style('stroke-linecap').hasValue()) ctx.lineCap = this.style('stroke-linecap').value;
- if (this.style('stroke-linejoin').hasValue()) ctx.lineJoin = this.style('stroke-linejoin').value;
- if (this.style('stroke-miterlimit').hasValue()) ctx.miterLimit = this.style('stroke-miterlimit').value;
- if (this.style('stroke-dasharray').hasValue() && this.style('stroke-dasharray').value !== 'none') {
- var gaps = svg.ToNumberArray(this.style('stroke-dasharray').value);
- if (typeof ctx.setLineDash !== 'undefined') {
- ctx.setLineDash(gaps);
- } else if (typeof ctx.webkitLineDash !== 'undefined') {
- ctx.webkitLineDash = gaps;
- } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
- ctx.mozDash = gaps;
- }
-
- var offset = this.style('stroke-dashoffset').numValueOrDefault(1);
- if (typeof ctx.lineDashOffset !== 'undefined') {
- ctx.lineDashOffset = offset;
- } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {
- ctx.webkitLineDashOffset = offset;
- } else if (typeof ctx.mozDashOffset !== 'undefined') {
- ctx.mozDashOffset = offset;
- }
- }
-
- // font
- if (typeof ctx.font !== 'undefined') {
- ctx.font = svg.Font.CreateFont(
- this.style('font-style').value,
- this.style('font-variant').value,
- this.style('font-weight').value,
- this.style('font-size').hasValue() ? this.style('font-size').toPixels() + 'px' : '',
- this.style('font-family').value).toString();
- }
-
- // transform
- if (this.attribute('transform').hasValue()) {
- var transform = new svg.Transform(this.attribute('transform').value);
- transform.apply(ctx);
- }
-
- // clip
- if (this.style('clip-path', false, true).hasValue()) {
- var clip = this.style('clip-path', false, true).getDefinition();
- if (clip != null) clip.apply(ctx);
- }
-
- // opacity
- if (this.style('opacity').hasValue()) {
- ctx.globalAlpha = this.style('opacity').numValue();
- }
- };
- };
- svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase();
-
- svg.Element.PathElementBase = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.path = function (ctx) {
- if (ctx != null) ctx.beginPath();
- return new svg.BoundingBox();
- };
-
- this.renderChildren = function (ctx) {
- this.path(ctx);
- svg.Mouse.checkPath(this, ctx);
- if (ctx.fillStyle !== '') {
- if (this.style('fill-rule').valueOrDefault('inherit') !== 'inherit') {
- ctx.fill(this.style('fill-rule').value);
- } else {
- ctx.fill();
- }
- }
- if (ctx.strokeStyle !== '') ctx.stroke();
-
- var markers = this.getMarkers();
- if (markers != null) {
- if (this.style('marker-start').isUrlDefinition()) {
- var marker = this.style('marker-start').getDefinition();
- marker.render(ctx, markers[0][0], markers[0][1]);
- }
- if (this.style('marker-mid').isUrlDefinition()) {
- var marker = this.style('marker-mid').getDefinition();
- for (var i = 1; i < markers.length - 1; i++) {
- marker.render(ctx, markers[i][0], markers[i][1]);
- }
- }
- if (this.style('marker-end').isUrlDefinition()) {
- var marker = this.style('marker-end').getDefinition();
- marker.render(ctx, markers[markers.length - 1][0], markers[markers.length - 1][1]);
- }
- }
- };
-
- this.getBoundingBox = function () {
- return this.path();
- };
-
- this.getMarkers = function () {
- return null;
- };
- };
- svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase();
-
- // svg element
- svg.Element.svg = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.baseClearContext = this.clearContext;
- this.clearContext = function (ctx) {
- this.baseClearContext(ctx);
- svg.ViewPort.RemoveCurrent();
- };
-
- this.baseSetContext = this.setContext;
- this.setContext = function (ctx) {
- // initial values and defaults
- ctx.strokeStyle = 'rgba(0,0,0,0)';
- ctx.lineCap = 'butt';
- ctx.lineJoin = 'miter';
- ctx.miterLimit = 4;
- if (typeof ctx.font !== 'undefined' && typeof window.getComputedStyle !== 'undefined') {
- ctx.font = window.getComputedStyle(ctx.canvas).getPropertyValue('font');
- }
-
- this.baseSetContext(ctx);
-
- // create new view port
- if (!this.attribute('x').hasValue()) this.attribute('x', true).value = 0;
- if (!this.attribute('y').hasValue()) this.attribute('y', true).value = 0;
- ctx.translate(this.attribute('x').toPixels('x'), this.attribute('y').toPixels('y'));
-
- var width = svg.ViewPort.width();
- var height = svg.ViewPort.height();
-
- if (!this.attribute('width').hasValue()) this.attribute('width', true).value = '100%';
- if (!this.attribute('height').hasValue()) this.attribute('height', true).value = '100%';
- if (typeof this.root === 'undefined') {
- width = this.attribute('width').toPixels('x');
- height = this.attribute('height').toPixels('y');
-
- var x = 0;
- var y = 0;
- if (this.attribute('refX').hasValue() && this.attribute('refY').hasValue()) {
- x = -this.attribute('refX').toPixels('x');
- y = -this.attribute('refY').toPixels('y');
- }
-
- if (this.attribute('overflow').valueOrDefault('hidden') !== 'visible') {
- ctx.beginPath();
- ctx.moveTo(x, y);
- ctx.lineTo(width, y);
- ctx.lineTo(width, height);
- ctx.lineTo(x, height);
- ctx.closePath();
- ctx.clip();
- }
- }
- svg.ViewPort.SetCurrent(width, height);
-
- // viewbox
- if (this.attribute('viewBox').hasValue()) {
- var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
- var minX = viewBox[0];
- var minY = viewBox[1];
- width = viewBox[2];
- height = viewBox[3];
-
- svg.AspectRatio(
- ctx,
- this.attribute('preserveAspectRatio').value,
- svg.ViewPort.width(),
- width,
- svg.ViewPort.height(),
- height,
- minX,
- minY,
- this.attribute('refX').value,
- this.attribute('refY').value
- );
-
- svg.ViewPort.RemoveCurrent();
- svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);
- }
- };
- };
- svg.Element.svg.prototype = new svg.Element.RenderedElementBase();
-
- // rect element
- svg.Element.rect = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- this.path = function (ctx) {
- var x = this.attribute('x').toPixels('x');
- var y = this.attribute('y').toPixels('y');
- var width = this.attribute('width').toPixels('x');
- var height = this.attribute('height').toPixels('y');
- var rx = this.attribute('rx').toPixels('x');
- var ry = this.attribute('ry').toPixels('y');
- if (this.attribute('rx').hasValue() && !this.attribute('ry').hasValue()) ry = rx;
- if (this.attribute('ry').hasValue() && !this.attribute('rx').hasValue()) rx = ry;
- rx = Math.min(rx, width / 2.0);
- ry = Math.min(ry, height / 2.0);
- if (ctx != null) {
- ctx.beginPath();
- ctx.moveTo(x + rx, y);
- ctx.lineTo(x + width - rx, y);
- ctx.quadraticCurveTo(x + width, y, x + width, y + ry);
- ctx.lineTo(x + width, y + height - ry);
- ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);
- ctx.lineTo(x + rx, y + height);
- ctx.quadraticCurveTo(x, y + height, x, y + height - ry);
- ctx.lineTo(x, y + ry);
- ctx.quadraticCurveTo(x, y, x + rx, y);
- ctx.closePath();
- }
-
- return new svg.BoundingBox(x, y, x + width, y + height);
- };
- };
- svg.Element.rect.prototype = new svg.Element.PathElementBase();
-
- // circle element
- svg.Element.circle = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- this.path = function (ctx) {
- var cx = this.attribute('cx').toPixels('x');
- var cy = this.attribute('cy').toPixels('y');
- var r = this.attribute('r').toPixels();
-
- if (ctx != null) {
- ctx.beginPath();
- ctx.arc(cx, cy, r, 0, Math.PI * 2, true);
- ctx.closePath();
- }
-
- return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r);
- };
- };
- svg.Element.circle.prototype = new svg.Element.PathElementBase();
-
- // ellipse element
- svg.Element.ellipse = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- this.path = function (ctx) {
- var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
- var rx = this.attribute('rx').toPixels('x');
- var ry = this.attribute('ry').toPixels('y');
- var cx = this.attribute('cx').toPixels('x');
- var cy = this.attribute('cy').toPixels('y');
-
- if (ctx != null) {
- ctx.beginPath();
- ctx.moveTo(cx, cy - ry);
- ctx.bezierCurveTo(cx + (KAPPA * rx), cy - ry, cx + rx, cy - (KAPPA * ry), cx + rx, cy);
- ctx.bezierCurveTo(cx + rx, cy + (KAPPA * ry), cx + (KAPPA * rx), cy + ry, cx, cy + ry);
- ctx.bezierCurveTo(cx - (KAPPA * rx), cy + ry, cx - rx, cy + (KAPPA * ry), cx - rx, cy);
- ctx.bezierCurveTo(cx - rx, cy - (KAPPA * ry), cx - (KAPPA * rx), cy - ry, cx, cy - ry);
- ctx.closePath();
- }
-
- return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
- };
- };
- svg.Element.ellipse.prototype = new svg.Element.PathElementBase();
-
- // line element
- svg.Element.line = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- this.getPoints = function () {
- return [
- new svg.Point(this.attribute('x1').toPixels('x'), this.attribute('y1').toPixels('y')),
- new svg.Point(this.attribute('x2').toPixels('x'), this.attribute('y2').toPixels('y'))];
- };
-
- this.path = function (ctx) {
- var points = this.getPoints();
-
- if (ctx != null) {
- ctx.beginPath();
- ctx.moveTo(points[0].x, points[0].y);
- ctx.lineTo(points[1].x, points[1].y);
- }
-
- return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y);
- };
-
- this.getMarkers = function () {
- var points = this.getPoints();
- var a = points[0].angleTo(points[1]);
- return [[points[0], a], [points[1], a]];
- };
- };
- svg.Element.line.prototype = new svg.Element.PathElementBase();
-
- // polyline element
- svg.Element.polyline = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- this.points = svg.CreatePath(this.attribute('points').value);
- this.path = function (ctx) {
- var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y);
- if (ctx != null) {
- ctx.beginPath();
- ctx.moveTo(this.points[0].x, this.points[0].y);
- }
- for (var i = 1; i < this.points.length; i++) {
- bb.addPoint(this.points[i].x, this.points[i].y);
- if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y);
- }
- return bb;
- };
-
- this.getMarkers = function () {
- var markers = [];
- for (var i = 0; i < this.points.length - 1; i++) {
- markers.push([this.points[i], this.points[i].angleTo(this.points[i + 1])]);
- }
- markers.push([this.points[this.points.length - 1], markers[markers.length - 1][1]]);
- return markers;
- };
- };
- svg.Element.polyline.prototype = new svg.Element.PathElementBase();
-
- // polygon element
- svg.Element.polygon = function (node) {
- this.base = svg.Element.polyline;
- this.base(node);
-
- this.basePath = this.path;
- this.path = function (ctx) {
- var bb = this.basePath(ctx);
- if (ctx != null) {
- ctx.lineTo(this.points[0].x, this.points[0].y);
- ctx.closePath();
- }
- return bb;
- };
- };
- svg.Element.polygon.prototype = new svg.Element.polyline();
-
- // path element
- svg.Element.path = function (node) {
- this.base = svg.Element.PathElementBase;
- this.base(node);
-
- var d = this.attribute('d').value;
- // TODO: convert to real lexer based on https://www.w3.org/TR/SVG11/paths.html#PathDataBNF
- d = d.replace(/,/gm, ' '); // get rid of all commas
- d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from commands
- d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from commands
- d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm, '$1 $2'); // separate commands from points
- d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from points
- d = d.replace(/([0-9])([+-])/gm, '$1 $2'); // separate digits when no comma
- d = d.replace(/(\.[0-9]*)(\.)/gm, '$1 $2'); // separate digits when no comma
- d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm, '$1 $3 $4 '); // shorthand elliptical arc path syntax
- d = svg.compressSpaces(d); // compress multiple spaces
- d = svg.trim(d);
- this.PathParser = new function (d) {
- this.tokens = d.split(' ');
-
- this.reset = function () {
- this.i = -1;
- this.command = '';
- this.previousCommand = '';
- this.start = new svg.Point(0, 0);
- this.control = new svg.Point(0, 0);
- this.current = new svg.Point(0, 0);
- this.points = [];
- this.angles = [];
- };
-
- this.isEnd = function () {
- return this.i >= this.tokens.length - 1;
- };
-
- this.isCommandOrEnd = function () {
- if (this.isEnd()) return true;
- return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null;
- };
-
- this.isRelativeCommand = function () {
- switch (this.command) {
- case 'm':
- case 'l':
- case 'h':
- case 'v':
- case 'c':
- case 's':
- case 'q':
- case 't':
- case 'a':
- case 'z':
- return true;
- }
- return false;
- };
-
- this.getToken = function () {
- this.i++;
- return this.tokens[this.i];
- };
-
- this.getScalar = function () {
- return parseFloat(this.getToken());
- };
-
- this.nextCommand = function () {
- this.previousCommand = this.command;
- this.command = this.getToken();
- };
-
- this.getPoint = function () {
- var p = new svg.Point(this.getScalar(), this.getScalar());
- return this.makeAbsolute(p);
- };
-
- this.getAsControlPoint = function () {
- var p = this.getPoint();
- this.control = p;
- return p;
- };
-
- this.getAsCurrentPoint = function () {
- var p = this.getPoint();
- this.current = p;
- return p;
- };
-
- this.getReflectedControlPoint = function () {
- if (this.previousCommand.toLowerCase() !== 'c' &&
- this.previousCommand.toLowerCase() !== 's' &&
- this.previousCommand.toLowerCase() !== 'q' &&
- this.previousCommand.toLowerCase() !== 't') {
- return this.current;
- }
-
- // reflect point
- var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y);
- return p;
- };
-
- this.makeAbsolute = function (p) {
- if (this.isRelativeCommand()) {
- p.x += this.current.x;
- p.y += this.current.y;
- }
- return p;
- };
-
- this.addMarker = function (p, from, priorTo) {
- // if the last angle isn't filled in because we didn't have this point yet ...
- if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length - 1] == null) {
- this.angles[this.angles.length - 1] = this.points[this.points.length - 1].angleTo(priorTo);
- }
- this.addMarkerAngle(p, from == null ? null : from.angleTo(p));
- };
-
- this.addMarkerAngle = function (p, a) {
- this.points.push(p);
- this.angles.push(a);
- };
-
- this.getMarkerPoints = function () { return this.points; };
- this.getMarkerAngles = function () {
- for (var i = 0; i < this.angles.length; i++) {
- if (this.angles[i] == null) {
- for (var j = i + 1; j < this.angles.length; j++) {
- if (this.angles[j] != null) {
- this.angles[i] = this.angles[j];
- break;
- }
- }
- }
- }
- return this.angles;
- };
- }(d);
-
- this.path = function (ctx) {
- var pp = this.PathParser;
- pp.reset();
-
- var bb = new svg.BoundingBox();
- if (ctx != null) ctx.beginPath();
- while (!pp.isEnd()) {
- pp.nextCommand();
- switch (pp.command) {
- case 'M':
- case 'm':
- var p = pp.getAsCurrentPoint();
- pp.addMarker(p);
- bb.addPoint(p.x, p.y);
- if (ctx != null) ctx.moveTo(p.x, p.y);
- pp.start = pp.current;
- while (!pp.isCommandOrEnd()) {
- var p = pp.getAsCurrentPoint();
- pp.addMarker(p, pp.start);
- bb.addPoint(p.x, p.y);
- if (ctx != null) ctx.lineTo(p.x, p.y);
- }
- break;
- case 'L':
- case 'l':
- while (!pp.isCommandOrEnd()) {
- var c = pp.current;
- var p = pp.getAsCurrentPoint();
- pp.addMarker(p, c);
- bb.addPoint(p.x, p.y);
- if (ctx != null) ctx.lineTo(p.x, p.y);
- }
- break;
- case 'H':
- case 'h':
- while (!pp.isCommandOrEnd()) {
- var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y);
- pp.addMarker(newP, pp.current);
- pp.current = newP;
- bb.addPoint(pp.current.x, pp.current.y);
- if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
- }
- break;
- case 'V':
- case 'v':
- while (!pp.isCommandOrEnd()) {
- var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar());
- pp.addMarker(newP, pp.current);
- pp.current = newP;
- bb.addPoint(pp.current.x, pp.current.y);
- if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
- }
- break;
- case 'C':
- case 'c':
- while (!pp.isCommandOrEnd()) {
- var curr = pp.current;
- var p1 = pp.getPoint();
- var cntrl = pp.getAsControlPoint();
- var cp = pp.getAsCurrentPoint();
- pp.addMarker(cp, cntrl, p1);
- bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
- if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
- }
- break;
- case 'S':
- case 's':
- while (!pp.isCommandOrEnd()) {
- var curr = pp.current;
- var p1 = pp.getReflectedControlPoint();
- var cntrl = pp.getAsControlPoint();
- var cp = pp.getAsCurrentPoint();
- pp.addMarker(cp, cntrl, p1);
- bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
- if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
- }
- break;
- case 'Q':
- case 'q':
- while (!pp.isCommandOrEnd()) {
- var curr = pp.current;
- var cntrl = pp.getAsControlPoint();
- var cp = pp.getAsCurrentPoint();
- pp.addMarker(cp, cntrl, cntrl);
- bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
- if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
- }
- break;
- case 'T':
- case 't':
- while (!pp.isCommandOrEnd()) {
- var curr = pp.current;
- var cntrl = pp.getReflectedControlPoint();
- pp.control = cntrl;
- var cp = pp.getAsCurrentPoint();
- pp.addMarker(cp, cntrl, cntrl);
- bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
- if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
- }
- break;
- case 'A':
- case 'a':
- while (!pp.isCommandOrEnd()) {
- var curr = pp.current;
- var rx = pp.getScalar();
- var ry = pp.getScalar();
- var xAxisRotation = pp.getScalar() * (Math.PI / 180.0);
- var largeArcFlag = pp.getScalar();
- var sweepFlag = pp.getScalar();
- var cp = pp.getAsCurrentPoint();
-
- // Conversion from endpoint to center parameterization
- // https://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter
-
- // x1', y1'
- var currp = new svg.Point(
- Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,
- -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0
- );
- // adjust radii
- var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);
- if (l > 1) {
- rx *= Math.sqrt(l);
- ry *= Math.sqrt(l);
- }
- // cx', cy'
- var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt(
- ((Math.pow(rx, 2) * Math.pow(ry, 2)) - (Math.pow(rx, 2) * Math.pow(currp.y, 2)) - (Math.pow(ry, 2) * Math.pow(currp.x, 2))) /
- (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2))
- );
- if (isNaN(s)) s = 0;
- var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx);
- // cx, cy
- var centp = new svg.Point(
- (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,
- (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y
- );
- // vector magnitude
- var m = function (v) { return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); };
- // ratio between two vectors
- var r = function (u, v) { return (u[0] * v[0] + u[1] * v[1]) / (m(u) * m(v)); };
- // angle between two vectors
- var a = function (u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(r(u, v)); };
- // initial angle
- var a1 = a([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]);
- // angle delta
- var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];
- var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];
- var ad = a(u, v);
- if (r(u, v) <= -1) ad = Math.PI;
- if (r(u, v) >= 1) ad = 0;
-
- // for markers
- var dir = 1 - sweepFlag ? 1.0 : -1.0;
- var ah = a1 + dir * (ad / 2.0);
- var halfWay = new svg.Point(
- centp.x + rx * Math.cos(ah),
- centp.y + ry * Math.sin(ah)
- );
- pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
- pp.addMarkerAngle(cp, ah - dir * Math.PI);
-
- bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better
- if (ctx != null) {
- var r = rx > ry ? rx : ry;
- var sx = rx > ry ? 1 : rx / ry;
- var sy = rx > ry ? ry / rx : 1;
-
- ctx.translate(centp.x, centp.y);
- ctx.rotate(xAxisRotation);
- ctx.scale(sx, sy);
- ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag);
- ctx.scale(1 / sx, 1 / sy);
- ctx.rotate(-xAxisRotation);
- ctx.translate(-centp.x, -centp.y);
- }
- }
- break;
- case 'Z':
- case 'z':
- if (ctx != null) ctx.closePath();
- pp.current = pp.start;
- }
- }
-
- return bb;
- };
-
- this.getMarkers = function () {
- var points = this.PathParser.getMarkerPoints();
- var angles = this.PathParser.getMarkerAngles();
-
- var markers = [];
- for (var i = 0; i < points.length; i++) {
- markers.push([points[i], angles[i]]);
- }
- return markers;
- };
- };
- svg.Element.path.prototype = new svg.Element.PathElementBase();
-
- // pattern element
- svg.Element.pattern = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.createPattern = function (ctx, element) {
- var width = this.attribute('width').toPixels('x', true);
- var height = this.attribute('height').toPixels('y', true);
-
- // render me using a temporary svg element
- var tempSvg = new svg.Element.svg();
- tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
- tempSvg.attributes['width'] = new svg.Property('width', width + 'px');
- tempSvg.attributes['height'] = new svg.Property('height', height + 'px');
- tempSvg.attributes['transform'] = new svg.Property('transform', this.attribute('patternTransform').value);
- tempSvg.children = this.children;
-
- var c = document.createElement('canvas');
- c.width = width;
- c.height = height;
- var cctx = c.getContext('2d');
- if (this.attribute('x').hasValue() && this.attribute('y').hasValue()) {
- cctx.translate(this.attribute('x').toPixels('x', true), this.attribute('y').toPixels('y', true));
- }
- // render 3x3 grid so when we transform there's no white space on edges
- for (var x = -1; x <= 1; x++) {
- for (var y = -1; y <= 1; y++) {
- cctx.save();
- cctx.translate(x * c.width, y * c.height);
- tempSvg.render(cctx);
- cctx.restore();
- }
- }
- var pattern = ctx.createPattern(c, 'repeat');
- return pattern;
- };
- };
- svg.Element.pattern.prototype = new svg.Element.ElementBase();
-
- // marker element
- svg.Element.marker = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.baseRender = this.render;
- this.render = function (ctx, point, angle) {
- ctx.translate(point.x, point.y);
- if (this.attribute('orient').valueOrDefault('auto') === 'auto') ctx.rotate(angle);
- if (this.attribute('markerUnits').valueOrDefault('strokeWidth') === 'strokeWidth') ctx.scale(ctx.lineWidth, ctx.lineWidth);
- ctx.save();
-
- // render me using a temporary svg element
- var tempSvg = new svg.Element.svg();
- tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
- tempSvg.attributes['refX'] = new svg.Property('refX', this.attribute('refX').value);
- tempSvg.attributes['refY'] = new svg.Property('refY', this.attribute('refY').value);
- tempSvg.attributes['width'] = new svg.Property('width', this.attribute('markerWidth').value);
- tempSvg.attributes['height'] = new svg.Property('height', this.attribute('markerHeight').value);
- tempSvg.attributes['fill'] = new svg.Property('fill', this.attribute('fill').valueOrDefault('black'));
- tempSvg.attributes['stroke'] = new svg.Property('stroke', this.attribute('stroke').valueOrDefault('none'));
- tempSvg.children = this.children;
- tempSvg.render(ctx);
-
- ctx.restore();
- if (this.attribute('markerUnits').valueOrDefault('strokeWidth') === 'strokeWidth') ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
- if (this.attribute('orient').valueOrDefault('auto') === 'auto') ctx.rotate(-angle);
- ctx.translate(-point.x, -point.y);
- };
- };
- svg.Element.marker.prototype = new svg.Element.ElementBase();
-
- // definitions element
- svg.Element.defs = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.render = function (ctx) {
- // NOOP
- };
- };
- svg.Element.defs.prototype = new svg.Element.ElementBase();
-
- // base for gradients
- svg.Element.GradientBase = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.gradientUnits = this.attribute('gradientUnits').valueOrDefault('objectBoundingBox');
-
- this.stops = [];
- for (var i = 0; i < this.children.length; i++) {
- var child = this.children[i];
- if (child.type === 'stop') this.stops.push(child);
- }
-
- this.getGradient = function () {
- // OVERRIDE ME!
- };
-
- this.createGradient = function (ctx, element, parentOpacityProp) {
- var stopsContainer = this;
- if (this.getHrefAttribute().hasValue()) {
- stopsContainer = this.getHrefAttribute().getDefinition();
- }
-
- var addParentOpacity = function (color) {
- if (parentOpacityProp.hasValue()) {
- var p = new svg.Property('color', color);
- return p.addOpacity(parentOpacityProp).value;
- }
- return color;
- };
-
- var g = this.getGradient(ctx, element);
- if (g == null) return addParentOpacity(stopsContainer.stops[stopsContainer.stops.length - 1].color);
- for (var i = 0; i < stopsContainer.stops.length; i++) {
- g.addColorStop(stopsContainer.stops[i].offset, addParentOpacity(stopsContainer.stops[i].color));
- }
-
- if (this.attribute('gradientTransform').hasValue()) {
- // render as transformed pattern on temporary canvas
- var rootView = svg.ViewPort.viewPorts[0];
-
- var rect = new svg.Element.rect();
- rect.attributes['x'] = new svg.Property('x', -svg.MAX_VIRTUAL_PIXELS / 3.0);
- rect.attributes['y'] = new svg.Property('y', -svg.MAX_VIRTUAL_PIXELS / 3.0);
- rect.attributes['width'] = new svg.Property('width', svg.MAX_VIRTUAL_PIXELS);
- rect.attributes['height'] = new svg.Property('height', svg.MAX_VIRTUAL_PIXELS);
-
- var group = new svg.Element.g();
- group.attributes['transform'] = new svg.Property('transform', this.attribute('gradientTransform').value);
- group.children = [ rect ];
-
- var tempSvg = new svg.Element.svg();
- tempSvg.attributes['x'] = new svg.Property('x', 0);
- tempSvg.attributes['y'] = new svg.Property('y', 0);
- tempSvg.attributes['width'] = new svg.Property('width', rootView.width);
- tempSvg.attributes['height'] = new svg.Property('height', rootView.height);
- tempSvg.children = [ group ];
-
- var c = document.createElement('canvas');
- c.width = rootView.width;
- c.height = rootView.height;
- var tempCtx = c.getContext('2d');
- tempCtx.fillStyle = g;
- tempSvg.render(tempCtx);
- return tempCtx.createPattern(c, 'no-repeat');
- }
-
- return g;
- };
- };
- svg.Element.GradientBase.prototype = new svg.Element.ElementBase();
-
- // linear gradient element
- svg.Element.linearGradient = function (node) {
- this.base = svg.Element.GradientBase;
- this.base(node);
-
- this.getGradient = function (ctx, element) {
- var bb = this.gradientUnits === 'objectBoundingBox'
- ? element.getBoundingBox()
- : null;
-
- if (!this.attribute('x1').hasValue() &&
- !this.attribute('y1').hasValue() &&
- !this.attribute('x2').hasValue() &&
- !this.attribute('y2').hasValue()
- ) {
- this.attribute('x1', true).value = 0;
- this.attribute('y1', true).value = 0;
- this.attribute('x2', true).value = 1;
- this.attribute('y2', true).value = 0;
- }
-
- var x1 = (this.gradientUnits === 'objectBoundingBox'
- ? bb.x() + bb.width() * this.attribute('x1').numValue()
- : this.attribute('x1').toPixels('x'));
- var y1 = (this.gradientUnits === 'objectBoundingBox'
- ? bb.y() + bb.height() * this.attribute('y1').numValue()
- : this.attribute('y1').toPixels('y'));
- var x2 = (this.gradientUnits === 'objectBoundingBox'
- ? bb.x() + bb.width() * this.attribute('x2').numValue()
- : this.attribute('x2').toPixels('x'));
- var y2 = (this.gradientUnits === 'objectBoundingBox'
- ? bb.y() + bb.height() * this.attribute('y2').numValue()
- : this.attribute('y2').toPixels('y'));
-
- if (x1 === x2 && y1 === y2) return null;
- return ctx.createLinearGradient(x1, y1, x2, y2);
- };
- };
- svg.Element.linearGradient.prototype = new svg.Element.GradientBase();
-
- // radial gradient element
- svg.Element.radialGradient = function (node) {
- this.base = svg.Element.GradientBase;
- this.base(node);
-
- this.getGradient = function (ctx, element) {
- var bb = element.getBoundingBox();
-
- if (!this.attribute('cx').hasValue()) this.attribute('cx', true).value = '50%';
- if (!this.attribute('cy').hasValue()) this.attribute('cy', true).value = '50%';
- if (!this.attribute('r').hasValue()) this.attribute('r', true).value = '50%';
-
- var cx = (this.gradientUnits === 'objectBoundingBox'
- ? bb.x() + bb.width() * this.attribute('cx').numValue()
- : this.attribute('cx').toPixels('x'));
- var cy = (this.gradientUnits === 'objectBoundingBox'
- ? bb.y() + bb.height() * this.attribute('cy').numValue()
- : this.attribute('cy').toPixels('y'));
-
- var fx = cx;
- var fy = cy;
- if (this.attribute('fx').hasValue()) {
- fx = (this.gradientUnits === 'objectBoundingBox'
- ? bb.x() + bb.width() * this.attribute('fx').numValue()
- : this.attribute('fx').toPixels('x'));
- }
- if (this.attribute('fy').hasValue()) {
- fy = (this.gradientUnits === 'objectBoundingBox'
- ? bb.y() + bb.height() * this.attribute('fy').numValue()
- : this.attribute('fy').toPixels('y'));
- }
-
- var r = (this.gradientUnits === 'objectBoundingBox'
- ? (bb.width() + bb.height()) / 2.0 * this.attribute('r').numValue()
- : this.attribute('r').toPixels());
-
- return ctx.createRadialGradient(fx, fy, 0, cx, cy, r);
- };
- };
- svg.Element.radialGradient.prototype = new svg.Element.GradientBase();
-
- // gradient stop element
- svg.Element.stop = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.offset = this.attribute('offset').numValue();
- if (this.offset < 0) this.offset = 0;
- if (this.offset > 1) this.offset = 1;
-
- var stopColor = this.style('stop-color');
- if (this.style('stop-opacity').hasValue()) stopColor = stopColor.addOpacity(this.style('stop-opacity'));
- this.color = stopColor.value;
- };
- svg.Element.stop.prototype = new svg.Element.ElementBase();
-
- // animation base element
- svg.Element.AnimateBase = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- svg.Animations.push(this);
-
- this.duration = 0.0;
- this.begin = this.attribute('begin').toMilliseconds();
- this.maxDuration = this.begin + this.attribute('dur').toMilliseconds();
-
- this.getProperty = function () {
- var attributeType = this.attribute('attributeType').value;
- var attributeName = this.attribute('attributeName').value;
-
- if (attributeType === 'CSS') {
- return this.parent.style(attributeName, true);
- }
- return this.parent.attribute(attributeName, true);
- };
-
- this.initialValue = null;
- this.initialUnits = '';
- this.removed = false;
-
- this.calcValue = function () {
- // OVERRIDE ME!
- return '';
- };
-
- this.update = function (delta) {
- // set initial value
- if (this.initialValue == null) {
- this.initialValue = this.getProperty().value;
- this.initialUnits = this.getProperty().getUnits();
- }
-
- // if we're past the end time
- if (this.duration > this.maxDuration) {
- // loop for indefinitely repeating animations
- if (this.attribute('repeatCount').value === 'indefinite' ||
- this.attribute('repeatDur').value === 'indefinite') {
- this.duration = 0.0;
- } else if (this.attribute('fill').valueOrDefault('remove') === 'freeze' && !this.frozen) {
- this.frozen = true;
- this.parent.animationFrozen = true;
- this.parent.animationFrozenValue = this.getProperty().value;
- } else if (this.attribute('fill').valueOrDefault('remove') === 'remove' && !this.removed) {
- this.removed = true;
- this.getProperty().value = this.parent.animationFrozen ? this.parent.animationFrozenValue : this.initialValue;
- return true;
- }
- return false;
- }
- this.duration = this.duration + delta;
-
- // if we're past the begin time
- var updated = false;
- if (this.begin < this.duration) {
- var newValue = this.calcValue(); // tween
-
- if (this.attribute('type').hasValue()) {
- // for transform, etc.
- var type = this.attribute('type').value;
- newValue = type + '(' + newValue + ')';
- }
-
- this.getProperty().value = newValue;
- updated = true;
- }
-
- return updated;
- };
-
- this.from = this.attribute('from');
- this.to = this.attribute('to');
- this.values = this.attribute('values');
- if (this.values.hasValue()) this.values.value = this.values.value.split(';');
-
- // fraction of duration we've covered
- this.progress = function () {
- var ret = { progress: (this.duration - this.begin) / (this.maxDuration - this.begin) };
- if (this.values.hasValue()) {
- var p = ret.progress * (this.values.value.length - 1);
- var lb = Math.floor(p), ub = Math.ceil(p);
- ret.from = new svg.Property('from', parseFloat(this.values.value[lb]));
- ret.to = new svg.Property('to', parseFloat(this.values.value[ub]));
- ret.progress = (p - lb) / (ub - lb);
- } else {
- ret.from = this.from;
- ret.to = this.to;
- }
- return ret;
- };
- };
- svg.Element.AnimateBase.prototype = new svg.Element.ElementBase();
-
- // animate element
- svg.Element.animate = function (node) {
- this.base = svg.Element.AnimateBase;
- this.base(node);
-
- this.calcValue = function () {
- var p = this.progress();
-
- // tween value linearly
- var newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress;
- return newValue + this.initialUnits;
- };
- };
- svg.Element.animate.prototype = new svg.Element.AnimateBase();
-
- // animate color element
- svg.Element.animateColor = function (node) {
- this.base = svg.Element.AnimateBase;
- this.base(node);
-
- this.calcValue = function () {
- var p = this.progress();
- var from = new RGBColor(p.from.value);
- var to = new RGBColor(p.to.value);
-
- if (from.ok && to.ok) {
- // tween color linearly
- var r = from.r + (to.r - from.r) * p.progress;
- var g = from.g + (to.g - from.g) * p.progress;
- var b = from.b + (to.b - from.b) * p.progress;
- return 'rgb(' + parseInt(r, 10) + ',' + parseInt(g, 10) + ',' + parseInt(b, 10) + ')';
- }
- return this.attribute('from').value;
- };
- };
- svg.Element.animateColor.prototype = new svg.Element.AnimateBase();
-
- // animate transform element
- svg.Element.animateTransform = function (node) {
- this.base = svg.Element.AnimateBase;
- this.base(node);
-
- this.calcValue = function () {
- var p = this.progress();
-
- // tween value linearly
- var from = svg.ToNumberArray(p.from.value);
- var to = svg.ToNumberArray(p.to.value);
- var newValue = '';
- for (var i = 0; i < from.length; i++) {
- newValue += from[i] + (to[i] - from[i]) * p.progress + ' ';
- }
- return newValue;
- };
- };
- svg.Element.animateTransform.prototype = new svg.Element.animate();
-
- // font element
- svg.Element.font = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.horizAdvX = this.attribute('horiz-adv-x').numValue();
-
- this.isRTL = false;
- this.isArabic = false;
- this.fontFace = null;
- this.missingGlyph = null;
- this.glyphs = [];
- for (var i = 0; i < this.children.length; i++) {
- var child = this.children[i];
- if (child.type === 'font-face') {
- this.fontFace = child;
- if (child.style('font-family').hasValue()) {
- svg.Definitions[child.style('font-family').value] = this;
- }
- } else if (child.type === 'missing-glyph') {
- this.missingGlyph = child;
- } else if (child.type === 'glyph') {
- if (child.arabicForm !== '') {
- this.isRTL = true;
- this.isArabic = true;
- if (typeof this.glyphs[child.unicode] === 'undefined') {
- this.glyphs[child.unicode] = [];
- }
- this.glyphs[child.unicode][child.arabicForm] = child;
- } else {
- this.glyphs[child.unicode] = child;
- }
- }
- }
- };
- svg.Element.font.prototype = new svg.Element.ElementBase();
-
- // font-face element
- svg.Element.fontface = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.ascent = this.attribute('ascent').value;
- this.descent = this.attribute('descent').value;
- this.unitsPerEm = this.attribute('units-per-em').numValue();
- };
- svg.Element.fontface.prototype = new svg.Element.ElementBase();
-
- // missing-glyph element
- svg.Element.missingglyph = function (node) {
- this.base = svg.Element.path;
- this.base(node);
-
- this.horizAdvX = 0;
- };
- svg.Element.missingglyph.prototype = new svg.Element.path();
-
- // glyph element
- svg.Element.glyph = function (node) {
- this.base = svg.Element.path;
- this.base(node);
-
- this.horizAdvX = this.attribute('horiz-adv-x').numValue();
- this.unicode = this.attribute('unicode').value;
- this.arabicForm = this.attribute('arabic-form').value;
- };
- svg.Element.glyph.prototype = new svg.Element.path();
-
- // text element
- svg.Element.text = function (node) {
- this.captureTextNodes = true;
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.baseSetContext = this.setContext;
- this.setContext = function (ctx) {
- this.baseSetContext(ctx);
-
- var textBaseline = this.style('dominant-baseline').toTextBaseline();
- if (textBaseline == null) textBaseline = this.style('alignment-baseline').toTextBaseline();
- if (textBaseline != null) ctx.textBaseline = textBaseline;
- };
-
- this.getBoundingBox = function () {
- var x = this.attribute('x').toPixels('x');
- var y = this.attribute('y').toPixels('y');
- var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
- return new svg.BoundingBox(x, y - fontSize, x + Math.floor(fontSize * 2.0 / 3.0) * this.children[0].getText().length, y);
- };
-
- this.renderChildren = function (ctx) {
- this.x = this.attribute('x').toPixels('x');
- this.y = this.attribute('y').toPixels('y');
- this.x += this.getAnchorDelta(ctx, this, 0);
- for (var i = 0; i < this.children.length; i++) {
- this.renderChild(ctx, this, i);
- }
- };
-
- this.getAnchorDelta = function (ctx, parent, startI) {
- var textAnchor = this.style('text-anchor').valueOrDefault('start');
- if (textAnchor !== 'start') {
- var width = 0;
- for (var i = startI; i < parent.children.length; i++) {
- var child = parent.children[i];
- if (i > startI && child.attribute('x').hasValue()) break; // new group
- width += child.measureTextRecursive(ctx);
- }
- return -1 * (textAnchor === 'end' ? width : width / 2.0);
- }
- return 0;
- };
-
- this.renderChild = function (ctx, parent, i) {
- var child = parent.children[i];
- if (child.attribute('x').hasValue()) {
- child.x = child.attribute('x').toPixels('x') + this.getAnchorDelta(ctx, parent, i);
- if (child.attribute('dx').hasValue()) child.x += child.attribute('dx').toPixels('x');
- } else {
- if (this.attribute('dx').hasValue()) this.x += this.attribute('dx').toPixels('x');
- if (child.attribute('dx').hasValue()) this.x += child.attribute('dx').toPixels('x');
- child.x = this.x;
- }
- this.x = child.x + child.measureText(ctx);
-
- if (child.attribute('y').hasValue()) {
- child.y = child.attribute('y').toPixels('y');
- if (child.attribute('dy').hasValue()) child.y += child.attribute('dy').toPixels('y');
- } else {
- if (this.attribute('dy').hasValue()) this.y += this.attribute('dy').toPixels('y');
- if (child.attribute('dy').hasValue()) this.y += child.attribute('dy').toPixels('y');
- child.y = this.y;
- }
- this.y = child.y;
-
- child.render(ctx);
-
- for (var i = 0; i < child.children.length; i++) {
- this.renderChild(ctx, child, i);
- }
- };
- };
- svg.Element.text.prototype = new svg.Element.RenderedElementBase();
-
- // text base
- svg.Element.TextElementBase = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.getGlyph = function (font, text, i) {
- var c = text[i];
- var glyph = null;
- if (font.isArabic) {
- var arabicForm = 'isolated';
- if ((i === 0 || text[i - 1] === ' ') && i < text.length - 2 && text[i + 1] !== ' ') arabicForm = 'terminal';
- if (i > 0 && text[i - 1] !== ' ' && i < text.length - 2 && text[i + 1] !== ' ') arabicForm = 'medial';
- if (i > 0 && text[i - 1] !== ' ' && (i === text.length - 1 || text[i + 1] === ' ')) arabicForm = 'initial';
- if (typeof font.glyphs[c] !== 'undefined') {
- glyph = font.glyphs[c][arabicForm];
- if (glyph == null && font.glyphs[c].type === 'glyph') glyph = font.glyphs[c];
- }
- } else {
- glyph = font.glyphs[c];
- }
- if (glyph == null) glyph = font.missingGlyph;
- return glyph;
- };
-
- this.renderChildren = function (ctx) {
- var customFont = this.parent.style('font-family').getDefinition();
- if (customFont != null) {
- var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
- var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle);
- var text = this.getText();
- if (customFont.isRTL) text = text.split('').reverse().join('');
-
- var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
- for (var i = 0; i < text.length; i++) {
- var glyph = this.getGlyph(customFont, text, i);
- var scale = fontSize / customFont.fontFace.unitsPerEm;
- ctx.translate(this.x, this.y);
- ctx.scale(scale, -scale);
- var lw = ctx.lineWidth;
- ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize;
- if (fontStyle === 'italic') ctx.transform(1, 0, 0.4, 1, 0, 0);
- glyph.render(ctx);
- if (fontStyle === 'italic') ctx.transform(1, 0, -0.4, 1, 0, 0);
- ctx.lineWidth = lw;
- ctx.scale(1 / scale, -1 / scale);
- ctx.translate(-this.x, -this.y);
-
- this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm;
- if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
- this.x += dx[i];
- }
- }
- return;
- }
-
- if (ctx.fillStyle !== '') ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y);
- if (ctx.strokeStyle !== '') ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y);
- };
-
- this.getText = function () {
- // OVERRIDE ME
- };
-
- this.measureTextRecursive = function (ctx) {
- var width = this.measureText(ctx);
- for (var i = 0; i < this.children.length; i++) {
- width += this.children[i].measureTextRecursive(ctx);
- }
- return width;
- };
-
- this.measureText = function (ctx) {
- var customFont = this.parent.style('font-family').getDefinition();
- if (customFont != null) {
- var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
- var measure = 0;
- var text = this.getText();
- if (customFont.isRTL) text = text.split('').reverse().join('');
- var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
- for (var i = 0; i < text.length; i++) {
- var glyph = this.getGlyph(customFont, text, i);
- measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
- if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
- measure += dx[i];
- }
- }
- return measure;
- }
-
- var textToMeasure = svg.compressSpaces(this.getText());
- if (!ctx.measureText) return textToMeasure.length * 10;
-
- ctx.save();
- this.setContext(ctx);
- var width = ctx.measureText(textToMeasure).width;
- ctx.restore();
- return width;
- };
- };
- svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase();
-
- // tspan
- svg.Element.tspan = function (node) {
- this.captureTextNodes = true;
- this.base = svg.Element.TextElementBase;
- this.base(node);
-
- this.text = node.nodeValue || node.text || '';
- this.getText = function () {
- return this.text;
- };
- };
- svg.Element.tspan.prototype = new svg.Element.TextElementBase();
-
- // tref
- svg.Element.tref = function (node) {
- this.base = svg.Element.TextElementBase;
- this.base(node);
-
- this.getText = function () {
- var element = this.getHrefAttribute().getDefinition();
- if (element != null) return element.children[0].getText();
- };
- };
- svg.Element.tref.prototype = new svg.Element.TextElementBase();
-
- // a element
- svg.Element.a = function (node) {
- this.base = svg.Element.TextElementBase;
- this.base(node);
-
- this.hasText = true;
- for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
- if (childNode.nodeType !== 3) this.hasText = false;
- }
-
- // this might contain text
- this.text = this.hasText ? node.childNodes[0].nodeValue : '';
- this.getText = function () {
- return this.text;
- };
-
- this.baseRenderChildren = this.renderChildren;
- this.renderChildren = function (ctx) {
- if (this.hasText) {
- // render as text element
- this.baseRenderChildren(ctx);
- var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
- svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.toPixels('y'), this.x + this.measureText(ctx), this.y));
- } else {
- // render as temporary group
- var g = new svg.Element.g();
- g.children = this.children;
- g.parent = this;
- g.render(ctx);
- }
- };
-
- this.onclick = function () {
- window.open(this.getHrefAttribute().value);
- };
-
- this.onmousemove = function () {
- svg.ctx.canvas.style.cursor = 'pointer';
- };
- };
- svg.Element.a.prototype = new svg.Element.TextElementBase();
-
- // image element
- svg.Element.image = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- var href = this.getHrefAttribute().value;
- if (href === '') {
- return;
- }
- var isSvg = href.match(/\.svg$/);
-
- svg.Images.push(this);
- this.loaded = false;
- if (!isSvg) {
- this.img = document.createElement('img');
- if (svg.opts['useCORS'] === true) { this.img.crossOrigin = 'Anonymous'; }
- var self = this;
- this.img.onload = function () { self.loaded = true; };
- this.img.onerror = function () { svg.log('ERROR: image "' + href + '" not found'); self.loaded = true; };
- this.img.src = href;
- } else {
- this.img = svg.ajax(href);
- this.loaded = true;
- }
-
- this.renderChildren = function (ctx) {
- var x = this.attribute('x').toPixels('x');
- var y = this.attribute('y').toPixels('y');
-
- var width = this.attribute('width').toPixels('x');
- var height = this.attribute('height').toPixels('y');
- if (width === 0 || height === 0) return;
-
- ctx.save();
- if (isSvg) {
- ctx.drawSvg(this.img, x, y, width, height);
- } else {
- ctx.translate(x, y);
- svg.AspectRatio(
- ctx,
- this.attribute('preserveAspectRatio').value,
- width,
- this.img.width,
- height,
- this.img.height,
- 0,
- 0
- );
- ctx.drawImage(this.img, 0, 0);
- }
- ctx.restore();
- };
-
- this.getBoundingBox = function () {
- var x = this.attribute('x').toPixels('x');
- var y = this.attribute('y').toPixels('y');
- var width = this.attribute('width').toPixels('x');
- var height = this.attribute('height').toPixels('y');
- return new svg.BoundingBox(x, y, x + width, y + height);
- };
- };
- svg.Element.image.prototype = new svg.Element.RenderedElementBase();
-
- // group element
- svg.Element.g = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.getBoundingBox = function () {
- var bb = new svg.BoundingBox();
- for (var i = 0; i < this.children.length; i++) {
- bb.addBoundingBox(this.children[i].getBoundingBox());
- }
- return bb;
- };
- };
- svg.Element.g.prototype = new svg.Element.RenderedElementBase();
-
- // symbol element
- svg.Element.symbol = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.render = function (ctx) {
- // NO RENDER
- };
- };
- svg.Element.symbol.prototype = new svg.Element.RenderedElementBase();
-
- // style element
- svg.Element.style = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- // text, or spaces then CDATA
- var css = '';
- for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
- css += childNode.nodeValue;
- }
- css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ''); // remove comments
- css = svg.compressSpaces(css); // replace whitespace
- var cssDefs = css.split('}');
- for (var i = 0; i < cssDefs.length; i++) {
- if (svg.trim(cssDefs[i]) !== '') {
- var cssDef = cssDefs[i].split('{');
- var cssClasses = cssDef[0].split(',');
- var cssProps = cssDef[1].split(';');
- for (var j = 0; j < cssClasses.length; j++) {
- var cssClass = svg.trim(cssClasses[j]);
- if (cssClass !== '') {
- var props = {};
- for (var k = 0; k < cssProps.length; k++) {
- var prop = cssProps[k].indexOf(':');
- var name = cssProps[k].substr(0, prop);
- var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop);
- if (name != null && value != null) {
- props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value));
- }
- }
- svg.Styles[cssClass] = props;
- if (cssClass === '@font-face') {
- var fontFamily = props['font-family'].value.replace(/"/g, '');
- var srcs = props['src'].value.split(',');
- for (var s = 0; s < srcs.length; s++) {
- if (srcs[s].indexOf('format("svg")') > 0) {
- var urlStart = srcs[s].indexOf('url');
- var urlEnd = srcs[s].indexOf(')', urlStart);
- var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6);
- var doc = svg.parseXml(svg.ajax(url));
- var fonts = doc.getElementsByTagName('font');
- for (var f = 0; f < fonts.length; f++) {
- var font = svg.CreateElement(fonts[f]);
- svg.Definitions[fontFamily] = font;
- }
- }
- }
- }
- }
- }
- }
- }
- };
- svg.Element.style.prototype = new svg.Element.ElementBase();
-
- // use element
- svg.Element.use = function (node) {
- this.base = svg.Element.RenderedElementBase;
- this.base(node);
-
- this.baseSetContext = this.setContext;
- this.setContext = function (ctx) {
- this.baseSetContext(ctx);
- if (this.attribute('x').hasValue()) ctx.translate(this.attribute('x').toPixels('x'), 0);
- if (this.attribute('y').hasValue()) ctx.translate(0, this.attribute('y').toPixels('y'));
- };
-
- var element = this.getHrefAttribute().getDefinition();
-
- this.path = function (ctx) {
- if (element != null) element.path(ctx);
- };
-
- this.getBoundingBox = function () {
- if (element != null) return element.getBoundingBox();
- };
-
- this.renderChildren = function (ctx) {
- if (element != null) {
- var tempSvg = element;
- if (element.type === 'symbol') {
- // render me using a temporary svg element in symbol cases (https://www.w3.org/TR/SVG/struct.html#UseElement)
- tempSvg = new svg.Element.svg();
- tempSvg.type = 'svg';
- tempSvg.attributes['viewBox'] = new svg.Property('viewBox', element.attribute('viewBox').value);
- tempSvg.attributes['preserveAspectRatio'] = new svg.Property('preserveAspectRatio', element.attribute('preserveAspectRatio').value);
- tempSvg.attributes['overflow'] = new svg.Property('overflow', element.attribute('overflow').value);
- tempSvg.children = element.children;
- }
- if (tempSvg.type === 'svg') {
- // if symbol or svg, inherit width/height from me
- if (this.attribute('width').hasValue()) tempSvg.attributes['width'] = new svg.Property('width', this.attribute('width').value);
- if (this.attribute('height').hasValue()) tempSvg.attributes['height'] = new svg.Property('height', this.attribute('height').value);
- }
- var oldParent = tempSvg.parent;
- tempSvg.parent = null;
- tempSvg.render(ctx);
- tempSvg.parent = oldParent;
- }
- };
- };
- svg.Element.use.prototype = new svg.Element.RenderedElementBase();
-
- // mask element
- svg.Element.mask = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.apply = function (ctx, element) {
- // render as temp svg
- var x = this.attribute('x').toPixels('x');
- var y = this.attribute('y').toPixels('y');
- var width = this.attribute('width').toPixels('x');
- var height = this.attribute('height').toPixels('y');
-
- if (width === 0 && height === 0) {
- var bb = new svg.BoundingBox();
- for (var i = 0; i < this.children.length; i++) {
- bb.addBoundingBox(this.children[i].getBoundingBox());
- }
- var x = Math.floor(bb.x1);
- var y = Math.floor(bb.y1);
- var width = Math.floor(bb.width());
- var height = Math.floor(bb.height());
- }
-
- // temporarily remove mask to avoid recursion
- var mask = element.attribute('mask').value;
- element.attribute('mask').value = '';
-
- var cMask = document.createElement('canvas');
- cMask.width = x + width;
- cMask.height = y + height;
- var maskCtx = cMask.getContext('2d');
- this.renderChildren(maskCtx);
-
- var c = document.createElement('canvas');
- c.width = x + width;
- c.height = y + height;
- var tempCtx = c.getContext('2d');
- element.render(tempCtx);
- tempCtx.globalCompositeOperation = 'destination-in';
- tempCtx.fillStyle = maskCtx.createPattern(cMask, 'no-repeat');
- tempCtx.fillRect(0, 0, x + width, y + height);
-
- ctx.fillStyle = tempCtx.createPattern(c, 'no-repeat');
- ctx.fillRect(0, 0, x + width, y + height);
-
- // reassign mask
- element.attribute('mask').value = mask;
- };
-
- this.render = function (ctx) {
- // NO RENDER
- };
- };
- svg.Element.mask.prototype = new svg.Element.ElementBase();
-
- // clip element
- svg.Element.clipPath = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.apply = function (ctx) {
- for (var i = 0; i < this.children.length; i++) {
- var child = this.children[i];
- if (typeof child.path !== 'undefined') {
- var transform = null;
- if (child.attribute('transform').hasValue()) {
- transform = new svg.Transform(child.attribute('transform').value);
- transform.apply(ctx);
- }
- child.path(ctx);
- ctx.clip();
- if (transform) { transform.unapply(ctx); }
- }
- }
- };
-
- this.render = function (ctx) {
- // NO RENDER
- };
- };
- svg.Element.clipPath.prototype = new svg.Element.ElementBase();
-
- // filters
- svg.Element.filter = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.apply = function (ctx, element) {
- // render as temp svg
- var bb = element.getBoundingBox();
- var x = Math.floor(bb.x1);
- var y = Math.floor(bb.y1);
- var width = Math.floor(bb.width());
- var height = Math.floor(bb.height());
-
- // temporarily remove filter to avoid recursion
- var filter = element.style('filter').value;
- element.style('filter').value = '';
-
- var px = 0, py = 0;
- for (var i = 0; i < this.children.length; i++) {
- var efd = this.children[i].extraFilterDistance || 0;
- px = Math.max(px, efd);
- py = Math.max(py, efd);
- }
-
- var c = document.createElement('canvas');
- c.width = width + 2 * px;
- c.height = height + 2 * py;
- var tempCtx = c.getContext('2d');
- tempCtx.translate(-x + px, -y + py);
- element.render(tempCtx);
-
- // apply filters
- for (var i = 0; i < this.children.length; i++) {
- this.children[i].apply(tempCtx, 0, 0, width + 2 * px, height + 2 * py);
- }
-
- // render on me
- ctx.drawImage(c, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py);
-
- // reassign filter
- element.style('filter', true).value = filter;
- };
-
- this.render = function (ctx) {
- // NO RENDER
- };
- };
- svg.Element.filter.prototype = new svg.Element.ElementBase();
-
- svg.Element.feMorphology = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.apply = function (ctx, x, y, width, height) {
- // TODO: implement
- };
- };
- svg.Element.feMorphology.prototype = new svg.Element.ElementBase();
-
- svg.Element.feComposite = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.apply = function (ctx, x, y, width, height) {
- // TODO: implement
- };
- };
- svg.Element.feComposite.prototype = new svg.Element.ElementBase();
-
- svg.Element.feColorMatrix = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- var matrix = svg.ToNumberArray(this.attribute('values').value);
- switch (this.attribute('type').valueOrDefault('matrix')) { // https://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
- case 'saturate':
- var s = matrix[0];
- matrix = [
- 0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0,
- 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0,
- 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0,
- 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 1
- ];
- break;
- case 'hueRotate':
- var a = matrix[0] * Math.PI / 180.0;
- var c = function (m1, m2, m3) { return m1 + Math.cos(a) * m2 + Math.sin(a) * m3; };
- matrix = [
- c(0.213, 0.787, -0.213), c(0.715, -0.715, -0.715), c(0.072, -0.072, 0.928), 0, 0,
- c(0.213, -0.213, 0.143), c(0.715, 0.285, 0.140), c(0.072, -0.072, -0.283), 0, 0,
- c(0.213, -0.213, -0.787), c(0.715, -0.715, 0.715), c(0.072, 0.928, 0.072), 0, 0,
- 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 1
- ];
- break;
- case 'luminanceToAlpha':
- matrix = [
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0.2125, 0.7154, 0.0721, 0, 0,
- 0, 0, 0, 0, 1
- ];
- break;
- }
-
- function imGet (img, x, y, width, height, rgba) {
- return img[y * width * 4 + x * 4 + rgba];
- }
-
- function imSet (img, x, y, width, height, rgba, val) {
- img[y * width * 4 + x * 4 + rgba] = val;
- }
-
- function m (i, v) {
- var mi = matrix[i];
- return mi * (mi < 0 ? v - 255 : v);
- }
-
- this.apply = function (ctx, x, y, width, height) {
- // assuming x==0 && y==0 for now
- var srcData = ctx.getImageData(0, 0, width, height);
- for (var y = 0; y < height; y++) {
- for (var x = 0; x < width; x++) {
- var r = imGet(srcData.data, x, y, width, height, 0);
- var g = imGet(srcData.data, x, y, width, height, 1);
- var b = imGet(srcData.data, x, y, width, height, 2);
- var a = imGet(srcData.data, x, y, width, height, 3);
- imSet(srcData.data, x, y, width, height, 0, m(0, r) + m(1, g) + m(2, b) + m(3, a) + m(4, 1));
- imSet(srcData.data, x, y, width, height, 1, m(5, r) + m(6, g) + m(7, b) + m(8, a) + m(9, 1));
- imSet(srcData.data, x, y, width, height, 2, m(10, r) + m(11, g) + m(12, b) + m(13, a) + m(14, 1));
- imSet(srcData.data, x, y, width, height, 3, m(15, r) + m(16, g) + m(17, b) + m(18, a) + m(19, 1));
- }
- }
- ctx.clearRect(0, 0, width, height);
- ctx.putImageData(srcData, 0, 0);
- };
- };
- svg.Element.feColorMatrix.prototype = new svg.Element.ElementBase();
-
- svg.Element.feGaussianBlur = function (node) {
- this.base = svg.Element.ElementBase;
- this.base(node);
-
- this.blurRadius = Math.floor(this.attribute('stdDeviation').numValue());
- this.extraFilterDistance = this.blurRadius;
-
- this.apply = function (ctx, x, y, width, height) {
- if (typeof stackBlurCanvasRGBA === 'undefined') {
- svg.log('ERROR: StackBlur.js must be included for blur to work');
- return;
- }
-
- // StackBlur requires canvas be on document
- ctx.canvas.id = svg.UniqueId();
- ctx.canvas.style.display = 'none';
- document.body.appendChild(ctx.canvas);
- stackBlurCanvasRGBA(ctx.canvas.id, x, y, width, height, this.blurRadius);
- document.body.removeChild(ctx.canvas);
- };
- };
- svg.Element.feGaussianBlur.prototype = new svg.Element.ElementBase();
-
- // title element, do nothing
- svg.Element.title = function (node) {
- };
- svg.Element.title.prototype = new svg.Element.ElementBase();
-
- // desc element, do nothing
- svg.Element.desc = function (node) {
- };
- svg.Element.desc.prototype = new svg.Element.ElementBase();
-
- svg.Element.MISSING = function (node) {
- svg.log('ERROR: Element \'' + node.nodeName + '\' not yet implemented.');
- };
- svg.Element.MISSING.prototype = new svg.Element.ElementBase();
-
- // element factory
- svg.CreateElement = function (node) {
- var className = node.nodeName.replace(/^[^:]+:/, ''); // remove namespace
- className = className.replace(/-/g, ''); // remove dashes
- var e = null;
- if (typeof svg.Element[className] !== 'undefined') {
- e = new svg.Element[className](node);
- } else {
- e = new svg.Element.MISSING(node);
- }
-
- e.type = node.nodeName;
- return e;
- };
-
- // load from url
- svg.load = function (ctx, url) {
- svg.loadXml(ctx, svg.ajax(url));
- };
-
- // load from xml
- svg.loadXml = function (ctx, xml) {
- svg.loadXmlDoc(ctx, svg.parseXml(xml));
- };
-
- svg.loadXmlDoc = function (ctx, dom) {
- svg.init(ctx);
-
- var mapXY = function (p) {
- var e = ctx.canvas;
- while (e) {
- p.x -= e.offsetLeft;
- p.y -= e.offsetTop;
- e = e.offsetParent;
- }
- if (window.scrollX) p.x += window.scrollX;
- if (window.scrollY) p.y += window.scrollY;
- return p;
- };
-
- // bind mouse
- if (svg.opts['ignoreMouse'] !== true) {
- ctx.canvas.onclick = function (e) {
- var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
- svg.Mouse.onclick(p.x, p.y);
- };
- ctx.canvas.onmousemove = function (e) {
- var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
- svg.Mouse.onmousemove(p.x, p.y);
- };
- }
-
- var e = svg.CreateElement(dom.documentElement);
- e.root = true;
-
- // render loop
- var isFirstRender = true;
- var draw = function () {
- svg.ViewPort.Clear();
- if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight);
-
- if (svg.opts['ignoreDimensions'] !== true) {
- // set canvas size
- if (e.style('width').hasValue()) {
- ctx.canvas.width = e.style('width').toPixels('x');
- ctx.canvas.style.width = ctx.canvas.width + 'px';
- }
- if (e.style('height').hasValue()) {
- ctx.canvas.height = e.style('height').toPixels('y');
- ctx.canvas.style.height = ctx.canvas.height + 'px';
- }
- }
- var cWidth = ctx.canvas.clientWidth || ctx.canvas.width;
- var cHeight = ctx.canvas.clientHeight || ctx.canvas.height;
- if (svg.opts['ignoreDimensions'] === true && e.style('width').hasValue() && e.style('height').hasValue()) {
- cWidth = e.style('width').toPixels('x');
- cHeight = e.style('height').toPixels('y');
- }
- svg.ViewPort.SetCurrent(cWidth, cHeight);
-
- if (svg.opts['offsetX'] != null) e.attribute('x', true).value = svg.opts['offsetX'];
- if (svg.opts['offsetY'] != null) e.attribute('y', true).value = svg.opts['offsetY'];
- if (svg.opts['scaleWidth'] != null || svg.opts['scaleHeight'] != null) {
- var xRatio = null, yRatio = null, viewBox = svg.ToNumberArray(e.attribute('viewBox').value);
-
- if (svg.opts['scaleWidth'] != null) {
- if (e.attribute('width').hasValue()) xRatio = e.attribute('width').toPixels('x') / svg.opts['scaleWidth'];
- else if (!isNaN(viewBox[2])) xRatio = viewBox[2] / svg.opts['scaleWidth'];
- }
-
- if (svg.opts['scaleHeight'] != null) {
- if (e.attribute('height').hasValue()) yRatio = e.attribute('height').toPixels('y') / svg.opts['scaleHeight'];
- else if (!isNaN(viewBox[3])) yRatio = viewBox[3] / svg.opts['scaleHeight'];
- }
-
- if (xRatio == null) { xRatio = yRatio; }
- if (yRatio == null) { yRatio = xRatio; }
-
- e.attribute('width', true).value = svg.opts['scaleWidth'];
- e.attribute('height', true).value = svg.opts['scaleHeight'];
- e.attribute('viewBox', true).value = '0 0 ' + (cWidth * xRatio) + ' ' + (cHeight * yRatio);
- e.attribute('preserveAspectRatio', true).value = 'none';
- }
-
- // clear and render
- if (svg.opts['ignoreClear'] !== true) {
- ctx.clearRect(0, 0, cWidth, cHeight);
- }
- e.render(ctx);
- if (isFirstRender) {
- isFirstRender = false;
- if (typeof svg.opts['renderCallback'] === 'function') {
- svg.opts['renderCallback'](dom);
- }
- }
- };
-
- var waitingForImages = true;
- if (svg.ImagesLoaded()) {
- waitingForImages = false;
- draw();
- }
- svg.intervalID = setInterval(function () {
- var needUpdate = false;
-
- if (waitingForImages && svg.ImagesLoaded()) {
- waitingForImages = false;
- needUpdate = true;
- }
-
- // need update from mouse events?
- if (svg.opts['ignoreMouse'] !== true) {
- needUpdate = needUpdate | svg.Mouse.hasEvents();
- }
-
- // need update from animations?
- if (svg.opts['ignoreAnimation'] !== true) {
- for (var i = 0; i < svg.Animations.length; i++) {
- needUpdate = needUpdate | svg.Animations[i].update(1000 / svg.FRAMERATE);
- }
- }
-
- // need update from redraw?
- if (typeof svg.opts['forceRedraw'] === 'function') {
- if (svg.opts['forceRedraw']() === true) needUpdate = true;
- }
-
- // render if needed
- if (needUpdate) {
- draw();
- svg.Mouse.runEvents(); // run and clear our events
- }
- }, 1000 / svg.FRAMERATE);
- };
-
- svg.stop = function () {
- if (svg.intervalID) {
- clearInterval(svg.intervalID);
- }
- };
-
- svg.Mouse = new function () {
- this.events = [];
- this.hasEvents = function () { return this.events.length !== 0; };
-
- this.onclick = function (x, y) {
- this.events.push({ type: 'onclick', x: x, y: y,
- run: function (e) { if (e.onclick) e.onclick(); }
- });
- };
-
- this.onmousemove = function (x, y) {
- this.events.push({ type: 'onmousemove', x: x, y: y,
- run: function (e) { if (e.onmousemove) e.onmousemove(); }
- });
- };
-
- this.eventElements = [];
-
- this.checkPath = function (element, ctx) {
- for (var i = 0; i < this.events.length; i++) {
- var e = this.events[i];
- if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element;
- }
- };
-
- this.checkBoundingBox = function (element, bb) {
- for (var i = 0; i < this.events.length; i++) {
- var e = this.events[i];
- if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element;
- }
- };
-
- this.runEvents = function () {
- svg.ctx.canvas.style.cursor = '';
-
- for (var i = 0; i < this.events.length; i++) {
- var e = this.events[i];
- var element = this.eventElements[i];
- while (element) {
- e.run(element);
- element = element.parent;
- }
- }
-
- // done running, clear
- this.events = [];
- this.eventElements = [];
- };
- }();
-
- return svg;
+ var svg = {opts: opts};
+
+ svg.FRAMERATE = 30;
+ svg.MAX_VIRTUAL_PIXELS = 30000;
+
+ svg.log = function (msg) {};
+ if (svg.opts.log === true && typeof console !== 'undefined') {
+ svg.log = function (msg) { console.log(msg); };
+ };
+
+ // globals
+ svg.init = function (ctx) {
+ var uniqueId = 0;
+ svg.UniqueId = function () { uniqueId++; return 'canvg' + uniqueId; };
+ svg.Definitions = {};
+ svg.Styles = {};
+ svg.Animations = [];
+ svg.Images = [];
+ svg.ctx = ctx;
+ svg.ViewPort = new function () {
+ this.viewPorts = [];
+ this.Clear = function () { this.viewPorts = []; };
+ this.SetCurrent = function (width, height) { this.viewPorts.push({ width: width, height: height }); };
+ this.RemoveCurrent = function () { this.viewPorts.pop(); };
+ this.Current = function () { return this.viewPorts[this.viewPorts.length - 1]; };
+ this.width = function () { return this.Current().width; };
+ this.height = function () { return this.Current().height; };
+ this.ComputeSize = function (d) {
+ if (d != null && typeof d === 'number') return d;
+ if (d === 'x') return this.width();
+ if (d === 'y') return this.height();
+ return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2);
+ };
+ }();
+ };
+ svg.init();
+
+ // images loaded
+ svg.ImagesLoaded = function () {
+ for (var i = 0; i < svg.Images.length; i++) {
+ if (!svg.Images[i].loaded) return false;
+ }
+ return true;
+ };
+
+ // trim
+ svg.trim = function (s) { return s.replace(/^\s+|\s+$/g, ''); };
+
+ // compress spaces
+ svg.compressSpaces = function (s) { return s.replace(/[\s\r\t\n]+/gm, ' '); };
+
+ // ajax
+ svg.ajax = function (url) {
+ var AJAX;
+ if (window.XMLHttpRequest) {
+ AJAX = new XMLHttpRequest();
+ } else {
+ AJAX = new ActiveXObject('Microsoft.XMLHTTP');
+ }
+ if (AJAX) {
+ AJAX.open('GET', url, false);
+ AJAX.send(null);
+ return AJAX.responseText;
+ }
+ return null;
+ };
+
+ // parse xml
+ svg.parseXml = function (xml) {
+ if (window.DOMParser) {
+ var parser = new DOMParser();
+ return parser.parseFromString(xml, 'text/xml');
+ } else {
+ xml = xml.replace(/]*>/, '');
+ var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
+ xmlDoc.async = 'false';
+ xmlDoc.loadXML(xml);
+ return xmlDoc;
+ }
+ };
+
+ svg.Property = function (name, value) {
+ this.name = name;
+ this.value = value;
+ };
+ svg.Property.prototype.getValue = function () {
+ return this.value;
+ };
+
+ svg.Property.prototype.hasValue = function () {
+ return (this.value != null && this.value !== '');
+ };
+
+ // return the numerical value of the property
+ svg.Property.prototype.numValue = function () {
+ if (!this.hasValue()) return 0;
+
+ var n = parseFloat(this.value);
+ if ((this.value + '').match(/%$/)) {
+ n = n / 100.0;
+ }
+ return n;
+ };
+
+ svg.Property.prototype.valueOrDefault = function (def) {
+ if (this.hasValue()) return this.value;
+ return def;
+ };
+
+ svg.Property.prototype.numValueOrDefault = function (def) {
+ if (this.hasValue()) return this.numValue();
+ return def;
+ };
+
+ // color extensions
+ // augment the current color value with the opacity
+ svg.Property.prototype.addOpacity = function (opacityProp) {
+ var newValue = this.value;
+ if (opacityProp.value != null && opacityProp.value !== '' && typeof this.value === 'string') { // can only add opacity to colors, not patterns
+ var color = new RGBColor(this.value);
+ if (color.ok) {
+ newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacityProp.numValue() + ')';
+ }
+ }
+ return new svg.Property(this.name, newValue);
+ };
+
+ // definition extensions
+ // get the definition from the definitions table
+ svg.Property.prototype.getDefinition = function () {
+ var name = this.value.match(/#([^)'"]+)/);
+ if (name) { name = name[1]; }
+ if (!name) { name = this.value; }
+ return svg.Definitions[name];
+ };
+
+ svg.Property.prototype.isUrlDefinition = function () {
+ return this.value.indexOf('url(') === 0;
+ };
+
+ svg.Property.prototype.getFillStyleDefinition = function (e, opacityProp) {
+ var def = this.getDefinition();
+
+ // gradient
+ if (def != null && def.createGradient) {
+ return def.createGradient(svg.ctx, e, opacityProp);
+ }
+
+ // pattern
+ if (def != null && def.createPattern) {
+ if (def.getHrefAttribute().hasValue()) {
+ var pt = def.attribute('patternTransform');
+ def = def.getHrefAttribute().getDefinition();
+ if (pt.hasValue()) { def.attribute('patternTransform', true).value = pt.value; }
+ }
+ return def.createPattern(svg.ctx, e);
+ }
+
+ return null;
+ };
+
+ // length extensions
+ svg.Property.prototype.getDPI = function (viewPort) {
+ return 96.0; // TODO: compute?
+ };
+
+ svg.Property.prototype.getEM = function (viewPort) {
+ var em = 12;
+
+ var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+ if (fontSize.hasValue()) em = fontSize.toPixels(viewPort);
+
+ return em;
+ };
+
+ svg.Property.prototype.getUnits = function () {
+ var s = this.value + '';
+ return s.replace(/[0-9.-]/g, '');
+ };
+
+ // get the length as pixels
+ svg.Property.prototype.toPixels = function (viewPort, processPercent) {
+ if (!this.hasValue()) return 0;
+ var s = this.value + '';
+ if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort);
+ if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2.0;
+ if (s.match(/px$/)) return this.numValue();
+ if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1.0 / 72.0);
+ if (s.match(/pc$/)) return this.numValue() * 15;
+ if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54;
+ if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4;
+ if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort);
+ if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort);
+ var n = this.numValue();
+ if (processPercent && n < 1.0) return n * svg.ViewPort.ComputeSize(viewPort);
+ return n;
+ };
+
+ // time extensions
+ // get the time as milliseconds
+ svg.Property.prototype.toMilliseconds = function () {
+ if (!this.hasValue()) return 0;
+ var s = this.value + '';
+ if (s.match(/s$/)) return this.numValue() * 1000;
+ if (s.match(/ms$/)) return this.numValue();
+ return this.numValue();
+ };
+
+ // angle extensions
+ // get the angle as radians
+ svg.Property.prototype.toRadians = function () {
+ if (!this.hasValue()) return 0;
+ var s = this.value + '';
+ if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180.0);
+ if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200.0);
+ if (s.match(/rad$/)) return this.numValue();
+ return this.numValue() * (Math.PI / 180.0);
+ };
+
+ // text extensions
+ // get the text baseline
+ var textBaselineMapping = {
+ 'baseline': 'alphabetic',
+ 'before-edge': 'top',
+ 'text-before-edge': 'top',
+ 'middle': 'middle',
+ 'central': 'middle',
+ 'after-edge': 'bottom',
+ 'text-after-edge': 'bottom',
+ 'ideographic': 'ideographic',
+ 'alphabetic': 'alphabetic',
+ 'hanging': 'hanging',
+ 'mathematical': 'alphabetic'
+ };
+ svg.Property.prototype.toTextBaseline = function () {
+ if (!this.hasValue()) return null;
+ return textBaselineMapping[this.value];
+ };
+
+ // fonts
+ svg.Font = new function () {
+ this.Styles = 'normal|italic|oblique|inherit';
+ this.Variants = 'normal|small-caps|inherit';
+ this.Weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
+
+ this.CreateFont = function (fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+ var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font);
+ return {
+ fontFamily: fontFamily || f.fontFamily,
+ fontSize: fontSize || f.fontSize,
+ fontStyle: fontStyle || f.fontStyle,
+ fontWeight: fontWeight || f.fontWeight,
+ fontVariant: fontVariant || f.fontVariant,
+ toString: function () {
+ return [
+ this.fontStyle, this.fontVariant, this.fontWeight,
+ this.fontSize, this.fontFamily
+ ].join(' ');
+ }
+ };
+ };
+
+ var that = this;
+ this.Parse = function (s) {
+ var f = {};
+ var d = svg.trim(svg.compressSpaces(s || '')).split(' ');
+ var set = {fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false};
+ var ff = '';
+ for (var i = 0; i < d.length; i++) {
+ if (!set.fontStyle && that.Styles.indexOf(d[i]) > -1) {
+ if (d[i] !== 'inherit') f.fontStyle = d[i]; set.fontStyle = true;
+ } else if (!set.fontVariant && that.Variants.indexOf(d[i]) > -1) {
+ if (d[i] !== 'inherit') f.fontVariant = d[i]; set.fontStyle = set.fontVariant = true;
+ } else if (!set.fontWeight && that.Weights.indexOf(d[i]) > -1) {
+ if (d[i] !== 'inherit') f.fontWeight = d[i]; set.fontStyle = set.fontVariant = set.fontWeight = true;
+ } else if (!set.fontSize) {
+ if (d[i] !== 'inherit') f.fontSize = d[i].split('/')[0]; set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true;
+ } else {
+ if (d[i] !== 'inherit') ff += d[i];
+ }
+ }
+ if (ff !== '') f.fontFamily = ff;
+ return f;
+ };
+ }();
+
+ // points and paths
+ svg.ToNumberArray = function (s) {
+ var a = svg.trim(svg.compressSpaces((s || '').replace(/,/g, ' '))).split(' ');
+ for (var i = 0; i < a.length; i++) {
+ a[i] = parseFloat(a[i]);
+ }
+ return a;
+ };
+ svg.Point = function (x, y) {
+ this.x = x;
+ this.y = y;
+ };
+ svg.Point.prototype.angleTo = function (p) {
+ return Math.atan2(p.y - this.y, p.x - this.x);
+ };
+
+ svg.Point.prototype.applyTransform = function (v) {
+ var xp = this.x * v[0] + this.y * v[2] + v[4];
+ var yp = this.x * v[1] + this.y * v[3] + v[5];
+ this.x = xp;
+ this.y = yp;
+ };
+
+ svg.CreatePoint = function (s) {
+ var a = svg.ToNumberArray(s);
+ return new svg.Point(a[0], a[1]);
+ };
+ svg.CreatePath = function (s) {
+ var a = svg.ToNumberArray(s);
+ var path = [];
+ for (var i = 0; i < a.length; i += 2) {
+ path.push(new svg.Point(a[i], a[i + 1]));
+ }
+ return path;
+ };
+
+ // bounding box
+ svg.BoundingBox = function (x1, y1, x2, y2) { // pass in initial points if you want
+ this.x1 = Number.NaN;
+ this.y1 = Number.NaN;
+ this.x2 = Number.NaN;
+ this.y2 = Number.NaN;
+
+ this.x = function () { return this.x1; };
+ this.y = function () { return this.y1; };
+ this.width = function () { return this.x2 - this.x1; };
+ this.height = function () { return this.y2 - this.y1; };
+
+ this.addPoint = function (x, y) {
+ if (x != null) {
+ if (isNaN(this.x1) || isNaN(this.x2)) {
+ this.x1 = x;
+ this.x2 = x;
+ }
+ if (x < this.x1) this.x1 = x;
+ if (x > this.x2) this.x2 = x;
+ }
+
+ if (y != null) {
+ if (isNaN(this.y1) || isNaN(this.y2)) {
+ this.y1 = y;
+ this.y2 = y;
+ }
+ if (y < this.y1) this.y1 = y;
+ if (y > this.y2) this.y2 = y;
+ }
+ };
+ this.addX = function (x) { this.addPoint(x, null); };
+ this.addY = function (y) { this.addPoint(null, y); };
+
+ this.addBoundingBox = function (bb) {
+ this.addPoint(bb.x1, bb.y1);
+ this.addPoint(bb.x2, bb.y2);
+ };
+
+ this.addQuadraticCurve = function (p0x, p0y, p1x, p1y, p2x, p2y) {
+ var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+ var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+ var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+ var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+ this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+ };
+
+ this.addBezierCurve = function (p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+ // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+ var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y];
+ this.addPoint(p0[0], p0[1]);
+ this.addPoint(p3[0], p3[1]);
+
+ for (var i = 0; i <= 1; i++) {
+ var f = function (t) {
+ return Math.pow(1 - t, 3) * p0[i] +
+ 3 * Math.pow(1 - t, 2) * t * p1[i] +
+ 3 * (1 - t) * Math.pow(t, 2) * p2[i] +
+ Math.pow(t, 3) * p3[i];
+ };
+
+ var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
+ var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
+ var c = 3 * p1[i] - 3 * p0[i];
+
+ if (a === 0) {
+ if (b === 0) continue;
+ var t = -c / b;
+ if (t > 0 && t < 1) {
+ if (i === 0) this.addX(f(t));
+ if (i === 1) this.addY(f(t));
+ }
+ continue;
+ }
+
+ var b2ac = Math.pow(b, 2) - 4 * c * a;
+ if (b2ac < 0) continue;
+ var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+ if (t1 > 0 && t1 < 1) {
+ if (i === 0) this.addX(f(t1));
+ if (i === 1) this.addY(f(t1));
+ }
+ var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+ if (t2 > 0 && t2 < 1) {
+ if (i === 0) this.addX(f(t2));
+ if (i === 1) this.addY(f(t2));
+ }
+ }
+ };
+
+ this.isPointInBox = function (x, y) {
+ return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2);
+ };
+
+ this.addPoint(x1, y1);
+ this.addPoint(x2, y2);
+ };
+
+ // transforms
+ svg.Transform = function (v) {
+ var that = this;
+ this.Type = {};
+
+ // translate
+ this.Type.translate = function (s) {
+ this.p = svg.CreatePoint(s);
+ this.apply = function (ctx) {
+ ctx.translate(this.p.x || 0.0, this.p.y || 0.0);
+ };
+ this.unapply = function (ctx) {
+ ctx.translate(-1.0 * this.p.x || 0.0, -1.0 * this.p.y || 0.0);
+ };
+ this.applyToPoint = function (p) {
+ p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+ };
+ };
+
+ // rotate
+ this.Type.rotate = function (s) {
+ var a = svg.ToNumberArray(s);
+ this.angle = new svg.Property('angle', a[0]);
+ this.cx = a[1] || 0;
+ this.cy = a[2] || 0;
+ this.apply = function (ctx) {
+ ctx.translate(this.cx, this.cy);
+ ctx.rotate(this.angle.toRadians());
+ ctx.translate(-this.cx, -this.cy);
+ };
+ this.unapply = function (ctx) {
+ ctx.translate(this.cx, this.cy);
+ ctx.rotate(-1.0 * this.angle.toRadians());
+ ctx.translate(-this.cx, -this.cy);
+ };
+ this.applyToPoint = function (p) {
+ var a = this.angle.toRadians();
+ p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]);
+ p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);
+ p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]);
+ };
+ };
+
+ this.Type.scale = function (s) {
+ this.p = svg.CreatePoint(s);
+ this.apply = function (ctx) {
+ ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0);
+ };
+ this.unapply = function (ctx) {
+ ctx.scale(1.0 / this.p.x || 1.0, 1.0 / this.p.y || this.p.x || 1.0);
+ };
+ this.applyToPoint = function (p) {
+ p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]);
+ };
+ };
+
+ this.Type.matrix = function (s) {
+ this.m = svg.ToNumberArray(s);
+ this.apply = function (ctx) {
+ ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]);
+ };
+ this.applyToPoint = function (p) {
+ p.applyTransform(this.m);
+ };
+ };
+
+ this.Type.SkewBase = function (s) {
+ this.base = that.Type.matrix;
+ this.base(s);
+ this.angle = new svg.Property('angle', s);
+ };
+ this.Type.SkewBase.prototype = new this.Type.matrix();
+
+ this.Type.skewX = function (s) {
+ this.base = that.Type.SkewBase;
+ this.base(s);
+ this.m = [1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0];
+ };
+ this.Type.skewX.prototype = new this.Type.SkewBase();
+
+ this.Type.skewY = function (s) {
+ this.base = that.Type.SkewBase;
+ this.base(s);
+ this.m = [1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0];
+ };
+ this.Type.skewY.prototype = new this.Type.SkewBase();
+
+ this.transforms = [];
+
+ this.apply = function (ctx) {
+ for (var i = 0; i < this.transforms.length; i++) {
+ this.transforms[i].apply(ctx);
+ }
+ };
+
+ this.unapply = function (ctx) {
+ for (var i = this.transforms.length - 1; i >= 0; i--) {
+ this.transforms[i].unapply(ctx);
+ }
+ };
+
+ this.applyToPoint = function (p) {
+ for (var i = 0; i < this.transforms.length; i++) {
+ this.transforms[i].applyToPoint(p);
+ }
+ };
+
+ var data = svg.trim(svg.compressSpaces(v)).replace(/\)([a-zA-Z])/g, ') $1').replace(/\)(\s?,\s?)/g, ') ').split(/\s(?=[a-z])/);
+ for (var i = 0; i < data.length; i++) {
+ var type = svg.trim(data[i].split('(')[0]);
+ var s = data[i].split('(')[1].replace(')', '');
+ var transform = new this.Type[type](s);
+ transform.type = type;
+ this.transforms.push(transform);
+ }
+ };
+
+ // aspect ratio
+ svg.AspectRatio = function (ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) {
+ // aspect ratio - https://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+ aspectRatio = svg.compressSpaces(aspectRatio);
+ aspectRatio = aspectRatio.replace(/^defer\s/, ''); // ignore defer
+ var align = aspectRatio.split(' ')[0] || 'xMidYMid';
+ var meetOrSlice = aspectRatio.split(' ')[1] || 'meet';
+
+ // calculate scale
+ var scaleX = width / desiredWidth;
+ var scaleY = height / desiredHeight;
+ var scaleMin = Math.min(scaleX, scaleY);
+ var scaleMax = Math.max(scaleX, scaleY);
+ if (meetOrSlice === 'meet') { desiredWidth *= scaleMin; desiredHeight *= scaleMin; }
+ if (meetOrSlice === 'slice') { desiredWidth *= scaleMax; desiredHeight *= scaleMax; }
+
+ refX = new svg.Property('refX', refX);
+ refY = new svg.Property('refY', refY);
+ if (refX.hasValue() && refY.hasValue()) {
+ ctx.translate(-scaleMin * refX.toPixels('x'), -scaleMin * refY.toPixels('y'));
+ } else {
+ // align
+ if (align.match(/^xMid/) && ((meetOrSlice === 'meet' && scaleMin === scaleY) || (meetOrSlice === 'slice' && scaleMax === scaleY))) ctx.translate(width / 2.0 - desiredWidth / 2.0, 0);
+ if (align.match(/YMid$/) && ((meetOrSlice === 'meet' && scaleMin === scaleX) || (meetOrSlice === 'slice' && scaleMax === scaleX))) ctx.translate(0, height / 2.0 - desiredHeight / 2.0);
+ if (align.match(/^xMax/) && ((meetOrSlice === 'meet' && scaleMin === scaleY) || (meetOrSlice === 'slice' && scaleMax === scaleY))) ctx.translate(width - desiredWidth, 0);
+ if (align.match(/YMax$/) && ((meetOrSlice === 'meet' && scaleMin === scaleX) || (meetOrSlice === 'slice' && scaleMax === scaleX))) ctx.translate(0, height - desiredHeight);
+ }
+
+ // scale
+ if (align === 'none') ctx.scale(scaleX, scaleY);
+ else if (meetOrSlice === 'meet') ctx.scale(scaleMin, scaleMin);
+ else if (meetOrSlice === 'slice') ctx.scale(scaleMax, scaleMax);
+
+ // translate
+ ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY);
+ };
+
+ // elements
+ svg.Element = {};
+
+ svg.EmptyProperty = new svg.Property('EMPTY', '');
+
+ svg.Element.ElementBase = function (node) {
+ this.attributes = {};
+ this.styles = {};
+ this.children = [];
+
+ // get or create attribute
+ this.attribute = function (name, createIfNotExists) {
+ var a = this.attributes[name];
+ if (a != null) return a;
+
+ if (createIfNotExists === true) { a = new svg.Property(name, ''); this.attributes[name] = a; }
+ return a || svg.EmptyProperty;
+ };
+
+ this.getHrefAttribute = function () {
+ for (var a in this.attributes) {
+ if (a.match(/:href$/)) {
+ return this.attributes[a];
+ }
+ }
+ return svg.EmptyProperty;
+ };
+
+ // get or create style, crawls up node tree
+ this.style = function (name, createIfNotExists, skipAncestors) {
+ var s = this.styles[name];
+ if (s != null) return s;
+
+ var a = this.attribute(name);
+ if (a != null && a.hasValue()) {
+ this.styles[name] = a; // move up to me to cache
+ return a;
+ }
+
+ if (skipAncestors !== true) {
+ var p = this.parent;
+ if (p != null) {
+ var ps = p.style(name);
+ if (ps != null && ps.hasValue()) {
+ return ps;
+ }
+ }
+ }
+
+ if (createIfNotExists === true) { s = new svg.Property(name, ''); this.styles[name] = s; }
+ return s || svg.EmptyProperty;
+ };
+
+ // base render
+ this.render = function (ctx) {
+ // don't render display=none
+ if (this.style('display').value === 'none') return;
+
+ // don't render visibility=hidden
+ if (this.style('visibility').value === 'hidden') return;
+
+ ctx.save();
+ if (this.attribute('mask').hasValue()) { // mask
+ var mask = this.attribute('mask').getDefinition();
+ if (mask != null) mask.apply(ctx, this);
+ } else if (this.style('filter').hasValue()) { // filter
+ var filter = this.style('filter').getDefinition();
+ if (filter != null) filter.apply(ctx, this);
+ } else {
+ this.setContext(ctx);
+ this.renderChildren(ctx);
+ this.clearContext(ctx);
+ }
+ ctx.restore();
+ };
+
+ // base set context
+ this.setContext = function (ctx) {
+ // OVERRIDE ME!
+ };
+
+ // base clear context
+ this.clearContext = function (ctx) {
+ // OVERRIDE ME!
+ };
+
+ // base render children
+ this.renderChildren = function (ctx) {
+ for (var i = 0; i < this.children.length; i++) {
+ this.children[i].render(ctx);
+ }
+ };
+
+ this.addChild = function (childNode, create) {
+ var child = childNode;
+ if (create) child = svg.CreateElement(childNode);
+ child.parent = this;
+ if (child.type !== 'title') { this.children.push(child); }
+ };
+
+ if (node != null && node.nodeType === 1) { // ELEMENT_NODE
+ // add children
+ for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
+ if (childNode.nodeType === 1) this.addChild(childNode, true); // ELEMENT_NODE
+ if (this.captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
+ var text = childNode.nodeValue || childNode.text || '';
+ if (svg.trim(svg.compressSpaces(text)) !== '') {
+ this.addChild(new svg.Element.tspan(childNode), false); // TEXT_NODE
+ }
+ }
+ }
+
+ // add attributes
+ for (var i = 0; i < node.attributes.length; i++) {
+ var attribute = node.attributes[i];
+ this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue);
+ }
+
+ // add tag styles
+ var styles = svg.Styles[node.nodeName];
+ if (styles != null) {
+ for (var name in styles) {
+ this.styles[name] = styles[name];
+ }
+ }
+
+ // add class styles
+ if (this.attribute('class').hasValue()) {
+ var classes = svg.compressSpaces(this.attribute('class').value).split(' ');
+ for (var j = 0; j < classes.length; j++) {
+ styles = svg.Styles['.' + classes[j]];
+ if (styles != null) {
+ for (var name in styles) {
+ this.styles[name] = styles[name];
+ }
+ }
+ styles = svg.Styles[node.nodeName + '.' + classes[j]];
+ if (styles != null) {
+ for (var name in styles) {
+ this.styles[name] = styles[name];
+ }
+ }
+ }
+ }
+
+ // add id styles
+ if (this.attribute('id').hasValue()) {
+ var styles = svg.Styles['#' + this.attribute('id').value];
+ if (styles != null) {
+ for (var name in styles) {
+ this.styles[name] = styles[name];
+ }
+ }
+ }
+
+ // add inline styles
+ if (this.attribute('style').hasValue()) {
+ var styles = this.attribute('style').value.split(';');
+ for (var i = 0; i < styles.length; i++) {
+ if (svg.trim(styles[i]) !== '') {
+ var style = styles[i].split(':');
+ var name = svg.trim(style[0]);
+ var value = svg.trim(style[1]);
+ this.styles[name] = new svg.Property(name, value);
+ }
+ }
+ }
+
+ // add id
+ if (this.attribute('id').hasValue()) {
+ if (svg.Definitions[this.attribute('id').value] == null) {
+ svg.Definitions[this.attribute('id').value] = this;
+ }
+ }
+ }
+ };
+
+ svg.Element.RenderedElementBase = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.setContext = function (ctx) {
+ // fill
+ if (this.style('fill').isUrlDefinition()) {
+ var fs = this.style('fill').getFillStyleDefinition(this, this.style('fill-opacity'));
+ if (fs != null) ctx.fillStyle = fs;
+ } else if (this.style('fill').hasValue()) {
+ var fillStyle = this.style('fill');
+ if (fillStyle.value === 'currentColor') fillStyle.value = this.style('color').value;
+ ctx.fillStyle = (fillStyle.value === 'none' ? 'rgba(0,0,0,0)' : fillStyle.value);
+ }
+ if (this.style('fill-opacity').hasValue()) {
+ var fillStyle = new svg.Property('fill', ctx.fillStyle);
+ fillStyle = fillStyle.addOpacity(this.style('fill-opacity'));
+ ctx.fillStyle = fillStyle.value;
+ }
+
+ // stroke
+ if (this.style('stroke').isUrlDefinition()) {
+ var fs = this.style('stroke').getFillStyleDefinition(this, this.style('stroke-opacity'));
+ if (fs != null) ctx.strokeStyle = fs;
+ } else if (this.style('stroke').hasValue()) {
+ var strokeStyle = this.style('stroke');
+ if (strokeStyle.value === 'currentColor') strokeStyle.value = this.style('color').value;
+ ctx.strokeStyle = (strokeStyle.value === 'none' ? 'rgba(0,0,0,0)' : strokeStyle.value);
+ }
+ if (this.style('stroke-opacity').hasValue()) {
+ var strokeStyle = new svg.Property('stroke', ctx.strokeStyle);
+ strokeStyle = strokeStyle.addOpacity(this.style('stroke-opacity'));
+ ctx.strokeStyle = strokeStyle.value;
+ }
+ if (this.style('stroke-width').hasValue()) {
+ var newLineWidth = this.style('stroke-width').toPixels();
+ ctx.lineWidth = newLineWidth === 0 ? 0.001 : newLineWidth; // browsers don't respect 0
+ }
+ if (this.style('stroke-linecap').hasValue()) ctx.lineCap = this.style('stroke-linecap').value;
+ if (this.style('stroke-linejoin').hasValue()) ctx.lineJoin = this.style('stroke-linejoin').value;
+ if (this.style('stroke-miterlimit').hasValue()) ctx.miterLimit = this.style('stroke-miterlimit').value;
+ if (this.style('stroke-dasharray').hasValue() && this.style('stroke-dasharray').value !== 'none') {
+ var gaps = svg.ToNumberArray(this.style('stroke-dasharray').value);
+ if (typeof ctx.setLineDash !== 'undefined') {
+ ctx.setLineDash(gaps);
+ } else if (typeof ctx.webkitLineDash !== 'undefined') {
+ ctx.webkitLineDash = gaps;
+ } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
+ ctx.mozDash = gaps;
+ }
+
+ var offset = this.style('stroke-dashoffset').numValueOrDefault(1);
+ if (typeof ctx.lineDashOffset !== 'undefined') {
+ ctx.lineDashOffset = offset;
+ } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {
+ ctx.webkitLineDashOffset = offset;
+ } else if (typeof ctx.mozDashOffset !== 'undefined') {
+ ctx.mozDashOffset = offset;
+ }
+ }
+
+ // font
+ if (typeof ctx.font !== 'undefined') {
+ ctx.font = svg.Font.CreateFont(
+ this.style('font-style').value,
+ this.style('font-variant').value,
+ this.style('font-weight').value,
+ this.style('font-size').hasValue() ? this.style('font-size').toPixels() + 'px' : '',
+ this.style('font-family').value).toString();
+ }
+
+ // transform
+ if (this.attribute('transform').hasValue()) {
+ var transform = new svg.Transform(this.attribute('transform').value);
+ transform.apply(ctx);
+ }
+
+ // clip
+ if (this.style('clip-path', false, true).hasValue()) {
+ var clip = this.style('clip-path', false, true).getDefinition();
+ if (clip != null) clip.apply(ctx);
+ }
+
+ // opacity
+ if (this.style('opacity').hasValue()) {
+ ctx.globalAlpha = this.style('opacity').numValue();
+ }
+ };
+ };
+ svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase();
+
+ svg.Element.PathElementBase = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.path = function (ctx) {
+ if (ctx != null) ctx.beginPath();
+ return new svg.BoundingBox();
+ };
+
+ this.renderChildren = function (ctx) {
+ this.path(ctx);
+ svg.Mouse.checkPath(this, ctx);
+ if (ctx.fillStyle !== '') {
+ if (this.style('fill-rule').valueOrDefault('inherit') !== 'inherit') {
+ ctx.fill(this.style('fill-rule').value);
+ } else {
+ ctx.fill();
+ }
+ }
+ if (ctx.strokeStyle !== '') ctx.stroke();
+
+ var markers = this.getMarkers();
+ if (markers != null) {
+ if (this.style('marker-start').isUrlDefinition()) {
+ var marker = this.style('marker-start').getDefinition();
+ marker.render(ctx, markers[0][0], markers[0][1]);
+ }
+ if (this.style('marker-mid').isUrlDefinition()) {
+ var marker = this.style('marker-mid').getDefinition();
+ for (var i = 1; i < markers.length - 1; i++) {
+ marker.render(ctx, markers[i][0], markers[i][1]);
+ }
+ }
+ if (this.style('marker-end').isUrlDefinition()) {
+ var marker = this.style('marker-end').getDefinition();
+ marker.render(ctx, markers[markers.length - 1][0], markers[markers.length - 1][1]);
+ }
+ }
+ };
+
+ this.getBoundingBox = function () {
+ return this.path();
+ };
+
+ this.getMarkers = function () {
+ return null;
+ };
+ };
+ svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase();
+
+ // svg element
+ svg.Element.svg = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.baseClearContext = this.clearContext;
+ this.clearContext = function (ctx) {
+ this.baseClearContext(ctx);
+ svg.ViewPort.RemoveCurrent();
+ };
+
+ this.baseSetContext = this.setContext;
+ this.setContext = function (ctx) {
+ // initial values and defaults
+ ctx.strokeStyle = 'rgba(0,0,0,0)';
+ ctx.lineCap = 'butt';
+ ctx.lineJoin = 'miter';
+ ctx.miterLimit = 4;
+ if (typeof ctx.font !== 'undefined' && typeof window.getComputedStyle !== 'undefined') {
+ ctx.font = window.getComputedStyle(ctx.canvas).getPropertyValue('font');
+ }
+
+ this.baseSetContext(ctx);
+
+ // create new view port
+ if (!this.attribute('x').hasValue()) this.attribute('x', true).value = 0;
+ if (!this.attribute('y').hasValue()) this.attribute('y', true).value = 0;
+ ctx.translate(this.attribute('x').toPixels('x'), this.attribute('y').toPixels('y'));
+
+ var width = svg.ViewPort.width();
+ var height = svg.ViewPort.height();
+
+ if (!this.attribute('width').hasValue()) this.attribute('width', true).value = '100%';
+ if (!this.attribute('height').hasValue()) this.attribute('height', true).value = '100%';
+ if (typeof this.root === 'undefined') {
+ width = this.attribute('width').toPixels('x');
+ height = this.attribute('height').toPixels('y');
+
+ var x = 0;
+ var y = 0;
+ if (this.attribute('refX').hasValue() && this.attribute('refY').hasValue()) {
+ x = -this.attribute('refX').toPixels('x');
+ y = -this.attribute('refY').toPixels('y');
+ }
+
+ if (this.attribute('overflow').valueOrDefault('hidden') !== 'visible') {
+ ctx.beginPath();
+ ctx.moveTo(x, y);
+ ctx.lineTo(width, y);
+ ctx.lineTo(width, height);
+ ctx.lineTo(x, height);
+ ctx.closePath();
+ ctx.clip();
+ }
+ }
+ svg.ViewPort.SetCurrent(width, height);
+
+ // viewbox
+ if (this.attribute('viewBox').hasValue()) {
+ var viewBox = svg.ToNumberArray(this.attribute('viewBox').value);
+ var minX = viewBox[0];
+ var minY = viewBox[1];
+ width = viewBox[2];
+ height = viewBox[3];
+
+ svg.AspectRatio(
+ ctx,
+ this.attribute('preserveAspectRatio').value,
+ svg.ViewPort.width(),
+ width,
+ svg.ViewPort.height(),
+ height,
+ minX,
+ minY,
+ this.attribute('refX').value,
+ this.attribute('refY').value
+ );
+
+ svg.ViewPort.RemoveCurrent();
+ svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);
+ }
+ };
+ };
+ svg.Element.svg.prototype = new svg.Element.RenderedElementBase();
+
+ // rect element
+ svg.Element.rect = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ this.path = function (ctx) {
+ var x = this.attribute('x').toPixels('x');
+ var y = this.attribute('y').toPixels('y');
+ var width = this.attribute('width').toPixels('x');
+ var height = this.attribute('height').toPixels('y');
+ var rx = this.attribute('rx').toPixels('x');
+ var ry = this.attribute('ry').toPixels('y');
+ if (this.attribute('rx').hasValue() && !this.attribute('ry').hasValue()) ry = rx;
+ if (this.attribute('ry').hasValue() && !this.attribute('rx').hasValue()) rx = ry;
+ rx = Math.min(rx, width / 2.0);
+ ry = Math.min(ry, height / 2.0);
+ if (ctx != null) {
+ ctx.beginPath();
+ ctx.moveTo(x + rx, y);
+ ctx.lineTo(x + width - rx, y);
+ ctx.quadraticCurveTo(x + width, y, x + width, y + ry);
+ ctx.lineTo(x + width, y + height - ry);
+ ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);
+ ctx.lineTo(x + rx, y + height);
+ ctx.quadraticCurveTo(x, y + height, x, y + height - ry);
+ ctx.lineTo(x, y + ry);
+ ctx.quadraticCurveTo(x, y, x + rx, y);
+ ctx.closePath();
+ }
+
+ return new svg.BoundingBox(x, y, x + width, y + height);
+ };
+ };
+ svg.Element.rect.prototype = new svg.Element.PathElementBase();
+
+ // circle element
+ svg.Element.circle = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ this.path = function (ctx) {
+ var cx = this.attribute('cx').toPixels('x');
+ var cy = this.attribute('cy').toPixels('y');
+ var r = this.attribute('r').toPixels();
+
+ if (ctx != null) {
+ ctx.beginPath();
+ ctx.arc(cx, cy, r, 0, Math.PI * 2, true);
+ ctx.closePath();
+ }
+
+ return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r);
+ };
+ };
+ svg.Element.circle.prototype = new svg.Element.PathElementBase();
+
+ // ellipse element
+ svg.Element.ellipse = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ this.path = function (ctx) {
+ var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+ var rx = this.attribute('rx').toPixels('x');
+ var ry = this.attribute('ry').toPixels('y');
+ var cx = this.attribute('cx').toPixels('x');
+ var cy = this.attribute('cy').toPixels('y');
+
+ if (ctx != null) {
+ ctx.beginPath();
+ ctx.moveTo(cx, cy - ry);
+ ctx.bezierCurveTo(cx + (KAPPA * rx), cy - ry, cx + rx, cy - (KAPPA * ry), cx + rx, cy);
+ ctx.bezierCurveTo(cx + rx, cy + (KAPPA * ry), cx + (KAPPA * rx), cy + ry, cx, cy + ry);
+ ctx.bezierCurveTo(cx - (KAPPA * rx), cy + ry, cx - rx, cy + (KAPPA * ry), cx - rx, cy);
+ ctx.bezierCurveTo(cx - rx, cy - (KAPPA * ry), cx - (KAPPA * rx), cy - ry, cx, cy - ry);
+ ctx.closePath();
+ }
+
+ return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+ };
+ };
+ svg.Element.ellipse.prototype = new svg.Element.PathElementBase();
+
+ // line element
+ svg.Element.line = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ this.getPoints = function () {
+ return [
+ new svg.Point(this.attribute('x1').toPixels('x'), this.attribute('y1').toPixels('y')),
+ new svg.Point(this.attribute('x2').toPixels('x'), this.attribute('y2').toPixels('y'))];
+ };
+
+ this.path = function (ctx) {
+ var points = this.getPoints();
+
+ if (ctx != null) {
+ ctx.beginPath();
+ ctx.moveTo(points[0].x, points[0].y);
+ ctx.lineTo(points[1].x, points[1].y);
+ }
+
+ return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y);
+ };
+
+ this.getMarkers = function () {
+ var points = this.getPoints();
+ var a = points[0].angleTo(points[1]);
+ return [[points[0], a], [points[1], a]];
+ };
+ };
+ svg.Element.line.prototype = new svg.Element.PathElementBase();
+
+ // polyline element
+ svg.Element.polyline = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ this.points = svg.CreatePath(this.attribute('points').value);
+ this.path = function (ctx) {
+ var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y);
+ if (ctx != null) {
+ ctx.beginPath();
+ ctx.moveTo(this.points[0].x, this.points[0].y);
+ }
+ for (var i = 1; i < this.points.length; i++) {
+ bb.addPoint(this.points[i].x, this.points[i].y);
+ if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y);
+ }
+ return bb;
+ };
+
+ this.getMarkers = function () {
+ var markers = [];
+ for (var i = 0; i < this.points.length - 1; i++) {
+ markers.push([this.points[i], this.points[i].angleTo(this.points[i + 1])]);
+ }
+ markers.push([this.points[this.points.length - 1], markers[markers.length - 1][1]]);
+ return markers;
+ };
+ };
+ svg.Element.polyline.prototype = new svg.Element.PathElementBase();
+
+ // polygon element
+ svg.Element.polygon = function (node) {
+ this.base = svg.Element.polyline;
+ this.base(node);
+
+ this.basePath = this.path;
+ this.path = function (ctx) {
+ var bb = this.basePath(ctx);
+ if (ctx != null) {
+ ctx.lineTo(this.points[0].x, this.points[0].y);
+ ctx.closePath();
+ }
+ return bb;
+ };
+ };
+ svg.Element.polygon.prototype = new svg.Element.polyline();
+
+ // path element
+ svg.Element.path = function (node) {
+ this.base = svg.Element.PathElementBase;
+ this.base(node);
+
+ var d = this.attribute('d').value;
+ // TODO: convert to real lexer based on https://www.w3.org/TR/SVG11/paths.html#PathDataBNF
+ d = d.replace(/,/gm, ' '); // get rid of all commas
+ d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from commands
+ d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from commands
+ d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm, '$1 $2'); // separate commands from points
+ d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2'); // separate commands from points
+ d = d.replace(/([0-9])([+-])/gm, '$1 $2'); // separate digits when no comma
+ d = d.replace(/(\.[0-9]*)(\.)/gm, '$1 $2'); // separate digits when no comma
+ d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm, '$1 $3 $4 '); // shorthand elliptical arc path syntax
+ d = svg.compressSpaces(d); // compress multiple spaces
+ d = svg.trim(d);
+ this.PathParser = new function (d) {
+ this.tokens = d.split(' ');
+
+ this.reset = function () {
+ this.i = -1;
+ this.command = '';
+ this.previousCommand = '';
+ this.start = new svg.Point(0, 0);
+ this.control = new svg.Point(0, 0);
+ this.current = new svg.Point(0, 0);
+ this.points = [];
+ this.angles = [];
+ };
+
+ this.isEnd = function () {
+ return this.i >= this.tokens.length - 1;
+ };
+
+ this.isCommandOrEnd = function () {
+ if (this.isEnd()) return true;
+ return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null;
+ };
+
+ this.isRelativeCommand = function () {
+ switch (this.command) {
+ case 'm':
+ case 'l':
+ case 'h':
+ case 'v':
+ case 'c':
+ case 's':
+ case 'q':
+ case 't':
+ case 'a':
+ case 'z':
+ return true;
+ }
+ return false;
+ };
+
+ this.getToken = function () {
+ this.i++;
+ return this.tokens[this.i];
+ };
+
+ this.getScalar = function () {
+ return parseFloat(this.getToken());
+ };
+
+ this.nextCommand = function () {
+ this.previousCommand = this.command;
+ this.command = this.getToken();
+ };
+
+ this.getPoint = function () {
+ var p = new svg.Point(this.getScalar(), this.getScalar());
+ return this.makeAbsolute(p);
+ };
+
+ this.getAsControlPoint = function () {
+ var p = this.getPoint();
+ this.control = p;
+ return p;
+ };
+
+ this.getAsCurrentPoint = function () {
+ var p = this.getPoint();
+ this.current = p;
+ return p;
+ };
+
+ this.getReflectedControlPoint = function () {
+ if (this.previousCommand.toLowerCase() !== 'c' &&
+ this.previousCommand.toLowerCase() !== 's' &&
+ this.previousCommand.toLowerCase() !== 'q' &&
+ this.previousCommand.toLowerCase() !== 't') {
+ return this.current;
+ }
+
+ // reflect point
+ var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y);
+ return p;
+ };
+
+ this.makeAbsolute = function (p) {
+ if (this.isRelativeCommand()) {
+ p.x += this.current.x;
+ p.y += this.current.y;
+ }
+ return p;
+ };
+
+ this.addMarker = function (p, from, priorTo) {
+ // if the last angle isn't filled in because we didn't have this point yet ...
+ if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length - 1] == null) {
+ this.angles[this.angles.length - 1] = this.points[this.points.length - 1].angleTo(priorTo);
+ }
+ this.addMarkerAngle(p, from == null ? null : from.angleTo(p));
+ };
+
+ this.addMarkerAngle = function (p, a) {
+ this.points.push(p);
+ this.angles.push(a);
+ };
+
+ this.getMarkerPoints = function () { return this.points; };
+ this.getMarkerAngles = function () {
+ for (var i = 0; i < this.angles.length; i++) {
+ if (this.angles[i] == null) {
+ for (var j = i + 1; j < this.angles.length; j++) {
+ if (this.angles[j] != null) {
+ this.angles[i] = this.angles[j];
+ break;
+ }
+ }
+ }
+ }
+ return this.angles;
+ };
+ }(d);
+
+ this.path = function (ctx) {
+ var pp = this.PathParser;
+ pp.reset();
+
+ var bb = new svg.BoundingBox();
+ if (ctx != null) ctx.beginPath();
+ while (!pp.isEnd()) {
+ pp.nextCommand();
+ switch (pp.command) {
+ case 'M':
+ case 'm':
+ var p = pp.getAsCurrentPoint();
+ pp.addMarker(p);
+ bb.addPoint(p.x, p.y);
+ if (ctx != null) ctx.moveTo(p.x, p.y);
+ pp.start = pp.current;
+ while (!pp.isCommandOrEnd()) {
+ var p = pp.getAsCurrentPoint();
+ pp.addMarker(p, pp.start);
+ bb.addPoint(p.x, p.y);
+ if (ctx != null) ctx.lineTo(p.x, p.y);
+ }
+ break;
+ case 'L':
+ case 'l':
+ while (!pp.isCommandOrEnd()) {
+ var c = pp.current;
+ var p = pp.getAsCurrentPoint();
+ pp.addMarker(p, c);
+ bb.addPoint(p.x, p.y);
+ if (ctx != null) ctx.lineTo(p.x, p.y);
+ }
+ break;
+ case 'H':
+ case 'h':
+ while (!pp.isCommandOrEnd()) {
+ var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y);
+ pp.addMarker(newP, pp.current);
+ pp.current = newP;
+ bb.addPoint(pp.current.x, pp.current.y);
+ if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+ }
+ break;
+ case 'V':
+ case 'v':
+ while (!pp.isCommandOrEnd()) {
+ var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar());
+ pp.addMarker(newP, pp.current);
+ pp.current = newP;
+ bb.addPoint(pp.current.x, pp.current.y);
+ if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);
+ }
+ break;
+ case 'C':
+ case 'c':
+ while (!pp.isCommandOrEnd()) {
+ var curr = pp.current;
+ var p1 = pp.getPoint();
+ var cntrl = pp.getAsControlPoint();
+ var cp = pp.getAsCurrentPoint();
+ pp.addMarker(cp, cntrl, p1);
+ bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ }
+ break;
+ case 'S':
+ case 's':
+ while (!pp.isCommandOrEnd()) {
+ var curr = pp.current;
+ var p1 = pp.getReflectedControlPoint();
+ var cntrl = pp.getAsControlPoint();
+ var cp = pp.getAsCurrentPoint();
+ pp.addMarker(cp, cntrl, p1);
+ bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ }
+ break;
+ case 'Q':
+ case 'q':
+ while (!pp.isCommandOrEnd()) {
+ var curr = pp.current;
+ var cntrl = pp.getAsControlPoint();
+ var cp = pp.getAsCurrentPoint();
+ pp.addMarker(cp, cntrl, cntrl);
+ bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+ }
+ break;
+ case 'T':
+ case 't':
+ while (!pp.isCommandOrEnd()) {
+ var curr = pp.current;
+ var cntrl = pp.getReflectedControlPoint();
+ pp.control = cntrl;
+ var cp = pp.getAsCurrentPoint();
+ pp.addMarker(cp, cntrl, cntrl);
+ bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);
+ if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);
+ }
+ break;
+ case 'A':
+ case 'a':
+ while (!pp.isCommandOrEnd()) {
+ var curr = pp.current;
+ var rx = pp.getScalar();
+ var ry = pp.getScalar();
+ var xAxisRotation = pp.getScalar() * (Math.PI / 180.0);
+ var largeArcFlag = pp.getScalar();
+ var sweepFlag = pp.getScalar();
+ var cp = pp.getAsCurrentPoint();
+
+ // Conversion from endpoint to center parameterization
+ // https://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter
+
+ // x1', y1'
+ var currp = new svg.Point(
+ Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,
+ -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0
+ );
+ // adjust radii
+ var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);
+ if (l > 1) {
+ rx *= Math.sqrt(l);
+ ry *= Math.sqrt(l);
+ }
+ // cx', cy'
+ var s = (largeArcFlag === sweepFlag ? -1 : 1) * Math.sqrt(
+ ((Math.pow(rx, 2) * Math.pow(ry, 2)) - (Math.pow(rx, 2) * Math.pow(currp.y, 2)) - (Math.pow(ry, 2) * Math.pow(currp.x, 2))) /
+ (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2))
+ );
+ if (isNaN(s)) s = 0;
+ var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx);
+ // cx, cy
+ var centp = new svg.Point(
+ (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,
+ (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y
+ );
+ // vector magnitude
+ var m = function (v) { return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); };
+ // ratio between two vectors
+ var r = function (u, v) { return (u[0] * v[0] + u[1] * v[1]) / (m(u) * m(v)); };
+ // angle between two vectors
+ var a = function (u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(r(u, v)); };
+ // initial angle
+ var a1 = a([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]);
+ // angle delta
+ var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];
+ var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];
+ var ad = a(u, v);
+ if (r(u, v) <= -1) ad = Math.PI;
+ if (r(u, v) >= 1) ad = 0;
+
+ // for markers
+ var dir = 1 - sweepFlag ? 1.0 : -1.0;
+ var ah = a1 + dir * (ad / 2.0);
+ var halfWay = new svg.Point(
+ centp.x + rx * Math.cos(ah),
+ centp.y + ry * Math.sin(ah)
+ );
+ pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+ pp.addMarkerAngle(cp, ah - dir * Math.PI);
+
+ bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better
+ if (ctx != null) {
+ var r = rx > ry ? rx : ry;
+ var sx = rx > ry ? 1 : rx / ry;
+ var sy = rx > ry ? ry / rx : 1;
+
+ ctx.translate(centp.x, centp.y);
+ ctx.rotate(xAxisRotation);
+ ctx.scale(sx, sy);
+ ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag);
+ ctx.scale(1 / sx, 1 / sy);
+ ctx.rotate(-xAxisRotation);
+ ctx.translate(-centp.x, -centp.y);
+ }
+ }
+ break;
+ case 'Z':
+ case 'z':
+ if (ctx != null) ctx.closePath();
+ pp.current = pp.start;
+ }
+ }
+
+ return bb;
+ };
+
+ this.getMarkers = function () {
+ var points = this.PathParser.getMarkerPoints();
+ var angles = this.PathParser.getMarkerAngles();
+
+ var markers = [];
+ for (var i = 0; i < points.length; i++) {
+ markers.push([points[i], angles[i]]);
+ }
+ return markers;
+ };
+ };
+ svg.Element.path.prototype = new svg.Element.PathElementBase();
+
+ // pattern element
+ svg.Element.pattern = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.createPattern = function (ctx, element) {
+ var width = this.attribute('width').toPixels('x', true);
+ var height = this.attribute('height').toPixels('y', true);
+
+ // render me using a temporary svg element
+ var tempSvg = new svg.Element.svg();
+ tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+ tempSvg.attributes['width'] = new svg.Property('width', width + 'px');
+ tempSvg.attributes['height'] = new svg.Property('height', height + 'px');
+ tempSvg.attributes['transform'] = new svg.Property('transform', this.attribute('patternTransform').value);
+ tempSvg.children = this.children;
+
+ var c = document.createElement('canvas');
+ c.width = width;
+ c.height = height;
+ var cctx = c.getContext('2d');
+ if (this.attribute('x').hasValue() && this.attribute('y').hasValue()) {
+ cctx.translate(this.attribute('x').toPixels('x', true), this.attribute('y').toPixels('y', true));
+ }
+ // render 3x3 grid so when we transform there's no white space on edges
+ for (var x = -1; x <= 1; x++) {
+ for (var y = -1; y <= 1; y++) {
+ cctx.save();
+ cctx.translate(x * c.width, y * c.height);
+ tempSvg.render(cctx);
+ cctx.restore();
+ }
+ }
+ var pattern = ctx.createPattern(c, 'repeat');
+ return pattern;
+ };
+ };
+ svg.Element.pattern.prototype = new svg.Element.ElementBase();
+
+ // marker element
+ svg.Element.marker = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.baseRender = this.render;
+ this.render = function (ctx, point, angle) {
+ ctx.translate(point.x, point.y);
+ if (this.attribute('orient').valueOrDefault('auto') === 'auto') ctx.rotate(angle);
+ if (this.attribute('markerUnits').valueOrDefault('strokeWidth') === 'strokeWidth') ctx.scale(ctx.lineWidth, ctx.lineWidth);
+ ctx.save();
+
+ // render me using a temporary svg element
+ var tempSvg = new svg.Element.svg();
+ tempSvg.attributes['viewBox'] = new svg.Property('viewBox', this.attribute('viewBox').value);
+ tempSvg.attributes['refX'] = new svg.Property('refX', this.attribute('refX').value);
+ tempSvg.attributes['refY'] = new svg.Property('refY', this.attribute('refY').value);
+ tempSvg.attributes['width'] = new svg.Property('width', this.attribute('markerWidth').value);
+ tempSvg.attributes['height'] = new svg.Property('height', this.attribute('markerHeight').value);
+ tempSvg.attributes['fill'] = new svg.Property('fill', this.attribute('fill').valueOrDefault('black'));
+ tempSvg.attributes['stroke'] = new svg.Property('stroke', this.attribute('stroke').valueOrDefault('none'));
+ tempSvg.children = this.children;
+ tempSvg.render(ctx);
+
+ ctx.restore();
+ if (this.attribute('markerUnits').valueOrDefault('strokeWidth') === 'strokeWidth') ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+ if (this.attribute('orient').valueOrDefault('auto') === 'auto') ctx.rotate(-angle);
+ ctx.translate(-point.x, -point.y);
+ };
+ };
+ svg.Element.marker.prototype = new svg.Element.ElementBase();
+
+ // definitions element
+ svg.Element.defs = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.render = function (ctx) {
+ // NOOP
+ };
+ };
+ svg.Element.defs.prototype = new svg.Element.ElementBase();
+
+ // base for gradients
+ svg.Element.GradientBase = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.gradientUnits = this.attribute('gradientUnits').valueOrDefault('objectBoundingBox');
+
+ this.stops = [];
+ for (var i = 0; i < this.children.length; i++) {
+ var child = this.children[i];
+ if (child.type === 'stop') this.stops.push(child);
+ }
+
+ this.getGradient = function () {
+ // OVERRIDE ME!
+ };
+
+ this.createGradient = function (ctx, element, parentOpacityProp) {
+ var stopsContainer = this;
+ if (this.getHrefAttribute().hasValue()) {
+ stopsContainer = this.getHrefAttribute().getDefinition();
+ }
+
+ var addParentOpacity = function (color) {
+ if (parentOpacityProp.hasValue()) {
+ var p = new svg.Property('color', color);
+ return p.addOpacity(parentOpacityProp).value;
+ }
+ return color;
+ };
+
+ var g = this.getGradient(ctx, element);
+ if (g == null) return addParentOpacity(stopsContainer.stops[stopsContainer.stops.length - 1].color);
+ for (var i = 0; i < stopsContainer.stops.length; i++) {
+ g.addColorStop(stopsContainer.stops[i].offset, addParentOpacity(stopsContainer.stops[i].color));
+ }
+
+ if (this.attribute('gradientTransform').hasValue()) {
+ // render as transformed pattern on temporary canvas
+ var rootView = svg.ViewPort.viewPorts[0];
+
+ var rect = new svg.Element.rect();
+ rect.attributes['x'] = new svg.Property('x', -svg.MAX_VIRTUAL_PIXELS / 3.0);
+ rect.attributes['y'] = new svg.Property('y', -svg.MAX_VIRTUAL_PIXELS / 3.0);
+ rect.attributes['width'] = new svg.Property('width', svg.MAX_VIRTUAL_PIXELS);
+ rect.attributes['height'] = new svg.Property('height', svg.MAX_VIRTUAL_PIXELS);
+
+ var group = new svg.Element.g();
+ group.attributes['transform'] = new svg.Property('transform', this.attribute('gradientTransform').value);
+ group.children = [ rect ];
+
+ var tempSvg = new svg.Element.svg();
+ tempSvg.attributes['x'] = new svg.Property('x', 0);
+ tempSvg.attributes['y'] = new svg.Property('y', 0);
+ tempSvg.attributes['width'] = new svg.Property('width', rootView.width);
+ tempSvg.attributes['height'] = new svg.Property('height', rootView.height);
+ tempSvg.children = [ group ];
+
+ var c = document.createElement('canvas');
+ c.width = rootView.width;
+ c.height = rootView.height;
+ var tempCtx = c.getContext('2d');
+ tempCtx.fillStyle = g;
+ tempSvg.render(tempCtx);
+ return tempCtx.createPattern(c, 'no-repeat');
+ }
+
+ return g;
+ };
+ };
+ svg.Element.GradientBase.prototype = new svg.Element.ElementBase();
+
+ // linear gradient element
+ svg.Element.linearGradient = function (node) {
+ this.base = svg.Element.GradientBase;
+ this.base(node);
+
+ this.getGradient = function (ctx, element) {
+ var bb = this.gradientUnits === 'objectBoundingBox'
+ ? element.getBoundingBox()
+ : null;
+
+ if (!this.attribute('x1').hasValue() &&
+ !this.attribute('y1').hasValue() &&
+ !this.attribute('x2').hasValue() &&
+ !this.attribute('y2').hasValue()
+ ) {
+ this.attribute('x1', true).value = 0;
+ this.attribute('y1', true).value = 0;
+ this.attribute('x2', true).value = 1;
+ this.attribute('y2', true).value = 0;
+ }
+
+ var x1 = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.x() + bb.width() * this.attribute('x1').numValue()
+ : this.attribute('x1').toPixels('x'));
+ var y1 = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.y() + bb.height() * this.attribute('y1').numValue()
+ : this.attribute('y1').toPixels('y'));
+ var x2 = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.x() + bb.width() * this.attribute('x2').numValue()
+ : this.attribute('x2').toPixels('x'));
+ var y2 = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.y() + bb.height() * this.attribute('y2').numValue()
+ : this.attribute('y2').toPixels('y'));
+
+ if (x1 === x2 && y1 === y2) return null;
+ return ctx.createLinearGradient(x1, y1, x2, y2);
+ };
+ };
+ svg.Element.linearGradient.prototype = new svg.Element.GradientBase();
+
+ // radial gradient element
+ svg.Element.radialGradient = function (node) {
+ this.base = svg.Element.GradientBase;
+ this.base(node);
+
+ this.getGradient = function (ctx, element) {
+ var bb = element.getBoundingBox();
+
+ if (!this.attribute('cx').hasValue()) this.attribute('cx', true).value = '50%';
+ if (!this.attribute('cy').hasValue()) this.attribute('cy', true).value = '50%';
+ if (!this.attribute('r').hasValue()) this.attribute('r', true).value = '50%';
+
+ var cx = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.x() + bb.width() * this.attribute('cx').numValue()
+ : this.attribute('cx').toPixels('x'));
+ var cy = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.y() + bb.height() * this.attribute('cy').numValue()
+ : this.attribute('cy').toPixels('y'));
+
+ var fx = cx;
+ var fy = cy;
+ if (this.attribute('fx').hasValue()) {
+ fx = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.x() + bb.width() * this.attribute('fx').numValue()
+ : this.attribute('fx').toPixels('x'));
+ }
+ if (this.attribute('fy').hasValue()) {
+ fy = (this.gradientUnits === 'objectBoundingBox'
+ ? bb.y() + bb.height() * this.attribute('fy').numValue()
+ : this.attribute('fy').toPixels('y'));
+ }
+
+ var r = (this.gradientUnits === 'objectBoundingBox'
+ ? (bb.width() + bb.height()) / 2.0 * this.attribute('r').numValue()
+ : this.attribute('r').toPixels());
+
+ return ctx.createRadialGradient(fx, fy, 0, cx, cy, r);
+ };
+ };
+ svg.Element.radialGradient.prototype = new svg.Element.GradientBase();
+
+ // gradient stop element
+ svg.Element.stop = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.offset = this.attribute('offset').numValue();
+ if (this.offset < 0) this.offset = 0;
+ if (this.offset > 1) this.offset = 1;
+
+ var stopColor = this.style('stop-color');
+ if (this.style('stop-opacity').hasValue()) stopColor = stopColor.addOpacity(this.style('stop-opacity'));
+ this.color = stopColor.value;
+ };
+ svg.Element.stop.prototype = new svg.Element.ElementBase();
+
+ // animation base element
+ svg.Element.AnimateBase = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ svg.Animations.push(this);
+
+ this.duration = 0.0;
+ this.begin = this.attribute('begin').toMilliseconds();
+ this.maxDuration = this.begin + this.attribute('dur').toMilliseconds();
+
+ this.getProperty = function () {
+ var attributeType = this.attribute('attributeType').value;
+ var attributeName = this.attribute('attributeName').value;
+
+ if (attributeType === 'CSS') {
+ return this.parent.style(attributeName, true);
+ }
+ return this.parent.attribute(attributeName, true);
+ };
+
+ this.initialValue = null;
+ this.initialUnits = '';
+ this.removed = false;
+
+ this.calcValue = function () {
+ // OVERRIDE ME!
+ return '';
+ };
+
+ this.update = function (delta) {
+ // set initial value
+ if (this.initialValue == null) {
+ this.initialValue = this.getProperty().value;
+ this.initialUnits = this.getProperty().getUnits();
+ }
+
+ // if we're past the end time
+ if (this.duration > this.maxDuration) {
+ // loop for indefinitely repeating animations
+ if (this.attribute('repeatCount').value === 'indefinite' ||
+ this.attribute('repeatDur').value === 'indefinite') {
+ this.duration = 0.0;
+ } else if (this.attribute('fill').valueOrDefault('remove') === 'freeze' && !this.frozen) {
+ this.frozen = true;
+ this.parent.animationFrozen = true;
+ this.parent.animationFrozenValue = this.getProperty().value;
+ } else if (this.attribute('fill').valueOrDefault('remove') === 'remove' && !this.removed) {
+ this.removed = true;
+ this.getProperty().value = this.parent.animationFrozen ? this.parent.animationFrozenValue : this.initialValue;
+ return true;
+ }
+ return false;
+ }
+ this.duration = this.duration + delta;
+
+ // if we're past the begin time
+ var updated = false;
+ if (this.begin < this.duration) {
+ var newValue = this.calcValue(); // tween
+
+ if (this.attribute('type').hasValue()) {
+ // for transform, etc.
+ var type = this.attribute('type').value;
+ newValue = type + '(' + newValue + ')';
+ }
+
+ this.getProperty().value = newValue;
+ updated = true;
+ }
+
+ return updated;
+ };
+
+ this.from = this.attribute('from');
+ this.to = this.attribute('to');
+ this.values = this.attribute('values');
+ if (this.values.hasValue()) this.values.value = this.values.value.split(';');
+
+ // fraction of duration we've covered
+ this.progress = function () {
+ var ret = { progress: (this.duration - this.begin) / (this.maxDuration - this.begin) };
+ if (this.values.hasValue()) {
+ var p = ret.progress * (this.values.value.length - 1);
+ var lb = Math.floor(p), ub = Math.ceil(p);
+ ret.from = new svg.Property('from', parseFloat(this.values.value[lb]));
+ ret.to = new svg.Property('to', parseFloat(this.values.value[ub]));
+ ret.progress = (p - lb) / (ub - lb);
+ } else {
+ ret.from = this.from;
+ ret.to = this.to;
+ }
+ return ret;
+ };
+ };
+ svg.Element.AnimateBase.prototype = new svg.Element.ElementBase();
+
+ // animate element
+ svg.Element.animate = function (node) {
+ this.base = svg.Element.AnimateBase;
+ this.base(node);
+
+ this.calcValue = function () {
+ var p = this.progress();
+
+ // tween value linearly
+ var newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress;
+ return newValue + this.initialUnits;
+ };
+ };
+ svg.Element.animate.prototype = new svg.Element.AnimateBase();
+
+ // animate color element
+ svg.Element.animateColor = function (node) {
+ this.base = svg.Element.AnimateBase;
+ this.base(node);
+
+ this.calcValue = function () {
+ var p = this.progress();
+ var from = new RGBColor(p.from.value);
+ var to = new RGBColor(p.to.value);
+
+ if (from.ok && to.ok) {
+ // tween color linearly
+ var r = from.r + (to.r - from.r) * p.progress;
+ var g = from.g + (to.g - from.g) * p.progress;
+ var b = from.b + (to.b - from.b) * p.progress;
+ return 'rgb(' + parseInt(r, 10) + ',' + parseInt(g, 10) + ',' + parseInt(b, 10) + ')';
+ }
+ return this.attribute('from').value;
+ };
+ };
+ svg.Element.animateColor.prototype = new svg.Element.AnimateBase();
+
+ // animate transform element
+ svg.Element.animateTransform = function (node) {
+ this.base = svg.Element.AnimateBase;
+ this.base(node);
+
+ this.calcValue = function () {
+ var p = this.progress();
+
+ // tween value linearly
+ var from = svg.ToNumberArray(p.from.value);
+ var to = svg.ToNumberArray(p.to.value);
+ var newValue = '';
+ for (var i = 0; i < from.length; i++) {
+ newValue += from[i] + (to[i] - from[i]) * p.progress + ' ';
+ }
+ return newValue;
+ };
+ };
+ svg.Element.animateTransform.prototype = new svg.Element.animate();
+
+ // font element
+ svg.Element.font = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.horizAdvX = this.attribute('horiz-adv-x').numValue();
+
+ this.isRTL = false;
+ this.isArabic = false;
+ this.fontFace = null;
+ this.missingGlyph = null;
+ this.glyphs = [];
+ for (var i = 0; i < this.children.length; i++) {
+ var child = this.children[i];
+ if (child.type === 'font-face') {
+ this.fontFace = child;
+ if (child.style('font-family').hasValue()) {
+ svg.Definitions[child.style('font-family').value] = this;
+ }
+ } else if (child.type === 'missing-glyph') {
+ this.missingGlyph = child;
+ } else if (child.type === 'glyph') {
+ if (child.arabicForm !== '') {
+ this.isRTL = true;
+ this.isArabic = true;
+ if (typeof this.glyphs[child.unicode] === 'undefined') {
+ this.glyphs[child.unicode] = [];
+ }
+ this.glyphs[child.unicode][child.arabicForm] = child;
+ } else {
+ this.glyphs[child.unicode] = child;
+ }
+ }
+ }
+ };
+ svg.Element.font.prototype = new svg.Element.ElementBase();
+
+ // font-face element
+ svg.Element.fontface = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.ascent = this.attribute('ascent').value;
+ this.descent = this.attribute('descent').value;
+ this.unitsPerEm = this.attribute('units-per-em').numValue();
+ };
+ svg.Element.fontface.prototype = new svg.Element.ElementBase();
+
+ // missing-glyph element
+ svg.Element.missingglyph = function (node) {
+ this.base = svg.Element.path;
+ this.base(node);
+
+ this.horizAdvX = 0;
+ };
+ svg.Element.missingglyph.prototype = new svg.Element.path();
+
+ // glyph element
+ svg.Element.glyph = function (node) {
+ this.base = svg.Element.path;
+ this.base(node);
+
+ this.horizAdvX = this.attribute('horiz-adv-x').numValue();
+ this.unicode = this.attribute('unicode').value;
+ this.arabicForm = this.attribute('arabic-form').value;
+ };
+ svg.Element.glyph.prototype = new svg.Element.path();
+
+ // text element
+ svg.Element.text = function (node) {
+ this.captureTextNodes = true;
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.baseSetContext = this.setContext;
+ this.setContext = function (ctx) {
+ this.baseSetContext(ctx);
+
+ var textBaseline = this.style('dominant-baseline').toTextBaseline();
+ if (textBaseline == null) textBaseline = this.style('alignment-baseline').toTextBaseline();
+ if (textBaseline != null) ctx.textBaseline = textBaseline;
+ };
+
+ this.getBoundingBox = function () {
+ var x = this.attribute('x').toPixels('x');
+ var y = this.attribute('y').toPixels('y');
+ var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+ return new svg.BoundingBox(x, y - fontSize, x + Math.floor(fontSize * 2.0 / 3.0) * this.children[0].getText().length, y);
+ };
+
+ this.renderChildren = function (ctx) {
+ this.x = this.attribute('x').toPixels('x');
+ this.y = this.attribute('y').toPixels('y');
+ this.x += this.getAnchorDelta(ctx, this, 0);
+ for (var i = 0; i < this.children.length; i++) {
+ this.renderChild(ctx, this, i);
+ }
+ };
+
+ this.getAnchorDelta = function (ctx, parent, startI) {
+ var textAnchor = this.style('text-anchor').valueOrDefault('start');
+ if (textAnchor !== 'start') {
+ var width = 0;
+ for (var i = startI; i < parent.children.length; i++) {
+ var child = parent.children[i];
+ if (i > startI && child.attribute('x').hasValue()) break; // new group
+ width += child.measureTextRecursive(ctx);
+ }
+ return -1 * (textAnchor === 'end' ? width : width / 2.0);
+ }
+ return 0;
+ };
+
+ this.renderChild = function (ctx, parent, i) {
+ var child = parent.children[i];
+ if (child.attribute('x').hasValue()) {
+ child.x = child.attribute('x').toPixels('x') + this.getAnchorDelta(ctx, parent, i);
+ if (child.attribute('dx').hasValue()) child.x += child.attribute('dx').toPixels('x');
+ } else {
+ if (this.attribute('dx').hasValue()) this.x += this.attribute('dx').toPixels('x');
+ if (child.attribute('dx').hasValue()) this.x += child.attribute('dx').toPixels('x');
+ child.x = this.x;
+ }
+ this.x = child.x + child.measureText(ctx);
+
+ if (child.attribute('y').hasValue()) {
+ child.y = child.attribute('y').toPixels('y');
+ if (child.attribute('dy').hasValue()) child.y += child.attribute('dy').toPixels('y');
+ } else {
+ if (this.attribute('dy').hasValue()) this.y += this.attribute('dy').toPixels('y');
+ if (child.attribute('dy').hasValue()) this.y += child.attribute('dy').toPixels('y');
+ child.y = this.y;
+ }
+ this.y = child.y;
+
+ child.render(ctx);
+
+ for (var i = 0; i < child.children.length; i++) {
+ this.renderChild(ctx, child, i);
+ }
+ };
+ };
+ svg.Element.text.prototype = new svg.Element.RenderedElementBase();
+
+ // text base
+ svg.Element.TextElementBase = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.getGlyph = function (font, text, i) {
+ var c = text[i];
+ var glyph = null;
+ if (font.isArabic) {
+ var arabicForm = 'isolated';
+ if ((i === 0 || text[i - 1] === ' ') && i < text.length - 2 && text[i + 1] !== ' ') arabicForm = 'terminal';
+ if (i > 0 && text[i - 1] !== ' ' && i < text.length - 2 && text[i + 1] !== ' ') arabicForm = 'medial';
+ if (i > 0 && text[i - 1] !== ' ' && (i === text.length - 1 || text[i + 1] === ' ')) arabicForm = 'initial';
+ if (typeof font.glyphs[c] !== 'undefined') {
+ glyph = font.glyphs[c][arabicForm];
+ if (glyph == null && font.glyphs[c].type === 'glyph') glyph = font.glyphs[c];
+ }
+ } else {
+ glyph = font.glyphs[c];
+ }
+ if (glyph == null) glyph = font.missingGlyph;
+ return glyph;
+ };
+
+ this.renderChildren = function (ctx) {
+ var customFont = this.parent.style('font-family').getDefinition();
+ if (customFont != null) {
+ var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+ var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle);
+ var text = this.getText();
+ if (customFont.isRTL) text = text.split('').reverse().join('');
+
+ var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+ for (var i = 0; i < text.length; i++) {
+ var glyph = this.getGlyph(customFont, text, i);
+ var scale = fontSize / customFont.fontFace.unitsPerEm;
+ ctx.translate(this.x, this.y);
+ ctx.scale(scale, -scale);
+ var lw = ctx.lineWidth;
+ ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize;
+ if (fontStyle === 'italic') ctx.transform(1, 0, 0.4, 1, 0, 0);
+ glyph.render(ctx);
+ if (fontStyle === 'italic') ctx.transform(1, 0, -0.4, 1, 0, 0);
+ ctx.lineWidth = lw;
+ ctx.scale(1 / scale, -1 / scale);
+ ctx.translate(-this.x, -this.y);
+
+ this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm;
+ if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+ this.x += dx[i];
+ }
+ }
+ return;
+ }
+
+ if (ctx.fillStyle !== '') ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y);
+ if (ctx.strokeStyle !== '') ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y);
+ };
+
+ this.getText = function () {
+ // OVERRIDE ME
+ };
+
+ this.measureTextRecursive = function (ctx) {
+ var width = this.measureText(ctx);
+ for (var i = 0; i < this.children.length; i++) {
+ width += this.children[i].measureTextRecursive(ctx);
+ }
+ return width;
+ };
+
+ this.measureText = function (ctx) {
+ var customFont = this.parent.style('font-family').getDefinition();
+ if (customFont != null) {
+ var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);
+ var measure = 0;
+ var text = this.getText();
+ if (customFont.isRTL) text = text.split('').reverse().join('');
+ var dx = svg.ToNumberArray(this.parent.attribute('dx').value);
+ for (var i = 0; i < text.length; i++) {
+ var glyph = this.getGlyph(customFont, text, i);
+ measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+ if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+ measure += dx[i];
+ }
+ }
+ return measure;
+ }
+
+ var textToMeasure = svg.compressSpaces(this.getText());
+ if (!ctx.measureText) return textToMeasure.length * 10;
+
+ ctx.save();
+ this.setContext(ctx);
+ var width = ctx.measureText(textToMeasure).width;
+ ctx.restore();
+ return width;
+ };
+ };
+ svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase();
+
+ // tspan
+ svg.Element.tspan = function (node) {
+ this.captureTextNodes = true;
+ this.base = svg.Element.TextElementBase;
+ this.base(node);
+
+ this.text = node.nodeValue || node.text || '';
+ this.getText = function () {
+ return this.text;
+ };
+ };
+ svg.Element.tspan.prototype = new svg.Element.TextElementBase();
+
+ // tref
+ svg.Element.tref = function (node) {
+ this.base = svg.Element.TextElementBase;
+ this.base(node);
+
+ this.getText = function () {
+ var element = this.getHrefAttribute().getDefinition();
+ if (element != null) return element.children[0].getText();
+ };
+ };
+ svg.Element.tref.prototype = new svg.Element.TextElementBase();
+
+ // a element
+ svg.Element.a = function (node) {
+ this.base = svg.Element.TextElementBase;
+ this.base(node);
+
+ this.hasText = true;
+ for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
+ if (childNode.nodeType !== 3) this.hasText = false;
+ }
+
+ // this might contain text
+ this.text = this.hasText ? node.childNodes[0].nodeValue : '';
+ this.getText = function () {
+ return this.text;
+ };
+
+ this.baseRenderChildren = this.renderChildren;
+ this.renderChildren = function (ctx) {
+ if (this.hasText) {
+ // render as text element
+ this.baseRenderChildren(ctx);
+ var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize);
+ svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.toPixels('y'), this.x + this.measureText(ctx), this.y));
+ } else {
+ // render as temporary group
+ var g = new svg.Element.g();
+ g.children = this.children;
+ g.parent = this;
+ g.render(ctx);
+ }
+ };
+
+ this.onclick = function () {
+ window.open(this.getHrefAttribute().value);
+ };
+
+ this.onmousemove = function () {
+ svg.ctx.canvas.style.cursor = 'pointer';
+ };
+ };
+ svg.Element.a.prototype = new svg.Element.TextElementBase();
+
+ // image element
+ svg.Element.image = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ var href = this.getHrefAttribute().value;
+ if (href === '') {
+ return;
+ }
+ var isSvg = href.match(/\.svg$/);
+
+ svg.Images.push(this);
+ this.loaded = false;
+ if (!isSvg) {
+ this.img = document.createElement('img');
+ if (svg.opts['useCORS'] === true) { this.img.crossOrigin = 'Anonymous'; }
+ var self = this;
+ this.img.onload = function () { self.loaded = true; };
+ this.img.onerror = function () { svg.log('ERROR: image "' + href + '" not found'); self.loaded = true; };
+ this.img.src = href;
+ } else {
+ this.img = svg.ajax(href);
+ this.loaded = true;
+ }
+
+ this.renderChildren = function (ctx) {
+ var x = this.attribute('x').toPixels('x');
+ var y = this.attribute('y').toPixels('y');
+
+ var width = this.attribute('width').toPixels('x');
+ var height = this.attribute('height').toPixels('y');
+ if (width === 0 || height === 0) return;
+
+ ctx.save();
+ if (isSvg) {
+ ctx.drawSvg(this.img, x, y, width, height);
+ } else {
+ ctx.translate(x, y);
+ svg.AspectRatio(
+ ctx,
+ this.attribute('preserveAspectRatio').value,
+ width,
+ this.img.width,
+ height,
+ this.img.height,
+ 0,
+ 0
+ );
+ ctx.drawImage(this.img, 0, 0);
+ }
+ ctx.restore();
+ };
+
+ this.getBoundingBox = function () {
+ var x = this.attribute('x').toPixels('x');
+ var y = this.attribute('y').toPixels('y');
+ var width = this.attribute('width').toPixels('x');
+ var height = this.attribute('height').toPixels('y');
+ return new svg.BoundingBox(x, y, x + width, y + height);
+ };
+ };
+ svg.Element.image.prototype = new svg.Element.RenderedElementBase();
+
+ // group element
+ svg.Element.g = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.getBoundingBox = function () {
+ var bb = new svg.BoundingBox();
+ for (var i = 0; i < this.children.length; i++) {
+ bb.addBoundingBox(this.children[i].getBoundingBox());
+ }
+ return bb;
+ };
+ };
+ svg.Element.g.prototype = new svg.Element.RenderedElementBase();
+
+ // symbol element
+ svg.Element.symbol = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.render = function (ctx) {
+ // NO RENDER
+ };
+ };
+ svg.Element.symbol.prototype = new svg.Element.RenderedElementBase();
+
+ // style element
+ svg.Element.style = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ // text, or spaces then CDATA
+ var css = '';
+ for (var i = 0, childNode; (childNode = node.childNodes[i]); i++) {
+ css += childNode.nodeValue;
+ }
+ css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ''); // remove comments
+ css = svg.compressSpaces(css); // replace whitespace
+ var cssDefs = css.split('}');
+ for (var i = 0; i < cssDefs.length; i++) {
+ if (svg.trim(cssDefs[i]) !== '') {
+ var cssDef = cssDefs[i].split('{');
+ var cssClasses = cssDef[0].split(',');
+ var cssProps = cssDef[1].split(';');
+ for (var j = 0; j < cssClasses.length; j++) {
+ var cssClass = svg.trim(cssClasses[j]);
+ if (cssClass !== '') {
+ var props = {};
+ for (var k = 0; k < cssProps.length; k++) {
+ var prop = cssProps[k].indexOf(':');
+ var name = cssProps[k].substr(0, prop);
+ var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop);
+ if (name != null && value != null) {
+ props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value));
+ }
+ }
+ svg.Styles[cssClass] = props;
+ if (cssClass === '@font-face') {
+ var fontFamily = props['font-family'].value.replace(/"/g, '');
+ var srcs = props['src'].value.split(',');
+ for (var s = 0; s < srcs.length; s++) {
+ if (srcs[s].indexOf('format("svg")') > 0) {
+ var urlStart = srcs[s].indexOf('url');
+ var urlEnd = srcs[s].indexOf(')', urlStart);
+ var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6);
+ var doc = svg.parseXml(svg.ajax(url));
+ var fonts = doc.getElementsByTagName('font');
+ for (var f = 0; f < fonts.length; f++) {
+ var font = svg.CreateElement(fonts[f]);
+ svg.Definitions[fontFamily] = font;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+ svg.Element.style.prototype = new svg.Element.ElementBase();
+
+ // use element
+ svg.Element.use = function (node) {
+ this.base = svg.Element.RenderedElementBase;
+ this.base(node);
+
+ this.baseSetContext = this.setContext;
+ this.setContext = function (ctx) {
+ this.baseSetContext(ctx);
+ if (this.attribute('x').hasValue()) ctx.translate(this.attribute('x').toPixels('x'), 0);
+ if (this.attribute('y').hasValue()) ctx.translate(0, this.attribute('y').toPixels('y'));
+ };
+
+ var element = this.getHrefAttribute().getDefinition();
+
+ this.path = function (ctx) {
+ if (element != null) element.path(ctx);
+ };
+
+ this.getBoundingBox = function () {
+ if (element != null) return element.getBoundingBox();
+ };
+
+ this.renderChildren = function (ctx) {
+ if (element != null) {
+ var tempSvg = element;
+ if (element.type === 'symbol') {
+ // render me using a temporary svg element in symbol cases (https://www.w3.org/TR/SVG/struct.html#UseElement)
+ tempSvg = new svg.Element.svg();
+ tempSvg.type = 'svg';
+ tempSvg.attributes['viewBox'] = new svg.Property('viewBox', element.attribute('viewBox').value);
+ tempSvg.attributes['preserveAspectRatio'] = new svg.Property('preserveAspectRatio', element.attribute('preserveAspectRatio').value);
+ tempSvg.attributes['overflow'] = new svg.Property('overflow', element.attribute('overflow').value);
+ tempSvg.children = element.children;
+ }
+ if (tempSvg.type === 'svg') {
+ // if symbol or svg, inherit width/height from me
+ if (this.attribute('width').hasValue()) tempSvg.attributes['width'] = new svg.Property('width', this.attribute('width').value);
+ if (this.attribute('height').hasValue()) tempSvg.attributes['height'] = new svg.Property('height', this.attribute('height').value);
+ }
+ var oldParent = tempSvg.parent;
+ tempSvg.parent = null;
+ tempSvg.render(ctx);
+ tempSvg.parent = oldParent;
+ }
+ };
+ };
+ svg.Element.use.prototype = new svg.Element.RenderedElementBase();
+
+ // mask element
+ svg.Element.mask = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.apply = function (ctx, element) {
+ // render as temp svg
+ var x = this.attribute('x').toPixels('x');
+ var y = this.attribute('y').toPixels('y');
+ var width = this.attribute('width').toPixels('x');
+ var height = this.attribute('height').toPixels('y');
+
+ if (width === 0 && height === 0) {
+ var bb = new svg.BoundingBox();
+ for (var i = 0; i < this.children.length; i++) {
+ bb.addBoundingBox(this.children[i].getBoundingBox());
+ }
+ var x = Math.floor(bb.x1);
+ var y = Math.floor(bb.y1);
+ var width = Math.floor(bb.width());
+ var height = Math.floor(bb.height());
+ }
+
+ // temporarily remove mask to avoid recursion
+ var mask = element.attribute('mask').value;
+ element.attribute('mask').value = '';
+
+ var cMask = document.createElement('canvas');
+ cMask.width = x + width;
+ cMask.height = y + height;
+ var maskCtx = cMask.getContext('2d');
+ this.renderChildren(maskCtx);
+
+ var c = document.createElement('canvas');
+ c.width = x + width;
+ c.height = y + height;
+ var tempCtx = c.getContext('2d');
+ element.render(tempCtx);
+ tempCtx.globalCompositeOperation = 'destination-in';
+ tempCtx.fillStyle = maskCtx.createPattern(cMask, 'no-repeat');
+ tempCtx.fillRect(0, 0, x + width, y + height);
+
+ ctx.fillStyle = tempCtx.createPattern(c, 'no-repeat');
+ ctx.fillRect(0, 0, x + width, y + height);
+
+ // reassign mask
+ element.attribute('mask').value = mask;
+ };
+
+ this.render = function (ctx) {
+ // NO RENDER
+ };
+ };
+ svg.Element.mask.prototype = new svg.Element.ElementBase();
+
+ // clip element
+ svg.Element.clipPath = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.apply = function (ctx) {
+ for (var i = 0; i < this.children.length; i++) {
+ var child = this.children[i];
+ if (typeof child.path !== 'undefined') {
+ var transform = null;
+ if (child.attribute('transform').hasValue()) {
+ transform = new svg.Transform(child.attribute('transform').value);
+ transform.apply(ctx);
+ }
+ child.path(ctx);
+ ctx.clip();
+ if (transform) { transform.unapply(ctx); }
+ }
+ }
+ };
+
+ this.render = function (ctx) {
+ // NO RENDER
+ };
+ };
+ svg.Element.clipPath.prototype = new svg.Element.ElementBase();
+
+ // filters
+ svg.Element.filter = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.apply = function (ctx, element) {
+ // render as temp svg
+ var bb = element.getBoundingBox();
+ var x = Math.floor(bb.x1);
+ var y = Math.floor(bb.y1);
+ var width = Math.floor(bb.width());
+ var height = Math.floor(bb.height());
+
+ // temporarily remove filter to avoid recursion
+ var filter = element.style('filter').value;
+ element.style('filter').value = '';
+
+ var px = 0, py = 0;
+ for (var i = 0; i < this.children.length; i++) {
+ var efd = this.children[i].extraFilterDistance || 0;
+ px = Math.max(px, efd);
+ py = Math.max(py, efd);
+ }
+
+ var c = document.createElement('canvas');
+ c.width = width + 2 * px;
+ c.height = height + 2 * py;
+ var tempCtx = c.getContext('2d');
+ tempCtx.translate(-x + px, -y + py);
+ element.render(tempCtx);
+
+ // apply filters
+ for (var i = 0; i < this.children.length; i++) {
+ this.children[i].apply(tempCtx, 0, 0, width + 2 * px, height + 2 * py);
+ }
+
+ // render on me
+ ctx.drawImage(c, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py);
+
+ // reassign filter
+ element.style('filter', true).value = filter;
+ };
+
+ this.render = function (ctx) {
+ // NO RENDER
+ };
+ };
+ svg.Element.filter.prototype = new svg.Element.ElementBase();
+
+ svg.Element.feMorphology = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.apply = function (ctx, x, y, width, height) {
+ // TODO: implement
+ };
+ };
+ svg.Element.feMorphology.prototype = new svg.Element.ElementBase();
+
+ svg.Element.feComposite = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.apply = function (ctx, x, y, width, height) {
+ // TODO: implement
+ };
+ };
+ svg.Element.feComposite.prototype = new svg.Element.ElementBase();
+
+ svg.Element.feColorMatrix = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ var matrix = svg.ToNumberArray(this.attribute('values').value);
+ switch (this.attribute('type').valueOrDefault('matrix')) { // https://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
+ case 'saturate':
+ var s = matrix[0];
+ matrix = [
+ 0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0,
+ 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0,
+ 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0,
+ 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 1
+ ];
+ break;
+ case 'hueRotate':
+ var a = matrix[0] * Math.PI / 180.0;
+ var c = function (m1, m2, m3) { return m1 + Math.cos(a) * m2 + Math.sin(a) * m3; };
+ matrix = [
+ c(0.213, 0.787, -0.213), c(0.715, -0.715, -0.715), c(0.072, -0.072, 0.928), 0, 0,
+ c(0.213, -0.213, 0.143), c(0.715, 0.285, 0.140), c(0.072, -0.072, -0.283), 0, 0,
+ c(0.213, -0.213, -0.787), c(0.715, -0.715, 0.715), c(0.072, 0.928, 0.072), 0, 0,
+ 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 1
+ ];
+ break;
+ case 'luminanceToAlpha':
+ matrix = [
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0.2125, 0.7154, 0.0721, 0, 0,
+ 0, 0, 0, 0, 1
+ ];
+ break;
+ }
+
+ function imGet (img, x, y, width, height, rgba) {
+ return img[y * width * 4 + x * 4 + rgba];
+ }
+
+ function imSet (img, x, y, width, height, rgba, val) {
+ img[y * width * 4 + x * 4 + rgba] = val;
+ }
+
+ function m (i, v) {
+ var mi = matrix[i];
+ return mi * (mi < 0 ? v - 255 : v);
+ }
+
+ this.apply = function (ctx, x, y, width, height) {
+ // assuming x==0 && y==0 for now
+ var srcData = ctx.getImageData(0, 0, width, height);
+ for (var y = 0; y < height; y++) {
+ for (var x = 0; x < width; x++) {
+ var r = imGet(srcData.data, x, y, width, height, 0);
+ var g = imGet(srcData.data, x, y, width, height, 1);
+ var b = imGet(srcData.data, x, y, width, height, 2);
+ var a = imGet(srcData.data, x, y, width, height, 3);
+ imSet(srcData.data, x, y, width, height, 0, m(0, r) + m(1, g) + m(2, b) + m(3, a) + m(4, 1));
+ imSet(srcData.data, x, y, width, height, 1, m(5, r) + m(6, g) + m(7, b) + m(8, a) + m(9, 1));
+ imSet(srcData.data, x, y, width, height, 2, m(10, r) + m(11, g) + m(12, b) + m(13, a) + m(14, 1));
+ imSet(srcData.data, x, y, width, height, 3, m(15, r) + m(16, g) + m(17, b) + m(18, a) + m(19, 1));
+ }
+ }
+ ctx.clearRect(0, 0, width, height);
+ ctx.putImageData(srcData, 0, 0);
+ };
+ };
+ svg.Element.feColorMatrix.prototype = new svg.Element.ElementBase();
+
+ svg.Element.feGaussianBlur = function (node) {
+ this.base = svg.Element.ElementBase;
+ this.base(node);
+
+ this.blurRadius = Math.floor(this.attribute('stdDeviation').numValue());
+ this.extraFilterDistance = this.blurRadius;
+
+ this.apply = function (ctx, x, y, width, height) {
+ if (typeof stackBlurCanvasRGBA === 'undefined') {
+ svg.log('ERROR: StackBlur.js must be included for blur to work');
+ return;
+ }
+
+ // StackBlur requires canvas be on document
+ ctx.canvas.id = svg.UniqueId();
+ ctx.canvas.style.display = 'none';
+ document.body.appendChild(ctx.canvas);
+ stackBlurCanvasRGBA(ctx.canvas.id, x, y, width, height, this.blurRadius);
+ document.body.removeChild(ctx.canvas);
+ };
+ };
+ svg.Element.feGaussianBlur.prototype = new svg.Element.ElementBase();
+
+ // title element, do nothing
+ svg.Element.title = function (node) {
+ };
+ svg.Element.title.prototype = new svg.Element.ElementBase();
+
+ // desc element, do nothing
+ svg.Element.desc = function (node) {
+ };
+ svg.Element.desc.prototype = new svg.Element.ElementBase();
+
+ svg.Element.MISSING = function (node) {
+ svg.log('ERROR: Element \'' + node.nodeName + '\' not yet implemented.');
+ };
+ svg.Element.MISSING.prototype = new svg.Element.ElementBase();
+
+ // element factory
+ svg.CreateElement = function (node) {
+ var className = node.nodeName.replace(/^[^:]+:/, ''); // remove namespace
+ className = className.replace(/-/g, ''); // remove dashes
+ var e = null;
+ if (typeof svg.Element[className] !== 'undefined') {
+ e = new svg.Element[className](node);
+ } else {
+ e = new svg.Element.MISSING(node);
+ }
+
+ e.type = node.nodeName;
+ return e;
+ };
+
+ // load from url
+ svg.load = function (ctx, url) {
+ svg.loadXml(ctx, svg.ajax(url));
+ };
+
+ // load from xml
+ svg.loadXml = function (ctx, xml) {
+ svg.loadXmlDoc(ctx, svg.parseXml(xml));
+ };
+
+ svg.loadXmlDoc = function (ctx, dom) {
+ svg.init(ctx);
+
+ var mapXY = function (p) {
+ var e = ctx.canvas;
+ while (e) {
+ p.x -= e.offsetLeft;
+ p.y -= e.offsetTop;
+ e = e.offsetParent;
+ }
+ if (window.scrollX) p.x += window.scrollX;
+ if (window.scrollY) p.y += window.scrollY;
+ return p;
+ };
+
+ // bind mouse
+ if (svg.opts['ignoreMouse'] !== true) {
+ ctx.canvas.onclick = function (e) {
+ var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+ svg.Mouse.onclick(p.x, p.y);
+ };
+ ctx.canvas.onmousemove = function (e) {
+ var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));
+ svg.Mouse.onmousemove(p.x, p.y);
+ };
+ }
+
+ var e = svg.CreateElement(dom.documentElement);
+ e.root = true;
+
+ // render loop
+ var isFirstRender = true;
+ var draw = function () {
+ svg.ViewPort.Clear();
+ if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight);
+
+ if (svg.opts['ignoreDimensions'] !== true) {
+ // set canvas size
+ if (e.style('width').hasValue()) {
+ ctx.canvas.width = e.style('width').toPixels('x');
+ ctx.canvas.style.width = ctx.canvas.width + 'px';
+ }
+ if (e.style('height').hasValue()) {
+ ctx.canvas.height = e.style('height').toPixels('y');
+ ctx.canvas.style.height = ctx.canvas.height + 'px';
+ }
+ }
+ var cWidth = ctx.canvas.clientWidth || ctx.canvas.width;
+ var cHeight = ctx.canvas.clientHeight || ctx.canvas.height;
+ if (svg.opts['ignoreDimensions'] === true && e.style('width').hasValue() && e.style('height').hasValue()) {
+ cWidth = e.style('width').toPixels('x');
+ cHeight = e.style('height').toPixels('y');
+ }
+ svg.ViewPort.SetCurrent(cWidth, cHeight);
+
+ if (svg.opts['offsetX'] != null) e.attribute('x', true).value = svg.opts['offsetX'];
+ if (svg.opts['offsetY'] != null) e.attribute('y', true).value = svg.opts['offsetY'];
+ if (svg.opts['scaleWidth'] != null || svg.opts['scaleHeight'] != null) {
+ var xRatio = null, yRatio = null, viewBox = svg.ToNumberArray(e.attribute('viewBox').value);
+
+ if (svg.opts['scaleWidth'] != null) {
+ if (e.attribute('width').hasValue()) xRatio = e.attribute('width').toPixels('x') / svg.opts['scaleWidth'];
+ else if (!isNaN(viewBox[2])) xRatio = viewBox[2] / svg.opts['scaleWidth'];
+ }
+
+ if (svg.opts['scaleHeight'] != null) {
+ if (e.attribute('height').hasValue()) yRatio = e.attribute('height').toPixels('y') / svg.opts['scaleHeight'];
+ else if (!isNaN(viewBox[3])) yRatio = viewBox[3] / svg.opts['scaleHeight'];
+ }
+
+ if (xRatio == null) { xRatio = yRatio; }
+ if (yRatio == null) { yRatio = xRatio; }
+
+ e.attribute('width', true).value = svg.opts['scaleWidth'];
+ e.attribute('height', true).value = svg.opts['scaleHeight'];
+ e.attribute('viewBox', true).value = '0 0 ' + (cWidth * xRatio) + ' ' + (cHeight * yRatio);
+ e.attribute('preserveAspectRatio', true).value = 'none';
+ }
+
+ // clear and render
+ if (svg.opts['ignoreClear'] !== true) {
+ ctx.clearRect(0, 0, cWidth, cHeight);
+ }
+ e.render(ctx);
+ if (isFirstRender) {
+ isFirstRender = false;
+ if (typeof svg.opts['renderCallback'] === 'function') {
+ svg.opts['renderCallback'](dom);
+ }
+ }
+ };
+
+ var waitingForImages = true;
+ if (svg.ImagesLoaded()) {
+ waitingForImages = false;
+ draw();
+ }
+ svg.intervalID = setInterval(function () {
+ var needUpdate = false;
+
+ if (waitingForImages && svg.ImagesLoaded()) {
+ waitingForImages = false;
+ needUpdate = true;
+ }
+
+ // need update from mouse events?
+ if (svg.opts['ignoreMouse'] !== true) {
+ needUpdate = needUpdate | svg.Mouse.hasEvents();
+ }
+
+ // need update from animations?
+ if (svg.opts['ignoreAnimation'] !== true) {
+ for (var i = 0; i < svg.Animations.length; i++) {
+ needUpdate = needUpdate | svg.Animations[i].update(1000 / svg.FRAMERATE);
+ }
+ }
+
+ // need update from redraw?
+ if (typeof svg.opts['forceRedraw'] === 'function') {
+ if (svg.opts['forceRedraw']() === true) needUpdate = true;
+ }
+
+ // render if needed
+ if (needUpdate) {
+ draw();
+ svg.Mouse.runEvents(); // run and clear our events
+ }
+ }, 1000 / svg.FRAMERATE);
+ };
+
+ svg.stop = function () {
+ if (svg.intervalID) {
+ clearInterval(svg.intervalID);
+ }
+ };
+
+ svg.Mouse = new function () {
+ this.events = [];
+ this.hasEvents = function () { return this.events.length !== 0; };
+
+ this.onclick = function (x, y) {
+ this.events.push({ type: 'onclick', x: x, y: y,
+ run: function (e) { if (e.onclick) e.onclick(); }
+ });
+ };
+
+ this.onmousemove = function (x, y) {
+ this.events.push({ type: 'onmousemove', x: x, y: y,
+ run: function (e) { if (e.onmousemove) e.onmousemove(); }
+ });
+ };
+
+ this.eventElements = [];
+
+ this.checkPath = function (element, ctx) {
+ for (var i = 0; i < this.events.length; i++) {
+ var e = this.events[i];
+ if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element;
+ }
+ };
+
+ this.checkBoundingBox = function (element, bb) {
+ for (var i = 0; i < this.events.length; i++) {
+ var e = this.events[i];
+ if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element;
+ }
+ };
+
+ this.runEvents = function () {
+ svg.ctx.canvas.style.cursor = '';
+
+ for (var i = 0; i < this.events.length; i++) {
+ var e = this.events[i];
+ var element = this.eventElements[i];
+ while (element) {
+ e.run(element);
+ element = element.parent;
+ }
+ }
+
+ // done running, clear
+ this.events = [];
+ this.eventElements = [];
+ };
+ }();
+
+ return svg;
}
})();
if (typeof CanvasRenderingContext2D !== 'undefined') {
- CanvasRenderingContext2D.prototype.drawSvg = function (s, dx, dy, dw, dh) {
- canvg(this.canvas, s, {
- ignoreMouse: true,
- ignoreAnimation: true,
- ignoreDimensions: true,
- ignoreClear: true,
- offsetX: dx,
- offsetY: dy,
- scaleWidth: dw,
- scaleHeight: dh
- });
- };
+ CanvasRenderingContext2D.prototype.drawSvg = function (s, dx, dy, dw, dh) {
+ canvg(this.canvas, s, {
+ ignoreMouse: true,
+ ignoreAnimation: true,
+ ignoreDimensions: true,
+ ignoreClear: true,
+ offsetX: dx,
+ offsetY: dy,
+ scaleWidth: dw,
+ scaleHeight: dh
+ });
+ };
}
diff --git a/editor/canvg/rgbcolor.js b/editor/canvg/rgbcolor.js
index 2ab6b108..18f427b1 100644
--- a/editor/canvg/rgbcolor.js
+++ b/editor/canvg/rgbcolor.js
@@ -6,286 +6,286 @@
* @license Use it if you like it
*/
function RGBColor (colorString) { // eslint-disable-line no-unused-vars
- 'use strict';
- this.ok = false;
+ 'use strict';
+ this.ok = false;
- // strip any leading #
- if (colorString.charAt(0) === '#') { // remove # if any
- colorString = colorString.substr(1, 6);
- }
+ // strip any leading #
+ if (colorString.charAt(0) === '#') { // remove # if any
+ colorString = colorString.substr(1, 6);
+ }
- colorString = colorString.replace(/ /g, '');
- colorString = colorString.toLowerCase();
+ colorString = colorString.replace(/ /g, '');
+ colorString = colorString.toLowerCase();
- // before getting into regexps, try simple matches
- // and overwrite the input
- var simpleColors = {
- aliceblue: 'f0f8ff',
- antiquewhite: 'faebd7',
- aqua: '00ffff',
- aquamarine: '7fffd4',
- azure: 'f0ffff',
- beige: 'f5f5dc',
- bisque: 'ffe4c4',
- black: '000000',
- blanchedalmond: 'ffebcd',
- blue: '0000ff',
- blueviolet: '8a2be2',
- brown: 'a52a2a',
- burlywood: 'deb887',
- cadetblue: '5f9ea0',
- chartreuse: '7fff00',
- chocolate: 'd2691e',
- coral: 'ff7f50',
- cornflowerblue: '6495ed',
- cornsilk: 'fff8dc',
- crimson: 'dc143c',
- cyan: '00ffff',
- darkblue: '00008b',
- darkcyan: '008b8b',
- darkgoldenrod: 'b8860b',
- darkgray: 'a9a9a9',
- darkgreen: '006400',
- darkkhaki: 'bdb76b',
- darkmagenta: '8b008b',
- darkolivegreen: '556b2f',
- darkorange: 'ff8c00',
- darkorchid: '9932cc',
- darkred: '8b0000',
- darksalmon: 'e9967a',
- darkseagreen: '8fbc8f',
- darkslateblue: '483d8b',
- darkslategray: '2f4f4f',
- darkturquoise: '00ced1',
- darkviolet: '9400d3',
- deeppink: 'ff1493',
- deepskyblue: '00bfff',
- dimgray: '696969',
- dodgerblue: '1e90ff',
- feldspar: 'd19275',
- firebrick: 'b22222',
- floralwhite: 'fffaf0',
- forestgreen: '228b22',
- fuchsia: 'ff00ff',
- gainsboro: 'dcdcdc',
- ghostwhite: 'f8f8ff',
- gold: 'ffd700',
- goldenrod: 'daa520',
- gray: '808080',
- green: '008000',
- greenyellow: 'adff2f',
- honeydew: 'f0fff0',
- hotpink: 'ff69b4',
- indianred: 'cd5c5c',
- indigo: '4b0082',
- ivory: 'fffff0',
- khaki: 'f0e68c',
- lavender: 'e6e6fa',
- lavenderblush: 'fff0f5',
- lawngreen: '7cfc00',
- lemonchiffon: 'fffacd',
- lightblue: 'add8e6',
- lightcoral: 'f08080',
- lightcyan: 'e0ffff',
- lightgoldenrodyellow: 'fafad2',
- lightgrey: 'd3d3d3',
- lightgreen: '90ee90',
- lightpink: 'ffb6c1',
- lightsalmon: 'ffa07a',
- lightseagreen: '20b2aa',
- lightskyblue: '87cefa',
- lightslateblue: '8470ff',
- lightslategray: '778899',
- lightsteelblue: 'b0c4de',
- lightyellow: 'ffffe0',
- lime: '00ff00',
- limegreen: '32cd32',
- linen: 'faf0e6',
- magenta: 'ff00ff',
- maroon: '800000',
- mediumaquamarine: '66cdaa',
- mediumblue: '0000cd',
- mediumorchid: 'ba55d3',
- mediumpurple: '9370d8',
- mediumseagreen: '3cb371',
- mediumslateblue: '7b68ee',
- mediumspringgreen: '00fa9a',
- mediumturquoise: '48d1cc',
- mediumvioletred: 'c71585',
- midnightblue: '191970',
- mintcream: 'f5fffa',
- mistyrose: 'ffe4e1',
- moccasin: 'ffe4b5',
- navajowhite: 'ffdead',
- navy: '000080',
- oldlace: 'fdf5e6',
- olive: '808000',
- olivedrab: '6b8e23',
- orange: 'ffa500',
- orangered: 'ff4500',
- orchid: 'da70d6',
- palegoldenrod: 'eee8aa',
- palegreen: '98fb98',
- paleturquoise: 'afeeee',
- palevioletred: 'd87093',
- papayawhip: 'ffefd5',
- peachpuff: 'ffdab9',
- peru: 'cd853f',
- pink: 'ffc0cb',
- plum: 'dda0dd',
- powderblue: 'b0e0e6',
- purple: '800080',
- red: 'ff0000',
- rosybrown: 'bc8f8f',
- royalblue: '4169e1',
- saddlebrown: '8b4513',
- salmon: 'fa8072',
- sandybrown: 'f4a460',
- seagreen: '2e8b57',
- seashell: 'fff5ee',
- sienna: 'a0522d',
- silver: 'c0c0c0',
- skyblue: '87ceeb',
- slateblue: '6a5acd',
- slategray: '708090',
- snow: 'fffafa',
- springgreen: '00ff7f',
- steelblue: '4682b4',
- tan: 'd2b48c',
- teal: '008080',
- thistle: 'd8bfd8',
- tomato: 'ff6347',
- turquoise: '40e0d0',
- violet: 'ee82ee',
- violetred: 'd02090',
- wheat: 'f5deb3',
- white: 'ffffff',
- whitesmoke: 'f5f5f5',
- yellow: 'ffff00',
- yellowgreen: '9acd32'
- };
- var key;
- for (key in simpleColors) {
- if (simpleColors.hasOwnProperty(key)) {
- if (colorString === key) {
- colorString = simpleColors[key];
- }
- }
- }
- // emd of simple type-in colors
+ // before getting into regexps, try simple matches
+ // and overwrite the input
+ var simpleColors = {
+ aliceblue: 'f0f8ff',
+ antiquewhite: 'faebd7',
+ aqua: '00ffff',
+ aquamarine: '7fffd4',
+ azure: 'f0ffff',
+ beige: 'f5f5dc',
+ bisque: 'ffe4c4',
+ black: '000000',
+ blanchedalmond: 'ffebcd',
+ blue: '0000ff',
+ blueviolet: '8a2be2',
+ brown: 'a52a2a',
+ burlywood: 'deb887',
+ cadetblue: '5f9ea0',
+ chartreuse: '7fff00',
+ chocolate: 'd2691e',
+ coral: 'ff7f50',
+ cornflowerblue: '6495ed',
+ cornsilk: 'fff8dc',
+ crimson: 'dc143c',
+ cyan: '00ffff',
+ darkblue: '00008b',
+ darkcyan: '008b8b',
+ darkgoldenrod: 'b8860b',
+ darkgray: 'a9a9a9',
+ darkgreen: '006400',
+ darkkhaki: 'bdb76b',
+ darkmagenta: '8b008b',
+ darkolivegreen: '556b2f',
+ darkorange: 'ff8c00',
+ darkorchid: '9932cc',
+ darkred: '8b0000',
+ darksalmon: 'e9967a',
+ darkseagreen: '8fbc8f',
+ darkslateblue: '483d8b',
+ darkslategray: '2f4f4f',
+ darkturquoise: '00ced1',
+ darkviolet: '9400d3',
+ deeppink: 'ff1493',
+ deepskyblue: '00bfff',
+ dimgray: '696969',
+ dodgerblue: '1e90ff',
+ feldspar: 'd19275',
+ firebrick: 'b22222',
+ floralwhite: 'fffaf0',
+ forestgreen: '228b22',
+ fuchsia: 'ff00ff',
+ gainsboro: 'dcdcdc',
+ ghostwhite: 'f8f8ff',
+ gold: 'ffd700',
+ goldenrod: 'daa520',
+ gray: '808080',
+ green: '008000',
+ greenyellow: 'adff2f',
+ honeydew: 'f0fff0',
+ hotpink: 'ff69b4',
+ indianred: 'cd5c5c',
+ indigo: '4b0082',
+ ivory: 'fffff0',
+ khaki: 'f0e68c',
+ lavender: 'e6e6fa',
+ lavenderblush: 'fff0f5',
+ lawngreen: '7cfc00',
+ lemonchiffon: 'fffacd',
+ lightblue: 'add8e6',
+ lightcoral: 'f08080',
+ lightcyan: 'e0ffff',
+ lightgoldenrodyellow: 'fafad2',
+ lightgrey: 'd3d3d3',
+ lightgreen: '90ee90',
+ lightpink: 'ffb6c1',
+ lightsalmon: 'ffa07a',
+ lightseagreen: '20b2aa',
+ lightskyblue: '87cefa',
+ lightslateblue: '8470ff',
+ lightslategray: '778899',
+ lightsteelblue: 'b0c4de',
+ lightyellow: 'ffffe0',
+ lime: '00ff00',
+ limegreen: '32cd32',
+ linen: 'faf0e6',
+ magenta: 'ff00ff',
+ maroon: '800000',
+ mediumaquamarine: '66cdaa',
+ mediumblue: '0000cd',
+ mediumorchid: 'ba55d3',
+ mediumpurple: '9370d8',
+ mediumseagreen: '3cb371',
+ mediumslateblue: '7b68ee',
+ mediumspringgreen: '00fa9a',
+ mediumturquoise: '48d1cc',
+ mediumvioletred: 'c71585',
+ midnightblue: '191970',
+ mintcream: 'f5fffa',
+ mistyrose: 'ffe4e1',
+ moccasin: 'ffe4b5',
+ navajowhite: 'ffdead',
+ navy: '000080',
+ oldlace: 'fdf5e6',
+ olive: '808000',
+ olivedrab: '6b8e23',
+ orange: 'ffa500',
+ orangered: 'ff4500',
+ orchid: 'da70d6',
+ palegoldenrod: 'eee8aa',
+ palegreen: '98fb98',
+ paleturquoise: 'afeeee',
+ palevioletred: 'd87093',
+ papayawhip: 'ffefd5',
+ peachpuff: 'ffdab9',
+ peru: 'cd853f',
+ pink: 'ffc0cb',
+ plum: 'dda0dd',
+ powderblue: 'b0e0e6',
+ purple: '800080',
+ red: 'ff0000',
+ rosybrown: 'bc8f8f',
+ royalblue: '4169e1',
+ saddlebrown: '8b4513',
+ salmon: 'fa8072',
+ sandybrown: 'f4a460',
+ seagreen: '2e8b57',
+ seashell: 'fff5ee',
+ sienna: 'a0522d',
+ silver: 'c0c0c0',
+ skyblue: '87ceeb',
+ slateblue: '6a5acd',
+ slategray: '708090',
+ snow: 'fffafa',
+ springgreen: '00ff7f',
+ steelblue: '4682b4',
+ tan: 'd2b48c',
+ teal: '008080',
+ thistle: 'd8bfd8',
+ tomato: 'ff6347',
+ turquoise: '40e0d0',
+ violet: 'ee82ee',
+ violetred: 'd02090',
+ wheat: 'f5deb3',
+ white: 'ffffff',
+ whitesmoke: 'f5f5f5',
+ yellow: 'ffff00',
+ yellowgreen: '9acd32'
+ };
+ var key;
+ for (key in simpleColors) {
+ if (simpleColors.hasOwnProperty(key)) {
+ if (colorString === key) {
+ colorString = simpleColors[key];
+ }
+ }
+ }
+ // emd of simple type-in colors
- // array of color definition objects
- var colorDefs = [
- {
- re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
- example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
- process: function (bits) {
- return [
- parseInt(bits[1], 10),
- parseInt(bits[2], 10),
- parseInt(bits[3], 10)
- ];
- }
- },
- {
- re: /^(\w{2})(\w{2})(\w{2})$/,
- example: ['#00ff00', '336699'],
- process: function (bits) {
- return [
- parseInt(bits[1], 16),
- parseInt(bits[2], 16),
- parseInt(bits[3], 16)
- ];
- }
- },
- {
- re: /^(\w{1})(\w{1})(\w{1})$/,
- example: ['#fb0', 'f0f'],
- process: function (bits) {
- return [
- parseInt(bits[1] + bits[1], 16),
- parseInt(bits[2] + bits[2], 16),
- parseInt(bits[3] + bits[3], 16)
- ];
- }
- }
- ];
+ // array of color definition objects
+ var colorDefs = [
+ {
+ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+ example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+ process: function (bits) {
+ return [
+ parseInt(bits[1], 10),
+ parseInt(bits[2], 10),
+ parseInt(bits[3], 10)
+ ];
+ }
+ },
+ {
+ re: /^(\w{2})(\w{2})(\w{2})$/,
+ example: ['#00ff00', '336699'],
+ process: function (bits) {
+ return [
+ parseInt(bits[1], 16),
+ parseInt(bits[2], 16),
+ parseInt(bits[3], 16)
+ ];
+ }
+ },
+ {
+ re: /^(\w{1})(\w{1})(\w{1})$/,
+ example: ['#fb0', 'f0f'],
+ process: function (bits) {
+ return [
+ parseInt(bits[1] + bits[1], 16),
+ parseInt(bits[2] + bits[2], 16),
+ parseInt(bits[3] + bits[3], 16)
+ ];
+ }
+ }
+ ];
- var i;
- // search through the definitions to find a match
- for (i = 0; i < colorDefs.length; i++) {
- var re = colorDefs[i].re;
- var processor = colorDefs[i].process;
- var bits = re.exec(colorString);
- if (bits) {
- var channels = processor(bits);
- this.r = channels[0];
- this.g = channels[1];
- this.b = channels[2];
- this.ok = true;
- }
- }
+ var i;
+ // search through the definitions to find a match
+ for (i = 0; i < colorDefs.length; i++) {
+ var re = colorDefs[i].re;
+ var processor = colorDefs[i].process;
+ var bits = re.exec(colorString);
+ if (bits) {
+ var channels = processor(bits);
+ this.r = channels[0];
+ this.g = channels[1];
+ this.b = channels[2];
+ this.ok = true;
+ }
+ }
- // validate/cleanup values
- this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
- this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
- this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+ // validate/cleanup values
+ this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+ this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+ this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
- // some getters
- this.toRGB = function () {
- return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
- };
- this.toHex = function () {
- var r = this.r.toString(16);
- var g = this.g.toString(16);
- var b = this.b.toString(16);
- if (r.length === 1) { r = '0' + r; }
- if (g.length === 1) { g = '0' + g; }
- if (b.length === 1) { b = '0' + b; }
- return '#' + r + g + b;
- };
+ // some getters
+ this.toRGB = function () {
+ return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+ };
+ this.toHex = function () {
+ var r = this.r.toString(16);
+ var g = this.g.toString(16);
+ var b = this.b.toString(16);
+ if (r.length === 1) { r = '0' + r; }
+ if (g.length === 1) { g = '0' + g; }
+ if (b.length === 1) { b = '0' + b; }
+ return '#' + r + g + b;
+ };
- // help
- this.getHelpXML = function () {
- var i, j;
- var examples = [];
- // add regexps
- for (i = 0; i < colorDefs.length; i++) {
- var example = colorDefs[i].example;
- for (j = 0; j < example.length; j++) {
- examples[examples.length] = example[j];
- }
- }
- // add type-in colors
- var sc;
- for (sc in simpleColors) {
- if (simpleColors.hasOwnProperty(sc)) {
- examples[examples.length] = sc;
- }
- }
+ // help
+ this.getHelpXML = function () {
+ var i, j;
+ var examples = [];
+ // add regexps
+ for (i = 0; i < colorDefs.length; i++) {
+ var example = colorDefs[i].example;
+ for (j = 0; j < example.length; j++) {
+ examples[examples.length] = example[j];
+ }
+ }
+ // add type-in colors
+ var sc;
+ for (sc in simpleColors) {
+ if (simpleColors.hasOwnProperty(sc)) {
+ examples[examples.length] = sc;
+ }
+ }
- var xml = document.createElement('ul');
- xml.setAttribute('id', 'rgbcolor-examples');
- for (i = 0; i < examples.length; i++) {
- try {
- var listItem = document.createElement('li');
- var listColor = new RGBColor(examples[i]);
- var exampleDiv = document.createElement('div');
- exampleDiv.style.cssText =
- 'margin: 3px; ' +
- 'border: 1px solid black; ' +
- 'background:' + listColor.toHex() + '; ' +
- 'color:' + listColor.toHex()
- ;
- exampleDiv.appendChild(document.createTextNode('test'));
- var listItemValue = document.createTextNode(
- ' ' + examples[i] + ' -> ' + listColor.toRGB() + ' -> ' + listColor.toHex()
- );
- listItem.appendChild(exampleDiv);
- listItem.appendChild(listItemValue);
- xml.appendChild(listItem);
- } catch (e) {}
- }
- return xml;
- };
+ var xml = document.createElement('ul');
+ xml.setAttribute('id', 'rgbcolor-examples');
+ for (i = 0; i < examples.length; i++) {
+ try {
+ var listItem = document.createElement('li');
+ var listColor = new RGBColor(examples[i]);
+ var exampleDiv = document.createElement('div');
+ exampleDiv.style.cssText =
+ 'margin: 3px; ' +
+ 'border: 1px solid black; ' +
+ 'background:' + listColor.toHex() + '; ' +
+ 'color:' + listColor.toHex()
+ ;
+ exampleDiv.appendChild(document.createTextNode('test'));
+ var listItemValue = document.createTextNode(
+ ' ' + examples[i] + ' -> ' + listColor.toRGB() + ' -> ' + listColor.toHex()
+ );
+ listItem.appendChild(exampleDiv);
+ listItem.appendChild(listItemValue);
+ xml.appendChild(listItem);
+ } catch (e) {}
+ }
+ return xml;
+ };
}
diff --git a/editor/contextmenu/jquery.contextMenu.js b/editor/contextmenu/jquery.contextMenu.js
index 9eb9fa39..2c80ff06 100755
--- a/editor/contextmenu/jquery.contextMenu.js
+++ b/editor/contextmenu/jquery.contextMenu.js
@@ -16,190 +16,190 @@
// and the MIT License and is copyright A Beautiful Site, LLC.
//
if (jQuery) {
- (function () {
- var win = $(window);
- var doc = $(document);
+ (function () {
+ var win = $(window);
+ var doc = $(document);
- $.extend($.fn, {
+ $.extend($.fn, {
- contextMenu: function (o, callback) {
- // Defaults
- if (o.menu === undefined) return false;
- if (o.inSpeed === undefined) o.inSpeed = 150;
- if (o.outSpeed === undefined) o.outSpeed = 75;
- // 0 needs to be -1 for expected results (no fade)
- if (o.inSpeed === 0) o.inSpeed = -1;
- if (o.outSpeed === 0) o.outSpeed = -1;
- // Loop each context menu
- $(this).each(function () {
- var el = $(this);
- var offset = $(el).offset();
+ contextMenu: function (o, callback) {
+ // Defaults
+ if (o.menu === undefined) return false;
+ if (o.inSpeed === undefined) o.inSpeed = 150;
+ if (o.outSpeed === undefined) o.outSpeed = 75;
+ // 0 needs to be -1 for expected results (no fade)
+ if (o.inSpeed === 0) o.inSpeed = -1;
+ if (o.outSpeed === 0) o.outSpeed = -1;
+ // Loop each context menu
+ $(this).each(function () {
+ var el = $(this);
+ var offset = $(el).offset();
- var menu = $('#' + o.menu);
+ var menu = $('#' + o.menu);
- // Add contextMenu class
- menu.addClass('contextMenu');
- // Simulate a true right click
- $(this).bind('mousedown', function (e) {
- var evt = e;
- $(this).mouseup(function (e) {
- var srcElement = $(this);
- srcElement.unbind('mouseup');
- if (evt.button === 2 || o.allowLeft ||
- (evt.ctrlKey && svgedit.browser.isMac())) {
- e.stopPropagation();
- // Hide context menus that may be showing
- $('.contextMenu').hide();
- // Get this context menu
+ // Add contextMenu class
+ menu.addClass('contextMenu');
+ // Simulate a true right click
+ $(this).bind('mousedown', function (e) {
+ var evt = e;
+ $(this).mouseup(function (e) {
+ var srcElement = $(this);
+ srcElement.unbind('mouseup');
+ if (evt.button === 2 || o.allowLeft ||
+ (evt.ctrlKey && svgedit.browser.isMac())) {
+ e.stopPropagation();
+ // Hide context menus that may be showing
+ $('.contextMenu').hide();
+ // Get this context menu
- if (el.hasClass('disabled')) return false;
+ if (el.hasClass('disabled')) return false;
- // Detect mouse position
- var x = e.pageX, y = e.pageY;
+ // Detect mouse position
+ var x = e.pageX, y = e.pageY;
- var xOff = win.width() - menu.width(),
- yOff = win.height() - menu.height();
+ var xOff = win.width() - menu.width(),
+ yOff = win.height() - menu.height();
- if (x > xOff - 15) x = xOff - 15;
- if (y > yOff - 30) y = yOff - 30; // 30 is needed to prevent scrollbars in FF
+ if (x > xOff - 15) x = xOff - 15;
+ if (y > yOff - 30) y = yOff - 30; // 30 is needed to prevent scrollbars in FF
- // Show the menu
- doc.unbind('click');
- menu.css({ top: y, left: x }).fadeIn(o.inSpeed);
- // Hover events
- menu.find('A').mouseover(function () {
- menu.find('LI.hover').removeClass('hover');
- $(this).parent().addClass('hover');
- }).mouseout(function () {
- menu.find('LI.hover').removeClass('hover');
- });
+ // Show the menu
+ doc.unbind('click');
+ menu.css({ top: y, left: x }).fadeIn(o.inSpeed);
+ // Hover events
+ menu.find('A').mouseover(function () {
+ menu.find('LI.hover').removeClass('hover');
+ $(this).parent().addClass('hover');
+ }).mouseout(function () {
+ menu.find('LI.hover').removeClass('hover');
+ });
- // Keyboard
- doc.keypress(function (e) {
- switch (e.keyCode) {
- case 38: // up
- if (!menu.find('LI.hover').length) {
- menu.find('LI:last').addClass('hover');
- } else {
- menu.find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
- if (!menu.find('LI.hover').length) menu.find('LI:last').addClass('hover');
- }
- break;
- case 40: // down
- if (menu.find('LI.hover').length === 0) {
- menu.find('LI:first').addClass('hover');
- } else {
- menu.find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
- if (!menu.find('LI.hover').length) menu.find('LI:first').addClass('hover');
- }
- break;
- case 13: // enter
- menu.find('LI.hover A').trigger('click');
- break;
- case 27: // esc
- doc.trigger('click');
- break;
- }
- });
+ // Keyboard
+ doc.keypress(function (e) {
+ switch (e.keyCode) {
+ case 38: // up
+ if (!menu.find('LI.hover').length) {
+ menu.find('LI:last').addClass('hover');
+ } else {
+ menu.find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
+ if (!menu.find('LI.hover').length) menu.find('LI:last').addClass('hover');
+ }
+ break;
+ case 40: // down
+ if (menu.find('LI.hover').length === 0) {
+ menu.find('LI:first').addClass('hover');
+ } else {
+ menu.find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
+ if (!menu.find('LI.hover').length) menu.find('LI:first').addClass('hover');
+ }
+ break;
+ case 13: // enter
+ menu.find('LI.hover A').trigger('click');
+ break;
+ case 27: // esc
+ doc.trigger('click');
+ break;
+ }
+ });
- // When items are selected
- menu.find('A').unbind('mouseup');
- menu.find('LI:not(.disabled) A').mouseup(function () {
- doc.unbind('click').unbind('keypress');
- $('.contextMenu').hide();
- // Callback
- if (callback) callback($(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y});
- return false;
- });
+ // When items are selected
+ menu.find('A').unbind('mouseup');
+ menu.find('LI:not(.disabled) A').mouseup(function () {
+ doc.unbind('click').unbind('keypress');
+ $('.contextMenu').hide();
+ // Callback
+ if (callback) callback($(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y});
+ return false;
+ });
- // Hide bindings
- setTimeout(function () { // Delay for Mozilla
- doc.click(function () {
- doc.unbind('click').unbind('keypress');
- menu.fadeOut(o.outSpeed);
- return false;
- });
- }, 0);
- }
- });
- });
+ // Hide bindings
+ setTimeout(function () { // Delay for Mozilla
+ doc.click(function () {
+ doc.unbind('click').unbind('keypress');
+ menu.fadeOut(o.outSpeed);
+ return false;
+ });
+ }, 0);
+ }
+ });
+ });
- // Disable text selection
- if ($.browser.mozilla) {
- $('#' + o.menu).each(function () { $(this).css({'MozUserSelect': 'none'}); });
- } else if ($.browser.msie) {
- $('#' + o.menu).each(function () { $(this).bind('selectstart.disableTextSelect', function () { return false; }); });
- } else {
- $('#' + o.menu).each(function () { $(this).bind('mousedown.disableTextSelect', function () { return false; }); });
- }
- // Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
- $(el).add($('UL.contextMenu')).bind('contextmenu', function () { return false; });
- });
- return $(this);
- },
+ // Disable text selection
+ if ($.browser.mozilla) {
+ $('#' + o.menu).each(function () { $(this).css({'MozUserSelect': 'none'}); });
+ } else if ($.browser.msie) {
+ $('#' + o.menu).each(function () { $(this).bind('selectstart.disableTextSelect', function () { return false; }); });
+ } else {
+ $('#' + o.menu).each(function () { $(this).bind('mousedown.disableTextSelect', function () { return false; }); });
+ }
+ // Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
+ $(el).add($('UL.contextMenu')).bind('contextmenu', function () { return false; });
+ });
+ return $(this);
+ },
- // Disable context menu items on the fly
- disableContextMenuItems: function (o) {
- if (o === undefined) {
- // Disable all
- $(this).find('LI').addClass('disabled');
- return $(this);
- }
- $(this).each(function () {
- if (o !== undefined) {
- var d = o.split(',');
- for (var i = 0; i < d.length; i++) {
- $(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
- }
- }
- });
- return $(this);
- },
+ // Disable context menu items on the fly
+ disableContextMenuItems: function (o) {
+ if (o === undefined) {
+ // Disable all
+ $(this).find('LI').addClass('disabled');
+ return $(this);
+ }
+ $(this).each(function () {
+ if (o !== undefined) {
+ var d = o.split(',');
+ for (var i = 0; i < d.length; i++) {
+ $(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
+ }
+ }
+ });
+ return $(this);
+ },
- // Enable context menu items on the fly
- enableContextMenuItems: function (o) {
- if (o === undefined) {
- // Enable all
- $(this).find('LI.disabled').removeClass('disabled');
- return $(this);
- }
- $(this).each(function () {
- if (o !== undefined) {
- var d = o.split(',');
- for (var i = 0; i < d.length; i++) {
- $(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
- }
- }
- });
- return $(this);
- },
+ // Enable context menu items on the fly
+ enableContextMenuItems: function (o) {
+ if (o === undefined) {
+ // Enable all
+ $(this).find('LI.disabled').removeClass('disabled');
+ return $(this);
+ }
+ $(this).each(function () {
+ if (o !== undefined) {
+ var d = o.split(',');
+ for (var i = 0; i < d.length; i++) {
+ $(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
+ }
+ }
+ });
+ return $(this);
+ },
- // Disable context menu(s)
- disableContextMenu: function () {
- $(this).each(function () {
- $(this).addClass('disabled');
- });
- return $(this);
- },
+ // Disable context menu(s)
+ disableContextMenu: function () {
+ $(this).each(function () {
+ $(this).addClass('disabled');
+ });
+ return $(this);
+ },
- // Enable context menu(s)
- enableContextMenu: function () {
- $(this).each(function () {
- $(this).removeClass('disabled');
- });
- return $(this);
- },
+ // Enable context menu(s)
+ enableContextMenu: function () {
+ $(this).each(function () {
+ $(this).removeClass('disabled');
+ });
+ return $(this);
+ },
- // Destroy context menu(s)
- destroyContextMenu: function () {
- // Destroy specified context menus
- $(this).each(function () {
- // Disable action
- $(this).unbind('mousedown').unbind('mouseup');
- });
- return $(this);
- }
+ // Destroy context menu(s)
+ destroyContextMenu: function () {
+ // Destroy specified context menus
+ $(this).each(function () {
+ // Disable action
+ $(this).unbind('mousedown').unbind('mouseup');
+ });
+ return $(this);
+ }
- });
- })(jQuery);
+ });
+ })(jQuery);
}
diff --git a/editor/jgraduate/jpicker.js b/editor/jgraduate/jpicker.js
index b6d8711c..4fd2f98a 100755
--- a/editor/jgraduate/jpicker.js
+++ b/editor/jgraduate/jpicker.js
@@ -12,1897 +12,1897 @@
* Painstakingly ported from John Dyers' excellent work on his own color picker based on the Prototype framework.
*
* John Dyers' website: (http://johndyer.name)
- * Color Picker page: (http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx)
+ * Color Picker page: (http://johndyer.name/post/2007/09/PhotoShop-like-JavaScript-Color-Picker.aspx)
*
*/
(function ($, version) {
Math.precision = function (value, precision) {
- if (precision === undefined) precision = 0;
- return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
+ if (precision === undefined) precision = 0;
+ return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
};
var Slider = // encapsulate slider functionality for the ColorMap and ColorBar - could be useful to use a jQuery UI draggable for this with certain extensions
- function (bar, options) {
- var $this = this, // private properties, methods, and events - keep these variables and classes invisible to outside code
- arrow = bar.find('img:first'), // the arrow image to drag
- minX = 0,
- maxX = 100,
- rangeX = 100,
- minY = 0,
- maxY = 100,
- rangeY = 100,
- x = 0,
- y = 0,
- offset,
- timeout,
- changeEvents = [],
- fireChangeEvents =
- function (context) {
- for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
- },
- mouseDown = // bind the mousedown to the bar not the arrow for quick snapping to the clicked location
- function (e) {
- var off = bar.offset();
- offset = { l: off.left | 0, t: off.top | 0 };
- clearTimeout(timeout);
- timeout = setTimeout( // using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run
- function () {
- setValuesFromMousePosition.call($this, e);
- }, 0);
- // Bind mousemove and mouseup event to the document so it responds when dragged of of the bar - we will unbind these when on mouseup to save processing
- $(document).bind('mousemove', mouseMove).bind('mouseup', mouseUp);
- e.preventDefault(); // don't try to select anything or drag the image to the desktop
- },
- mouseMove = // set the values as the mouse moves
- function (e) {
- clearTimeout(timeout);
- timeout = setTimeout(
- function () {
- setValuesFromMousePosition.call($this, e);
- }, 0);
- e.stopPropagation();
- e.preventDefault();
- return false;
- },
- mouseUp = // unbind the document events - they aren't needed when not dragging
- function (e) {
- $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
- e.stopPropagation();
- e.preventDefault();
- return false;
- },
- setValuesFromMousePosition = // calculate mouse position and set value within the current range
- function (e) {
- var locX = e.pageX - offset.l,
- locY = e.pageY - offset.t,
- barW = bar.w, // local copies for YUI compressor
- barH = bar.h;
- // keep the arrow within the bounds of the bar
- if (locX < 0) locX = 0;
- else if (locX > barW) locX = barW;
- if (locY < 0) locY = 0;
- else if (locY > barH) locY = barH;
- val.call($this, 'xy', { x: ((locX / barW) * rangeX) + minX, y: ((locY / barH) * rangeY) + minY });
- },
- draw =
- function () {
- var arrowOffsetX = 0,
- arrowOffsetY = 0,
- barW = bar.w,
- barH = bar.h,
- arrowW = arrow.w,
- arrowH = arrow.h;
- setTimeout(
- function () {
- if (rangeX > 0) { // range is greater than zero
- // constrain to bounds
- if (x === maxX) arrowOffsetX = barW;
- else arrowOffsetX = ((x / rangeX) * barW) | 0;
- }
- if (rangeY > 0) { // range is greater than zero
- // constrain to bounds
- if (y === maxY) arrowOffsetY = barH;
- else arrowOffsetY = ((y / rangeY) * barH) | 0;
- }
- // if arrow width is greater than bar width, center arrow and prevent horizontal dragging
- if (arrowW >= barW) arrowOffsetX = (barW >> 1) - (arrowW >> 1); // number >> 1 - superfast bitwise divide by two and truncate (move bits over one bit discarding lowest)
- else arrowOffsetX -= arrowW >> 1;
- // if arrow height is greater than bar height, center arrow and prevent vertical dragging
- if (arrowH >= barH) arrowOffsetY = (barH >> 1) - (arrowH >> 1);
- else arrowOffsetY -= arrowH >> 1;
- // set the arrow position based on these offsets
- arrow.css({ left: arrowOffsetX + 'px', top: arrowOffsetY + 'px' });
- }, 0);
- },
- val =
- function (name, value, context) {
- var set = value !== undefined;
- if (!set) {
- if (name === undefined || name == null) name = 'xy';
- switch (name.toLowerCase()) {
- case 'x': return x;
- case 'y': return y;
- case 'xy':
- default: return { x: x, y: y };
- }
- }
- if (context != null && context === $this) return;
- var changed = false,
- newX,
- newY;
- if (name == null) name = 'xy';
- switch (name.toLowerCase()) {
- case 'x':
- newX = (value && ((value.x && value.x | 0) || value | 0)) || 0;
- break;
- case 'y':
- newY = (value && ((value.y && value.y | 0) || value | 0)) || 0;
- break;
- case 'xy':
- default:
- newX = (value && value.x && value.x | 0) || 0;
- newY = (value && value.y && value.y | 0) || 0;
- break;
- }
- if (newX != null) {
- if (newX < minX) newX = minX;
- else if (newX > maxX) newX = maxX;
- if (x !== newX) {
- x = newX;
- changed = true;
- }
- }
- if (newY != null) {
- if (newY < minY) newY = minY;
- else if (newY > maxY) newY = maxY;
- if (y !== newY) {
- y = newY;
- changed = true;
- }
- }
- changed && fireChangeEvents.call($this, context || $this);
- },
- range =
- function (name, value) {
- var set = value !== undefined;
- if (!set) {
- if (name === undefined || name == null) name = 'all';
- switch (name.toLowerCase()) {
- case 'minx': return minX;
- case 'maxx': return maxX;
- case 'rangex': return { minX: minX, maxX: maxX, rangeX: rangeX };
- case 'miny': return minY;
- case 'maxy': return maxY;
- case 'rangey': return { minY: minY, maxY: maxY, rangeY: rangeY };
- case 'all':
- default: return { minX: minX, maxX: maxX, rangeX: rangeX, minY: minY, maxY: maxY, rangeY: rangeY };
- }
- }
- var // changed = false,
- newMinX,
- newMaxX,
- newMinY,
- newMaxY;
- if (name == null) name = 'all';
- switch (name.toLowerCase()) {
- case 'minx':
- newMinX = (value && ((value.minX && value.minX | 0) || value | 0)) || 0;
- break;
- case 'maxx':
- newMaxX = (value && ((value.maxX && value.maxX | 0) || value | 0)) || 0;
- break;
- case 'rangex':
- newMinX = (value && value.minX && value.minX | 0) || 0;
- newMaxX = (value && value.maxX && value.maxX | 0) || 0;
- break;
- case 'miny':
- newMinY = (value && ((value.minY && value.minY | 0) || value | 0)) || 0;
- break;
- case 'maxy':
- newMaxY = (value && ((value.maxY && value.maxY | 0) || value | 0)) || 0;
- break;
- case 'rangey':
- newMinY = (value && value.minY && value.minY | 0) || 0;
- newMaxY = (value && value.maxY && value.maxY | 0) || 0;
- break;
- case 'all':
- default:
- newMinX = (value && value.minX && value.minX | 0) || 0;
- newMaxX = (value && value.maxX && value.maxX | 0) || 0;
- newMinY = (value && value.minY && value.minY | 0) || 0;
- newMaxY = (value && value.maxY && value.maxY | 0) || 0;
- break;
- }
- if (newMinX != null && minX !== newMinX) {
- minX = newMinX;
- rangeX = maxX - minX;
- }
- if (newMaxX != null && maxX !== newMaxX) {
- maxX = newMaxX;
- rangeX = maxX - minX;
- }
- if (newMinY != null && minY !== newMinY) {
- minY = newMinY;
- rangeY = maxY - minY;
- }
- if (newMaxY != null && maxY !== newMaxY) {
- maxY = newMaxY;
- rangeY = maxY - minY;
- }
- },
- bind =
- function (callback) {
- if ($.isFunction(callback)) changeEvents.push(callback);
- },
- unbind =
- function (callback) {
- if (!$.isFunction(callback)) return;
- var i;
- while ((i = $.inArray(callback, changeEvents)) > -1) changeEvents.splice(i, 1);
- },
- destroy =
- function () {
- // unbind all possible events and null objects
- $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
- bar.unbind('mousedown', mouseDown);
- bar = null;
- arrow = null;
- changeEvents = null;
- };
- $.extend(true, $this, // public properties, methods, and event bindings - these we need to access from other controls
- {
- val: val,
- range: range,
- bind: bind,
- unbind: unbind,
- destroy: destroy
- });
- // initialize this control
- arrow.src = options.arrow && options.arrow.image;
- arrow.w = (options.arrow && options.arrow.width) || arrow.width();
- arrow.h = (options.arrow && options.arrow.height) || arrow.height();
- bar.w = (options.map && options.map.width) || bar.width();
- bar.h = (options.map && options.map.height) || bar.height();
- // bind mousedown event
- bar.bind('mousedown', mouseDown);
- bind.call($this, draw);
- },
- ColorValuePicker = // controls for all the input elements for the typing in color values
- function (picker, color, bindedHex, alphaPrecision) {
- var $this = this, // private properties and methods
- inputs = picker.find('td.Text input'),
- red = inputs.eq(3),
- green = inputs.eq(4),
- blue = inputs.eq(5),
- alpha = inputs.length > 7 ? inputs.eq(6) : null,
- hue = inputs.eq(0),
- saturation = inputs.eq(1),
- value = inputs.eq(2),
- hex = inputs.eq(inputs.length > 7 ? 7 : 6),
- ahex = inputs.length > 7 ? inputs.eq(8) : null,
- keyDown = // input box key down - use arrows to alter color
- function (e) {
- if (e.target.value === '' && e.target !== hex.get(0) && ((bindedHex != null && e.target !== bindedHex.get(0)) || bindedHex == null)) return;
- if (!validateKey(e)) return e;
- switch (e.target) {
- case red.get(0):
- switch (e.keyCode) {
- case 38:
- red.val(setValueInRange.call($this, (red.val() << 0) + 1, 0, 255));
- color.val('r', red.val(), e.target);
- return false;
- case 40:
- red.val(setValueInRange.call($this, (red.val() << 0) - 1, 0, 255));
- color.val('r', red.val(), e.target);
- return false;
- }
- break;
- case green.get(0):
- switch (e.keyCode) {
- case 38:
- green.val(setValueInRange.call($this, (green.val() << 0) + 1, 0, 255));
- color.val('g', green.val(), e.target);
- return false;
- case 40:
- green.val(setValueInRange.call($this, (green.val() << 0) - 1, 0, 255));
- color.val('g', green.val(), e.target);
- return false;
- }
- break;
- case blue.get(0):
- switch (e.keyCode) {
- case 38:
- blue.val(setValueInRange.call($this, (blue.val() << 0) + 1, 0, 255));
- color.val('b', blue.val(), e.target);
- return false;
- case 40:
- blue.val(setValueInRange.call($this, (blue.val() << 0) - 1, 0, 255));
- color.val('b', blue.val(), e.target);
- return false;
- }
- break;
- case alpha && alpha.get(0):
- switch (e.keyCode) {
- case 38:
- alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) + 1, 0, 100));
- color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
- return false;
- case 40:
- alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) - 1, 0, 100));
- color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
- return false;
- }
- break;
- case hue.get(0):
- switch (e.keyCode) {
- case 38:
- hue.val(setValueInRange.call($this, (hue.val() << 0) + 1, 0, 360));
- color.val('h', hue.val(), e.target);
- return false;
- case 40:
- hue.val(setValueInRange.call($this, (hue.val() << 0) - 1, 0, 360));
- color.val('h', hue.val(), e.target);
- return false;
- }
- break;
- case saturation.get(0):
- switch (e.keyCode) {
- case 38:
- saturation.val(setValueInRange.call($this, (saturation.val() << 0) + 1, 0, 100));
- color.val('s', saturation.val(), e.target);
- return false;
- case 40:
- saturation.val(setValueInRange.call($this, (saturation.val() << 0) - 1, 0, 100));
- color.val('s', saturation.val(), e.target);
- return false;
- }
- break;
- case value.get(0):
- switch (e.keyCode) {
- case 38:
- value.val(setValueInRange.call($this, (value.val() << 0) + 1, 0, 100));
- color.val('v', value.val(), e.target);
- return false;
- case 40:
- value.val(setValueInRange.call($this, (value.val() << 0) - 1, 0, 100));
- color.val('v', value.val(), e.target);
- return false;
- }
- break;
- }
- },
- keyUp = // input box key up - validate value and set color
- function (e) {
- if (e.target.value === '' && e.target !== hex.get(0) &&
- ((bindedHex != null && e.target !== bindedHex.get(0)) ||
- bindedHex == null)) return;
- if (!validateKey(e)) return e;
- switch (e.target) {
- case red.get(0):
- red.val(setValueInRange.call($this, red.val(), 0, 255));
- color.val('r', red.val(), e.target);
- break;
- case green.get(0):
- green.val(setValueInRange.call($this, green.val(), 0, 255));
- color.val('g', green.val(), e.target);
- break;
- case blue.get(0):
- blue.val(setValueInRange.call($this, blue.val(), 0, 255));
- color.val('b', blue.val(), e.target);
- break;
- case alpha && alpha.get(0):
- alpha.val(setValueInRange.call($this, alpha.val(), 0, 100));
- color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
- break;
- case hue.get(0):
- hue.val(setValueInRange.call($this, hue.val(), 0, 360));
- color.val('h', hue.val(), e.target);
- break;
- case saturation.get(0):
- saturation.val(setValueInRange.call($this, saturation.val(), 0, 100));
- color.val('s', saturation.val(), e.target);
- break;
- case value.get(0):
- value.val(setValueInRange.call($this, value.val(), 0, 100));
- color.val('v', value.val(), e.target);
- break;
- case hex.get(0):
- hex.val(hex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
- bindedHex && bindedHex.val(hex.val());
- color.val('hex', hex.val() !== '' ? hex.val() : null, e.target);
- break;
- case bindedHex && bindedHex.get(0):
- bindedHex.val(bindedHex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
- hex.val(bindedHex.val());
- color.val('hex', bindedHex.val() !== '' ? bindedHex.val() : null, e.target);
- break;
- case ahex && ahex.get(0):
- ahex.val(ahex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 2));
- color.val('a', ahex.val() != null ? parseInt(ahex.val(), 16) : null, e.target);
- break;
- }
- },
- blur = // input box blur - reset to original if value empty
- function (e) {
- if (color.val() != null) {
- switch (e.target) {
- case red.get(0): red.val(color.val('r')); break;
- case green.get(0): green.val(color.val('g')); break;
- case blue.get(0): blue.val(color.val('b')); break;
- case alpha && alpha.get(0): alpha.val(Math.precision((color.val('a') * 100) / 255, alphaPrecision)); break;
- case hue.get(0): hue.val(color.val('h')); break;
- case saturation.get(0): saturation.val(color.val('s')); break;
- case value.get(0): value.val(color.val('v')); break;
- case hex.get(0):
- case bindedHex && bindedHex.get(0):
- hex.val(color.val('hex'));
- bindedHex && bindedHex.val(color.val('hex'));
- break;
- case ahex && ahex.get(0): ahex.val(color.val('ahex').substring(6)); break;
- }
- }
- },
- validateKey = // validate key
- function (e) {
- switch (e.keyCode) {
- case 9:
- case 16:
- case 29:
- case 37:
- case 39:
- return false;
- case 'c'.charCodeAt():
- case 'v'.charCodeAt():
- if (e.ctrlKey) return false;
- }
- return true;
- },
- setValueInRange = // constrain value within range
- function (value, min, max) {
- if (value === '' || isNaN(value)) return min;
- if (value > max) return max;
- if (value < min) return min;
- return value;
- },
- colorChanged =
- function (ui, context) {
- var all = ui.val('all');
- if (context !== red.get(0)) red.val(all != null ? all.r : '');
- if (context !== green.get(0)) green.val(all != null ? all.g : '');
- if (context !== blue.get(0)) blue.val(all != null ? all.b : '');
- if (alpha && context !== alpha.get(0)) alpha.val(all != null ? Math.precision((all.a * 100) / 255, alphaPrecision) : '');
- if (context !== hue.get(0)) hue.val(all != null ? all.h : '');
- if (context !== saturation.get(0)) saturation.val(all != null ? all.s : '');
- if (context !== value.get(0)) value.val(all != null ? all.v : '');
- if (context !== hex.get(0) && ((bindedHex && context !== bindedHex.get(0)) || !bindedHex)) hex.val(all != null ? all.hex : '');
- if (bindedHex && context !== bindedHex.get(0) && context !== hex.get(0)) bindedHex.val(all != null ? all.hex : '');
- if (ahex && context !== ahex.get(0)) ahex.val(all != null ? all.ahex.substring(6) : '');
- },
- destroy =
- function () {
- // unbind all events and null objects
- red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).unbind('keyup', keyUp).unbind('blur', blur);
- red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).unbind('keydown', keyDown);
- color.unbind(colorChanged);
- red = null;
- green = null;
- blue = null;
- alpha = null;
- hue = null;
- saturation = null;
- value = null;
- hex = null;
- ahex = null;
- };
- $.extend(true, $this, // public properties and methods
- {
- destroy: destroy
- });
- red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).bind('keyup', keyUp).bind('blur', blur);
- red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).bind('keydown', keyDown);
- color.bind(colorChanged);
- };
+ function (bar, options) {
+ var $this = this, // private properties, methods, and events - keep these variables and classes invisible to outside code
+ arrow = bar.find('img:first'), // the arrow image to drag
+ minX = 0,
+ maxX = 100,
+ rangeX = 100,
+ minY = 0,
+ maxY = 100,
+ rangeY = 100,
+ x = 0,
+ y = 0,
+ offset,
+ timeout,
+ changeEvents = [],
+ fireChangeEvents =
+ function (context) {
+ for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+ },
+ mouseDown = // bind the mousedown to the bar not the arrow for quick snapping to the clicked location
+ function (e) {
+ var off = bar.offset();
+ offset = { l: off.left | 0, t: off.top | 0 };
+ clearTimeout(timeout);
+ timeout = setTimeout( // using setTimeout for visual updates - once the style is updated the browser will re-render internally allowing the next Javascript to run
+ function () {
+ setValuesFromMousePosition.call($this, e);
+ }, 0);
+ // Bind mousemove and mouseup event to the document so it responds when dragged of of the bar - we will unbind these when on mouseup to save processing
+ $(document).bind('mousemove', mouseMove).bind('mouseup', mouseUp);
+ e.preventDefault(); // don't try to select anything or drag the image to the desktop
+ },
+ mouseMove = // set the values as the mouse moves
+ function (e) {
+ clearTimeout(timeout);
+ timeout = setTimeout(
+ function () {
+ setValuesFromMousePosition.call($this, e);
+ }, 0);
+ e.stopPropagation();
+ e.preventDefault();
+ return false;
+ },
+ mouseUp = // unbind the document events - they aren't needed when not dragging
+ function (e) {
+ $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+ e.stopPropagation();
+ e.preventDefault();
+ return false;
+ },
+ setValuesFromMousePosition = // calculate mouse position and set value within the current range
+ function (e) {
+ var locX = e.pageX - offset.l,
+ locY = e.pageY - offset.t,
+ barW = bar.w, // local copies for YUI compressor
+ barH = bar.h;
+ // keep the arrow within the bounds of the bar
+ if (locX < 0) locX = 0;
+ else if (locX > barW) locX = barW;
+ if (locY < 0) locY = 0;
+ else if (locY > barH) locY = barH;
+ val.call($this, 'xy', { x: ((locX / barW) * rangeX) + minX, y: ((locY / barH) * rangeY) + minY });
+ },
+ draw =
+ function () {
+ var arrowOffsetX = 0,
+ arrowOffsetY = 0,
+ barW = bar.w,
+ barH = bar.h,
+ arrowW = arrow.w,
+ arrowH = arrow.h;
+ setTimeout(
+ function () {
+ if (rangeX > 0) { // range is greater than zero
+ // constrain to bounds
+ if (x === maxX) arrowOffsetX = barW;
+ else arrowOffsetX = ((x / rangeX) * barW) | 0;
+ }
+ if (rangeY > 0) { // range is greater than zero
+ // constrain to bounds
+ if (y === maxY) arrowOffsetY = barH;
+ else arrowOffsetY = ((y / rangeY) * barH) | 0;
+ }
+ // if arrow width is greater than bar width, center arrow and prevent horizontal dragging
+ if (arrowW >= barW) arrowOffsetX = (barW >> 1) - (arrowW >> 1); // number >> 1 - superfast bitwise divide by two and truncate (move bits over one bit discarding lowest)
+ else arrowOffsetX -= arrowW >> 1;
+ // if arrow height is greater than bar height, center arrow and prevent vertical dragging
+ if (arrowH >= barH) arrowOffsetY = (barH >> 1) - (arrowH >> 1);
+ else arrowOffsetY -= arrowH >> 1;
+ // set the arrow position based on these offsets
+ arrow.css({ left: arrowOffsetX + 'px', top: arrowOffsetY + 'px' });
+ }, 0);
+ },
+ val =
+ function (name, value, context) {
+ var set = value !== undefined;
+ if (!set) {
+ if (name === undefined || name == null) name = 'xy';
+ switch (name.toLowerCase()) {
+ case 'x': return x;
+ case 'y': return y;
+ case 'xy':
+ default: return { x: x, y: y };
+ }
+ }
+ if (context != null && context === $this) return;
+ var changed = false,
+ newX,
+ newY;
+ if (name == null) name = 'xy';
+ switch (name.toLowerCase()) {
+ case 'x':
+ newX = (value && ((value.x && value.x | 0) || value | 0)) || 0;
+ break;
+ case 'y':
+ newY = (value && ((value.y && value.y | 0) || value | 0)) || 0;
+ break;
+ case 'xy':
+ default:
+ newX = (value && value.x && value.x | 0) || 0;
+ newY = (value && value.y && value.y | 0) || 0;
+ break;
+ }
+ if (newX != null) {
+ if (newX < minX) newX = minX;
+ else if (newX > maxX) newX = maxX;
+ if (x !== newX) {
+ x = newX;
+ changed = true;
+ }
+ }
+ if (newY != null) {
+ if (newY < minY) newY = minY;
+ else if (newY > maxY) newY = maxY;
+ if (y !== newY) {
+ y = newY;
+ changed = true;
+ }
+ }
+ changed && fireChangeEvents.call($this, context || $this);
+ },
+ range =
+ function (name, value) {
+ var set = value !== undefined;
+ if (!set) {
+ if (name === undefined || name == null) name = 'all';
+ switch (name.toLowerCase()) {
+ case 'minx': return minX;
+ case 'maxx': return maxX;
+ case 'rangex': return { minX: minX, maxX: maxX, rangeX: rangeX };
+ case 'miny': return minY;
+ case 'maxy': return maxY;
+ case 'rangey': return { minY: minY, maxY: maxY, rangeY: rangeY };
+ case 'all':
+ default: return { minX: minX, maxX: maxX, rangeX: rangeX, minY: minY, maxY: maxY, rangeY: rangeY };
+ }
+ }
+ var // changed = false,
+ newMinX,
+ newMaxX,
+ newMinY,
+ newMaxY;
+ if (name == null) name = 'all';
+ switch (name.toLowerCase()) {
+ case 'minx':
+ newMinX = (value && ((value.minX && value.minX | 0) || value | 0)) || 0;
+ break;
+ case 'maxx':
+ newMaxX = (value && ((value.maxX && value.maxX | 0) || value | 0)) || 0;
+ break;
+ case 'rangex':
+ newMinX = (value && value.minX && value.minX | 0) || 0;
+ newMaxX = (value && value.maxX && value.maxX | 0) || 0;
+ break;
+ case 'miny':
+ newMinY = (value && ((value.minY && value.minY | 0) || value | 0)) || 0;
+ break;
+ case 'maxy':
+ newMaxY = (value && ((value.maxY && value.maxY | 0) || value | 0)) || 0;
+ break;
+ case 'rangey':
+ newMinY = (value && value.minY && value.minY | 0) || 0;
+ newMaxY = (value && value.maxY && value.maxY | 0) || 0;
+ break;
+ case 'all':
+ default:
+ newMinX = (value && value.minX && value.minX | 0) || 0;
+ newMaxX = (value && value.maxX && value.maxX | 0) || 0;
+ newMinY = (value && value.minY && value.minY | 0) || 0;
+ newMaxY = (value && value.maxY && value.maxY | 0) || 0;
+ break;
+ }
+ if (newMinX != null && minX !== newMinX) {
+ minX = newMinX;
+ rangeX = maxX - minX;
+ }
+ if (newMaxX != null && maxX !== newMaxX) {
+ maxX = newMaxX;
+ rangeX = maxX - minX;
+ }
+ if (newMinY != null && minY !== newMinY) {
+ minY = newMinY;
+ rangeY = maxY - minY;
+ }
+ if (newMaxY != null && maxY !== newMaxY) {
+ maxY = newMaxY;
+ rangeY = maxY - minY;
+ }
+ },
+ bind =
+ function (callback) {
+ if ($.isFunction(callback)) changeEvents.push(callback);
+ },
+ unbind =
+ function (callback) {
+ if (!$.isFunction(callback)) return;
+ var i;
+ while ((i = $.inArray(callback, changeEvents)) > -1) changeEvents.splice(i, 1);
+ },
+ destroy =
+ function () {
+ // unbind all possible events and null objects
+ $(document).unbind('mouseup', mouseUp).unbind('mousemove', mouseMove);
+ bar.unbind('mousedown', mouseDown);
+ bar = null;
+ arrow = null;
+ changeEvents = null;
+ };
+ $.extend(true, $this, // public properties, methods, and event bindings - these we need to access from other controls
+ {
+ val: val,
+ range: range,
+ bind: bind,
+ unbind: unbind,
+ destroy: destroy
+ });
+ // initialize this control
+ arrow.src = options.arrow && options.arrow.image;
+ arrow.w = (options.arrow && options.arrow.width) || arrow.width();
+ arrow.h = (options.arrow && options.arrow.height) || arrow.height();
+ bar.w = (options.map && options.map.width) || bar.width();
+ bar.h = (options.map && options.map.height) || bar.height();
+ // bind mousedown event
+ bar.bind('mousedown', mouseDown);
+ bind.call($this, draw);
+ },
+ ColorValuePicker = // controls for all the input elements for the typing in color values
+ function (picker, color, bindedHex, alphaPrecision) {
+ var $this = this, // private properties and methods
+ inputs = picker.find('td.Text input'),
+ red = inputs.eq(3),
+ green = inputs.eq(4),
+ blue = inputs.eq(5),
+ alpha = inputs.length > 7 ? inputs.eq(6) : null,
+ hue = inputs.eq(0),
+ saturation = inputs.eq(1),
+ value = inputs.eq(2),
+ hex = inputs.eq(inputs.length > 7 ? 7 : 6),
+ ahex = inputs.length > 7 ? inputs.eq(8) : null,
+ keyDown = // input box key down - use arrows to alter color
+ function (e) {
+ if (e.target.value === '' && e.target !== hex.get(0) && ((bindedHex != null && e.target !== bindedHex.get(0)) || bindedHex == null)) return;
+ if (!validateKey(e)) return e;
+ switch (e.target) {
+ case red.get(0):
+ switch (e.keyCode) {
+ case 38:
+ red.val(setValueInRange.call($this, (red.val() << 0) + 1, 0, 255));
+ color.val('r', red.val(), e.target);
+ return false;
+ case 40:
+ red.val(setValueInRange.call($this, (red.val() << 0) - 1, 0, 255));
+ color.val('r', red.val(), e.target);
+ return false;
+ }
+ break;
+ case green.get(0):
+ switch (e.keyCode) {
+ case 38:
+ green.val(setValueInRange.call($this, (green.val() << 0) + 1, 0, 255));
+ color.val('g', green.val(), e.target);
+ return false;
+ case 40:
+ green.val(setValueInRange.call($this, (green.val() << 0) - 1, 0, 255));
+ color.val('g', green.val(), e.target);
+ return false;
+ }
+ break;
+ case blue.get(0):
+ switch (e.keyCode) {
+ case 38:
+ blue.val(setValueInRange.call($this, (blue.val() << 0) + 1, 0, 255));
+ color.val('b', blue.val(), e.target);
+ return false;
+ case 40:
+ blue.val(setValueInRange.call($this, (blue.val() << 0) - 1, 0, 255));
+ color.val('b', blue.val(), e.target);
+ return false;
+ }
+ break;
+ case alpha && alpha.get(0):
+ switch (e.keyCode) {
+ case 38:
+ alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) + 1, 0, 100));
+ color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+ return false;
+ case 40:
+ alpha.val(setValueInRange.call($this, parseFloat(alpha.val()) - 1, 0, 100));
+ color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+ return false;
+ }
+ break;
+ case hue.get(0):
+ switch (e.keyCode) {
+ case 38:
+ hue.val(setValueInRange.call($this, (hue.val() << 0) + 1, 0, 360));
+ color.val('h', hue.val(), e.target);
+ return false;
+ case 40:
+ hue.val(setValueInRange.call($this, (hue.val() << 0) - 1, 0, 360));
+ color.val('h', hue.val(), e.target);
+ return false;
+ }
+ break;
+ case saturation.get(0):
+ switch (e.keyCode) {
+ case 38:
+ saturation.val(setValueInRange.call($this, (saturation.val() << 0) + 1, 0, 100));
+ color.val('s', saturation.val(), e.target);
+ return false;
+ case 40:
+ saturation.val(setValueInRange.call($this, (saturation.val() << 0) - 1, 0, 100));
+ color.val('s', saturation.val(), e.target);
+ return false;
+ }
+ break;
+ case value.get(0):
+ switch (e.keyCode) {
+ case 38:
+ value.val(setValueInRange.call($this, (value.val() << 0) + 1, 0, 100));
+ color.val('v', value.val(), e.target);
+ return false;
+ case 40:
+ value.val(setValueInRange.call($this, (value.val() << 0) - 1, 0, 100));
+ color.val('v', value.val(), e.target);
+ return false;
+ }
+ break;
+ }
+ },
+ keyUp = // input box key up - validate value and set color
+ function (e) {
+ if (e.target.value === '' && e.target !== hex.get(0) &&
+ ((bindedHex != null && e.target !== bindedHex.get(0)) ||
+ bindedHex == null)) return;
+ if (!validateKey(e)) return e;
+ switch (e.target) {
+ case red.get(0):
+ red.val(setValueInRange.call($this, red.val(), 0, 255));
+ color.val('r', red.val(), e.target);
+ break;
+ case green.get(0):
+ green.val(setValueInRange.call($this, green.val(), 0, 255));
+ color.val('g', green.val(), e.target);
+ break;
+ case blue.get(0):
+ blue.val(setValueInRange.call($this, blue.val(), 0, 255));
+ color.val('b', blue.val(), e.target);
+ break;
+ case alpha && alpha.get(0):
+ alpha.val(setValueInRange.call($this, alpha.val(), 0, 100));
+ color.val('a', Math.precision((alpha.val() * 255) / 100, alphaPrecision), e.target);
+ break;
+ case hue.get(0):
+ hue.val(setValueInRange.call($this, hue.val(), 0, 360));
+ color.val('h', hue.val(), e.target);
+ break;
+ case saturation.get(0):
+ saturation.val(setValueInRange.call($this, saturation.val(), 0, 100));
+ color.val('s', saturation.val(), e.target);
+ break;
+ case value.get(0):
+ value.val(setValueInRange.call($this, value.val(), 0, 100));
+ color.val('v', value.val(), e.target);
+ break;
+ case hex.get(0):
+ hex.val(hex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+ bindedHex && bindedHex.val(hex.val());
+ color.val('hex', hex.val() !== '' ? hex.val() : null, e.target);
+ break;
+ case bindedHex && bindedHex.get(0):
+ bindedHex.val(bindedHex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 6));
+ hex.val(bindedHex.val());
+ color.val('hex', bindedHex.val() !== '' ? bindedHex.val() : null, e.target);
+ break;
+ case ahex && ahex.get(0):
+ ahex.val(ahex.val().replace(/[^a-fA-F0-9]/g, '').toLowerCase().substring(0, 2));
+ color.val('a', ahex.val() != null ? parseInt(ahex.val(), 16) : null, e.target);
+ break;
+ }
+ },
+ blur = // input box blur - reset to original if value empty
+ function (e) {
+ if (color.val() != null) {
+ switch (e.target) {
+ case red.get(0): red.val(color.val('r')); break;
+ case green.get(0): green.val(color.val('g')); break;
+ case blue.get(0): blue.val(color.val('b')); break;
+ case alpha && alpha.get(0): alpha.val(Math.precision((color.val('a') * 100) / 255, alphaPrecision)); break;
+ case hue.get(0): hue.val(color.val('h')); break;
+ case saturation.get(0): saturation.val(color.val('s')); break;
+ case value.get(0): value.val(color.val('v')); break;
+ case hex.get(0):
+ case bindedHex && bindedHex.get(0):
+ hex.val(color.val('hex'));
+ bindedHex && bindedHex.val(color.val('hex'));
+ break;
+ case ahex && ahex.get(0): ahex.val(color.val('ahex').substring(6)); break;
+ }
+ }
+ },
+ validateKey = // validate key
+ function (e) {
+ switch (e.keyCode) {
+ case 9:
+ case 16:
+ case 29:
+ case 37:
+ case 39:
+ return false;
+ case 'c'.charCodeAt():
+ case 'v'.charCodeAt():
+ if (e.ctrlKey) return false;
+ }
+ return true;
+ },
+ setValueInRange = // constrain value within range
+ function (value, min, max) {
+ if (value === '' || isNaN(value)) return min;
+ if (value > max) return max;
+ if (value < min) return min;
+ return value;
+ },
+ colorChanged =
+ function (ui, context) {
+ var all = ui.val('all');
+ if (context !== red.get(0)) red.val(all != null ? all.r : '');
+ if (context !== green.get(0)) green.val(all != null ? all.g : '');
+ if (context !== blue.get(0)) blue.val(all != null ? all.b : '');
+ if (alpha && context !== alpha.get(0)) alpha.val(all != null ? Math.precision((all.a * 100) / 255, alphaPrecision) : '');
+ if (context !== hue.get(0)) hue.val(all != null ? all.h : '');
+ if (context !== saturation.get(0)) saturation.val(all != null ? all.s : '');
+ if (context !== value.get(0)) value.val(all != null ? all.v : '');
+ if (context !== hex.get(0) && ((bindedHex && context !== bindedHex.get(0)) || !bindedHex)) hex.val(all != null ? all.hex : '');
+ if (bindedHex && context !== bindedHex.get(0) && context !== hex.get(0)) bindedHex.val(all != null ? all.hex : '');
+ if (ahex && context !== ahex.get(0)) ahex.val(all != null ? all.ahex.substring(6) : '');
+ },
+ destroy =
+ function () {
+ // unbind all events and null objects
+ red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).unbind('keyup', keyUp).unbind('blur', blur);
+ red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).unbind('keydown', keyDown);
+ color.unbind(colorChanged);
+ red = null;
+ green = null;
+ blue = null;
+ alpha = null;
+ hue = null;
+ saturation = null;
+ value = null;
+ hex = null;
+ ahex = null;
+ };
+ $.extend(true, $this, // public properties and methods
+ {
+ destroy: destroy
+ });
+ red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).add(hex).add(bindedHex).add(ahex).bind('keyup', keyUp).bind('blur', blur);
+ red.add(green).add(blue).add(alpha).add(hue).add(saturation).add(value).bind('keydown', keyDown);
+ color.bind(colorChanged);
+ };
$.jPicker =
{
- List: [], // array holding references to each active instance of the control
- // color object - we will be able to assign by any color space type or retrieve any color space info
- // we want this public so we can optionally assign new color objects to initial values using inputs other than a string hex value (also supported)
- Color:
- function (init) {
- var $this = this,
- r,
- g,
- b,
- a,
- h,
- s,
- v,
- changeEvents = [],
- fireChangeEvents =
- function (context) {
- for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
- },
- val =
- function (name, value, context) {
- // Kind of ugly
- var set = Boolean(value);
- if (set && value.ahex === '') value.ahex = '00000000';
- if (!set) {
- if (name === undefined || name == null || name === '') name = 'all';
- if (r == null) return null;
- switch (name.toLowerCase()) {
- case 'ahex': return ColorMethods.rgbaToHex({ r: r, g: g, b: b, a: a });
- case 'hex': return val('ahex').substring(0, 6);
- case 'all': return { r: r, g: g, b: b, a: a, h: h, s: s, v: v, hex: val.call($this, 'hex'), ahex: val.call($this, 'ahex') };
- default:
- var ret = {};
- for (var i = 0; i < name.length; i++) {
- switch (name.charAt(i)) {
- case 'r':
- if (name.length === 1) ret = r;
- else ret.r = r;
- break;
- case 'g':
- if (name.length === 1) ret = g;
- else ret.g = g;
- break;
- case 'b':
- if (name.length === 1) ret = b;
- else ret.b = b;
- break;
- case 'a':
- if (name.length === 1) ret = a;
- else ret.a = a;
- break;
- case 'h':
- if (name.length === 1) ret = h;
- else ret.h = h;
- break;
- case 's':
- if (name.length === 1) ret = s;
- else ret.s = s;
- break;
- case 'v':
- if (name.length === 1) ret = v;
- else ret.v = v;
- break;
- }
- }
- return !name.length ? val.call($this, 'all') : ret;
- }
- }
- if (context != null && context === $this) return;
- var changed = false;
- if (name == null) name = '';
- if (value == null) {
- if (r != null) {
- r = null;
- changed = true;
- }
- if (g != null) {
- g = null;
- changed = true;
- }
- if (b != null) {
- b = null;
- changed = true;
- }
- if (a != null) {
- a = null;
- changed = true;
- }
- if (h != null) {
- h = null;
- changed = true;
- }
- if (s != null) {
- s = null;
- changed = true;
- }
- if (v != null) {
- v = null;
- changed = true;
- }
- changed && fireChangeEvents.call($this, context || $this);
- return;
- }
- switch (name.toLowerCase()) {
- case 'ahex':
- case 'hex':
- var ret = ColorMethods.hexToRgba((value && (value.ahex || value.hex)) || value || 'none');
- val.call($this, 'rgba', { r: ret.r, g: ret.g, b: ret.b, a: name === 'ahex' ? ret.a : a != null ? a : 255 }, context);
- break;
- default:
- if (value && (value.ahex != null || value.hex != null)) {
- val.call($this, 'ahex', value.ahex || value.hex || '00000000', context);
- return;
- }
- var newV = {}, rgb = false, hsv = false;
- if (value.r !== undefined && !name.indexOf('r') === -1) name += 'r';
- if (value.g !== undefined && !name.indexOf('g') === -1) name += 'g';
- if (value.b !== undefined && !name.indexOf('b') === -1) name += 'b';
- if (value.a !== undefined && !name.indexOf('a') === -1) name += 'a';
- if (value.h !== undefined && !name.indexOf('h') === -1) name += 'h';
- if (value.s !== undefined && !name.indexOf('s') === -1) name += 's';
- if (value.v !== undefined && !name.indexOf('v') === -1) name += 'v';
- for (var i = 0; i < name.length; i++) {
- switch (name.charAt(i)) {
- case 'r':
- if (hsv) continue;
- rgb = true;
- newV.r = (value && value.r && value.r | 0) || (value && value | 0) || 0;
- if (newV.r < 0) newV.r = 0;
- else if (newV.r > 255) newV.r = 255;
- if (r !== newV.r) {
- r = newV.r;
- changed = true;
- }
- break;
- case 'g':
- if (hsv) continue;
- rgb = true;
- newV.g = (value && value.g && value.g | 0) || (value && value | 0) || 0;
- if (newV.g < 0) newV.g = 0;
- else if (newV.g > 255) newV.g = 255;
- if (g !== newV.g) {
- g = newV.g;
- changed = true;
- }
- break;
- case 'b':
- if (hsv) continue;
- rgb = true;
- newV.b = (value && value.b && value.b | 0) || (value && value | 0) || 0;
- if (newV.b < 0) newV.b = 0;
- else if (newV.b > 255) newV.b = 255;
- if (b !== newV.b) {
- b = newV.b;
- changed = true;
- }
- break;
- case 'a':
- newV.a = value && value.a != null ? value.a | 0 : value != null ? value | 0 : 255;
- if (newV.a < 0) newV.a = 0;
- else if (newV.a > 255) newV.a = 255;
- if (a !== newV.a) {
- a = newV.a;
- changed = true;
- }
- break;
- case 'h':
- if (rgb) continue;
- hsv = true;
- newV.h = (value && value.h && value.h | 0) || (value && value | 0) || 0;
- if (newV.h < 0) newV.h = 0;
- else if (newV.h > 360) newV.h = 360;
- if (h !== newV.h) {
- h = newV.h;
- changed = true;
- }
- break;
- case 's':
- if (rgb) continue;
- hsv = true;
- newV.s = value && value.s != null ? value.s | 0 : value != null ? value | 0 : 100;
- if (newV.s < 0) newV.s = 0;
- else if (newV.s > 100) newV.s = 100;
- if (s !== newV.s) {
- s = newV.s;
- changed = true;
- }
- break;
- case 'v':
- if (rgb) continue;
- hsv = true;
- newV.v = value && value.v != null ? value.v | 0 : value != null ? value | 0 : 100;
- if (newV.v < 0) newV.v = 0;
- else if (newV.v > 100) newV.v = 100;
- if (v !== newV.v) {
- v = newV.v;
- changed = true;
- }
- break;
- }
- }
- if (changed) {
- if (rgb) {
- r = r || 0;
- g = g || 0;
- b = b || 0;
- var ret = ColorMethods.rgbToHsv({ r: r, g: g, b: b });
- h = ret.h;
- s = ret.s;
- v = ret.v;
- } else if (hsv) {
- h = h || 0;
- s = s != null ? s : 100;
- v = v != null ? v : 100;
- var ret = ColorMethods.hsvToRgb({ h: h, s: s, v: v });
- r = ret.r;
- g = ret.g;
- b = ret.b;
- }
- a = a != null ? a : 255;
- fireChangeEvents.call($this, context || $this);
- }
- break;
- }
- },
- bind =
- function (callback) {
- if ($.isFunction(callback)) changeEvents.push(callback);
- },
- unbind =
- function (callback) {
- if (!$.isFunction(callback)) return;
- var i;
- while ((i = $.inArray(callback, changeEvents)) > -1) changeEvents.splice(i, 1);
- },
- destroy =
- function () {
- changeEvents = null;
- };
- $.extend(true, $this, // public properties and methods
- {
- val: val,
- bind: bind,
- unbind: unbind,
- destroy: destroy
- });
- if (init) {
- if (init.ahex != null) val('ahex', init);
- else if (init.hex != null) val((init.a != null ? 'a' : '') + 'hex', init.a != null ? { ahex: init.hex + ColorMethods.intToHex(init.a) } : init);
- else if (init.r != null && init.g != null && init.b != null) val('rgb' + (init.a != null ? 'a' : ''), init);
- else if (init.h != null && init.s != null && init.v != null) val('hsv' + (init.a != null ? 'a' : ''), init);
- }
- },
- ColorMethods: // color conversion methods - make public to give use to external scripts
- {
- hexToRgba:
- function (hex) {
- if (hex === '' || hex === 'none') return { r: null, g: null, b: null, a: null };
- hex = this.validateHex(hex);
- var r = '00', g = '00', b = '00', a = '255';
- if (hex.length === 6) hex += 'ff';
- if (hex.length > 6) {
- r = hex.substring(0, 2);
- g = hex.substring(2, 4);
- b = hex.substring(4, 6);
- a = hex.substring(6, hex.length);
- } else {
- if (hex.length > 4) {
- r = hex.substring(4, hex.length);
- hex = hex.substring(0, 4);
- }
- if (hex.length > 2) {
- g = hex.substring(2, hex.length);
- hex = hex.substring(0, 2);
- }
- if (hex.length > 0) b = hex.substring(0, hex.length);
- }
- return { r: this.hexToInt(r), g: this.hexToInt(g), b: this.hexToInt(b), a: this.hexToInt(a) };
- },
- validateHex:
- function (hex) {
- // if (typeof hex === "object") return "";
- hex = hex.toLowerCase().replace(/[^a-f0-9]/g, '');
- if (hex.length > 8) hex = hex.substring(0, 8);
- return hex;
- },
- rgbaToHex:
- function (rgba) {
- return this.intToHex(rgba.r) + this.intToHex(rgba.g) + this.intToHex(rgba.b) + this.intToHex(rgba.a);
- },
- intToHex:
- function (dec) {
- var result = (dec | 0).toString(16);
- if (result.length === 1) result = ('0' + result);
- return result.toLowerCase();
- },
- hexToInt:
- function (hex) {
- return parseInt(hex, 16);
- },
- rgbToHsv:
- function (rgb) {
- var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = { h: 0, s: 0, v: 0 }, min = 0, max = 0, delta;
- if (r >= g && r >= b) {
- max = r;
- min = g > b ? b : g;
- } else if (g >= b && g >= r) {
- max = g;
- min = r > b ? b : r;
- } else {
- max = b;
- min = g > r ? r : g;
- }
- hsv.v = max;
- hsv.s = max ? (max - min) / max : 0;
- if (!hsv.s) hsv.h = 0;
- else {
- delta = max - min;
- if (r === max) hsv.h = (g - b) / delta;
- else if (g === max) hsv.h = 2 + (b - r) / delta;
- else hsv.h = 4 + (r - g) / delta;
- hsv.h = parseInt(hsv.h * 60);
- if (hsv.h < 0) hsv.h += 360;
- }
- hsv.s = (hsv.s * 100) | 0;
- hsv.v = (hsv.v * 100) | 0;
- return hsv;
- },
- hsvToRgb:
- function (hsv) {
- var rgb = { r: 0, g: 0, b: 0, a: 100 }, h = hsv.h, s = hsv.s, v = hsv.v;
- if (s === 0) {
- if (v === 0) rgb.r = rgb.g = rgb.b = 0;
- else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0;
- } else {
- if (h === 360) h = 0;
- h /= 60;
- s = s / 100;
- v = v / 100;
- var i = h | 0,
- f = h - i,
- p = v * (1 - s),
- q = v * (1 - (s * f)),
- t = v * (1 - (s * (1 - f)));
- switch (i) {
- case 0:
- rgb.r = v;
- rgb.g = t;
- rgb.b = p;
- break;
- case 1:
- rgb.r = q;
- rgb.g = v;
- rgb.b = p;
- break;
- case 2:
- rgb.r = p;
- rgb.g = v;
- rgb.b = t;
- break;
- case 3:
- rgb.r = p;
- rgb.g = q;
- rgb.b = v;
- break;
- case 4:
- rgb.r = t;
- rgb.g = p;
- rgb.b = v;
- break;
- case 5:
- rgb.r = v;
- rgb.g = p;
- rgb.b = q;
- break;
- }
- rgb.r = (rgb.r * 255) | 0;
- rgb.g = (rgb.g * 255) | 0;
- rgb.b = (rgb.b * 255) | 0;
- }
- return rgb;
- }
- }
+ List: [], // array holding references to each active instance of the control
+ // color object - we will be able to assign by any color space type or retrieve any color space info
+ // we want this public so we can optionally assign new color objects to initial values using inputs other than a string hex value (also supported)
+ Color:
+ function (init) {
+ var $this = this,
+ r,
+ g,
+ b,
+ a,
+ h,
+ s,
+ v,
+ changeEvents = [],
+ fireChangeEvents =
+ function (context) {
+ for (var i = 0; i < changeEvents.length; i++) changeEvents[i].call($this, $this, context);
+ },
+ val =
+ function (name, value, context) {
+ // Kind of ugly
+ var set = Boolean(value);
+ if (set && value.ahex === '') value.ahex = '00000000';
+ if (!set) {
+ if (name === undefined || name == null || name === '') name = 'all';
+ if (r == null) return null;
+ switch (name.toLowerCase()) {
+ case 'ahex': return ColorMethods.rgbaToHex({ r: r, g: g, b: b, a: a });
+ case 'hex': return val('ahex').substring(0, 6);
+ case 'all': return { r: r, g: g, b: b, a: a, h: h, s: s, v: v, hex: val.call($this, 'hex'), ahex: val.call($this, 'ahex') };
+ default:
+ var ret = {};
+ for (var i = 0; i < name.length; i++) {
+ switch (name.charAt(i)) {
+ case 'r':
+ if (name.length === 1) ret = r;
+ else ret.r = r;
+ break;
+ case 'g':
+ if (name.length === 1) ret = g;
+ else ret.g = g;
+ break;
+ case 'b':
+ if (name.length === 1) ret = b;
+ else ret.b = b;
+ break;
+ case 'a':
+ if (name.length === 1) ret = a;
+ else ret.a = a;
+ break;
+ case 'h':
+ if (name.length === 1) ret = h;
+ else ret.h = h;
+ break;
+ case 's':
+ if (name.length === 1) ret = s;
+ else ret.s = s;
+ break;
+ case 'v':
+ if (name.length === 1) ret = v;
+ else ret.v = v;
+ break;
+ }
+ }
+ return !name.length ? val.call($this, 'all') : ret;
+ }
+ }
+ if (context != null && context === $this) return;
+ var changed = false;
+ if (name == null) name = '';
+ if (value == null) {
+ if (r != null) {
+ r = null;
+ changed = true;
+ }
+ if (g != null) {
+ g = null;
+ changed = true;
+ }
+ if (b != null) {
+ b = null;
+ changed = true;
+ }
+ if (a != null) {
+ a = null;
+ changed = true;
+ }
+ if (h != null) {
+ h = null;
+ changed = true;
+ }
+ if (s != null) {
+ s = null;
+ changed = true;
+ }
+ if (v != null) {
+ v = null;
+ changed = true;
+ }
+ changed && fireChangeEvents.call($this, context || $this);
+ return;
+ }
+ switch (name.toLowerCase()) {
+ case 'ahex':
+ case 'hex':
+ var ret = ColorMethods.hexToRgba((value && (value.ahex || value.hex)) || value || 'none');
+ val.call($this, 'rgba', { r: ret.r, g: ret.g, b: ret.b, a: name === 'ahex' ? ret.a : a != null ? a : 255 }, context);
+ break;
+ default:
+ if (value && (value.ahex != null || value.hex != null)) {
+ val.call($this, 'ahex', value.ahex || value.hex || '00000000', context);
+ return;
+ }
+ var newV = {}, rgb = false, hsv = false;
+ if (value.r !== undefined && !name.indexOf('r') === -1) name += 'r';
+ if (value.g !== undefined && !name.indexOf('g') === -1) name += 'g';
+ if (value.b !== undefined && !name.indexOf('b') === -1) name += 'b';
+ if (value.a !== undefined && !name.indexOf('a') === -1) name += 'a';
+ if (value.h !== undefined && !name.indexOf('h') === -1) name += 'h';
+ if (value.s !== undefined && !name.indexOf('s') === -1) name += 's';
+ if (value.v !== undefined && !name.indexOf('v') === -1) name += 'v';
+ for (var i = 0; i < name.length; i++) {
+ switch (name.charAt(i)) {
+ case 'r':
+ if (hsv) continue;
+ rgb = true;
+ newV.r = (value && value.r && value.r | 0) || (value && value | 0) || 0;
+ if (newV.r < 0) newV.r = 0;
+ else if (newV.r > 255) newV.r = 255;
+ if (r !== newV.r) {
+ r = newV.r;
+ changed = true;
+ }
+ break;
+ case 'g':
+ if (hsv) continue;
+ rgb = true;
+ newV.g = (value && value.g && value.g | 0) || (value && value | 0) || 0;
+ if (newV.g < 0) newV.g = 0;
+ else if (newV.g > 255) newV.g = 255;
+ if (g !== newV.g) {
+ g = newV.g;
+ changed = true;
+ }
+ break;
+ case 'b':
+ if (hsv) continue;
+ rgb = true;
+ newV.b = (value && value.b && value.b | 0) || (value && value | 0) || 0;
+ if (newV.b < 0) newV.b = 0;
+ else if (newV.b > 255) newV.b = 255;
+ if (b !== newV.b) {
+ b = newV.b;
+ changed = true;
+ }
+ break;
+ case 'a':
+ newV.a = value && value.a != null ? value.a | 0 : value != null ? value | 0 : 255;
+ if (newV.a < 0) newV.a = 0;
+ else if (newV.a > 255) newV.a = 255;
+ if (a !== newV.a) {
+ a = newV.a;
+ changed = true;
+ }
+ break;
+ case 'h':
+ if (rgb) continue;
+ hsv = true;
+ newV.h = (value && value.h && value.h | 0) || (value && value | 0) || 0;
+ if (newV.h < 0) newV.h = 0;
+ else if (newV.h > 360) newV.h = 360;
+ if (h !== newV.h) {
+ h = newV.h;
+ changed = true;
+ }
+ break;
+ case 's':
+ if (rgb) continue;
+ hsv = true;
+ newV.s = value && value.s != null ? value.s | 0 : value != null ? value | 0 : 100;
+ if (newV.s < 0) newV.s = 0;
+ else if (newV.s > 100) newV.s = 100;
+ if (s !== newV.s) {
+ s = newV.s;
+ changed = true;
+ }
+ break;
+ case 'v':
+ if (rgb) continue;
+ hsv = true;
+ newV.v = value && value.v != null ? value.v | 0 : value != null ? value | 0 : 100;
+ if (newV.v < 0) newV.v = 0;
+ else if (newV.v > 100) newV.v = 100;
+ if (v !== newV.v) {
+ v = newV.v;
+ changed = true;
+ }
+ break;
+ }
+ }
+ if (changed) {
+ if (rgb) {
+ r = r || 0;
+ g = g || 0;
+ b = b || 0;
+ var ret = ColorMethods.rgbToHsv({ r: r, g: g, b: b });
+ h = ret.h;
+ s = ret.s;
+ v = ret.v;
+ } else if (hsv) {
+ h = h || 0;
+ s = s != null ? s : 100;
+ v = v != null ? v : 100;
+ var ret = ColorMethods.hsvToRgb({ h: h, s: s, v: v });
+ r = ret.r;
+ g = ret.g;
+ b = ret.b;
+ }
+ a = a != null ? a : 255;
+ fireChangeEvents.call($this, context || $this);
+ }
+ break;
+ }
+ },
+ bind =
+ function (callback) {
+ if ($.isFunction(callback)) changeEvents.push(callback);
+ },
+ unbind =
+ function (callback) {
+ if (!$.isFunction(callback)) return;
+ var i;
+ while ((i = $.inArray(callback, changeEvents)) > -1) changeEvents.splice(i, 1);
+ },
+ destroy =
+ function () {
+ changeEvents = null;
+ };
+ $.extend(true, $this, // public properties and methods
+ {
+ val: val,
+ bind: bind,
+ unbind: unbind,
+ destroy: destroy
+ });
+ if (init) {
+ if (init.ahex != null) val('ahex', init);
+ else if (init.hex != null) val((init.a != null ? 'a' : '') + 'hex', init.a != null ? { ahex: init.hex + ColorMethods.intToHex(init.a) } : init);
+ else if (init.r != null && init.g != null && init.b != null) val('rgb' + (init.a != null ? 'a' : ''), init);
+ else if (init.h != null && init.s != null && init.v != null) val('hsv' + (init.a != null ? 'a' : ''), init);
+ }
+ },
+ ColorMethods: // color conversion methods - make public to give use to external scripts
+ {
+ hexToRgba:
+ function (hex) {
+ if (hex === '' || hex === 'none') return { r: null, g: null, b: null, a: null };
+ hex = this.validateHex(hex);
+ var r = '00', g = '00', b = '00', a = '255';
+ if (hex.length === 6) hex += 'ff';
+ if (hex.length > 6) {
+ r = hex.substring(0, 2);
+ g = hex.substring(2, 4);
+ b = hex.substring(4, 6);
+ a = hex.substring(6, hex.length);
+ } else {
+ if (hex.length > 4) {
+ r = hex.substring(4, hex.length);
+ hex = hex.substring(0, 4);
+ }
+ if (hex.length > 2) {
+ g = hex.substring(2, hex.length);
+ hex = hex.substring(0, 2);
+ }
+ if (hex.length > 0) b = hex.substring(0, hex.length);
+ }
+ return { r: this.hexToInt(r), g: this.hexToInt(g), b: this.hexToInt(b), a: this.hexToInt(a) };
+ },
+ validateHex:
+ function (hex) {
+ // if (typeof hex === "object") return "";
+ hex = hex.toLowerCase().replace(/[^a-f0-9]/g, '');
+ if (hex.length > 8) hex = hex.substring(0, 8);
+ return hex;
+ },
+ rgbaToHex:
+ function (rgba) {
+ return this.intToHex(rgba.r) + this.intToHex(rgba.g) + this.intToHex(rgba.b) + this.intToHex(rgba.a);
+ },
+ intToHex:
+ function (dec) {
+ var result = (dec | 0).toString(16);
+ if (result.length === 1) result = ('0' + result);
+ return result.toLowerCase();
+ },
+ hexToInt:
+ function (hex) {
+ return parseInt(hex, 16);
+ },
+ rgbToHsv:
+ function (rgb) {
+ var r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255, hsv = { h: 0, s: 0, v: 0 }, min = 0, max = 0, delta;
+ if (r >= g && r >= b) {
+ max = r;
+ min = g > b ? b : g;
+ } else if (g >= b && g >= r) {
+ max = g;
+ min = r > b ? b : r;
+ } else {
+ max = b;
+ min = g > r ? r : g;
+ }
+ hsv.v = max;
+ hsv.s = max ? (max - min) / max : 0;
+ if (!hsv.s) hsv.h = 0;
+ else {
+ delta = max - min;
+ if (r === max) hsv.h = (g - b) / delta;
+ else if (g === max) hsv.h = 2 + (b - r) / delta;
+ else hsv.h = 4 + (r - g) / delta;
+ hsv.h = parseInt(hsv.h * 60);
+ if (hsv.h < 0) hsv.h += 360;
+ }
+ hsv.s = (hsv.s * 100) | 0;
+ hsv.v = (hsv.v * 100) | 0;
+ return hsv;
+ },
+ hsvToRgb:
+ function (hsv) {
+ var rgb = { r: 0, g: 0, b: 0, a: 100 }, h = hsv.h, s = hsv.s, v = hsv.v;
+ if (s === 0) {
+ if (v === 0) rgb.r = rgb.g = rgb.b = 0;
+ else rgb.r = rgb.g = rgb.b = (v * 255 / 100) | 0;
+ } else {
+ if (h === 360) h = 0;
+ h /= 60;
+ s = s / 100;
+ v = v / 100;
+ var i = h | 0,
+ f = h - i,
+ p = v * (1 - s),
+ q = v * (1 - (s * f)),
+ t = v * (1 - (s * (1 - f)));
+ switch (i) {
+ case 0:
+ rgb.r = v;
+ rgb.g = t;
+ rgb.b = p;
+ break;
+ case 1:
+ rgb.r = q;
+ rgb.g = v;
+ rgb.b = p;
+ break;
+ case 2:
+ rgb.r = p;
+ rgb.g = v;
+ rgb.b = t;
+ break;
+ case 3:
+ rgb.r = p;
+ rgb.g = q;
+ rgb.b = v;
+ break;
+ case 4:
+ rgb.r = t;
+ rgb.g = p;
+ rgb.b = v;
+ break;
+ case 5:
+ rgb.r = v;
+ rgb.g = p;
+ rgb.b = q;
+ break;
+ }
+ rgb.r = (rgb.r * 255) | 0;
+ rgb.g = (rgb.g * 255) | 0;
+ rgb.b = (rgb.b * 255) | 0;
+ }
+ return rgb;
+ }
+ }
};
var Color = $.jPicker.Color, List = $.jPicker.List, ColorMethods = $.jPicker.ColorMethods; // local copies for YUI compressor
$.fn.jPicker =
function (options) {
- var $arguments = arguments;
- return this.each(
- function () {
- var $this = this, settings = $.extend(true, {}, $.fn.jPicker.defaults, options); // local copies for YUI compressor
- if ($($this).get(0).nodeName.toLowerCase() === 'input') { // Add color picker icon if binding to an input element and bind the events to the input
- $.extend(true, settings,
- {
- window:
- {
- bindToInput: true,
- expandable: true,
- input: $($this)
- }
- });
- if ($($this).val() === '') {
- settings.color.active = new Color({ hex: null });
- settings.color.current = new Color({ hex: null });
- } else if (ColorMethods.validateHex($($this).val())) {
- settings.color.active = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
- settings.color.current = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
- }
- }
- if (settings.window.expandable) {
- $($this).after(' ');
- } else {
- settings.window.liveUpdate = false; // Basic control binding for inline use - You will need to override the liveCallback or commitCallback function to retrieve results
- }
- var isLessThanIE7 = parseFloat(navigator.appVersion.split('MSIE')[1]) < 7 && document.body.filters, // needed to run the AlphaImageLoader function for IE6
- container = null,
- colorMapDiv = null,
- colorBarDiv = null,
- colorMapL1 = null, // different layers of colorMap and colorBar
- colorMapL2 = null,
- colorMapL3 = null,
- colorBarL1 = null,
- colorBarL2 = null,
- colorBarL3 = null,
- colorBarL4 = null,
- colorBarL5 = null,
- colorBarL6 = null,
- colorMap = null, // color maps
- colorBar = null,
- colorPicker = null,
- elementStartX = null, // Used to record the starting css positions for dragging the control
- elementStartY = null,
- pageStartX = null, // Used to record the mousedown coordinates for dragging the control
- pageStartY = null,
- activePreview = null, // color boxes above the radio buttons
- currentPreview = null,
- okButton = null,
- cancelButton = null,
- grid = null, // preset colors grid
- iconColor = null, // iconColor for popup icon
- iconAlpha = null, // iconAlpha for popup icon
- iconImage = null, // iconImage popup icon
- moveBar = null, // drag bar
- setColorMode = // set color mode and update visuals for the new color mode
- function (colorMode) {
- var active = color.active, // local copies for YUI compressor
- // clientPath = images.clientPath,
- hex = active.val('hex'),
- rgbMap,
- rgbBar;
- settings.color.mode = colorMode;
- switch (colorMode) {
- case 'h':
- setTimeout(
- function () {
- setBG.call($this, colorMapDiv, 'transparent');
- setImgLoc.call($this, colorMapL1, 0);
- setAlpha.call($this, colorMapL1, 100);
- setImgLoc.call($this, colorMapL2, 260);
- setAlpha.call($this, colorMapL2, 100);
- setBG.call($this, colorBarDiv, 'transparent');
- setImgLoc.call($this, colorBarL1, 0);
- setAlpha.call($this, colorBarL1, 100);
- setImgLoc.call($this, colorBarL2, 260);
- setAlpha.call($this, colorBarL2, 100);
- setImgLoc.call($this, colorBarL3, 260);
- setAlpha.call($this, colorBarL3, 100);
- setImgLoc.call($this, colorBarL4, 260);
- setAlpha.call($this, colorBarL4, 100);
- setImgLoc.call($this, colorBarL6, 260);
- setAlpha.call($this, colorBarL6, 100);
- }, 0);
- colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 });
- colorBar.range('rangeY', { minY: 0, maxY: 360 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap);
- colorBar.val('y', 360 - active.val('h'), colorBar);
- break;
- case 's':
- setTimeout(
- function () {
- setBG.call($this, colorMapDiv, 'transparent');
- setImgLoc.call($this, colorMapL1, -260);
- setImgLoc.call($this, colorMapL2, -520);
- setImgLoc.call($this, colorBarL1, -260);
- setImgLoc.call($this, colorBarL2, -520);
- setImgLoc.call($this, colorBarL6, 260);
- setAlpha.call($this, colorBarL6, 100);
- }, 0);
- colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
- colorBar.range('rangeY', { minY: 0, maxY: 100 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
- colorBar.val('y', 100 - active.val('s'), colorBar);
- break;
- case 'v':
- setTimeout(
- function () {
- setBG.call($this, colorMapDiv, '000000');
- setImgLoc.call($this, colorMapL1, -780);
- setImgLoc.call($this, colorMapL2, 260);
- setBG.call($this, colorBarDiv, hex);
- setImgLoc.call($this, colorBarL1, -520);
- setImgLoc.call($this, colorBarL2, 260);
- setAlpha.call($this, colorBarL2, 100);
- setImgLoc.call($this, colorBarL6, 260);
- setAlpha.call($this, colorBarL6, 100);
- }, 0);
- colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
- colorBar.range('rangeY', { minY: 0, maxY: 100 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap);
- colorBar.val('y', 100 - active.val('v'), colorBar);
- break;
- case 'r':
- rgbMap = -1040;
- rgbBar = -780;
- colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
- colorBar.range('rangeY', { minY: 0, maxY: 255 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap);
- colorBar.val('y', 255 - active.val('r'), colorBar);
- break;
- case 'g':
- rgbMap = -1560;
- rgbBar = -1820;
- colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
- colorBar.range('rangeY', { minY: 0, maxY: 255 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap);
- colorBar.val('y', 255 - active.val('g'), colorBar);
- break;
- case 'b':
- rgbMap = -2080;
- rgbBar = -2860;
- colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
- colorBar.range('rangeY', { minY: 0, maxY: 255 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap);
- colorBar.val('y', 255 - active.val('b'), colorBar);
- break;
- case 'a':
- setTimeout(
- function () {
- setBG.call($this, colorMapDiv, 'transparent');
- setImgLoc.call($this, colorMapL1, -260);
- setImgLoc.call($this, colorMapL2, -520);
- setImgLoc.call($this, colorBarL1, 260);
- setImgLoc.call($this, colorBarL2, 260);
- setAlpha.call($this, colorBarL2, 100);
- setImgLoc.call($this, colorBarL6, 0);
- setAlpha.call($this, colorBarL6, 100);
- }, 0);
- colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
- colorBar.range('rangeY', { minY: 0, maxY: 255 });
- if (active.val('ahex') == null) break;
- colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
- colorBar.val('y', 255 - active.val('a'), colorBar);
- break;
- default:
- throw new Error('Invalid Mode');
- }
- switch (colorMode) {
- case 'h':
- break;
- case 's':
- case 'v':
- case 'a':
- setTimeout(
- function () {
- setAlpha.call($this, colorMapL1, 100);
- setAlpha.call($this, colorBarL1, 100);
- setImgLoc.call($this, colorBarL3, 260);
- setAlpha.call($this, colorBarL3, 100);
- setImgLoc.call($this, colorBarL4, 260);
- setAlpha.call($this, colorBarL4, 100);
- }, 0);
- break;
- case 'r':
- case 'g':
- case 'b':
- setTimeout(
- function () {
- setBG.call($this, colorMapDiv, 'transparent');
- setBG.call($this, colorBarDiv, 'transparent');
- setAlpha.call($this, colorBarL1, 100);
- setAlpha.call($this, colorMapL1, 100);
- setImgLoc.call($this, colorMapL1, rgbMap);
- setImgLoc.call($this, colorMapL2, rgbMap - 260);
- setImgLoc.call($this, colorBarL1, rgbBar - 780);
- setImgLoc.call($this, colorBarL2, rgbBar - 520);
- setImgLoc.call($this, colorBarL3, rgbBar);
- setImgLoc.call($this, colorBarL4, rgbBar - 260);
- setImgLoc.call($this, colorBarL6, 260);
- setAlpha.call($this, colorBarL6, 100);
- }, 0);
- break;
- }
- if (active.val('ahex') == null) return;
- activeColorChanged.call($this, active);
- },
- activeColorChanged = // Update color when user changes text values
- function (ui, context) {
- if (context == null || (context !== colorBar && context !== colorMap)) positionMapAndBarArrows.call($this, ui, context);
- setTimeout(
- function () {
- updatePreview.call($this, ui);
- updateMapVisuals.call($this, ui);
- updateBarVisuals.call($this, ui);
- }, 0);
- },
- mapValueChanged = // user has dragged the ColorMap pointer
- function (ui, context) {
- var active = color.active;
- if (context !== colorMap && active.val() == null) return;
- var xy = ui.val('all');
- switch (settings.color.mode) {
- case 'h':
- active.val('sv', { s: xy.x, v: 100 - xy.y }, context);
- break;
- case 's':
- case 'a':
- active.val('hv', { h: xy.x, v: 100 - xy.y }, context);
- break;
- case 'v':
- active.val('hs', { h: xy.x, s: 100 - xy.y }, context);
- break;
- case 'r':
- active.val('gb', { g: 255 - xy.y, b: xy.x }, context);
- break;
- case 'g':
- active.val('rb', { r: 255 - xy.y, b: xy.x }, context);
- break;
- case 'b':
- active.val('rg', { r: xy.x, g: 255 - xy.y }, context);
- break;
- }
- },
- colorBarValueChanged = // user has dragged the ColorBar slider
- function (ui, context) {
- var active = color.active;
- if (context !== colorBar && active.val() == null) return;
- switch (settings.color.mode) {
- case 'h':
- active.val('h', { h: 360 - ui.val('y') }, context);
- break;
- case 's':
- active.val('s', { s: 100 - ui.val('y') }, context);
- break;
- case 'v':
- active.val('v', { v: 100 - ui.val('y') }, context);
- break;
- case 'r':
- active.val('r', { r: 255 - ui.val('y') }, context);
- break;
- case 'g':
- active.val('g', { g: 255 - ui.val('y') }, context);
- break;
- case 'b':
- active.val('b', { b: 255 - ui.val('y') }, context);
- break;
- case 'a':
- active.val('a', 255 - ui.val('y'), context);
- break;
- }
- },
- positionMapAndBarArrows = // position map and bar arrows to match current color
- function (ui, context) {
- if (context !== colorMap) {
- switch (settings.color.mode) {
- case 'h':
- var sv = ui.val('sv');
- colorMap.val('xy', { x: sv != null ? sv.s : 100, y: 100 - (sv != null ? sv.v : 100) }, context);
- break;
- case 's':
- case 'a':
- var hv = ui.val('hv');
- colorMap.val('xy', { x: (hv && hv.h) || 0, y: 100 - (hv != null ? hv.v : 100) }, context);
- break;
- case 'v':
- var hs = ui.val('hs');
- colorMap.val('xy', { x: (hs && hs.h) || 0, y: 100 - (hs != null ? hs.s : 100) }, context);
- break;
- case 'r':
- var bg = ui.val('bg');
- colorMap.val('xy', { x: (bg && bg.b) || 0, y: 255 - ((bg && bg.g) || 0) }, context);
- break;
- case 'g':
- var br = ui.val('br');
- colorMap.val('xy', { x: (br && br.b) || 0, y: 255 - ((br && br.r) || 0) }, context);
- break;
- case 'b':
- var rg = ui.val('rg');
- colorMap.val('xy', { x: (rg && rg.r) || 0, y: 255 - ((rg && rg.g) || 0) }, context);
- break;
- }
- }
- if (context !== colorBar) {
- switch (settings.color.mode) {
- case 'h':
- colorBar.val('y', 360 - (ui.val('h') || 0), context);
- break;
- case 's':
- var s = ui.val('s');
- colorBar.val('y', 100 - (s != null ? s : 100), context);
- break;
- case 'v':
- var v = ui.val('v');
- colorBar.val('y', 100 - (v != null ? v : 100), context);
- break;
- case 'r':
- colorBar.val('y', 255 - (ui.val('r') || 0), context);
- break;
- case 'g':
- colorBar.val('y', 255 - (ui.val('g') || 0), context);
- break;
- case 'b':
- colorBar.val('y', 255 - (ui.val('b') || 0), context);
- break;
- case 'a':
- var a = ui.val('a');
- colorBar.val('y', 255 - (a != null ? a : 255), context);
- break;
- }
- }
- },
- updatePreview =
- function (ui) {
- try {
- var all = ui.val('all');
- activePreview.css({ backgroundColor: (all && '#' + all.hex) || 'transparent' });
- setAlpha.call($this, activePreview, (all && Math.precision((all.a * 100) / 255, 4)) || 0);
- } catch (e) { }
- },
- updateMapVisuals =
- function (ui) {
- switch (settings.color.mode) {
- case 'h':
- setBG.call($this, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'));
- break;
- case 's':
- case 'a':
- var s = ui.val('s');
- setAlpha.call($this, colorMapL2, 100 - (s != null ? s : 100));
- break;
- case 'v':
- var v = ui.val('v');
- setAlpha.call($this, colorMapL1, v != null ? v : 100);
- break;
- case 'r':
- setAlpha.call($this, colorMapL2, Math.precision((ui.val('r') || 0) / 255 * 100, 4));
- break;
- case 'g':
- setAlpha.call($this, colorMapL2, Math.precision((ui.val('g') || 0) / 255 * 100, 4));
- break;
- case 'b':
- setAlpha.call($this, colorMapL2, Math.precision((ui.val('b') || 0) / 255 * 100));
- break;
- }
- var a = ui.val('a');
- setAlpha.call($this, colorMapL3, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
- },
- updateBarVisuals =
- function (ui) {
- switch (settings.color.mode) {
- case 'h':
- var a = ui.val('a');
- setAlpha.call($this, colorBarL5, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
- break;
- case 's':
- var hva = ui.val('hva'),
- saturatedColor = new Color({ h: (hva && hva.h) || 0, s: 100, v: hva != null ? hva.v : 100 });
- setBG.call($this, colorBarDiv, saturatedColor.val('hex'));
- setAlpha.call($this, colorBarL2, 100 - (hva != null ? hva.v : 100));
- setAlpha.call($this, colorBarL5, Math.precision(((255 - ((hva && hva.a) || 0)) * 100) / 255, 4));
- break;
- case 'v':
- var hsa = ui.val('hsa'),
- valueColor = new Color({ h: (hsa && hsa.h) || 0, s: hsa != null ? hsa.s : 100, v: 100 });
- setBG.call($this, colorBarDiv, valueColor.val('hex'));
- setAlpha.call($this, colorBarL5, Math.precision(((255 - ((hsa && hsa.a) || 0)) * 100) / 255, 4));
- break;
- case 'r':
- case 'g':
- case 'b':
- var hValue = 0, vValue = 0, rgba = ui.val('rgba');
- if (settings.color.mode === 'r') {
- hValue = (rgba && rgba.b) || 0;
- vValue = (rgba && rgba.g) || 0;
- } else if (settings.color.mode === 'g') {
- hValue = (rgba && rgba.b) || 0;
- vValue = (rgba && rgba.r) || 0;
- } else if (settings.color.mode === 'b') {
- hValue = (rgba && rgba.r) || 0;
- vValue = (rgba && rgba.g) || 0;
- }
- var middle = vValue > hValue ? hValue : vValue;
- setAlpha.call($this, colorBarL2, hValue > vValue ? Math.precision(((hValue - vValue) / (255 - vValue)) * 100, 4) : 0);
- setAlpha.call($this, colorBarL3, vValue > hValue ? Math.precision(((vValue - hValue) / (255 - hValue)) * 100, 4) : 0);
- setAlpha.call($this, colorBarL4, Math.precision((middle / 255) * 100, 4));
- setAlpha.call($this, colorBarL5, Math.precision(((255 - ((rgba && rgba.a) || 0)) * 100) / 255, 4));
- break;
- case 'a':
- var a = ui.val('a');
- setBG.call($this, colorBarDiv, ui.val('hex') || '000000');
- setAlpha.call($this, colorBarL5, a != null ? 0 : 100);
- setAlpha.call($this, colorBarL6, a != null ? 100 : 0);
- break;
- }
- },
- setBG =
- function (el, c) {
- el.css({backgroundColor: (c && c.length === 6 && '#' + c) || 'transparent'});
- },
- setImg =
- function (img, src) {
- if (isLessThanIE7 && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
- img.attr('pngSrc', src);
- img.css({ backgroundImage: 'none', filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
- } else img.css({ backgroundImage: 'url(\'' + src + '\')' });
- },
- setImgLoc =
- function (img, y) {
- img.css({ top: y + 'px' });
- },
- setAlpha =
- function (obj, alpha) {
- obj.css({ visibility: alpha > 0 ? 'visible' : 'hidden' });
- if (alpha > 0 && alpha < 100) {
- if (isLessThanIE7) {
- var src = obj.attr('pngSrc');
- if (src != null && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
- obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\') progid:DXImageTransform.Microsoft.Alpha(opacity=' + alpha + ')' });
- } else obj.css({ opacity: Math.precision(alpha / 100, 4) });
- } else obj.css({ opacity: Math.precision(alpha / 100, 4) });
- } else if (alpha === 0 || alpha === 100) {
- if (isLessThanIE7) {
- var src = obj.attr('pngSrc');
- if (src != null && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
- obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
- } else obj.css({ opacity: '' });
- } else obj.css({ opacity: '' });
- }
- },
- revertColor = // revert color to original color when opened
- function () {
- color.active.val('ahex', color.current.val('ahex'));
- },
- commitColor = // commit the color changes
- function () {
- color.current.val('ahex', color.active.val('ahex'));
- },
- radioClicked =
- function (e) {
- $(this).parents('tbody:first').find('input:radio[value!="' + e.target.value + '"]').removeAttr('checked');
- setColorMode.call($this, e.target.value);
- },
- currentClicked =
- function () {
- revertColor.call($this);
- },
- cancelClicked =
- function () {
- revertColor.call($this);
- settings.window.expandable && hide.call($this);
- $.isFunction(cancelCallback) && cancelCallback.call($this, color.active, cancelButton);
- },
- okClicked =
- function () {
- commitColor.call($this);
- settings.window.expandable && hide.call($this);
- $.isFunction(commitCallback) && commitCallback.call($this, color.active, okButton);
- },
- iconImageClicked =
- function () {
- show.call($this);
- },
- currentColorChanged =
- function (ui, context) {
- var hex = ui.val('hex');
- currentPreview.css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
- setAlpha.call($this, currentPreview, Math.precision(((ui.val('a') || 0) * 100) / 255, 4));
- },
- expandableColorChanged =
- function (ui, context) {
- var hex = ui.val('hex');
- var va = ui.val('va');
- iconColor.css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
- setAlpha.call($this, iconAlpha, Math.precision(((255 - ((va && va.a) || 0)) * 100) / 255, 4));
- if (settings.window.bindToInput && settings.window.updateInputColor) {
- settings.window.input.css({
- backgroundColor: (hex && '#' + hex) || 'transparent',
- color: va == null || va.v > 75 ? '#000000' : '#ffffff'
- });
- }
- },
- moveBarMouseDown =
- function (e) {
- // var element = settings.window.element, // local copies for YUI compressor
- // page = settings.window.page;
- elementStartX = parseInt(container.css('left'));
- elementStartY = parseInt(container.css('top'));
- pageStartX = e.pageX;
- pageStartY = e.pageY;
- // bind events to document to move window - we will unbind these on mouseup
- $(document).bind('mousemove', documentMouseMove).bind('mouseup', documentMouseUp);
- e.preventDefault(); // prevent attempted dragging of the column
- },
- documentMouseMove =
- function (e) {
- container.css({ left: elementStartX - (pageStartX - e.pageX) + 'px', top: elementStartY - (pageStartY - e.pageY) + 'px' });
- if (settings.window.expandable && !$.support.boxModel) container.prev().css({ left: container.css('left'), top: container.css('top') });
- e.stopPropagation();
- e.preventDefault();
- return false;
- },
- documentMouseUp =
- function (e) {
- $(document).unbind('mousemove', documentMouseMove).unbind('mouseup', documentMouseUp);
- e.stopPropagation();
- e.preventDefault();
- return false;
- },
- quickPickClicked =
- function (e) {
- e.preventDefault();
- e.stopPropagation();
- color.active.val('ahex', $(this).attr('title') || null, e.target);
- return false;
- },
- commitCallback = ($.isFunction($arguments[1]) && $arguments[1]) || null,
- liveCallback = ($.isFunction($arguments[2]) && $arguments[2]) || null,
- cancelCallback = ($.isFunction($arguments[3]) && $arguments[3]) || null,
- show =
- function () {
- color.current.val('ahex', color.active.val('ahex'));
- var attachIFrame = function () {
- if (!settings.window.expandable || $.support.boxModel) return;
- var table = container.find('table:first');
- container.before('');
- container.prev().css({width: table.width(), height: container.height(), opacity: 0, position: 'absolute', left: container.css('left'), top: container.css('top')});
- };
- if (settings.window.expandable) {
- $(document.body).children('div.jPicker.Container').css({zIndex: 10});
- container.css({zIndex: 20});
- }
- switch (settings.window.effects.type) {
- case 'fade':
- container.fadeIn(settings.window.effects.speed.show, attachIFrame);
- break;
- case 'slide':
- container.slideDown(settings.window.effects.speed.show, attachIFrame);
- break;
- case 'show':
- default:
- container.show(settings.window.effects.speed.show, attachIFrame);
- break;
- }
- },
- hide =
- function () {
- var removeIFrame = function () {
- if (settings.window.expandable) container.css({ zIndex: 10 });
- if (!settings.window.expandable || $.support.boxModel) return;
- container.prev().remove();
- };
- switch (settings.window.effects.type) {
- case 'fade':
- container.fadeOut(settings.window.effects.speed.hide, removeIFrame);
- break;
- case 'slide':
- container.slideUp(settings.window.effects.speed.hide, removeIFrame);
- break;
- case 'show':
- default:
- container.hide(settings.window.effects.speed.hide, removeIFrame);
- break;
- }
- },
- initialize =
- function () {
- var win = settings.window,
- popup = win.expandable ? $($this).next().find('.Container:first') : null;
- container = win.expandable ? $('
') : $($this);
- container.addClass('jPicker Container');
- if (win.expandable) container.hide();
- container.get(0).onselectstart = function (event) { if (event.target.nodeName.toLowerCase() !== 'input') return false; };
- // inject html source code - we are using a single table for this control - I know tables are considered bad, but it takes care of equal height columns and
- // this control really is tabular data, so I believe it is the right move
- var all = color.active.val('all');
- if (win.alphaPrecision < 0) win.alphaPrecision = 0;
- else if (win.alphaPrecision > 2) win.alphaPrecision = 2;
- var controlHtml = '';
- if (win.expandable) {
- container.html(controlHtml);
- if ($(document.body).children('div.jPicker.Container').length === 0)$(document.body).prepend(container);
- else $(document.body).children('div.jPicker.Container:last').after(container);
- container.mousedown(
- function () {
- $(document.body).children('div.jPicker.Container').css({zIndex: 10});
- container.css({zIndex: 20});
- });
- container.css( // positions must be set and display set to absolute before source code injection or IE will size the container to fit the window
- {
- left:
- win.position.x === 'left'
- ? (popup.offset().left - 530 - (win.position.y === 'center' ? 25 : 0)) + 'px'
- : win.position.x === 'center'
- ? (popup.offset().left - 260) + 'px'
- : win.position.x === 'right'
- ? (popup.offset().left - 10 + (win.position.y === 'center' ? 25 : 0)) + 'px'
- : win.position.x === 'screenCenter'
- ? (($(document).width() >> 1) - 260) + 'px'
- : (popup.offset().left + parseInt(win.position.x)) + 'px',
- position: 'absolute',
- top: win.position.y === 'top'
- ? (popup.offset().top - 312) + 'px'
- : win.position.y === 'center'
- ? (popup.offset().top - 156) + 'px'
- : win.position.y === 'bottom'
- ? (popup.offset().top + 25) + 'px'
- : (popup.offset().top + parseInt(win.position.y)) + 'px'
- });
- } else {
- container = $($this);
- container.html(controlHtml);
- }
- // initialize the objects to the source code just injected
- var tbody = container.find('tbody:first');
- colorMapDiv = tbody.find('div.Map:first');
- colorBarDiv = tbody.find('div.Bar:first');
- var MapMaps = colorMapDiv.find('span'),
- BarMaps = colorBarDiv.find('span');
- colorMapL1 = MapMaps.filter('.Map1:first');
- colorMapL2 = MapMaps.filter('.Map2:first');
- colorMapL3 = MapMaps.filter('.Map3:first');
- colorBarL1 = BarMaps.filter('.Map1:first');
- colorBarL2 = BarMaps.filter('.Map2:first');
- colorBarL3 = BarMaps.filter('.Map3:first');
- colorBarL4 = BarMaps.filter('.Map4:first');
- colorBarL5 = BarMaps.filter('.Map5:first');
- colorBarL6 = BarMaps.filter('.Map6:first');
- // create color pickers and maps
- colorMap = new Slider(colorMapDiv,
- {
- map:
- {
- width: images.colorMap.width,
- height: images.colorMap.height
- },
- arrow:
- {
- image: images.clientPath + images.colorMap.arrow.file,
- width: images.colorMap.arrow.width,
- height: images.colorMap.arrow.height
- }
- });
- colorMap.bind(mapValueChanged);
- colorBar = new Slider(colorBarDiv,
- {
- map:
- {
- width: images.colorBar.width,
- height: images.colorBar.height
- },
- arrow:
- {
- image: images.clientPath + images.colorBar.arrow.file,
- width: images.colorBar.arrow.width,
- height: images.colorBar.arrow.height
- }
- });
- colorBar.bind(colorBarValueChanged);
- colorPicker = new ColorValuePicker(tbody, color.active, win.expandable && win.bindToInput ? win.input : null, win.alphaPrecision);
- var hex = all != null ? all.hex : null,
- preview = tbody.find('.Preview'),
- button = tbody.find('.Button');
- activePreview = preview.find('.Active:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
- currentPreview = preview.find('.Current:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' }).bind('click', currentClicked);
- setAlpha.call($this, currentPreview, Math.precision(color.current.val('a') * 100) / 255, 4);
- okButton = button.find('.Ok:first').bind('click', okClicked);
- cancelButton = button.find('.Cancel:first').bind('click', cancelClicked);
- grid = button.find('.Grid:first');
- setTimeout(
- function () {
- setImg.call($this, colorMapL1, images.clientPath + 'Maps.png');
- setImg.call($this, colorMapL2, images.clientPath + 'Maps.png');
- setImg.call($this, colorMapL3, images.clientPath + 'map-opacity.png');
- setImg.call($this, colorBarL1, images.clientPath + 'Bars.png');
- setImg.call($this, colorBarL2, images.clientPath + 'Bars.png');
- setImg.call($this, colorBarL3, images.clientPath + 'Bars.png');
- setImg.call($this, colorBarL4, images.clientPath + 'Bars.png');
- setImg.call($this, colorBarL5, images.clientPath + 'bar-opacity.png');
- setImg.call($this, colorBarL6, images.clientPath + 'AlphaBar.png');
- setImg.call($this, preview.find('div:first'), images.clientPath + 'preview-opacity.png');
- }, 0);
- tbody.find('td.Radio input').bind('click', radioClicked);
- // initialize quick list
- if (color.quickList && color.quickList.length > 0) {
- var html = '';
- for (var i = 0; i < color.quickList.length; i++) {
- /* if default colors are hex strings, change them to color objects */
- if ((typeof (color.quickList[i])).toString().toLowerCase() === 'string') color.quickList[i] = new Color({ hex: color.quickList[i] });
- var alpha = color.quickList[i].val('a');
- var ahex = color.quickList[i].val('ahex');
- if (!win.alphaSupport && ahex) ahex = ahex.substring(0, 6) + 'ff';
- var quickHex = color.quickList[i].val('hex');
- if (!ahex) ahex = '00000000';
- html += ' ';
- }
- setImg.call($this, grid, images.clientPath + 'bar-opacity.png');
- grid.html(html);
- grid.find('.QuickColor').click(quickPickClicked);
- }
- setColorMode.call($this, settings.color.mode);
- color.active.bind(activeColorChanged);
- $.isFunction(liveCallback) && color.active.bind(liveCallback);
- color.current.bind(currentColorChanged);
- // bind to input
- if (win.expandable) {
- $this.icon = popup.parents('.Icon:first');
- iconColor = $this.icon.find('.Color:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
- iconAlpha = $this.icon.find('.Alpha:first');
- setImg.call($this, iconAlpha, images.clientPath + 'bar-opacity.png');
- setAlpha.call($this, iconAlpha, Math.precision(((255 - (all != null ? all.a : 0)) * 100) / 255, 4));
- iconImage = $this.icon.find('.Image:first').css({
- backgroundImage: 'url(\'' + images.clientPath + images.picker.file + '\')'
- }).bind('click', iconImageClicked);
- if (win.bindToInput && win.updateInputColor) {
- win.input.css({
- backgroundColor: (hex && '#' + hex) || 'transparent',
- color: all == null || all.v > 75 ? '#000000' : '#ffffff'
- });
- }
- moveBar = tbody.find('.Move:first').bind('mousedown', moveBarMouseDown);
- color.active.bind(expandableColorChanged);
- } else show.call($this);
- },
- destroy =
- function () {
- container.find('td.Radio input').unbind('click', radioClicked);
- currentPreview.unbind('click', currentClicked);
- cancelButton.unbind('click', cancelClicked);
- okButton.unbind('click', okClicked);
- if (settings.window.expandable) {
- iconImage.unbind('click', iconImageClicked);
- moveBar.unbind('mousedown', moveBarMouseDown);
- $this.icon = null;
- }
- container.find('.QuickColor').unbind('click', quickPickClicked);
- colorMapDiv = null;
- colorBarDiv = null;
- colorMapL1 = null;
- colorMapL2 = null;
- colorMapL3 = null;
- colorBarL1 = null;
- colorBarL2 = null;
- colorBarL3 = null;
- colorBarL4 = null;
- colorBarL5 = null;
- colorBarL6 = null;
- colorMap.destroy();
- colorMap = null;
- colorBar.destroy();
- colorBar = null;
- colorPicker.destroy();
- colorPicker = null;
- activePreview = null;
- currentPreview = null;
- okButton = null;
- cancelButton = null;
- grid = null;
- commitCallback = null;
- cancelCallback = null;
- liveCallback = null;
- container.html('');
- for (var i = 0; i < List.length; i++) if (List[i] === $this) List.splice(i, 1);
- },
- images = settings.images, // local copies for YUI compressor
- localization = settings.localization,
- color =
- {
- active: (typeof settings.color.active).toString().toLowerCase() === 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
- current: (typeof settings.color.active).toString().toLowerCase() === 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
- quickList: settings.color.quickList
- };
- $.extend(true, $this, // public properties, methods, and callbacks
- {
- commitCallback: commitCallback, // commitCallback function can be overridden to return the selected color to a method you specify when the user clicks "OK"
- liveCallback: liveCallback, // liveCallback function can be overridden to return the selected color to a method you specify in live mode (continuous update)
- cancelCallback: cancelCallback, // cancelCallback function can be overridden to a method you specify when the user clicks "Cancel"
- color: color,
- show: show,
- hide: hide,
- destroy: destroy // destroys this control entirely, removing all events and objects, and removing itself from the List
- });
- List.push($this);
- setTimeout(
- function () {
- initialize.call($this);
- }, 0);
- });
+ var $arguments = arguments;
+ return this.each(
+ function () {
+ var $this = this, settings = $.extend(true, {}, $.fn.jPicker.defaults, options); // local copies for YUI compressor
+ if ($($this).get(0).nodeName.toLowerCase() === 'input') { // Add color picker icon if binding to an input element and bind the events to the input
+ $.extend(true, settings,
+ {
+ window:
+ {
+ bindToInput: true,
+ expandable: true,
+ input: $($this)
+ }
+ });
+ if ($($this).val() === '') {
+ settings.color.active = new Color({ hex: null });
+ settings.color.current = new Color({ hex: null });
+ } else if (ColorMethods.validateHex($($this).val())) {
+ settings.color.active = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+ settings.color.current = new Color({ hex: $($this).val(), a: settings.color.active.val('a') });
+ }
+ }
+ if (settings.window.expandable) {
+ $($this).after(' ');
+ } else {
+ settings.window.liveUpdate = false; // Basic control binding for inline use - You will need to override the liveCallback or commitCallback function to retrieve results
+ }
+ var isLessThanIE7 = parseFloat(navigator.appVersion.split('MSIE')[1]) < 7 && document.body.filters, // needed to run the AlphaImageLoader function for IE6
+ container = null,
+ colorMapDiv = null,
+ colorBarDiv = null,
+ colorMapL1 = null, // different layers of colorMap and colorBar
+ colorMapL2 = null,
+ colorMapL3 = null,
+ colorBarL1 = null,
+ colorBarL2 = null,
+ colorBarL3 = null,
+ colorBarL4 = null,
+ colorBarL5 = null,
+ colorBarL6 = null,
+ colorMap = null, // color maps
+ colorBar = null,
+ colorPicker = null,
+ elementStartX = null, // Used to record the starting css positions for dragging the control
+ elementStartY = null,
+ pageStartX = null, // Used to record the mousedown coordinates for dragging the control
+ pageStartY = null,
+ activePreview = null, // color boxes above the radio buttons
+ currentPreview = null,
+ okButton = null,
+ cancelButton = null,
+ grid = null, // preset colors grid
+ iconColor = null, // iconColor for popup icon
+ iconAlpha = null, // iconAlpha for popup icon
+ iconImage = null, // iconImage popup icon
+ moveBar = null, // drag bar
+ setColorMode = // set color mode and update visuals for the new color mode
+ function (colorMode) {
+ var active = color.active, // local copies for YUI compressor
+ // clientPath = images.clientPath,
+ hex = active.val('hex'),
+ rgbMap,
+ rgbBar;
+ settings.color.mode = colorMode;
+ switch (colorMode) {
+ case 'h':
+ setTimeout(
+ function () {
+ setBG.call($this, colorMapDiv, 'transparent');
+ setImgLoc.call($this, colorMapL1, 0);
+ setAlpha.call($this, colorMapL1, 100);
+ setImgLoc.call($this, colorMapL2, 260);
+ setAlpha.call($this, colorMapL2, 100);
+ setBG.call($this, colorBarDiv, 'transparent');
+ setImgLoc.call($this, colorBarL1, 0);
+ setAlpha.call($this, colorBarL1, 100);
+ setImgLoc.call($this, colorBarL2, 260);
+ setAlpha.call($this, colorBarL2, 100);
+ setImgLoc.call($this, colorBarL3, 260);
+ setAlpha.call($this, colorBarL3, 100);
+ setImgLoc.call($this, colorBarL4, 260);
+ setAlpha.call($this, colorBarL4, 100);
+ setImgLoc.call($this, colorBarL6, 260);
+ setAlpha.call($this, colorBarL6, 100);
+ }, 0);
+ colorMap.range('all', { minX: 0, maxX: 100, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 360 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('s'), y: 100 - active.val('v') }, colorMap);
+ colorBar.val('y', 360 - active.val('h'), colorBar);
+ break;
+ case 's':
+ setTimeout(
+ function () {
+ setBG.call($this, colorMapDiv, 'transparent');
+ setImgLoc.call($this, colorMapL1, -260);
+ setImgLoc.call($this, colorMapL2, -520);
+ setImgLoc.call($this, colorBarL1, -260);
+ setImgLoc.call($this, colorBarL2, -520);
+ setImgLoc.call($this, colorBarL6, 260);
+ setAlpha.call($this, colorBarL6, 100);
+ }, 0);
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 100 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+ colorBar.val('y', 100 - active.val('s'), colorBar);
+ break;
+ case 'v':
+ setTimeout(
+ function () {
+ setBG.call($this, colorMapDiv, '000000');
+ setImgLoc.call($this, colorMapL1, -780);
+ setImgLoc.call($this, colorMapL2, 260);
+ setBG.call($this, colorBarDiv, hex);
+ setImgLoc.call($this, colorBarL1, -520);
+ setImgLoc.call($this, colorBarL2, 260);
+ setAlpha.call($this, colorBarL2, 100);
+ setImgLoc.call($this, colorBarL6, 260);
+ setAlpha.call($this, colorBarL6, 100);
+ }, 0);
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 100 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('s') }, colorMap);
+ colorBar.val('y', 100 - active.val('v'), colorBar);
+ break;
+ case 'r':
+ rgbMap = -1040;
+ rgbBar = -780;
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('g') }, colorMap);
+ colorBar.val('y', 255 - active.val('r'), colorBar);
+ break;
+ case 'g':
+ rgbMap = -1560;
+ rgbBar = -1820;
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('b'), y: 255 - active.val('r') }, colorMap);
+ colorBar.val('y', 255 - active.val('g'), colorBar);
+ break;
+ case 'b':
+ rgbMap = -2080;
+ rgbBar = -2860;
+ colorMap.range('all', { minX: 0, maxX: 255, minY: 0, maxY: 255 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('r'), y: 255 - active.val('g') }, colorMap);
+ colorBar.val('y', 255 - active.val('b'), colorBar);
+ break;
+ case 'a':
+ setTimeout(
+ function () {
+ setBG.call($this, colorMapDiv, 'transparent');
+ setImgLoc.call($this, colorMapL1, -260);
+ setImgLoc.call($this, colorMapL2, -520);
+ setImgLoc.call($this, colorBarL1, 260);
+ setImgLoc.call($this, colorBarL2, 260);
+ setAlpha.call($this, colorBarL2, 100);
+ setImgLoc.call($this, colorBarL6, 0);
+ setAlpha.call($this, colorBarL6, 100);
+ }, 0);
+ colorMap.range('all', { minX: 0, maxX: 360, minY: 0, maxY: 100 });
+ colorBar.range('rangeY', { minY: 0, maxY: 255 });
+ if (active.val('ahex') == null) break;
+ colorMap.val('xy', { x: active.val('h'), y: 100 - active.val('v') }, colorMap);
+ colorBar.val('y', 255 - active.val('a'), colorBar);
+ break;
+ default:
+ throw new Error('Invalid Mode');
+ }
+ switch (colorMode) {
+ case 'h':
+ break;
+ case 's':
+ case 'v':
+ case 'a':
+ setTimeout(
+ function () {
+ setAlpha.call($this, colorMapL1, 100);
+ setAlpha.call($this, colorBarL1, 100);
+ setImgLoc.call($this, colorBarL3, 260);
+ setAlpha.call($this, colorBarL3, 100);
+ setImgLoc.call($this, colorBarL4, 260);
+ setAlpha.call($this, colorBarL4, 100);
+ }, 0);
+ break;
+ case 'r':
+ case 'g':
+ case 'b':
+ setTimeout(
+ function () {
+ setBG.call($this, colorMapDiv, 'transparent');
+ setBG.call($this, colorBarDiv, 'transparent');
+ setAlpha.call($this, colorBarL1, 100);
+ setAlpha.call($this, colorMapL1, 100);
+ setImgLoc.call($this, colorMapL1, rgbMap);
+ setImgLoc.call($this, colorMapL2, rgbMap - 260);
+ setImgLoc.call($this, colorBarL1, rgbBar - 780);
+ setImgLoc.call($this, colorBarL2, rgbBar - 520);
+ setImgLoc.call($this, colorBarL3, rgbBar);
+ setImgLoc.call($this, colorBarL4, rgbBar - 260);
+ setImgLoc.call($this, colorBarL6, 260);
+ setAlpha.call($this, colorBarL6, 100);
+ }, 0);
+ break;
+ }
+ if (active.val('ahex') == null) return;
+ activeColorChanged.call($this, active);
+ },
+ activeColorChanged = // Update color when user changes text values
+ function (ui, context) {
+ if (context == null || (context !== colorBar && context !== colorMap)) positionMapAndBarArrows.call($this, ui, context);
+ setTimeout(
+ function () {
+ updatePreview.call($this, ui);
+ updateMapVisuals.call($this, ui);
+ updateBarVisuals.call($this, ui);
+ }, 0);
+ },
+ mapValueChanged = // user has dragged the ColorMap pointer
+ function (ui, context) {
+ var active = color.active;
+ if (context !== colorMap && active.val() == null) return;
+ var xy = ui.val('all');
+ switch (settings.color.mode) {
+ case 'h':
+ active.val('sv', { s: xy.x, v: 100 - xy.y }, context);
+ break;
+ case 's':
+ case 'a':
+ active.val('hv', { h: xy.x, v: 100 - xy.y }, context);
+ break;
+ case 'v':
+ active.val('hs', { h: xy.x, s: 100 - xy.y }, context);
+ break;
+ case 'r':
+ active.val('gb', { g: 255 - xy.y, b: xy.x }, context);
+ break;
+ case 'g':
+ active.val('rb', { r: 255 - xy.y, b: xy.x }, context);
+ break;
+ case 'b':
+ active.val('rg', { r: xy.x, g: 255 - xy.y }, context);
+ break;
+ }
+ },
+ colorBarValueChanged = // user has dragged the ColorBar slider
+ function (ui, context) {
+ var active = color.active;
+ if (context !== colorBar && active.val() == null) return;
+ switch (settings.color.mode) {
+ case 'h':
+ active.val('h', { h: 360 - ui.val('y') }, context);
+ break;
+ case 's':
+ active.val('s', { s: 100 - ui.val('y') }, context);
+ break;
+ case 'v':
+ active.val('v', { v: 100 - ui.val('y') }, context);
+ break;
+ case 'r':
+ active.val('r', { r: 255 - ui.val('y') }, context);
+ break;
+ case 'g':
+ active.val('g', { g: 255 - ui.val('y') }, context);
+ break;
+ case 'b':
+ active.val('b', { b: 255 - ui.val('y') }, context);
+ break;
+ case 'a':
+ active.val('a', 255 - ui.val('y'), context);
+ break;
+ }
+ },
+ positionMapAndBarArrows = // position map and bar arrows to match current color
+ function (ui, context) {
+ if (context !== colorMap) {
+ switch (settings.color.mode) {
+ case 'h':
+ var sv = ui.val('sv');
+ colorMap.val('xy', { x: sv != null ? sv.s : 100, y: 100 - (sv != null ? sv.v : 100) }, context);
+ break;
+ case 's':
+ case 'a':
+ var hv = ui.val('hv');
+ colorMap.val('xy', { x: (hv && hv.h) || 0, y: 100 - (hv != null ? hv.v : 100) }, context);
+ break;
+ case 'v':
+ var hs = ui.val('hs');
+ colorMap.val('xy', { x: (hs && hs.h) || 0, y: 100 - (hs != null ? hs.s : 100) }, context);
+ break;
+ case 'r':
+ var bg = ui.val('bg');
+ colorMap.val('xy', { x: (bg && bg.b) || 0, y: 255 - ((bg && bg.g) || 0) }, context);
+ break;
+ case 'g':
+ var br = ui.val('br');
+ colorMap.val('xy', { x: (br && br.b) || 0, y: 255 - ((br && br.r) || 0) }, context);
+ break;
+ case 'b':
+ var rg = ui.val('rg');
+ colorMap.val('xy', { x: (rg && rg.r) || 0, y: 255 - ((rg && rg.g) || 0) }, context);
+ break;
+ }
+ }
+ if (context !== colorBar) {
+ switch (settings.color.mode) {
+ case 'h':
+ colorBar.val('y', 360 - (ui.val('h') || 0), context);
+ break;
+ case 's':
+ var s = ui.val('s');
+ colorBar.val('y', 100 - (s != null ? s : 100), context);
+ break;
+ case 'v':
+ var v = ui.val('v');
+ colorBar.val('y', 100 - (v != null ? v : 100), context);
+ break;
+ case 'r':
+ colorBar.val('y', 255 - (ui.val('r') || 0), context);
+ break;
+ case 'g':
+ colorBar.val('y', 255 - (ui.val('g') || 0), context);
+ break;
+ case 'b':
+ colorBar.val('y', 255 - (ui.val('b') || 0), context);
+ break;
+ case 'a':
+ var a = ui.val('a');
+ colorBar.val('y', 255 - (a != null ? a : 255), context);
+ break;
+ }
+ }
+ },
+ updatePreview =
+ function (ui) {
+ try {
+ var all = ui.val('all');
+ activePreview.css({ backgroundColor: (all && '#' + all.hex) || 'transparent' });
+ setAlpha.call($this, activePreview, (all && Math.precision((all.a * 100) / 255, 4)) || 0);
+ } catch (e) { }
+ },
+ updateMapVisuals =
+ function (ui) {
+ switch (settings.color.mode) {
+ case 'h':
+ setBG.call($this, colorMapDiv, new Color({ h: ui.val('h') || 0, s: 100, v: 100 }).val('hex'));
+ break;
+ case 's':
+ case 'a':
+ var s = ui.val('s');
+ setAlpha.call($this, colorMapL2, 100 - (s != null ? s : 100));
+ break;
+ case 'v':
+ var v = ui.val('v');
+ setAlpha.call($this, colorMapL1, v != null ? v : 100);
+ break;
+ case 'r':
+ setAlpha.call($this, colorMapL2, Math.precision((ui.val('r') || 0) / 255 * 100, 4));
+ break;
+ case 'g':
+ setAlpha.call($this, colorMapL2, Math.precision((ui.val('g') || 0) / 255 * 100, 4));
+ break;
+ case 'b':
+ setAlpha.call($this, colorMapL2, Math.precision((ui.val('b') || 0) / 255 * 100));
+ break;
+ }
+ var a = ui.val('a');
+ setAlpha.call($this, colorMapL3, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+ },
+ updateBarVisuals =
+ function (ui) {
+ switch (settings.color.mode) {
+ case 'h':
+ var a = ui.val('a');
+ setAlpha.call($this, colorBarL5, Math.precision(((255 - (a || 0)) * 100) / 255, 4));
+ break;
+ case 's':
+ var hva = ui.val('hva'),
+ saturatedColor = new Color({ h: (hva && hva.h) || 0, s: 100, v: hva != null ? hva.v : 100 });
+ setBG.call($this, colorBarDiv, saturatedColor.val('hex'));
+ setAlpha.call($this, colorBarL2, 100 - (hva != null ? hva.v : 100));
+ setAlpha.call($this, colorBarL5, Math.precision(((255 - ((hva && hva.a) || 0)) * 100) / 255, 4));
+ break;
+ case 'v':
+ var hsa = ui.val('hsa'),
+ valueColor = new Color({ h: (hsa && hsa.h) || 0, s: hsa != null ? hsa.s : 100, v: 100 });
+ setBG.call($this, colorBarDiv, valueColor.val('hex'));
+ setAlpha.call($this, colorBarL5, Math.precision(((255 - ((hsa && hsa.a) || 0)) * 100) / 255, 4));
+ break;
+ case 'r':
+ case 'g':
+ case 'b':
+ var hValue = 0, vValue = 0, rgba = ui.val('rgba');
+ if (settings.color.mode === 'r') {
+ hValue = (rgba && rgba.b) || 0;
+ vValue = (rgba && rgba.g) || 0;
+ } else if (settings.color.mode === 'g') {
+ hValue = (rgba && rgba.b) || 0;
+ vValue = (rgba && rgba.r) || 0;
+ } else if (settings.color.mode === 'b') {
+ hValue = (rgba && rgba.r) || 0;
+ vValue = (rgba && rgba.g) || 0;
+ }
+ var middle = vValue > hValue ? hValue : vValue;
+ setAlpha.call($this, colorBarL2, hValue > vValue ? Math.precision(((hValue - vValue) / (255 - vValue)) * 100, 4) : 0);
+ setAlpha.call($this, colorBarL3, vValue > hValue ? Math.precision(((vValue - hValue) / (255 - hValue)) * 100, 4) : 0);
+ setAlpha.call($this, colorBarL4, Math.precision((middle / 255) * 100, 4));
+ setAlpha.call($this, colorBarL5, Math.precision(((255 - ((rgba && rgba.a) || 0)) * 100) / 255, 4));
+ break;
+ case 'a':
+ var a = ui.val('a');
+ setBG.call($this, colorBarDiv, ui.val('hex') || '000000');
+ setAlpha.call($this, colorBarL5, a != null ? 0 : 100);
+ setAlpha.call($this, colorBarL6, a != null ? 100 : 0);
+ break;
+ }
+ },
+ setBG =
+ function (el, c) {
+ el.css({backgroundColor: (c && c.length === 6 && '#' + c) || 'transparent'});
+ },
+ setImg =
+ function (img, src) {
+ if (isLessThanIE7 && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
+ img.attr('pngSrc', src);
+ img.css({ backgroundImage: 'none', filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+ } else img.css({ backgroundImage: 'url(\'' + src + '\')' });
+ },
+ setImgLoc =
+ function (img, y) {
+ img.css({ top: y + 'px' });
+ },
+ setAlpha =
+ function (obj, alpha) {
+ obj.css({ visibility: alpha > 0 ? 'visible' : 'hidden' });
+ if (alpha > 0 && alpha < 100) {
+ if (isLessThanIE7) {
+ var src = obj.attr('pngSrc');
+ if (src != null && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
+ obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\') progid:DXImageTransform.Microsoft.Alpha(opacity=' + alpha + ')' });
+ } else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+ } else obj.css({ opacity: Math.precision(alpha / 100, 4) });
+ } else if (alpha === 0 || alpha === 100) {
+ if (isLessThanIE7) {
+ var src = obj.attr('pngSrc');
+ if (src != null && (src.indexOf('AlphaBar.png') > -1 || src.indexOf('Bars.png') > -1 || src.indexOf('Maps.png') > -1)) {
+ obj.css({ filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\', sizingMethod=\'scale\')' });
+ } else obj.css({ opacity: '' });
+ } else obj.css({ opacity: '' });
+ }
+ },
+ revertColor = // revert color to original color when opened
+ function () {
+ color.active.val('ahex', color.current.val('ahex'));
+ },
+ commitColor = // commit the color changes
+ function () {
+ color.current.val('ahex', color.active.val('ahex'));
+ },
+ radioClicked =
+ function (e) {
+ $(this).parents('tbody:first').find('input:radio[value!="' + e.target.value + '"]').removeAttr('checked');
+ setColorMode.call($this, e.target.value);
+ },
+ currentClicked =
+ function () {
+ revertColor.call($this);
+ },
+ cancelClicked =
+ function () {
+ revertColor.call($this);
+ settings.window.expandable && hide.call($this);
+ $.isFunction(cancelCallback) && cancelCallback.call($this, color.active, cancelButton);
+ },
+ okClicked =
+ function () {
+ commitColor.call($this);
+ settings.window.expandable && hide.call($this);
+ $.isFunction(commitCallback) && commitCallback.call($this, color.active, okButton);
+ },
+ iconImageClicked =
+ function () {
+ show.call($this);
+ },
+ currentColorChanged =
+ function (ui, context) {
+ var hex = ui.val('hex');
+ currentPreview.css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
+ setAlpha.call($this, currentPreview, Math.precision(((ui.val('a') || 0) * 100) / 255, 4));
+ },
+ expandableColorChanged =
+ function (ui, context) {
+ var hex = ui.val('hex');
+ var va = ui.val('va');
+ iconColor.css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
+ setAlpha.call($this, iconAlpha, Math.precision(((255 - ((va && va.a) || 0)) * 100) / 255, 4));
+ if (settings.window.bindToInput && settings.window.updateInputColor) {
+ settings.window.input.css({
+ backgroundColor: (hex && '#' + hex) || 'transparent',
+ color: va == null || va.v > 75 ? '#000000' : '#ffffff'
+ });
+ }
+ },
+ moveBarMouseDown =
+ function (e) {
+ // var element = settings.window.element, // local copies for YUI compressor
+ // page = settings.window.page;
+ elementStartX = parseInt(container.css('left'));
+ elementStartY = parseInt(container.css('top'));
+ pageStartX = e.pageX;
+ pageStartY = e.pageY;
+ // bind events to document to move window - we will unbind these on mouseup
+ $(document).bind('mousemove', documentMouseMove).bind('mouseup', documentMouseUp);
+ e.preventDefault(); // prevent attempted dragging of the column
+ },
+ documentMouseMove =
+ function (e) {
+ container.css({ left: elementStartX - (pageStartX - e.pageX) + 'px', top: elementStartY - (pageStartY - e.pageY) + 'px' });
+ if (settings.window.expandable && !$.support.boxModel) container.prev().css({ left: container.css('left'), top: container.css('top') });
+ e.stopPropagation();
+ e.preventDefault();
+ return false;
+ },
+ documentMouseUp =
+ function (e) {
+ $(document).unbind('mousemove', documentMouseMove).unbind('mouseup', documentMouseUp);
+ e.stopPropagation();
+ e.preventDefault();
+ return false;
+ },
+ quickPickClicked =
+ function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ color.active.val('ahex', $(this).attr('title') || null, e.target);
+ return false;
+ },
+ commitCallback = ($.isFunction($arguments[1]) && $arguments[1]) || null,
+ liveCallback = ($.isFunction($arguments[2]) && $arguments[2]) || null,
+ cancelCallback = ($.isFunction($arguments[3]) && $arguments[3]) || null,
+ show =
+ function () {
+ color.current.val('ahex', color.active.val('ahex'));
+ var attachIFrame = function () {
+ if (!settings.window.expandable || $.support.boxModel) return;
+ var table = container.find('table:first');
+ container.before('');
+ container.prev().css({width: table.width(), height: container.height(), opacity: 0, position: 'absolute', left: container.css('left'), top: container.css('top')});
+ };
+ if (settings.window.expandable) {
+ $(document.body).children('div.jPicker.Container').css({zIndex: 10});
+ container.css({zIndex: 20});
+ }
+ switch (settings.window.effects.type) {
+ case 'fade':
+ container.fadeIn(settings.window.effects.speed.show, attachIFrame);
+ break;
+ case 'slide':
+ container.slideDown(settings.window.effects.speed.show, attachIFrame);
+ break;
+ case 'show':
+ default:
+ container.show(settings.window.effects.speed.show, attachIFrame);
+ break;
+ }
+ },
+ hide =
+ function () {
+ var removeIFrame = function () {
+ if (settings.window.expandable) container.css({ zIndex: 10 });
+ if (!settings.window.expandable || $.support.boxModel) return;
+ container.prev().remove();
+ };
+ switch (settings.window.effects.type) {
+ case 'fade':
+ container.fadeOut(settings.window.effects.speed.hide, removeIFrame);
+ break;
+ case 'slide':
+ container.slideUp(settings.window.effects.speed.hide, removeIFrame);
+ break;
+ case 'show':
+ default:
+ container.hide(settings.window.effects.speed.hide, removeIFrame);
+ break;
+ }
+ },
+ initialize =
+ function () {
+ var win = settings.window,
+ popup = win.expandable ? $($this).next().find('.Container:first') : null;
+ container = win.expandable ? $('
') : $($this);
+ container.addClass('jPicker Container');
+ if (win.expandable) container.hide();
+ container.get(0).onselectstart = function (event) { if (event.target.nodeName.toLowerCase() !== 'input') return false; };
+ // inject html source code - we are using a single table for this control - I know tables are considered bad, but it takes care of equal height columns and
+ // this control really is tabular data, so I believe it is the right move
+ var all = color.active.val('all');
+ if (win.alphaPrecision < 0) win.alphaPrecision = 0;
+ else if (win.alphaPrecision > 2) win.alphaPrecision = 2;
+ var controlHtml = '';
+ if (win.expandable) {
+ container.html(controlHtml);
+ if ($(document.body).children('div.jPicker.Container').length === 0)$(document.body).prepend(container);
+ else $(document.body).children('div.jPicker.Container:last').after(container);
+ container.mousedown(
+ function () {
+ $(document.body).children('div.jPicker.Container').css({zIndex: 10});
+ container.css({zIndex: 20});
+ });
+ container.css( // positions must be set and display set to absolute before source code injection or IE will size the container to fit the window
+ {
+ left:
+ win.position.x === 'left'
+ ? (popup.offset().left - 530 - (win.position.y === 'center' ? 25 : 0)) + 'px'
+ : win.position.x === 'center'
+ ? (popup.offset().left - 260) + 'px'
+ : win.position.x === 'right'
+ ? (popup.offset().left - 10 + (win.position.y === 'center' ? 25 : 0)) + 'px'
+ : win.position.x === 'screenCenter'
+ ? (($(document).width() >> 1) - 260) + 'px'
+ : (popup.offset().left + parseInt(win.position.x)) + 'px',
+ position: 'absolute',
+ top: win.position.y === 'top'
+ ? (popup.offset().top - 312) + 'px'
+ : win.position.y === 'center'
+ ? (popup.offset().top - 156) + 'px'
+ : win.position.y === 'bottom'
+ ? (popup.offset().top + 25) + 'px'
+ : (popup.offset().top + parseInt(win.position.y)) + 'px'
+ });
+ } else {
+ container = $($this);
+ container.html(controlHtml);
+ }
+ // initialize the objects to the source code just injected
+ var tbody = container.find('tbody:first');
+ colorMapDiv = tbody.find('div.Map:first');
+ colorBarDiv = tbody.find('div.Bar:first');
+ var MapMaps = colorMapDiv.find('span'),
+ BarMaps = colorBarDiv.find('span');
+ colorMapL1 = MapMaps.filter('.Map1:first');
+ colorMapL2 = MapMaps.filter('.Map2:first');
+ colorMapL3 = MapMaps.filter('.Map3:first');
+ colorBarL1 = BarMaps.filter('.Map1:first');
+ colorBarL2 = BarMaps.filter('.Map2:first');
+ colorBarL3 = BarMaps.filter('.Map3:first');
+ colorBarL4 = BarMaps.filter('.Map4:first');
+ colorBarL5 = BarMaps.filter('.Map5:first');
+ colorBarL6 = BarMaps.filter('.Map6:first');
+ // create color pickers and maps
+ colorMap = new Slider(colorMapDiv,
+ {
+ map:
+ {
+ width: images.colorMap.width,
+ height: images.colorMap.height
+ },
+ arrow:
+ {
+ image: images.clientPath + images.colorMap.arrow.file,
+ width: images.colorMap.arrow.width,
+ height: images.colorMap.arrow.height
+ }
+ });
+ colorMap.bind(mapValueChanged);
+ colorBar = new Slider(colorBarDiv,
+ {
+ map:
+ {
+ width: images.colorBar.width,
+ height: images.colorBar.height
+ },
+ arrow:
+ {
+ image: images.clientPath + images.colorBar.arrow.file,
+ width: images.colorBar.arrow.width,
+ height: images.colorBar.arrow.height
+ }
+ });
+ colorBar.bind(colorBarValueChanged);
+ colorPicker = new ColorValuePicker(tbody, color.active, win.expandable && win.bindToInput ? win.input : null, win.alphaPrecision);
+ var hex = all != null ? all.hex : null,
+ preview = tbody.find('.Preview'),
+ button = tbody.find('.Button');
+ activePreview = preview.find('.Active:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
+ currentPreview = preview.find('.Current:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' }).bind('click', currentClicked);
+ setAlpha.call($this, currentPreview, Math.precision(color.current.val('a') * 100) / 255, 4);
+ okButton = button.find('.Ok:first').bind('click', okClicked);
+ cancelButton = button.find('.Cancel:first').bind('click', cancelClicked);
+ grid = button.find('.Grid:first');
+ setTimeout(
+ function () {
+ setImg.call($this, colorMapL1, images.clientPath + 'Maps.png');
+ setImg.call($this, colorMapL2, images.clientPath + 'Maps.png');
+ setImg.call($this, colorMapL3, images.clientPath + 'map-opacity.png');
+ setImg.call($this, colorBarL1, images.clientPath + 'Bars.png');
+ setImg.call($this, colorBarL2, images.clientPath + 'Bars.png');
+ setImg.call($this, colorBarL3, images.clientPath + 'Bars.png');
+ setImg.call($this, colorBarL4, images.clientPath + 'Bars.png');
+ setImg.call($this, colorBarL5, images.clientPath + 'bar-opacity.png');
+ setImg.call($this, colorBarL6, images.clientPath + 'AlphaBar.png');
+ setImg.call($this, preview.find('div:first'), images.clientPath + 'preview-opacity.png');
+ }, 0);
+ tbody.find('td.Radio input').bind('click', radioClicked);
+ // initialize quick list
+ if (color.quickList && color.quickList.length > 0) {
+ var html = '';
+ for (var i = 0; i < color.quickList.length; i++) {
+ /* if default colors are hex strings, change them to color objects */
+ if ((typeof (color.quickList[i])).toString().toLowerCase() === 'string') color.quickList[i] = new Color({ hex: color.quickList[i] });
+ var alpha = color.quickList[i].val('a');
+ var ahex = color.quickList[i].val('ahex');
+ if (!win.alphaSupport && ahex) ahex = ahex.substring(0, 6) + 'ff';
+ var quickHex = color.quickList[i].val('hex');
+ if (!ahex) ahex = '00000000';
+ html += ' ';
+ }
+ setImg.call($this, grid, images.clientPath + 'bar-opacity.png');
+ grid.html(html);
+ grid.find('.QuickColor').click(quickPickClicked);
+ }
+ setColorMode.call($this, settings.color.mode);
+ color.active.bind(activeColorChanged);
+ $.isFunction(liveCallback) && color.active.bind(liveCallback);
+ color.current.bind(currentColorChanged);
+ // bind to input
+ if (win.expandable) {
+ $this.icon = popup.parents('.Icon:first');
+ iconColor = $this.icon.find('.Color:first').css({ backgroundColor: (hex && '#' + hex) || 'transparent' });
+ iconAlpha = $this.icon.find('.Alpha:first');
+ setImg.call($this, iconAlpha, images.clientPath + 'bar-opacity.png');
+ setAlpha.call($this, iconAlpha, Math.precision(((255 - (all != null ? all.a : 0)) * 100) / 255, 4));
+ iconImage = $this.icon.find('.Image:first').css({
+ backgroundImage: 'url(\'' + images.clientPath + images.picker.file + '\')'
+ }).bind('click', iconImageClicked);
+ if (win.bindToInput && win.updateInputColor) {
+ win.input.css({
+ backgroundColor: (hex && '#' + hex) || 'transparent',
+ color: all == null || all.v > 75 ? '#000000' : '#ffffff'
+ });
+ }
+ moveBar = tbody.find('.Move:first').bind('mousedown', moveBarMouseDown);
+ color.active.bind(expandableColorChanged);
+ } else show.call($this);
+ },
+ destroy =
+ function () {
+ container.find('td.Radio input').unbind('click', radioClicked);
+ currentPreview.unbind('click', currentClicked);
+ cancelButton.unbind('click', cancelClicked);
+ okButton.unbind('click', okClicked);
+ if (settings.window.expandable) {
+ iconImage.unbind('click', iconImageClicked);
+ moveBar.unbind('mousedown', moveBarMouseDown);
+ $this.icon = null;
+ }
+ container.find('.QuickColor').unbind('click', quickPickClicked);
+ colorMapDiv = null;
+ colorBarDiv = null;
+ colorMapL1 = null;
+ colorMapL2 = null;
+ colorMapL3 = null;
+ colorBarL1 = null;
+ colorBarL2 = null;
+ colorBarL3 = null;
+ colorBarL4 = null;
+ colorBarL5 = null;
+ colorBarL6 = null;
+ colorMap.destroy();
+ colorMap = null;
+ colorBar.destroy();
+ colorBar = null;
+ colorPicker.destroy();
+ colorPicker = null;
+ activePreview = null;
+ currentPreview = null;
+ okButton = null;
+ cancelButton = null;
+ grid = null;
+ commitCallback = null;
+ cancelCallback = null;
+ liveCallback = null;
+ container.html('');
+ for (var i = 0; i < List.length; i++) if (List[i] === $this) List.splice(i, 1);
+ },
+ images = settings.images, // local copies for YUI compressor
+ localization = settings.localization,
+ color =
+ {
+ active: (typeof settings.color.active).toString().toLowerCase() === 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+ current: (typeof settings.color.active).toString().toLowerCase() === 'string' ? new Color({ ahex: !settings.window.alphaSupport && settings.color.active ? settings.color.active.substring(0, 6) + 'ff' : settings.color.active }) : new Color({ ahex: !settings.window.alphaSupport && settings.color.active.val('ahex') ? settings.color.active.val('ahex').substring(0, 6) + 'ff' : settings.color.active.val('ahex') }),
+ quickList: settings.color.quickList
+ };
+ $.extend(true, $this, // public properties, methods, and callbacks
+ {
+ commitCallback: commitCallback, // commitCallback function can be overridden to return the selected color to a method you specify when the user clicks "OK"
+ liveCallback: liveCallback, // liveCallback function can be overridden to return the selected color to a method you specify in live mode (continuous update)
+ cancelCallback: cancelCallback, // cancelCallback function can be overridden to a method you specify when the user clicks "Cancel"
+ color: color,
+ show: show,
+ hide: hide,
+ destroy: destroy // destroys this control entirely, removing all events and objects, and removing itself from the List
+ });
+ List.push($this);
+ setTimeout(
+ function () {
+ initialize.call($this);
+ }, 0);
+ });
};
$.fn.jPicker.defaults = /* jPicker defaults - you can change anything in this section (such as the clientPath to your images) without fear of breaking the program */
- {
- window: {
- title: null, /* any title for the jPicker window itself - displays "Drag Markers To Pick A Color" if left null */
- effects:
- {
- type: 'slide', /* effect used to show/hide an expandable picker. Acceptable values "slide", "show", "fade" */
- speed:
- {
- show: 'slow', /* duration of "show" effect. Acceptable values are "fast", "slow", or time in ms */
- hide: 'fast' /* duration of "hide" effect. Acceptable values are "fast", "slow", or time in ms */
- }
- },
- position:
- {
- x: 'screenCenter', /* acceptable values "left", "center", "right", "screenCenter", or relative px value */
- y: 'top' /* acceptable values "top", "bottom", "center", or relative px value */
- },
- expandable: false, /* default to large static picker - set to true to make an expandable picker (small icon with popup) - set automatically when binded to input element */
- liveUpdate: true, /* set false if you want the user to have to click "OK" before the binded input box updates values (always "true" for expandable picker) */
- alphaSupport: false, /* set to true to enable alpha picking */
- alphaPrecision: 0, /* set decimal precision for alpha percentage display - hex codes do not map directly to percentage integers - range 0-2 */
- updateInputColor: true /* set to false to prevent binded input colors from changing */
- },
- color: {
- mode: 'h', /* acceptabled values "h" (hue), "s" (saturation), "v" (value), "r" (red), "g" (green), "b" (blue), "a" (alpha) */
- active: new Color({ ahex: '#ffcc00ff' }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
- quickList: /* the quick pick color list */
- [
- new Color({ h: 360, s: 33, v: 100 }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
- new Color({ h: 360, s: 66, v: 100 }),
- new Color({ h: 360, s: 100, v: 100 }),
- new Color({ h: 360, s: 100, v: 75 }),
- new Color({ h: 360, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 100 }),
- new Color({ h: 30, s: 33, v: 100 }),
- new Color({ h: 30, s: 66, v: 100 }),
- new Color({ h: 30, s: 100, v: 100 }),
- new Color({ h: 30, s: 100, v: 75 }),
- new Color({ h: 30, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 90 }),
- new Color({ h: 60, s: 33, v: 100 }),
- new Color({ h: 60, s: 66, v: 100 }),
- new Color({ h: 60, s: 100, v: 100 }),
- new Color({ h: 60, s: 100, v: 75 }),
- new Color({ h: 60, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 80 }),
- new Color({ h: 90, s: 33, v: 100 }),
- new Color({ h: 90, s: 66, v: 100 }),
- new Color({ h: 90, s: 100, v: 100 }),
- new Color({ h: 90, s: 100, v: 75 }),
- new Color({ h: 90, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 70 }),
- new Color({ h: 120, s: 33, v: 100 }),
- new Color({ h: 120, s: 66, v: 100 }),
- new Color({ h: 120, s: 100, v: 100 }),
- new Color({ h: 120, s: 100, v: 75 }),
- new Color({ h: 120, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 60 }),
- new Color({ h: 150, s: 33, v: 100 }),
- new Color({ h: 150, s: 66, v: 100 }),
- new Color({ h: 150, s: 100, v: 100 }),
- new Color({ h: 150, s: 100, v: 75 }),
- new Color({ h: 150, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 50 }),
- new Color({ h: 180, s: 33, v: 100 }),
- new Color({ h: 180, s: 66, v: 100 }),
- new Color({ h: 180, s: 100, v: 100 }),
- new Color({ h: 180, s: 100, v: 75 }),
- new Color({ h: 180, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 40 }),
- new Color({ h: 210, s: 33, v: 100 }),
- new Color({ h: 210, s: 66, v: 100 }),
- new Color({ h: 210, s: 100, v: 100 }),
- new Color({ h: 210, s: 100, v: 75 }),
- new Color({ h: 210, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 30 }),
- new Color({ h: 240, s: 33, v: 100 }),
- new Color({ h: 240, s: 66, v: 100 }),
- new Color({ h: 240, s: 100, v: 100 }),
- new Color({ h: 240, s: 100, v: 75 }),
- new Color({ h: 240, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 20 }),
- new Color({ h: 270, s: 33, v: 100 }),
- new Color({ h: 270, s: 66, v: 100 }),
- new Color({ h: 270, s: 100, v: 100 }),
- new Color({ h: 270, s: 100, v: 75 }),
- new Color({ h: 270, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 10 }),
- new Color({ h: 300, s: 33, v: 100 }),
- new Color({ h: 300, s: 66, v: 100 }),
- new Color({ h: 300, s: 100, v: 100 }),
- new Color({ h: 300, s: 100, v: 75 }),
- new Color({ h: 300, s: 100, v: 50 }),
- new Color({ h: 180, s: 0, v: 0 }),
- new Color({ h: 330, s: 33, v: 100 }),
- new Color({ h: 330, s: 66, v: 100 }),
- new Color({ h: 330, s: 100, v: 100 }),
- new Color({ h: 330, s: 100, v: 75 }),
- new Color({ h: 330, s: 100, v: 50 }),
- new Color()
- ]
- },
- images:
- {
- clientPath: '/jPicker/images/', /* Path to image files */
- colorMap:
- {
- width: 256,
- height: 256,
- arrow:
- {
- file: 'mappoint.gif', /* ColorMap arrow icon */
- width: 15,
- height: 15
- }
- },
- colorBar:
- {
- width: 20,
- height: 256,
- arrow:
- {
- file: 'rangearrows.gif', /* ColorBar arrow icon */
- width: 20,
- height: 7
- }
- },
- picker:
- {
- file: 'picker.gif', /* Color Picker icon */
- width: 25,
- height: 24
- }
- },
- localization: /* alter these to change the text presented by the picker (e.g. different language) */
- {
- text:
- {
- title: 'Drag Markers To Pick A Color',
- newColor: 'new',
- currentColor: 'current',
- ok: 'OK',
- cancel: 'Cancel'
- },
- tooltips:
- {
- colors:
- {
- newColor: 'New Color - Press “OK” To Commit',
- currentColor: 'Click To Revert To Original Color'
- },
- buttons:
- {
- ok: 'Commit To This Color Selection',
- cancel: 'Cancel And Revert To Original Color'
- },
- hue:
- {
- radio: 'Set To “Hue” Color Mode',
- textbox: 'Enter A “Hue” Value (0-360°)'
- },
- saturation:
- {
- radio: 'Set To “Saturation” Color Mode',
- textbox: 'Enter A “Saturation” Value (0-100%)'
- },
- value:
- {
- radio: 'Set To “Value” Color Mode',
- textbox: 'Enter A “Value” Value (0-100%)'
- },
- red:
- {
- radio: 'Set To “Red” Color Mode',
- textbox: 'Enter A “Red” Value (0-255)'
- },
- green:
- {
- radio: 'Set To “Green” Color Mode',
- textbox: 'Enter A “Green” Value (0-255)'
- },
- blue:
- {
- radio: 'Set To “Blue” Color Mode',
- textbox: 'Enter A “Blue” Value (0-255)'
- },
- alpha:
- {
- radio: 'Set To “Alpha” Color Mode',
- textbox: 'Enter A “Alpha” Value (0-100)'
- },
- hex:
- {
- textbox: 'Enter A “Hex” Color Value (#000000-#ffffff)',
- alpha: 'Enter A “Alpha” Value (#00-#ff)'
- }
- }
- }
- };
+ {
+ window: {
+ title: null, /* any title for the jPicker window itself - displays "Drag Markers To Pick A Color" if left null */
+ effects:
+ {
+ type: 'slide', /* effect used to show/hide an expandable picker. Acceptable values "slide", "show", "fade" */
+ speed:
+ {
+ show: 'slow', /* duration of "show" effect. Acceptable values are "fast", "slow", or time in ms */
+ hide: 'fast' /* duration of "hide" effect. Acceptable values are "fast", "slow", or time in ms */
+ }
+ },
+ position:
+ {
+ x: 'screenCenter', /* acceptable values "left", "center", "right", "screenCenter", or relative px value */
+ y: 'top' /* acceptable values "top", "bottom", "center", or relative px value */
+ },
+ expandable: false, /* default to large static picker - set to true to make an expandable picker (small icon with popup) - set automatically when binded to input element */
+ liveUpdate: true, /* set false if you want the user to have to click "OK" before the binded input box updates values (always "true" for expandable picker) */
+ alphaSupport: false, /* set to true to enable alpha picking */
+ alphaPrecision: 0, /* set decimal precision for alpha percentage display - hex codes do not map directly to percentage integers - range 0-2 */
+ updateInputColor: true /* set to false to prevent binded input colors from changing */
+ },
+ color: {
+ mode: 'h', /* acceptabled values "h" (hue), "s" (saturation), "v" (value), "r" (red), "g" (green), "b" (blue), "a" (alpha) */
+ active: new Color({ ahex: '#ffcc00ff' }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+ quickList: /* the quick pick color list */
+ [
+ new Color({ h: 360, s: 33, v: 100 }), /* acceptable values are any declared $.jPicker.Color object or string HEX value (e.g. #ffc000) WITH OR WITHOUT the "#" prefix */
+ new Color({ h: 360, s: 66, v: 100 }),
+ new Color({ h: 360, s: 100, v: 100 }),
+ new Color({ h: 360, s: 100, v: 75 }),
+ new Color({ h: 360, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 100 }),
+ new Color({ h: 30, s: 33, v: 100 }),
+ new Color({ h: 30, s: 66, v: 100 }),
+ new Color({ h: 30, s: 100, v: 100 }),
+ new Color({ h: 30, s: 100, v: 75 }),
+ new Color({ h: 30, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 90 }),
+ new Color({ h: 60, s: 33, v: 100 }),
+ new Color({ h: 60, s: 66, v: 100 }),
+ new Color({ h: 60, s: 100, v: 100 }),
+ new Color({ h: 60, s: 100, v: 75 }),
+ new Color({ h: 60, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 80 }),
+ new Color({ h: 90, s: 33, v: 100 }),
+ new Color({ h: 90, s: 66, v: 100 }),
+ new Color({ h: 90, s: 100, v: 100 }),
+ new Color({ h: 90, s: 100, v: 75 }),
+ new Color({ h: 90, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 70 }),
+ new Color({ h: 120, s: 33, v: 100 }),
+ new Color({ h: 120, s: 66, v: 100 }),
+ new Color({ h: 120, s: 100, v: 100 }),
+ new Color({ h: 120, s: 100, v: 75 }),
+ new Color({ h: 120, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 60 }),
+ new Color({ h: 150, s: 33, v: 100 }),
+ new Color({ h: 150, s: 66, v: 100 }),
+ new Color({ h: 150, s: 100, v: 100 }),
+ new Color({ h: 150, s: 100, v: 75 }),
+ new Color({ h: 150, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 50 }),
+ new Color({ h: 180, s: 33, v: 100 }),
+ new Color({ h: 180, s: 66, v: 100 }),
+ new Color({ h: 180, s: 100, v: 100 }),
+ new Color({ h: 180, s: 100, v: 75 }),
+ new Color({ h: 180, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 40 }),
+ new Color({ h: 210, s: 33, v: 100 }),
+ new Color({ h: 210, s: 66, v: 100 }),
+ new Color({ h: 210, s: 100, v: 100 }),
+ new Color({ h: 210, s: 100, v: 75 }),
+ new Color({ h: 210, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 30 }),
+ new Color({ h: 240, s: 33, v: 100 }),
+ new Color({ h: 240, s: 66, v: 100 }),
+ new Color({ h: 240, s: 100, v: 100 }),
+ new Color({ h: 240, s: 100, v: 75 }),
+ new Color({ h: 240, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 20 }),
+ new Color({ h: 270, s: 33, v: 100 }),
+ new Color({ h: 270, s: 66, v: 100 }),
+ new Color({ h: 270, s: 100, v: 100 }),
+ new Color({ h: 270, s: 100, v: 75 }),
+ new Color({ h: 270, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 10 }),
+ new Color({ h: 300, s: 33, v: 100 }),
+ new Color({ h: 300, s: 66, v: 100 }),
+ new Color({ h: 300, s: 100, v: 100 }),
+ new Color({ h: 300, s: 100, v: 75 }),
+ new Color({ h: 300, s: 100, v: 50 }),
+ new Color({ h: 180, s: 0, v: 0 }),
+ new Color({ h: 330, s: 33, v: 100 }),
+ new Color({ h: 330, s: 66, v: 100 }),
+ new Color({ h: 330, s: 100, v: 100 }),
+ new Color({ h: 330, s: 100, v: 75 }),
+ new Color({ h: 330, s: 100, v: 50 }),
+ new Color()
+ ]
+ },
+ images:
+ {
+ clientPath: '/jPicker/images/', /* Path to image files */
+ colorMap:
+ {
+ width: 256,
+ height: 256,
+ arrow:
+ {
+ file: 'mappoint.gif', /* ColorMap arrow icon */
+ width: 15,
+ height: 15
+ }
+ },
+ colorBar:
+ {
+ width: 20,
+ height: 256,
+ arrow:
+ {
+ file: 'rangearrows.gif', /* ColorBar arrow icon */
+ width: 20,
+ height: 7
+ }
+ },
+ picker:
+ {
+ file: 'picker.gif', /* Color Picker icon */
+ width: 25,
+ height: 24
+ }
+ },
+ localization: /* alter these to change the text presented by the picker (e.g. different language) */
+ {
+ text:
+ {
+ title: 'Drag Markers To Pick A Color',
+ newColor: 'new',
+ currentColor: 'current',
+ ok: 'OK',
+ cancel: 'Cancel'
+ },
+ tooltips:
+ {
+ colors:
+ {
+ newColor: 'New Color - Press “OK” To Commit',
+ currentColor: 'Click To Revert To Original Color'
+ },
+ buttons:
+ {
+ ok: 'Commit To This Color Selection',
+ cancel: 'Cancel And Revert To Original Color'
+ },
+ hue:
+ {
+ radio: 'Set To “Hue” Color Mode',
+ textbox: 'Enter A “Hue” Value (0-360°)'
+ },
+ saturation:
+ {
+ radio: 'Set To “Saturation” Color Mode',
+ textbox: 'Enter A “Saturation” Value (0-100%)'
+ },
+ value:
+ {
+ radio: 'Set To “Value” Color Mode',
+ textbox: 'Enter A “Value” Value (0-100%)'
+ },
+ red:
+ {
+ radio: 'Set To “Red” Color Mode',
+ textbox: 'Enter A “Red” Value (0-255)'
+ },
+ green:
+ {
+ radio: 'Set To “Green” Color Mode',
+ textbox: 'Enter A “Green” Value (0-255)'
+ },
+ blue:
+ {
+ radio: 'Set To “Blue” Color Mode',
+ textbox: 'Enter A “Blue” Value (0-255)'
+ },
+ alpha:
+ {
+ radio: 'Set To “Alpha” Color Mode',
+ textbox: 'Enter A “Alpha” Value (0-100)'
+ },
+ hex:
+ {
+ textbox: 'Enter A “Hex” Color Value (#000000-#ffffff)',
+ alpha: 'Enter A “Alpha” Value (#00-#ff)'
+ }
+ }
+ }
+ };
})(jQuery, '1.1.6');
diff --git a/editor/jgraduate/jquery.jgraduate.js b/editor/jgraduate/jquery.jgraduate.js
index 899a727c..3762c542 100644
--- a/editor/jgraduate/jquery.jgraduate.js
+++ b/editor/jgraduate/jquery.jgraduate.js
@@ -15,22 +15,22 @@
jGraduate( options, okCallback, cancelCallback )
where options is an object literal:
- {
- window: { title: "Pick the start color and opacity for the gradient" },
- images: { clientPath: "images/" },
- paint: a Paint object,
- newstop: String of value "same", "inverse", "black" or "white"
- OR object with one or both values {color: #Hex color, opac: number 0-1}
- }
+ {
+ window: { title: "Pick the start color and opacity for the gradient" },
+ images: { clientPath: "images/" },
+ paint: a Paint object,
+ newstop: String of value "same", "inverse", "black" or "white"
+ OR object with one or both values {color: #Hex color, opac: number 0-1}
+ }
- the Paint object is:
- Paint {
- type: String, // one of "none", "solidColor", "linearGradient", "radialGradient"
- alpha: Number representing opacity (0-100),
- solidColor: String representing #RRGGBB hex of color,
- linearGradient: object of interface SVGLinearGradientElement,
- radialGradient: object of interface SVGRadialGradientElement,
- }
+ Paint {
+ type: String, // one of "none", "solidColor", "linearGradient", "radialGradient"
+ alpha: Number representing opacity (0-100),
+ solidColor: String representing #RRGGBB hex of color,
+ linearGradient: object of interface SVGLinearGradientElement,
+ radialGradient: object of interface SVGRadialGradientElement,
+ }
$.jGraduate.Paint() -> constructs a 'none' color
$.jGraduate.Paint({copy: o}) -> creates a copy of the paint o
@@ -40,11 +40,11 @@ $.jGraduate.Paint({radialGradient: o, a: 7}) -> creates a radial gradient paint
$.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception?
- picker accepts the following object as input:
- {
- okCallback: function to call when Ok is pressed
- cancelCallback: function to call when Cancel is pressed
- paint: object describing the paint to display initially, if not set, then default to opaque white
- }
+ {
+ okCallback: function to call when Ok is pressed
+ cancelCallback: function to call when Cancel is pressed
+ paint: object describing the paint to display initially, if not set, then default to opaque white
+ }
- okCallback receives a Paint object
@@ -53,1103 +53,1103 @@ $.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception?
(function () {
var ns = { svg: 'http://www.w3.org/2000/svg', xlink: 'http://www.w3.org/1999/xlink' };
if (!window.console) {
- window.console = new function () {
- this.log = function (str) {};
- this.dir = function (str) {};
- }();
+ window.console = new function () {
+ this.log = function (str) {};
+ this.dir = function (str) {};
+ }();
}
$.jGraduate = {
- Paint:
- function (opt) {
- var options = opt || {};
- this.alpha = isNaN(options.alpha) ? 100 : options.alpha;
- // copy paint object
- if (options.copy) {
- this.type = options.copy.type;
- this.alpha = options.copy.alpha;
- this.solidColor = null;
- this.linearGradient = null;
- this.radialGradient = null;
+ Paint:
+ function (opt) {
+ var options = opt || {};
+ this.alpha = isNaN(options.alpha) ? 100 : options.alpha;
+ // copy paint object
+ if (options.copy) {
+ this.type = options.copy.type;
+ this.alpha = options.copy.alpha;
+ this.solidColor = null;
+ this.linearGradient = null;
+ this.radialGradient = null;
- switch (this.type) {
- case 'none':
- break;
- case 'solidColor':
- this.solidColor = options.copy.solidColor;
- break;
- case 'linearGradient':
- this.linearGradient = options.copy.linearGradient.cloneNode(true);
- break;
- case 'radialGradient':
- this.radialGradient = options.copy.radialGradient.cloneNode(true);
- break;
- }
- // create linear gradient paint
- } else if (options.linearGradient) {
- this.type = 'linearGradient';
- this.solidColor = null;
- this.radialGradient = null;
- this.linearGradient = options.linearGradient.cloneNode(true);
- // create linear gradient paint
- } else if (options.radialGradient) {
- this.type = 'radialGradient';
- this.solidColor = null;
- this.linearGradient = null;
- this.radialGradient = options.radialGradient.cloneNode(true);
- // create solid color paint
- } else if (options.solidColor) {
- this.type = 'solidColor';
- this.solidColor = options.solidColor;
- // create empty paint
- } else {
- this.type = 'none';
- this.solidColor = null;
- this.linearGradient = null;
- this.radialGradient = null;
- }
- }
+ switch (this.type) {
+ case 'none':
+ break;
+ case 'solidColor':
+ this.solidColor = options.copy.solidColor;
+ break;
+ case 'linearGradient':
+ this.linearGradient = options.copy.linearGradient.cloneNode(true);
+ break;
+ case 'radialGradient':
+ this.radialGradient = options.copy.radialGradient.cloneNode(true);
+ break;
+ }
+ // create linear gradient paint
+ } else if (options.linearGradient) {
+ this.type = 'linearGradient';
+ this.solidColor = null;
+ this.radialGradient = null;
+ this.linearGradient = options.linearGradient.cloneNode(true);
+ // create linear gradient paint
+ } else if (options.radialGradient) {
+ this.type = 'radialGradient';
+ this.solidColor = null;
+ this.linearGradient = null;
+ this.radialGradient = options.radialGradient.cloneNode(true);
+ // create solid color paint
+ } else if (options.solidColor) {
+ this.type = 'solidColor';
+ this.solidColor = options.solidColor;
+ // create empty paint
+ } else {
+ this.type = 'none';
+ this.solidColor = null;
+ this.linearGradient = null;
+ this.radialGradient = null;
+ }
+ }
};
jQuery.fn.jGraduateDefaults = {
- paint: new $.jGraduate.Paint(),
- window: {
- pickerTitle: 'Drag markers to pick a paint'
- },
- images: {
- clientPath: 'images/'
- },
- newstop: 'inverse' // same, inverse, black, white
+ paint: new $.jGraduate.Paint(),
+ window: {
+ pickerTitle: 'Drag markers to pick a paint'
+ },
+ images: {
+ clientPath: 'images/'
+ },
+ newstop: 'inverse' // same, inverse, black, white
};
var isGecko = navigator.userAgent.indexOf('Gecko/') >= 0;
function setAttrs (elem, attrs) {
- if (isGecko) {
- for (var aname in attrs) elem.setAttribute(aname, attrs[aname]);
- } else {
- for (var aname in attrs) {
- var val = attrs[aname], prop = elem[aname];
- if (prop && prop.constructor === 'SVGLength') {
- prop.baseVal.value = val;
- } else {
- elem.setAttribute(aname, val);
- }
- }
- }
+ if (isGecko) {
+ for (var aname in attrs) elem.setAttribute(aname, attrs[aname]);
+ } else {
+ for (var aname in attrs) {
+ var val = attrs[aname], prop = elem[aname];
+ if (prop && prop.constructor === 'SVGLength') {
+ prop.baseVal.value = val;
+ } else {
+ elem.setAttribute(aname, val);
+ }
+ }
+ }
}
function mkElem (name, attrs, newparent) {
- var elem = document.createElementNS(ns.svg, name);
- setAttrs(elem, attrs);
- if (newparent) newparent.appendChild(elem);
- return elem;
+ var elem = document.createElementNS(ns.svg, name);
+ setAttrs(elem, attrs);
+ if (newparent) newparent.appendChild(elem);
+ return elem;
}
jQuery.fn.jGraduate =
- function (options) {
- var $arguments = arguments;
- return this.each(function () {
- var $this = $(this), $settings = $.extend(true, {}, jQuery.fn.jGraduateDefaults, options),
- id = $this.attr('id'),
- idref = '#' + $this.attr('id') + ' ';
-
- if (!idref) {
- alert('Container element must have an id attribute to maintain unique id strings for sub-elements.');
- return;
- }
-
- var okClicked = function () {
- switch ($this.paint.type) {
- case 'radialGradient':
- $this.paint.linearGradient = null;
- break;
- case 'linearGradient':
- $this.paint.radialGradient = null;
- break;
- case 'solidColor':
- $this.paint.radialGradient = $this.paint.linearGradient = null;
- break;
- }
- $.isFunction($this.okCallback) && $this.okCallback($this.paint);
- $this.hide();
- };
- var cancelClicked = function () {
- $.isFunction($this.cancelCallback) && $this.cancelCallback();
- $this.hide();
- };
-
- $.extend(true, $this, { // public properties, methods, and callbacks
- // make a copy of the incoming paint
- paint: new $.jGraduate.Paint({copy: $settings.paint}),
- okCallback: ($.isFunction($arguments[1]) && $arguments[1]) || null,
- cancelCallback: ($.isFunction($arguments[2]) && $arguments[2]) || null
- });
-
- var // pos = $this.position(),
- color = null;
- var $win = $(window);
-
- if ($this.paint.type === 'none') {
- $this.paint = $.jGraduate.Paint({solidColor: 'ffffff'});
- }
-
- $this.addClass('jGraduate_Picker');
- $this.html('' +
- 'Solid Color ' +
- 'Linear Gradient ' +
- 'Radial Gradient ' +
- ' ' +
- '
' +
- '
' +
- '
' +
- '
'
- );
- var colPicker = $(idref + '> .jGraduate_colPick');
- var gradPicker = $(idref + '> .jGraduate_gradPick');
-
- gradPicker.html(
- '' +
- '
' + $settings.window.pickerTitle + ' ' +
- '
' +
- '
' +
- '
' +
- '' +
- '' +
- '' +
- '
Spread method ' +
- '
' +
- '' +
- 'Pad ' +
- 'Reflect ' +
- 'Repeat ' +
- ' ' +
- '
' +
- '
' +
- '' +
- '' +
- ' ' +
- ' ' +
- '
');
-
- // --------------
- // Set up all the SVG elements (the gradient, stops and rectangle)
- var MAX = 256, MARGINX = 0, MARGINY = 0,
- // STOP_RADIUS = 15 / 2,
- SIZEX = MAX - 2 * MARGINX, SIZEY = MAX - 2 * MARGINY;
-
- var curType, curGradient, previewRect;
-
- var attrInput = {};
-
- var SLIDERW = 145;
- $('.jGraduate_SliderBar').width(SLIDERW);
-
- var container = $('#' + id + '_jGraduate_GradContainer')[0];
-
- var svg = mkElem('svg', {
- id: id + '_jgraduate_svg',
- width: MAX,
- height: MAX,
- xmlns: ns.svg
- }, container);
-
- // if we are sent a gradient, import it
-
- curType = curType || $this.paint.type;
-
- var grad = curGradient = $this.paint[curType];
-
- var gradalpha = $this.paint.alpha;
-
- var isSolid = curType === 'solidColor';
-
- // Make any missing gradients
- switch (curType) {
- case 'solidColor':
- // fall through
- case 'linearGradient':
- if (!isSolid) {
- curGradient.id = id + '_lg_jgraduate_grad';
- grad = curGradient = svg.appendChild(curGradient); // .cloneNode(true));
- }
- mkElem('radialGradient', {
- id: id + '_rg_jgraduate_grad'
- }, svg);
- if (curType === 'linearGradient') break;
- // fall through
- case 'radialGradient':
- if (!isSolid) {
- curGradient.id = id + '_rg_jgraduate_grad';
- grad = curGradient = svg.appendChild(curGradient); // .cloneNode(true));
- }
- mkElem('linearGradient', {
- id: id + '_lg_jgraduate_grad'
- }, svg);
- }
-
- if (isSolid) {
- grad = curGradient = $('#' + id + '_lg_jgraduate_grad')[0];
- var color = $this.paint[curType];
- mkStop(0, '#' + color, 1);
-
- var type = typeof $settings.newstop;
-
- if (type === 'string') {
- switch ($settings.newstop) {
- case 'same':
- mkStop(1, '#' + color, 1);
- break;
-
- case 'inverse':
- // Invert current color for second stop
- var inverted = '';
-
- for (var i = 0; i < 6; i += 2) {
- // var ch = color.substr(i, 2);
- var inv = (255 - parseInt(color.substr(i, 2), 16)).toString(16);
- if (inv.length < 2) inv = 0 + inv;
- inverted += inv;
- }
- mkStop(1, '#' + inverted, 1);
- break;
-
- case 'white':
- mkStop(1, '#ffffff', 1);
- break;
-
- case 'black':
- mkStop(1, '#000000', 1);
- break;
- }
- } else if (type === 'object') {
- var opac = ('opac' in $settings.newstop) ? $settings.newstop.opac : 1;
- mkStop(1, ($settings.newstop.color || '#' + color), opac);
- }
- }
-
- var x1 = parseFloat(grad.getAttribute('x1') || 0.0),
- y1 = parseFloat(grad.getAttribute('y1') || 0.0),
- x2 = parseFloat(grad.getAttribute('x2') || 1.0),
- y2 = parseFloat(grad.getAttribute('y2') || 0.0);
-
- var cx = parseFloat(grad.getAttribute('cx') || 0.5),
- cy = parseFloat(grad.getAttribute('cy') || 0.5),
- fx = parseFloat(grad.getAttribute('fx') || cx),
- fy = parseFloat(grad.getAttribute('fy') || cy);
-
- var previewRect = mkElem('rect', {
- id: id + '_jgraduate_rect',
- x: MARGINX,
- y: MARGINY,
- width: SIZEX,
- height: SIZEY,
- fill: 'url(#' + id + '_jgraduate_grad)',
- 'fill-opacity': gradalpha / 100
- }, svg);
-
- // stop visuals created here
- var beginCoord = $('
').attr({
- 'class': 'grad_coord jGraduate_lg_field',
- title: 'Begin Stop'
- }).text(1).css({
- top: y1 * MAX,
- left: x1 * MAX
- }).data('coord', 'start').appendTo(container);
-
- var endCoord = beginCoord.clone().text(2).css({
- top: y2 * MAX,
- left: x2 * MAX
- }).attr('title', 'End stop').data('coord', 'end').appendTo(container);
-
- var centerCoord = $('
').attr({
- 'class': 'grad_coord jGraduate_rg_field',
- title: 'Center stop'
- }).text('C').css({
- top: cy * MAX,
- left: cx * MAX
- }).data('coord', 'center').appendTo(container);
-
- var focusCoord = centerCoord.clone().text('F').css({
- top: fy * MAX,
- left: fx * MAX,
- display: 'none'
- }).attr('title', 'Focus point').data('coord', 'focus').appendTo(container);
-
- focusCoord[0].id = id + '_jGraduate_focusCoord';
-
- // var coords = $(idref + ' .grad_coord');
-
- // $(container).hover(function () {
- // coords.animate({
- // opacity: 1
- // }, 500);
- // }, function () {
- // coords.animate({
- // opacity: .2
- // }, 500);
- // });
-
- $.each(['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'], function (i, attr) {
- var attrval = curGradient.getAttribute(attr);
-
- var isRadial = isNaN(attr[1]);
-
- if (!attrval) {
- // Set defaults
- if (isRadial) {
- // For radial points
- attrval = '0.5';
- } else {
- // Only x2 is 1
- attrval = attr === 'x2' ? '1.0' : '0.0';
- }
- }
-
- attrInput[attr] = $('#' + id + '_jGraduate_' + attr)
- .val(attrval)
- .change(function () {
- // TODO: Support values < 0 and > 1 (zoomable preview?)
- if (isNaN(parseFloat(this.value)) || this.value < 0) {
- this.value = 0.0;
- } else if (this.value > 1) {
- this.value = 1.0;
- }
-
- if (!(attr[0] === 'f' && !showFocus)) {
- if ((isRadial && curType === 'radialGradient') || (!isRadial && curType === 'linearGradient')) {
- curGradient.setAttribute(attr, this.value);
- }
- }
-
- if (isRadial) {
- var $elem = attr[0] === 'c' ? centerCoord : focusCoord;
- } else {
- var $elem = attr[1] === '1' ? beginCoord : endCoord;
- }
-
- var cssName = attr.indexOf('x') >= 0 ? 'left' : 'top';
-
- $elem.css(cssName, this.value * MAX);
- }).change();
- });
-
- function mkStop (n, color, opac, sel, stopElem) {
- var stop = stopElem || mkElem('stop', {'stop-color': color, 'stop-opacity': opac, offset: n}, curGradient);
- if (stopElem) {
- color = stopElem.getAttribute('stop-color');
- opac = stopElem.getAttribute('stop-opacity');
- n = stopElem.getAttribute('offset');
- } else {
- curGradient.appendChild(stop);
- }
- if (opac === null) opac = 1;
-
- var pickerD = 'M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z';
-
- var pathbg = mkElem('path', {
- d: pickerD,
- fill: 'url(#jGraduate_trans)',
- transform: 'translate(' + (10 + n * MAX) + ', 26)'
- }, stopGroup);
-
- var path = mkElem('path', {
- d: pickerD,
- fill: color,
- 'fill-opacity': opac,
- transform: 'translate(' + (10 + n * MAX) + ', 26)',
- stroke: '#000',
- 'stroke-width': 1.5
- }, stopGroup);
-
- $(path).mousedown(function (e) {
- selectStop(this);
- drag = curStop;
- $win.mousemove(dragColor).mouseup(remDrags);
- stopOffset = stopMakerDiv.offset();
- e.preventDefault();
- return false;
- }).data('stop', stop).data('bg', pathbg).dblclick(function () {
- $('div.jGraduate_LightBox').show();
- var colorhandle = this;
- var stopOpacity = +stop.getAttribute('stop-opacity') || 1;
- var stopColor = stop.getAttribute('stop-color') || 1;
- var thisAlpha = (parseFloat(stopOpacity) * 255).toString(16);
- while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha; }
- color = stopColor.substr(1) + thisAlpha;
- $('#' + id + '_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
- window: { title: 'Pick the start color and opacity for the gradient' },
- images: { clientPath: $settings.images.clientPath },
- color: { active: color, alphaSupport: true }
- }, function (color, arg2) {
- stopColor = color.val('hex') ? ('#' + color.val('hex')) : 'none';
- stopOpacity = color.val('a') !== null ? color.val('a') / 256 : 1;
- colorhandle.setAttribute('fill', stopColor);
- colorhandle.setAttribute('fill-opacity', stopOpacity);
- stop.setAttribute('stop-color', stopColor);
- stop.setAttribute('stop-opacity', stopOpacity);
- $('div.jGraduate_LightBox').hide();
- $('#' + id + '_jGraduate_stopPicker').hide();
- }, null, function () {
- $('div.jGraduate_LightBox').hide();
- $('#' + id + '_jGraduate_stopPicker').hide();
- });
- });
-
- $(curGradient).find('stop').each(function () {
- var curS = $(this);
- if (+this.getAttribute('offset') > n) {
- if (!color) {
- var newcolor = this.getAttribute('stop-color');
- var newopac = this.getAttribute('stop-opacity');
- stop.setAttribute('stop-color', newcolor);
- path.setAttribute('fill', newcolor);
- stop.setAttribute('stop-opacity', newopac === null ? 1 : newopac);
- path.setAttribute('fill-opacity', newopac === null ? 1 : newopac);
- }
- curS.before(stop);
- return false;
- }
- });
- if (sel) selectStop(path);
- return stop;
- }
-
- function remStop () {
- delStop.setAttribute('display', 'none');
- var path = $(curStop);
- var stop = path.data('stop');
- var bg = path.data('bg');
- $([curStop, stop, bg]).remove();
- }
-
- var stops, stopGroup;
-
- var stopMakerDiv = $('#' + id + '_jGraduate_StopSlider');
-
- var curStop, stopGroup, stopMakerSVG, drag;
-
- var delStop = mkElem('path', {
- d: 'm9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5',
- fill: 'none',
- stroke: '#D00',
- 'stroke-width': 5,
- display: 'none'
- }, stopMakerSVG);
-
- function selectStop (item) {
- if (curStop) curStop.setAttribute('stroke', '#000');
- item.setAttribute('stroke', 'blue');
- curStop = item;
- curStop.parentNode.appendChild(curStop);
- // stops = $('stop');
- // opac_select.val(curStop.attr('fill-opacity') || 1);
- // root.append(delStop);
- }
-
- var stopOffset;
-
- function remDrags () {
- $win.unbind('mousemove', dragColor);
- if (delStop.getAttribute('display') !== 'none') {
- remStop();
- }
- drag = null;
- }
-
- var scaleX = 1, scaleY = 1, angle = 0;
- var cX = cx;
- var cY = cy;
-
- function xform () {
- var rot = angle ? 'rotate(' + angle + ',' + cX + ',' + cY + ') ' : '';
- if (scaleX === 1 && scaleY === 1) {
- curGradient.removeAttribute('gradientTransform');
- // $('#ang').addClass('dis');
- } else {
- var x = -cX * (scaleX - 1);
- var y = -cY * (scaleY - 1);
- curGradient.setAttribute('gradientTransform', rot + 'translate(' + x + ',' + y + ') scale(' + scaleX + ',' + scaleY + ')');
- // $('#ang').removeClass('dis');
- }
- }
-
- function dragColor (evt) {
- var x = evt.pageX - stopOffset.left;
- var y = evt.pageY - stopOffset.top;
- x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x;
-
- var xfStr = 'translate(' + x + ', 26)';
- if (y < -60 || y > 130) {
- delStop.setAttribute('display', 'block');
- delStop.setAttribute('transform', xfStr);
- } else {
- delStop.setAttribute('display', 'none');
- }
-
- drag.setAttribute('transform', xfStr);
- $.data(drag, 'bg').setAttribute('transform', xfStr);
- var stop = $.data(drag, 'stop');
- var sX = (x - 10) / MAX;
-
- stop.setAttribute('offset', sX);
- var last = 0;
-
- $(curGradient).find('stop').each(function (i) {
- var cur = this.getAttribute('offset');
- var t = $(this);
- if (cur < last) {
- t.prev().before(t);
- stops = $(curGradient).find('stop');
- }
- last = cur;
- });
- }
-
- stopMakerSVG = mkElem('svg', {
- width: '100%',
- height: 45
- }, stopMakerDiv[0]);
-
- var transPattern = mkElem('pattern', {
- width: 16,
- height: 16,
- patternUnits: 'userSpaceOnUse',
- id: 'jGraduate_trans'
- }, stopMakerSVG);
-
- var transImg = mkElem('image', {
- width: 16,
- height: 16
- }, transPattern);
-
- var bgImage = $settings.images.clientPath + 'map-opacity.png';
-
- transImg.setAttributeNS(ns.xlink, 'xlink:href', bgImage);
-
- $(stopMakerSVG).click(function (evt) {
- stopOffset = stopMakerDiv.offset();
- var target = evt.target;
- if (target.tagName === 'path') return;
- var x = evt.pageX - stopOffset.left - 8;
- x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x;
- mkStop(x / MAX, 0, 0, true);
- evt.stopPropagation();
- });
-
- $(stopMakerSVG).mouseover(function () {
- stopMakerSVG.appendChild(delStop);
- });
-
- stopGroup = mkElem('g', {}, stopMakerSVG);
-
- mkElem('line', {
- x1: 10,
- y1: 15,
- x2: MAX + 10,
- y2: 15,
- 'stroke-width': 2,
- stroke: '#000'
- }, stopMakerSVG);
-
- var spreadMethodOpt = gradPicker.find('.jGraduate_spreadMethod').change(function () {
- curGradient.setAttribute('spreadMethod', $(this).val());
- });
-
- // handle dragging the stop around the swatch
- var draggingCoord = null;
-
- var onCoordDrag = function (evt) {
- var x = evt.pageX - offset.left;
- var y = evt.pageY - offset.top;
-
- // clamp stop to the swatch
- x = x < 0 ? 0 : x > MAX ? MAX : x;
- y = y < 0 ? 0 : y > MAX ? MAX : y;
-
- draggingCoord.css('left', x).css('top', y);
-
- // calculate stop offset
- var fracx = x / SIZEX;
- var fracy = y / SIZEY;
-
- var type = draggingCoord.data('coord');
- var grad = curGradient;
-
- switch (type) {
- case 'start':
- attrInput.x1.val(fracx);
- attrInput.y1.val(fracy);
- grad.setAttribute('x1', fracx);
- grad.setAttribute('y1', fracy);
- break;
- case 'end':
- attrInput.x2.val(fracx);
- attrInput.y2.val(fracy);
- grad.setAttribute('x2', fracx);
- grad.setAttribute('y2', fracy);
- break;
- case 'center':
- attrInput.cx.val(fracx);
- attrInput.cy.val(fracy);
- grad.setAttribute('cx', fracx);
- grad.setAttribute('cy', fracy);
- cX = fracx;
- cY = fracy;
- xform();
- break;
- case 'focus':
- attrInput.fx.val(fracx);
- attrInput.fy.val(fracy);
- grad.setAttribute('fx', fracx);
- grad.setAttribute('fy', fracy);
- xform();
- }
-
- evt.preventDefault();
- };
-
- var onCoordUp = function () {
- draggingCoord = null;
- $win.unbind('mousemove', onCoordDrag).unbind('mouseup', onCoordUp);
- };
-
- // Linear gradient
- // (function () {
-
- stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
-
- var numstops = stops.length;
- // if there are not at least two stops, then
- if (numstops < 2) {
- while (numstops < 2) {
- curGradient.appendChild(document.createElementNS(ns.svg, 'stop'));
- ++numstops;
- }
- stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
- }
-
- for (var i = 0; i < numstops; i++) {
- mkStop(0, 0, 0, 0, stops[i]);
- }
-
- spreadMethodOpt.val(curGradient.getAttribute('spreadMethod') || 'pad');
-
- var offset;
-
- // No match, so show focus point
- var showFocus = false;
-
- previewRect.setAttribute('fill-opacity', gradalpha / 100);
-
- $('#' + id + ' div.grad_coord').mousedown(function (evt) {
- evt.preventDefault();
- draggingCoord = $(this);
- // var sPos = draggingCoord.offset();
- offset = draggingCoord.parent().offset();
- $win.mousemove(onCoordDrag).mouseup(onCoordUp);
- });
-
- // bind GUI elements
- $('#' + id + '_jGraduate_Ok').bind('click', function () {
- $this.paint.type = curType;
- $this.paint[curType] = curGradient.cloneNode(true);
- $this.paint.solidColor = null;
- okClicked();
- });
- $('#' + id + '_jGraduate_Cancel').bind('click', function (paint) {
- cancelClicked();
- });
-
- if (curType === 'radialGradient') {
- if (showFocus) {
- focusCoord.show();
- } else {
- focusCoord.hide();
- attrInput.fx.val('');
- attrInput.fy.val('');
- }
- }
-
- $('#' + id + '_jGraduate_match_ctr')[0].checked = !showFocus;
-
- var lastfx, lastfy;
-
- $('#' + id + '_jGraduate_match_ctr').change(function () {
- showFocus = !this.checked;
- focusCoord.toggle(showFocus);
- attrInput.fx.val('');
- attrInput.fy.val('');
- var grad = curGradient;
- if (!showFocus) {
- lastfx = grad.getAttribute('fx');
- lastfy = grad.getAttribute('fy');
- grad.removeAttribute('fx');
- grad.removeAttribute('fy');
- } else {
- var fx = lastfx || 0.5;
- var fy = lastfy || 0.5;
- grad.setAttribute('fx', fx);
- grad.setAttribute('fy', fy);
- attrInput.fx.val(fx);
- attrInput.fy.val(fy);
- }
- });
-
- var stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
- var numstops = stops.length;
- // if there are not at least two stops, then
- if (numstops < 2) {
- while (numstops < 2) {
- curGradient.appendChild(document.createElementNS(ns.svg, 'stop'));
- ++numstops;
- }
- stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
- }
-
- var slider;
-
- var setSlider = function (e) {
- var offset = slider.offset;
- var div = slider.parent;
- var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
- if (x > SLIDERW) x = SLIDERW;
- if (x <= 0) x = 0;
- var posx = x - 5;
- x /= SLIDERW;
-
- switch (slider.type) {
- case 'radius':
- x = Math.pow(x * 2, 2.5);
- if (x > 0.98 && x < 1.02) x = 1;
- if (x <= 0.01) x = 0.01;
- curGradient.setAttribute('r', x);
- break;
- case 'opacity':
- $this.paint.alpha = parseInt(x * 100);
- previewRect.setAttribute('fill-opacity', x);
- break;
- case 'ellip':
- scaleX = 1;
- scaleY = 1;
- if (x < 0.5) {
- x /= 0.5; // 0.001
- scaleX = x <= 0 ? 0.01 : x;
- } else if (x > 0.5) {
- x /= 0.5; // 2
- x = 2 - x;
- scaleY = x <= 0 ? 0.01 : x;
- }
- xform();
- x -= 1;
- if (scaleY === x + 1) {
- x = Math.abs(x);
- }
- break;
- case 'angle':
- x = x - 0.5;
- angle = x *= 180;
- xform();
- x /= 100;
- break;
- }
- slider.elem.css({'margin-left': posx});
- x = Math.round(x * 100);
- slider.input.val(x);
- };
-
- var ellipVal = 0, angleVal = 0;
-
- if (curType === 'radialGradient') {
- var tlist = curGradient.gradientTransform.baseVal;
- if (tlist.numberOfItems === 2) {
- var t = tlist.getItem(0);
- var s = tlist.getItem(1);
- if (t.type === 2 && s.type === 3) {
- var m = s.matrix;
- if (m.a !== 1) {
- ellipVal = Math.round(-(1 - m.a) * 100);
- } else if (m.d !== 1) {
- ellipVal = Math.round((1 - m.d) * 100);
- }
- }
- } else if (tlist.numberOfItems === 3) {
- // Assume [R][T][S]
- var r = tlist.getItem(0);
- var t = tlist.getItem(1);
- var s = tlist.getItem(2);
-
- if (r.type === 4 &&
- t.type === 2 &&
- s.type === 3
- ) {
- angleVal = Math.round(r.angle);
- var m = s.matrix;
- if (m.a !== 1) {
- ellipVal = Math.round(-(1 - m.a) * 100);
- } else if (m.d !== 1) {
- ellipVal = Math.round((1 - m.d) * 100);
- }
- }
- }
- }
-
- var sliders = {
- radius: {
- handle: '#' + id + '_jGraduate_RadiusArrows',
- input: '#' + id + '_jGraduate_RadiusInput',
- val: (curGradient.getAttribute('r') || 0.5) * 100
- },
- opacity: {
- handle: '#' + id + '_jGraduate_OpacArrows',
- input: '#' + id + '_jGraduate_OpacInput',
- val: $this.paint.alpha || 100
- },
- ellip: {
- handle: '#' + id + '_jGraduate_EllipArrows',
- input: '#' + id + '_jGraduate_EllipInput',
- val: ellipVal
- },
- angle: {
- handle: '#' + id + '_jGraduate_AngleArrows',
- input: '#' + id + '_jGraduate_AngleInput',
- val: angleVal
- }
- };
-
- $.each(sliders, function (type, data) {
- var handle = $(data.handle);
- handle.mousedown(function (evt) {
- var parent = handle.parent();
- slider = {
- type: type,
- elem: handle,
- input: $(data.input),
- parent: parent,
- offset: parent.offset()
- };
- $win.mousemove(dragSlider).mouseup(stopSlider);
- evt.preventDefault();
- });
-
- $(data.input).val(data.val).change(function () {
- var val = +this.value;
- var xpos = 0;
- var isRad = curType === 'radialGradient';
- switch (type) {
- case 'radius':
- if (isRad) curGradient.setAttribute('r', val / 100);
- xpos = (Math.pow(val / 100, 1 / 2.5) / 2) * SLIDERW;
- break;
-
- case 'opacity':
- $this.paint.alpha = val;
- previewRect.setAttribute('fill-opacity', val / 100);
- xpos = val * (SLIDERW / 100);
- break;
-
- case 'ellip':
- scaleX = scaleY = 1;
- if (val === 0) {
- xpos = SLIDERW * 0.5;
- break;
- }
- if (val > 99.5) val = 99.5;
- if (val > 0) {
- scaleY = 1 - (val / 100);
- } else {
- scaleX = -(val / 100) - 1;
- }
-
- xpos = SLIDERW * ((val + 100) / 2) / 100;
- if (isRad) xform();
- break;
-
- case 'angle':
- angle = val;
- xpos = angle / 180;
- xpos += 0.5;
- xpos *= SLIDERW;
- if (isRad) xform();
- }
- if (xpos > SLIDERW) {
- xpos = SLIDERW;
- } else if (xpos < 0) {
- xpos = 0;
- }
- handle.css({'margin-left': xpos - 5});
- }).change();
- });
-
- var dragSlider = function (evt) {
- setSlider(evt);
- evt.preventDefault();
- };
-
- var stopSlider = function (evt) {
- $win.unbind('mousemove', dragSlider).unbind('mouseup', stopSlider);
- slider = null;
- };
-
- // --------------
- var thisAlpha = ($this.paint.alpha * 255 / 100).toString(16);
- while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha; }
- thisAlpha = thisAlpha.split('.')[0];
- color = $this.paint.solidColor === 'none' ? '' : $this.paint.solidColor + thisAlpha;
-
- if (!isSolid) {
- color = stops[0].getAttribute('stop-color');
- }
-
- // This should be done somewhere else, probably
- $.extend($.fn.jPicker.defaults.window, {
- alphaSupport: true, effects: {type: 'show', speed: 0}
- });
-
- colPicker.jPicker(
- {
- window: { title: $settings.window.pickerTitle },
- images: { clientPath: $settings.images.clientPath },
- color: { active: color, alphaSupport: true }
- },
- function (color) {
- $this.paint.type = 'solidColor';
- $this.paint.alpha = color.val('ahex') ? Math.round((color.val('a') / 255) * 100) : 100;
- $this.paint.solidColor = color.val('hex') ? color.val('hex') : 'none';
- $this.paint.radialGradient = null;
- okClicked();
- },
- null,
- function () { cancelClicked(); }
- );
-
- var tabs = $(idref + ' .jGraduate_tabs li');
- tabs.click(function () {
- tabs.removeClass('jGraduate_tab_current');
- $(this).addClass('jGraduate_tab_current');
- $(idref + ' > div').hide();
- var type = $(this).attr('data-type');
- /* var container = */ $(idref + ' .jGraduate_gradPick').show();
- if (type === 'rg' || type === 'lg') {
- // Show/hide appropriate fields
- $('.jGraduate_' + type + '_field').show();
- $('.jGraduate_' + (type === 'lg' ? 'rg' : 'lg') + '_field').hide();
-
- $('#' + id + '_jgraduate_rect')[0].setAttribute('fill', 'url(#' + id + '_' + type + '_jgraduate_grad)');
-
- // Copy stops
-
- curType = type === 'lg' ? 'linearGradient' : 'radialGradient';
-
- $('#' + id + '_jGraduate_OpacInput').val($this.paint.alpha).change();
-
- var newGrad = $('#' + id + '_' + type + '_jgraduate_grad')[0];
-
- if (curGradient !== newGrad) {
- var curStops = $(curGradient).find('stop');
- $(newGrad).empty().append(curStops);
- curGradient = newGrad;
- var sm = spreadMethodOpt.val();
- curGradient.setAttribute('spreadMethod', sm);
- }
- showFocus = type === 'rg' && curGradient.getAttribute('fx') != null && !(cx === fx && cy === fy);
- $('#' + id + '_jGraduate_focusCoord').toggle(showFocus);
- if (showFocus) {
- $('#' + id + '_jGraduate_match_ctr')[0].checked = false;
- }
- } else {
- $(idref + ' .jGraduate_gradPick').hide();
- $(idref + ' .jGraduate_colPick').show();
- }
- });
- $(idref + ' > div').hide();
- tabs.removeClass('jGraduate_tab_current');
- var tab;
- switch ($this.paint.type) {
- case 'linearGradient':
- tab = $(idref + ' .jGraduate_tab_lingrad');
- break;
- case 'radialGradient':
- tab = $(idref + ' .jGraduate_tab_radgrad');
- break;
- default:
- tab = $(idref + ' .jGraduate_tab_color');
- break;
- }
- $this.show();
-
- // jPicker will try to show after a 0ms timeout, so need to fire this after that
- setTimeout(function () {
- tab.addClass('jGraduate_tab_current').click();
- }, 10);
- });
- };
+ function (options) {
+ var $arguments = arguments;
+ return this.each(function () {
+ var $this = $(this), $settings = $.extend(true, {}, jQuery.fn.jGraduateDefaults, options),
+ id = $this.attr('id'),
+ idref = '#' + $this.attr('id') + ' ';
+
+ if (!idref) {
+ alert('Container element must have an id attribute to maintain unique id strings for sub-elements.');
+ return;
+ }
+
+ var okClicked = function () {
+ switch ($this.paint.type) {
+ case 'radialGradient':
+ $this.paint.linearGradient = null;
+ break;
+ case 'linearGradient':
+ $this.paint.radialGradient = null;
+ break;
+ case 'solidColor':
+ $this.paint.radialGradient = $this.paint.linearGradient = null;
+ break;
+ }
+ $.isFunction($this.okCallback) && $this.okCallback($this.paint);
+ $this.hide();
+ };
+ var cancelClicked = function () {
+ $.isFunction($this.cancelCallback) && $this.cancelCallback();
+ $this.hide();
+ };
+
+ $.extend(true, $this, { // public properties, methods, and callbacks
+ // make a copy of the incoming paint
+ paint: new $.jGraduate.Paint({copy: $settings.paint}),
+ okCallback: ($.isFunction($arguments[1]) && $arguments[1]) || null,
+ cancelCallback: ($.isFunction($arguments[2]) && $arguments[2]) || null
+ });
+
+ var // pos = $this.position(),
+ color = null;
+ var $win = $(window);
+
+ if ($this.paint.type === 'none') {
+ $this.paint = $.jGraduate.Paint({solidColor: 'ffffff'});
+ }
+
+ $this.addClass('jGraduate_Picker');
+ $this.html('' +
+ 'Solid Color ' +
+ 'Linear Gradient ' +
+ 'Radial Gradient ' +
+ ' ' +
+ '
' +
+ '
' +
+ '
' +
+ '
'
+ );
+ var colPicker = $(idref + '> .jGraduate_colPick');
+ var gradPicker = $(idref + '> .jGraduate_gradPick');
+
+ gradPicker.html(
+ '' +
+ '
' + $settings.window.pickerTitle + ' ' +
+ '
' +
+ '
' +
+ '
' +
+ '' +
+ '' +
+ '' +
+ '
Spread method ' +
+ '
' +
+ '' +
+ 'Pad ' +
+ 'Reflect ' +
+ 'Repeat ' +
+ ' ' +
+ '
' +
+ '
' +
+ '' +
+ '' +
+ ' ' +
+ ' ' +
+ '
');
+
+ // --------------
+ // Set up all the SVG elements (the gradient, stops and rectangle)
+ var MAX = 256, MARGINX = 0, MARGINY = 0,
+ // STOP_RADIUS = 15 / 2,
+ SIZEX = MAX - 2 * MARGINX, SIZEY = MAX - 2 * MARGINY;
+
+ var curType, curGradient, previewRect;
+
+ var attrInput = {};
+
+ var SLIDERW = 145;
+ $('.jGraduate_SliderBar').width(SLIDERW);
+
+ var container = $('#' + id + '_jGraduate_GradContainer')[0];
+
+ var svg = mkElem('svg', {
+ id: id + '_jgraduate_svg',
+ width: MAX,
+ height: MAX,
+ xmlns: ns.svg
+ }, container);
+
+ // if we are sent a gradient, import it
+
+ curType = curType || $this.paint.type;
+
+ var grad = curGradient = $this.paint[curType];
+
+ var gradalpha = $this.paint.alpha;
+
+ var isSolid = curType === 'solidColor';
+
+ // Make any missing gradients
+ switch (curType) {
+ case 'solidColor':
+ // fall through
+ case 'linearGradient':
+ if (!isSolid) {
+ curGradient.id = id + '_lg_jgraduate_grad';
+ grad = curGradient = svg.appendChild(curGradient); // .cloneNode(true));
+ }
+ mkElem('radialGradient', {
+ id: id + '_rg_jgraduate_grad'
+ }, svg);
+ if (curType === 'linearGradient') break;
+ // fall through
+ case 'radialGradient':
+ if (!isSolid) {
+ curGradient.id = id + '_rg_jgraduate_grad';
+ grad = curGradient = svg.appendChild(curGradient); // .cloneNode(true));
+ }
+ mkElem('linearGradient', {
+ id: id + '_lg_jgraduate_grad'
+ }, svg);
+ }
+
+ if (isSolid) {
+ grad = curGradient = $('#' + id + '_lg_jgraduate_grad')[0];
+ var color = $this.paint[curType];
+ mkStop(0, '#' + color, 1);
+
+ var type = typeof $settings.newstop;
+
+ if (type === 'string') {
+ switch ($settings.newstop) {
+ case 'same':
+ mkStop(1, '#' + color, 1);
+ break;
+
+ case 'inverse':
+ // Invert current color for second stop
+ var inverted = '';
+
+ for (var i = 0; i < 6; i += 2) {
+ // var ch = color.substr(i, 2);
+ var inv = (255 - parseInt(color.substr(i, 2), 16)).toString(16);
+ if (inv.length < 2) inv = 0 + inv;
+ inverted += inv;
+ }
+ mkStop(1, '#' + inverted, 1);
+ break;
+
+ case 'white':
+ mkStop(1, '#ffffff', 1);
+ break;
+
+ case 'black':
+ mkStop(1, '#000000', 1);
+ break;
+ }
+ } else if (type === 'object') {
+ var opac = ('opac' in $settings.newstop) ? $settings.newstop.opac : 1;
+ mkStop(1, ($settings.newstop.color || '#' + color), opac);
+ }
+ }
+
+ var x1 = parseFloat(grad.getAttribute('x1') || 0.0),
+ y1 = parseFloat(grad.getAttribute('y1') || 0.0),
+ x2 = parseFloat(grad.getAttribute('x2') || 1.0),
+ y2 = parseFloat(grad.getAttribute('y2') || 0.0);
+
+ var cx = parseFloat(grad.getAttribute('cx') || 0.5),
+ cy = parseFloat(grad.getAttribute('cy') || 0.5),
+ fx = parseFloat(grad.getAttribute('fx') || cx),
+ fy = parseFloat(grad.getAttribute('fy') || cy);
+
+ var previewRect = mkElem('rect', {
+ id: id + '_jgraduate_rect',
+ x: MARGINX,
+ y: MARGINY,
+ width: SIZEX,
+ height: SIZEY,
+ fill: 'url(#' + id + '_jgraduate_grad)',
+ 'fill-opacity': gradalpha / 100
+ }, svg);
+
+ // stop visuals created here
+ var beginCoord = $('
').attr({
+ 'class': 'grad_coord jGraduate_lg_field',
+ title: 'Begin Stop'
+ }).text(1).css({
+ top: y1 * MAX,
+ left: x1 * MAX
+ }).data('coord', 'start').appendTo(container);
+
+ var endCoord = beginCoord.clone().text(2).css({
+ top: y2 * MAX,
+ left: x2 * MAX
+ }).attr('title', 'End stop').data('coord', 'end').appendTo(container);
+
+ var centerCoord = $('
').attr({
+ 'class': 'grad_coord jGraduate_rg_field',
+ title: 'Center stop'
+ }).text('C').css({
+ top: cy * MAX,
+ left: cx * MAX
+ }).data('coord', 'center').appendTo(container);
+
+ var focusCoord = centerCoord.clone().text('F').css({
+ top: fy * MAX,
+ left: fx * MAX,
+ display: 'none'
+ }).attr('title', 'Focus point').data('coord', 'focus').appendTo(container);
+
+ focusCoord[0].id = id + '_jGraduate_focusCoord';
+
+ // var coords = $(idref + ' .grad_coord');
+
+ // $(container).hover(function () {
+ // coords.animate({
+ // opacity: 1
+ // }, 500);
+ // }, function () {
+ // coords.animate({
+ // opacity: .2
+ // }, 500);
+ // });
+
+ $.each(['x1', 'y1', 'x2', 'y2', 'cx', 'cy', 'fx', 'fy'], function (i, attr) {
+ var attrval = curGradient.getAttribute(attr);
+
+ var isRadial = isNaN(attr[1]);
+
+ if (!attrval) {
+ // Set defaults
+ if (isRadial) {
+ // For radial points
+ attrval = '0.5';
+ } else {
+ // Only x2 is 1
+ attrval = attr === 'x2' ? '1.0' : '0.0';
+ }
+ }
+
+ attrInput[attr] = $('#' + id + '_jGraduate_' + attr)
+ .val(attrval)
+ .change(function () {
+ // TODO: Support values < 0 and > 1 (zoomable preview?)
+ if (isNaN(parseFloat(this.value)) || this.value < 0) {
+ this.value = 0.0;
+ } else if (this.value > 1) {
+ this.value = 1.0;
+ }
+
+ if (!(attr[0] === 'f' && !showFocus)) {
+ if ((isRadial && curType === 'radialGradient') || (!isRadial && curType === 'linearGradient')) {
+ curGradient.setAttribute(attr, this.value);
+ }
+ }
+
+ if (isRadial) {
+ var $elem = attr[0] === 'c' ? centerCoord : focusCoord;
+ } else {
+ var $elem = attr[1] === '1' ? beginCoord : endCoord;
+ }
+
+ var cssName = attr.indexOf('x') >= 0 ? 'left' : 'top';
+
+ $elem.css(cssName, this.value * MAX);
+ }).change();
+ });
+
+ function mkStop (n, color, opac, sel, stopElem) {
+ var stop = stopElem || mkElem('stop', {'stop-color': color, 'stop-opacity': opac, offset: n}, curGradient);
+ if (stopElem) {
+ color = stopElem.getAttribute('stop-color');
+ opac = stopElem.getAttribute('stop-opacity');
+ n = stopElem.getAttribute('offset');
+ } else {
+ curGradient.appendChild(stop);
+ }
+ if (opac === null) opac = 1;
+
+ var pickerD = 'M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z';
+
+ var pathbg = mkElem('path', {
+ d: pickerD,
+ fill: 'url(#jGraduate_trans)',
+ transform: 'translate(' + (10 + n * MAX) + ', 26)'
+ }, stopGroup);
+
+ var path = mkElem('path', {
+ d: pickerD,
+ fill: color,
+ 'fill-opacity': opac,
+ transform: 'translate(' + (10 + n * MAX) + ', 26)',
+ stroke: '#000',
+ 'stroke-width': 1.5
+ }, stopGroup);
+
+ $(path).mousedown(function (e) {
+ selectStop(this);
+ drag = curStop;
+ $win.mousemove(dragColor).mouseup(remDrags);
+ stopOffset = stopMakerDiv.offset();
+ e.preventDefault();
+ return false;
+ }).data('stop', stop).data('bg', pathbg).dblclick(function () {
+ $('div.jGraduate_LightBox').show();
+ var colorhandle = this;
+ var stopOpacity = +stop.getAttribute('stop-opacity') || 1;
+ var stopColor = stop.getAttribute('stop-color') || 1;
+ var thisAlpha = (parseFloat(stopOpacity) * 255).toString(16);
+ while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha; }
+ color = stopColor.substr(1) + thisAlpha;
+ $('#' + id + '_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
+ window: { title: 'Pick the start color and opacity for the gradient' },
+ images: { clientPath: $settings.images.clientPath },
+ color: { active: color, alphaSupport: true }
+ }, function (color, arg2) {
+ stopColor = color.val('hex') ? ('#' + color.val('hex')) : 'none';
+ stopOpacity = color.val('a') !== null ? color.val('a') / 256 : 1;
+ colorhandle.setAttribute('fill', stopColor);
+ colorhandle.setAttribute('fill-opacity', stopOpacity);
+ stop.setAttribute('stop-color', stopColor);
+ stop.setAttribute('stop-opacity', stopOpacity);
+ $('div.jGraduate_LightBox').hide();
+ $('#' + id + '_jGraduate_stopPicker').hide();
+ }, null, function () {
+ $('div.jGraduate_LightBox').hide();
+ $('#' + id + '_jGraduate_stopPicker').hide();
+ });
+ });
+
+ $(curGradient).find('stop').each(function () {
+ var curS = $(this);
+ if (+this.getAttribute('offset') > n) {
+ if (!color) {
+ var newcolor = this.getAttribute('stop-color');
+ var newopac = this.getAttribute('stop-opacity');
+ stop.setAttribute('stop-color', newcolor);
+ path.setAttribute('fill', newcolor);
+ stop.setAttribute('stop-opacity', newopac === null ? 1 : newopac);
+ path.setAttribute('fill-opacity', newopac === null ? 1 : newopac);
+ }
+ curS.before(stop);
+ return false;
+ }
+ });
+ if (sel) selectStop(path);
+ return stop;
+ }
+
+ function remStop () {
+ delStop.setAttribute('display', 'none');
+ var path = $(curStop);
+ var stop = path.data('stop');
+ var bg = path.data('bg');
+ $([curStop, stop, bg]).remove();
+ }
+
+ var stops, stopGroup;
+
+ var stopMakerDiv = $('#' + id + '_jGraduate_StopSlider');
+
+ var curStop, stopGroup, stopMakerSVG, drag;
+
+ var delStop = mkElem('path', {
+ d: 'm9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5',
+ fill: 'none',
+ stroke: '#D00',
+ 'stroke-width': 5,
+ display: 'none'
+ }, stopMakerSVG);
+
+ function selectStop (item) {
+ if (curStop) curStop.setAttribute('stroke', '#000');
+ item.setAttribute('stroke', 'blue');
+ curStop = item;
+ curStop.parentNode.appendChild(curStop);
+ // stops = $('stop');
+ // opac_select.val(curStop.attr('fill-opacity') || 1);
+ // root.append(delStop);
+ }
+
+ var stopOffset;
+
+ function remDrags () {
+ $win.unbind('mousemove', dragColor);
+ if (delStop.getAttribute('display') !== 'none') {
+ remStop();
+ }
+ drag = null;
+ }
+
+ var scaleX = 1, scaleY = 1, angle = 0;
+ var cX = cx;
+ var cY = cy;
+
+ function xform () {
+ var rot = angle ? 'rotate(' + angle + ',' + cX + ',' + cY + ') ' : '';
+ if (scaleX === 1 && scaleY === 1) {
+ curGradient.removeAttribute('gradientTransform');
+ // $('#ang').addClass('dis');
+ } else {
+ var x = -cX * (scaleX - 1);
+ var y = -cY * (scaleY - 1);
+ curGradient.setAttribute('gradientTransform', rot + 'translate(' + x + ',' + y + ') scale(' + scaleX + ',' + scaleY + ')');
+ // $('#ang').removeClass('dis');
+ }
+ }
+
+ function dragColor (evt) {
+ var x = evt.pageX - stopOffset.left;
+ var y = evt.pageY - stopOffset.top;
+ x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x;
+
+ var xfStr = 'translate(' + x + ', 26)';
+ if (y < -60 || y > 130) {
+ delStop.setAttribute('display', 'block');
+ delStop.setAttribute('transform', xfStr);
+ } else {
+ delStop.setAttribute('display', 'none');
+ }
+
+ drag.setAttribute('transform', xfStr);
+ $.data(drag, 'bg').setAttribute('transform', xfStr);
+ var stop = $.data(drag, 'stop');
+ var sX = (x - 10) / MAX;
+
+ stop.setAttribute('offset', sX);
+ var last = 0;
+
+ $(curGradient).find('stop').each(function (i) {
+ var cur = this.getAttribute('offset');
+ var t = $(this);
+ if (cur < last) {
+ t.prev().before(t);
+ stops = $(curGradient).find('stop');
+ }
+ last = cur;
+ });
+ }
+
+ stopMakerSVG = mkElem('svg', {
+ width: '100%',
+ height: 45
+ }, stopMakerDiv[0]);
+
+ var transPattern = mkElem('pattern', {
+ width: 16,
+ height: 16,
+ patternUnits: 'userSpaceOnUse',
+ id: 'jGraduate_trans'
+ }, stopMakerSVG);
+
+ var transImg = mkElem('image', {
+ width: 16,
+ height: 16
+ }, transPattern);
+
+ var bgImage = $settings.images.clientPath + 'map-opacity.png';
+
+ transImg.setAttributeNS(ns.xlink, 'xlink:href', bgImage);
+
+ $(stopMakerSVG).click(function (evt) {
+ stopOffset = stopMakerDiv.offset();
+ var target = evt.target;
+ if (target.tagName === 'path') return;
+ var x = evt.pageX - stopOffset.left - 8;
+ x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10 : x;
+ mkStop(x / MAX, 0, 0, true);
+ evt.stopPropagation();
+ });
+
+ $(stopMakerSVG).mouseover(function () {
+ stopMakerSVG.appendChild(delStop);
+ });
+
+ stopGroup = mkElem('g', {}, stopMakerSVG);
+
+ mkElem('line', {
+ x1: 10,
+ y1: 15,
+ x2: MAX + 10,
+ y2: 15,
+ 'stroke-width': 2,
+ stroke: '#000'
+ }, stopMakerSVG);
+
+ var spreadMethodOpt = gradPicker.find('.jGraduate_spreadMethod').change(function () {
+ curGradient.setAttribute('spreadMethod', $(this).val());
+ });
+
+ // handle dragging the stop around the swatch
+ var draggingCoord = null;
+
+ var onCoordDrag = function (evt) {
+ var x = evt.pageX - offset.left;
+ var y = evt.pageY - offset.top;
+
+ // clamp stop to the swatch
+ x = x < 0 ? 0 : x > MAX ? MAX : x;
+ y = y < 0 ? 0 : y > MAX ? MAX : y;
+
+ draggingCoord.css('left', x).css('top', y);
+
+ // calculate stop offset
+ var fracx = x / SIZEX;
+ var fracy = y / SIZEY;
+
+ var type = draggingCoord.data('coord');
+ var grad = curGradient;
+
+ switch (type) {
+ case 'start':
+ attrInput.x1.val(fracx);
+ attrInput.y1.val(fracy);
+ grad.setAttribute('x1', fracx);
+ grad.setAttribute('y1', fracy);
+ break;
+ case 'end':
+ attrInput.x2.val(fracx);
+ attrInput.y2.val(fracy);
+ grad.setAttribute('x2', fracx);
+ grad.setAttribute('y2', fracy);
+ break;
+ case 'center':
+ attrInput.cx.val(fracx);
+ attrInput.cy.val(fracy);
+ grad.setAttribute('cx', fracx);
+ grad.setAttribute('cy', fracy);
+ cX = fracx;
+ cY = fracy;
+ xform();
+ break;
+ case 'focus':
+ attrInput.fx.val(fracx);
+ attrInput.fy.val(fracy);
+ grad.setAttribute('fx', fracx);
+ grad.setAttribute('fy', fracy);
+ xform();
+ }
+
+ evt.preventDefault();
+ };
+
+ var onCoordUp = function () {
+ draggingCoord = null;
+ $win.unbind('mousemove', onCoordDrag).unbind('mouseup', onCoordUp);
+ };
+
+ // Linear gradient
+ // (function () {
+
+ stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+
+ var numstops = stops.length;
+ // if there are not at least two stops, then
+ if (numstops < 2) {
+ while (numstops < 2) {
+ curGradient.appendChild(document.createElementNS(ns.svg, 'stop'));
+ ++numstops;
+ }
+ stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+ }
+
+ for (var i = 0; i < numstops; i++) {
+ mkStop(0, 0, 0, 0, stops[i]);
+ }
+
+ spreadMethodOpt.val(curGradient.getAttribute('spreadMethod') || 'pad');
+
+ var offset;
+
+ // No match, so show focus point
+ var showFocus = false;
+
+ previewRect.setAttribute('fill-opacity', gradalpha / 100);
+
+ $('#' + id + ' div.grad_coord').mousedown(function (evt) {
+ evt.preventDefault();
+ draggingCoord = $(this);
+ // var sPos = draggingCoord.offset();
+ offset = draggingCoord.parent().offset();
+ $win.mousemove(onCoordDrag).mouseup(onCoordUp);
+ });
+
+ // bind GUI elements
+ $('#' + id + '_jGraduate_Ok').bind('click', function () {
+ $this.paint.type = curType;
+ $this.paint[curType] = curGradient.cloneNode(true);
+ $this.paint.solidColor = null;
+ okClicked();
+ });
+ $('#' + id + '_jGraduate_Cancel').bind('click', function (paint) {
+ cancelClicked();
+ });
+
+ if (curType === 'radialGradient') {
+ if (showFocus) {
+ focusCoord.show();
+ } else {
+ focusCoord.hide();
+ attrInput.fx.val('');
+ attrInput.fy.val('');
+ }
+ }
+
+ $('#' + id + '_jGraduate_match_ctr')[0].checked = !showFocus;
+
+ var lastfx, lastfy;
+
+ $('#' + id + '_jGraduate_match_ctr').change(function () {
+ showFocus = !this.checked;
+ focusCoord.toggle(showFocus);
+ attrInput.fx.val('');
+ attrInput.fy.val('');
+ var grad = curGradient;
+ if (!showFocus) {
+ lastfx = grad.getAttribute('fx');
+ lastfy = grad.getAttribute('fy');
+ grad.removeAttribute('fx');
+ grad.removeAttribute('fy');
+ } else {
+ var fx = lastfx || 0.5;
+ var fy = lastfy || 0.5;
+ grad.setAttribute('fx', fx);
+ grad.setAttribute('fy', fy);
+ attrInput.fx.val(fx);
+ attrInput.fy.val(fy);
+ }
+ });
+
+ var stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+ var numstops = stops.length;
+ // if there are not at least two stops, then
+ if (numstops < 2) {
+ while (numstops < 2) {
+ curGradient.appendChild(document.createElementNS(ns.svg, 'stop'));
+ ++numstops;
+ }
+ stops = curGradient.getElementsByTagNameNS(ns.svg, 'stop');
+ }
+
+ var slider;
+
+ var setSlider = function (e) {
+ var offset = slider.offset;
+ var div = slider.parent;
+ var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+ if (x > SLIDERW) x = SLIDERW;
+ if (x <= 0) x = 0;
+ var posx = x - 5;
+ x /= SLIDERW;
+
+ switch (slider.type) {
+ case 'radius':
+ x = Math.pow(x * 2, 2.5);
+ if (x > 0.98 && x < 1.02) x = 1;
+ if (x <= 0.01) x = 0.01;
+ curGradient.setAttribute('r', x);
+ break;
+ case 'opacity':
+ $this.paint.alpha = parseInt(x * 100);
+ previewRect.setAttribute('fill-opacity', x);
+ break;
+ case 'ellip':
+ scaleX = 1;
+ scaleY = 1;
+ if (x < 0.5) {
+ x /= 0.5; // 0.001
+ scaleX = x <= 0 ? 0.01 : x;
+ } else if (x > 0.5) {
+ x /= 0.5; // 2
+ x = 2 - x;
+ scaleY = x <= 0 ? 0.01 : x;
+ }
+ xform();
+ x -= 1;
+ if (scaleY === x + 1) {
+ x = Math.abs(x);
+ }
+ break;
+ case 'angle':
+ x = x - 0.5;
+ angle = x *= 180;
+ xform();
+ x /= 100;
+ break;
+ }
+ slider.elem.css({'margin-left': posx});
+ x = Math.round(x * 100);
+ slider.input.val(x);
+ };
+
+ var ellipVal = 0, angleVal = 0;
+
+ if (curType === 'radialGradient') {
+ var tlist = curGradient.gradientTransform.baseVal;
+ if (tlist.numberOfItems === 2) {
+ var t = tlist.getItem(0);
+ var s = tlist.getItem(1);
+ if (t.type === 2 && s.type === 3) {
+ var m = s.matrix;
+ if (m.a !== 1) {
+ ellipVal = Math.round(-(1 - m.a) * 100);
+ } else if (m.d !== 1) {
+ ellipVal = Math.round((1 - m.d) * 100);
+ }
+ }
+ } else if (tlist.numberOfItems === 3) {
+ // Assume [R][T][S]
+ var r = tlist.getItem(0);
+ var t = tlist.getItem(1);
+ var s = tlist.getItem(2);
+
+ if (r.type === 4 &&
+ t.type === 2 &&
+ s.type === 3
+ ) {
+ angleVal = Math.round(r.angle);
+ var m = s.matrix;
+ if (m.a !== 1) {
+ ellipVal = Math.round(-(1 - m.a) * 100);
+ } else if (m.d !== 1) {
+ ellipVal = Math.round((1 - m.d) * 100);
+ }
+ }
+ }
+ }
+
+ var sliders = {
+ radius: {
+ handle: '#' + id + '_jGraduate_RadiusArrows',
+ input: '#' + id + '_jGraduate_RadiusInput',
+ val: (curGradient.getAttribute('r') || 0.5) * 100
+ },
+ opacity: {
+ handle: '#' + id + '_jGraduate_OpacArrows',
+ input: '#' + id + '_jGraduate_OpacInput',
+ val: $this.paint.alpha || 100
+ },
+ ellip: {
+ handle: '#' + id + '_jGraduate_EllipArrows',
+ input: '#' + id + '_jGraduate_EllipInput',
+ val: ellipVal
+ },
+ angle: {
+ handle: '#' + id + '_jGraduate_AngleArrows',
+ input: '#' + id + '_jGraduate_AngleInput',
+ val: angleVal
+ }
+ };
+
+ $.each(sliders, function (type, data) {
+ var handle = $(data.handle);
+ handle.mousedown(function (evt) {
+ var parent = handle.parent();
+ slider = {
+ type: type,
+ elem: handle,
+ input: $(data.input),
+ parent: parent,
+ offset: parent.offset()
+ };
+ $win.mousemove(dragSlider).mouseup(stopSlider);
+ evt.preventDefault();
+ });
+
+ $(data.input).val(data.val).change(function () {
+ var val = +this.value;
+ var xpos = 0;
+ var isRad = curType === 'radialGradient';
+ switch (type) {
+ case 'radius':
+ if (isRad) curGradient.setAttribute('r', val / 100);
+ xpos = (Math.pow(val / 100, 1 / 2.5) / 2) * SLIDERW;
+ break;
+
+ case 'opacity':
+ $this.paint.alpha = val;
+ previewRect.setAttribute('fill-opacity', val / 100);
+ xpos = val * (SLIDERW / 100);
+ break;
+
+ case 'ellip':
+ scaleX = scaleY = 1;
+ if (val === 0) {
+ xpos = SLIDERW * 0.5;
+ break;
+ }
+ if (val > 99.5) val = 99.5;
+ if (val > 0) {
+ scaleY = 1 - (val / 100);
+ } else {
+ scaleX = -(val / 100) - 1;
+ }
+
+ xpos = SLIDERW * ((val + 100) / 2) / 100;
+ if (isRad) xform();
+ break;
+
+ case 'angle':
+ angle = val;
+ xpos = angle / 180;
+ xpos += 0.5;
+ xpos *= SLIDERW;
+ if (isRad) xform();
+ }
+ if (xpos > SLIDERW) {
+ xpos = SLIDERW;
+ } else if (xpos < 0) {
+ xpos = 0;
+ }
+ handle.css({'margin-left': xpos - 5});
+ }).change();
+ });
+
+ var dragSlider = function (evt) {
+ setSlider(evt);
+ evt.preventDefault();
+ };
+
+ var stopSlider = function (evt) {
+ $win.unbind('mousemove', dragSlider).unbind('mouseup', stopSlider);
+ slider = null;
+ };
+
+ // --------------
+ var thisAlpha = ($this.paint.alpha * 255 / 100).toString(16);
+ while (thisAlpha.length < 2) { thisAlpha = '0' + thisAlpha; }
+ thisAlpha = thisAlpha.split('.')[0];
+ color = $this.paint.solidColor === 'none' ? '' : $this.paint.solidColor + thisAlpha;
+
+ if (!isSolid) {
+ color = stops[0].getAttribute('stop-color');
+ }
+
+ // This should be done somewhere else, probably
+ $.extend($.fn.jPicker.defaults.window, {
+ alphaSupport: true, effects: {type: 'show', speed: 0}
+ });
+
+ colPicker.jPicker(
+ {
+ window: { title: $settings.window.pickerTitle },
+ images: { clientPath: $settings.images.clientPath },
+ color: { active: color, alphaSupport: true }
+ },
+ function (color) {
+ $this.paint.type = 'solidColor';
+ $this.paint.alpha = color.val('ahex') ? Math.round((color.val('a') / 255) * 100) : 100;
+ $this.paint.solidColor = color.val('hex') ? color.val('hex') : 'none';
+ $this.paint.radialGradient = null;
+ okClicked();
+ },
+ null,
+ function () { cancelClicked(); }
+ );
+
+ var tabs = $(idref + ' .jGraduate_tabs li');
+ tabs.click(function () {
+ tabs.removeClass('jGraduate_tab_current');
+ $(this).addClass('jGraduate_tab_current');
+ $(idref + ' > div').hide();
+ var type = $(this).attr('data-type');
+ /* var container = */ $(idref + ' .jGraduate_gradPick').show();
+ if (type === 'rg' || type === 'lg') {
+ // Show/hide appropriate fields
+ $('.jGraduate_' + type + '_field').show();
+ $('.jGraduate_' + (type === 'lg' ? 'rg' : 'lg') + '_field').hide();
+
+ $('#' + id + '_jgraduate_rect')[0].setAttribute('fill', 'url(#' + id + '_' + type + '_jgraduate_grad)');
+
+ // Copy stops
+
+ curType = type === 'lg' ? 'linearGradient' : 'radialGradient';
+
+ $('#' + id + '_jGraduate_OpacInput').val($this.paint.alpha).change();
+
+ var newGrad = $('#' + id + '_' + type + '_jgraduate_grad')[0];
+
+ if (curGradient !== newGrad) {
+ var curStops = $(curGradient).find('stop');
+ $(newGrad).empty().append(curStops);
+ curGradient = newGrad;
+ var sm = spreadMethodOpt.val();
+ curGradient.setAttribute('spreadMethod', sm);
+ }
+ showFocus = type === 'rg' && curGradient.getAttribute('fx') != null && !(cx === fx && cy === fy);
+ $('#' + id + '_jGraduate_focusCoord').toggle(showFocus);
+ if (showFocus) {
+ $('#' + id + '_jGraduate_match_ctr')[0].checked = false;
+ }
+ } else {
+ $(idref + ' .jGraduate_gradPick').hide();
+ $(idref + ' .jGraduate_colPick').show();
+ }
+ });
+ $(idref + ' > div').hide();
+ tabs.removeClass('jGraduate_tab_current');
+ var tab;
+ switch ($this.paint.type) {
+ case 'linearGradient':
+ tab = $(idref + ' .jGraduate_tab_lingrad');
+ break;
+ case 'radialGradient':
+ tab = $(idref + ' .jGraduate_tab_radgrad');
+ break;
+ default:
+ tab = $(idref + ' .jGraduate_tab_color');
+ break;
+ }
+ $this.show();
+
+ // jPicker will try to show after a 0ms timeout, so need to fire this after that
+ setTimeout(function () {
+ tab.addClass('jGraduate_tab_current').click();
+ }, 10);
+ });
+ };
})();
diff --git a/editor/jquery-svg.js b/editor/jquery-svg.js
index ded1c59e..30a7dc37 100644
--- a/editor/jquery-svg.js
+++ b/editor/jquery-svg.js
@@ -24,52 +24,52 @@
// as an object with values for each given attributes
var proxied = jQuery.fn.attr,
- // TODO use NS.SVG instead
- svgns = 'http://www.w3.org/2000/svg';
+ // TODO use NS.SVG instead
+ svgns = 'http://www.w3.org/2000/svg';
jQuery.fn.attr = function (key, value) {
- var i, attr;
- var len = this.length;
- if (!len) { return proxied.apply(this, arguments); }
- for (i = 0; i < len; ++i) {
- var elem = this[i];
- // set/get SVG attribute
- if (elem.namespaceURI === svgns) {
- // Setting attribute
- if (value !== undefined) {
- elem.setAttribute(key, value);
- } else if ($.isArray(key)) {
- // Getting attributes from array
- var j = key.length, obj = {};
+ var i, attr;
+ var len = this.length;
+ if (!len) { return proxied.apply(this, arguments); }
+ for (i = 0; i < len; ++i) {
+ var elem = this[i];
+ // set/get SVG attribute
+ if (elem.namespaceURI === svgns) {
+ // Setting attribute
+ if (value !== undefined) {
+ elem.setAttribute(key, value);
+ } else if ($.isArray(key)) {
+ // Getting attributes from array
+ var j = key.length, obj = {};
- while (j--) {
- var aname = key[j];
- attr = elem.getAttribute(aname);
- // This returns a number when appropriate
- if (attr || attr === '0') {
- attr = isNaN(attr) ? attr : (attr - 0);
- }
- obj[aname] = attr;
- }
- return obj;
- }
- if (typeof key === 'object') {
- // Setting attributes form object
- var v;
- for (v in key) {
- elem.setAttribute(v, key[v]);
- }
- // Getting attribute
- } else {
- attr = elem.getAttribute(key);
- if (attr || attr === '0') {
- attr = isNaN(attr) ? attr : (attr - 0);
- }
- return attr;
- }
- } else {
- return proxied.apply(this, arguments);
- }
- }
- return this;
+ while (j--) {
+ var aname = key[j];
+ attr = elem.getAttribute(aname);
+ // This returns a number when appropriate
+ if (attr || attr === '0') {
+ attr = isNaN(attr) ? attr : (attr - 0);
+ }
+ obj[aname] = attr;
+ }
+ return obj;
+ }
+ if (typeof key === 'object') {
+ // Setting attributes form object
+ var v;
+ for (v in key) {
+ elem.setAttribute(v, key[v]);
+ }
+ // Getting attribute
+ } else {
+ attr = elem.getAttribute(key);
+ if (attr || attr === '0') {
+ attr = isNaN(attr) ? attr : (attr - 0);
+ }
+ return attr;
+ }
+ } else {
+ return proxied.apply(this, arguments);
+ }
+ }
+ return this;
};
}());
diff --git a/editor/jspdf/jspdf.plugin.svgToPdf.js b/editor/jspdf/jspdf.plugin.svgToPdf.js
index 4dd88c09..956260a7 100644
--- a/editor/jspdf/jspdf.plugin.svgToPdf.js
+++ b/editor/jspdf/jspdf.plugin.svgToPdf.js
@@ -25,202 +25,202 @@
'use strict';
var pdfSvgAttr = {
- // allowed attributes. all others are removed from the preview.
- g: ['stroke', 'fill', 'stroke-width'],
- line: ['x1', 'y1', 'x2', 'y2', 'stroke', 'stroke-width'],
- rect: ['x', 'y', 'width', 'height', 'stroke', 'fill', 'stroke-width'],
- ellipse: ['cx', 'cy', 'rx', 'ry', 'stroke', 'fill', 'stroke-width'],
- circle: ['cx', 'cy', 'r', 'stroke', 'fill', 'stroke-width'],
- text: ['x', 'y', 'font-size', 'font-family', 'text-anchor', 'font-weight', 'font-style', 'fill']
+ // allowed attributes. all others are removed from the preview.
+ g: ['stroke', 'fill', 'stroke-width'],
+ line: ['x1', 'y1', 'x2', 'y2', 'stroke', 'stroke-width'],
+ rect: ['x', 'y', 'width', 'height', 'stroke', 'fill', 'stroke-width'],
+ ellipse: ['cx', 'cy', 'rx', 'ry', 'stroke', 'fill', 'stroke-width'],
+ circle: ['cx', 'cy', 'r', 'stroke', 'fill', 'stroke-width'],
+ text: ['x', 'y', 'font-size', 'font-family', 'text-anchor', 'font-weight', 'font-style', 'fill']
};
var attributeIsNotEmpty = function (node, attr) {
- var attVal = attr ? node.getAttribute(attr) : node;
- return attVal !== '' && attVal !== null;
+ var attVal = attr ? node.getAttribute(attr) : node;
+ return attVal !== '' && attVal !== null;
};
var nodeIs = function (node, possible) {
- return possible.indexOf(node.tagName.toLowerCase()) > -1;
+ return possible.indexOf(node.tagName.toLowerCase()) > -1;
};
var removeAttributes = function (node, attributes) {
- var toRemove = [];
- [].forEach.call(node.attributes, function (a) {
- if (attributeIsNotEmpty(a) && attributes.indexOf(a.name.toLowerCase()) === -1) {
- toRemove.push(a.name);
- }
- });
+ var toRemove = [];
+ [].forEach.call(node.attributes, function (a) {
+ if (attributeIsNotEmpty(a) && attributes.indexOf(a.name.toLowerCase()) === -1) {
+ toRemove.push(a.name);
+ }
+ });
- toRemove.forEach(function (a) {
- node.removeAttribute(a.name);
- });
+ toRemove.forEach(function (a) {
+ node.removeAttribute(a.name);
+ });
};
var svgElementToPdf = function (element, pdf, options) {
- // pdf is a jsPDF object
- // console.log("options =", options);
- var remove = (options.removeInvalid === undef ? false : options.removeInvalid);
- var k = (options.scale === undef ? 1.0 : options.scale);
- var colorMode = null;
- [].forEach.call(element.children, function (node) {
- // console.log("passing: ", node);
- var hasFillColor = false;
- // var hasStrokeColor = false;
- var fillRGB;
- if (nodeIs(node, ['g', 'line', 'rect', 'ellipse', 'circle', 'text'])) {
- var fillColor = node.getAttribute('fill');
- if (attributeIsNotEmpty(fillColor)) {
- fillRGB = new RGBColor(fillColor);
- if (fillRGB.ok) {
- hasFillColor = true;
- colorMode = 'F';
- } else {
- colorMode = null;
- }
- }
- }
- if (nodeIs(node, ['g', 'line', 'rect', 'ellipse', 'circle'])) {
- if (hasFillColor) {
- pdf.setFillColor(fillRGB.r, fillRGB.g, fillRGB.b);
- }
- if (attributeIsNotEmpty(node, 'stroke-width')) {
- pdf.setLineWidth(k * parseInt(node.getAttribute('stroke-width'), 10));
- }
- var strokeColor = node.getAttribute('stroke');
- if (attributeIsNotEmpty(strokeColor)) {
- var strokeRGB = new RGBColor(strokeColor);
- if (strokeRGB.ok) {
- // hasStrokeColor = true;
- pdf.setDrawColor(strokeRGB.r, strokeRGB.g, strokeRGB.b);
- if (colorMode === 'F') {
- colorMode = 'FD';
- } else {
- colorMode = null;
- }
- } else {
- colorMode = null;
- }
- }
- }
- switch (node.tagName.toLowerCase()) {
- case 'svg':
- case 'a':
- case 'g':
- svgElementToPdf(node, pdf, options);
- removeAttributes(node, pdfSvgAttr.g);
- break;
- case 'line':
- pdf.line(
- k * parseInt(node.getAttribute('x1'), 10),
- k * parseInt(node.getAttribute('y1'), 10),
- k * parseInt(node.getAttribute('x2'), 10),
- k * parseInt(node.getAttribute('y2'), 10)
- );
- removeAttributes(node, pdfSvgAttr.line);
- break;
- case 'rect':
- pdf.rect(
- k * parseInt(node.getAttribute('x'), 10),
- k * parseInt(node.getAttribute('y'), 10),
- k * parseInt(node.getAttribute('width'), 10),
- k * parseInt(node.getAttribute('height'), 10),
- colorMode
- );
- removeAttributes(node, pdfSvgAttr.rect);
- break;
- case 'ellipse':
- pdf.ellipse(
- k * parseInt(node.getAttribute('cx'), 10),
- k * parseInt(node.getAttribute('cy'), 10),
- k * parseInt(node.getAttribute('rx'), 10),
- k * parseInt(node.getAttribute('ry'), 10),
- colorMode
- );
- removeAttributes(node, pdfSvgAttr.ellipse);
- break;
- case 'circle':
- pdf.circle(
- k * parseInt(node.getAttribute('cx'), 10),
- k * parseInt(node.getAttribute('cy'), 10),
- k * parseInt(node.getAttribute('r'), 10),
- colorMode
- );
- removeAttributes(node, pdfSvgAttr.circle);
- break;
- case 'text':
- if (node.hasAttribute('font-family')) {
- switch ((node.getAttribute('font-family') || '').toLowerCase()) {
- case 'serif': pdf.setFont('times'); break;
- case 'monospace': pdf.setFont('courier'); break;
- default:
- node.setAttribute('font-family', 'sans-serif');
- pdf.setFont('helvetica');
- }
- }
- if (hasFillColor) {
- pdf.setTextColor(fillRGB.r, fillRGB.g, fillRGB.b);
- }
- var fontType = '';
- if (node.hasAttribute('font-weight')) {
- if (node.getAttribute('font-weight') === 'bold') {
- fontType = 'bold';
- } else {
- node.removeAttribute('font-weight');
- }
- }
- if (node.hasAttribute('font-style')) {
- if (node.getAttribute('font-style') === 'italic') {
- fontType += 'italic';
- } else {
- node.removeAttribute('font-style');
- }
- }
- pdf.setFontType(fontType);
- var pdfFontSize = 16;
- if (node.hasAttribute('font-size')) {
- pdfFontSize = parseInt(node.getAttribute('font-size'), 10);
- }
- var box = node.getBBox();
- // FIXME: use more accurate positioning!!
- var x, y, xOffset = 0;
- if (node.hasAttribute('text-anchor')) {
- switch (node.getAttribute('text-anchor')) {
- case 'end': xOffset = box.width; break;
- case 'middle': xOffset = box.width / 2; break;
- case 'start': break;
- case 'default': node.setAttribute('text-anchor', 'start'); break;
- }
- x = parseInt(node.getAttribute('x'), 10) - xOffset;
- y = parseInt(node.getAttribute('y'), 10);
- }
- // console.log("fontSize:", pdfFontSize, "text:", node.textContent);
- pdf.setFontSize(pdfFontSize).text(
- k * x,
- k * y,
- node.textContent
- );
- removeAttributes(node, pdfSvgAttr.text);
- break;
- // TODO: image
- default:
- if (remove) {
- console.log("can't translate to pdf:", node);
- node.parentNode.removeChild(node);
- }
- }
- });
- return pdf;
+ // pdf is a jsPDF object
+ // console.log("options =", options);
+ var remove = (options.removeInvalid === undef ? false : options.removeInvalid);
+ var k = (options.scale === undef ? 1.0 : options.scale);
+ var colorMode = null;
+ [].forEach.call(element.children, function (node) {
+ // console.log("passing: ", node);
+ var hasFillColor = false;
+ // var hasStrokeColor = false;
+ var fillRGB;
+ if (nodeIs(node, ['g', 'line', 'rect', 'ellipse', 'circle', 'text'])) {
+ var fillColor = node.getAttribute('fill');
+ if (attributeIsNotEmpty(fillColor)) {
+ fillRGB = new RGBColor(fillColor);
+ if (fillRGB.ok) {
+ hasFillColor = true;
+ colorMode = 'F';
+ } else {
+ colorMode = null;
+ }
+ }
+ }
+ if (nodeIs(node, ['g', 'line', 'rect', 'ellipse', 'circle'])) {
+ if (hasFillColor) {
+ pdf.setFillColor(fillRGB.r, fillRGB.g, fillRGB.b);
+ }
+ if (attributeIsNotEmpty(node, 'stroke-width')) {
+ pdf.setLineWidth(k * parseInt(node.getAttribute('stroke-width'), 10));
+ }
+ var strokeColor = node.getAttribute('stroke');
+ if (attributeIsNotEmpty(strokeColor)) {
+ var strokeRGB = new RGBColor(strokeColor);
+ if (strokeRGB.ok) {
+ // hasStrokeColor = true;
+ pdf.setDrawColor(strokeRGB.r, strokeRGB.g, strokeRGB.b);
+ if (colorMode === 'F') {
+ colorMode = 'FD';
+ } else {
+ colorMode = null;
+ }
+ } else {
+ colorMode = null;
+ }
+ }
+ }
+ switch (node.tagName.toLowerCase()) {
+ case 'svg':
+ case 'a':
+ case 'g':
+ svgElementToPdf(node, pdf, options);
+ removeAttributes(node, pdfSvgAttr.g);
+ break;
+ case 'line':
+ pdf.line(
+ k * parseInt(node.getAttribute('x1'), 10),
+ k * parseInt(node.getAttribute('y1'), 10),
+ k * parseInt(node.getAttribute('x2'), 10),
+ k * parseInt(node.getAttribute('y2'), 10)
+ );
+ removeAttributes(node, pdfSvgAttr.line);
+ break;
+ case 'rect':
+ pdf.rect(
+ k * parseInt(node.getAttribute('x'), 10),
+ k * parseInt(node.getAttribute('y'), 10),
+ k * parseInt(node.getAttribute('width'), 10),
+ k * parseInt(node.getAttribute('height'), 10),
+ colorMode
+ );
+ removeAttributes(node, pdfSvgAttr.rect);
+ break;
+ case 'ellipse':
+ pdf.ellipse(
+ k * parseInt(node.getAttribute('cx'), 10),
+ k * parseInt(node.getAttribute('cy'), 10),
+ k * parseInt(node.getAttribute('rx'), 10),
+ k * parseInt(node.getAttribute('ry'), 10),
+ colorMode
+ );
+ removeAttributes(node, pdfSvgAttr.ellipse);
+ break;
+ case 'circle':
+ pdf.circle(
+ k * parseInt(node.getAttribute('cx'), 10),
+ k * parseInt(node.getAttribute('cy'), 10),
+ k * parseInt(node.getAttribute('r'), 10),
+ colorMode
+ );
+ removeAttributes(node, pdfSvgAttr.circle);
+ break;
+ case 'text':
+ if (node.hasAttribute('font-family')) {
+ switch ((node.getAttribute('font-family') || '').toLowerCase()) {
+ case 'serif': pdf.setFont('times'); break;
+ case 'monospace': pdf.setFont('courier'); break;
+ default:
+ node.setAttribute('font-family', 'sans-serif');
+ pdf.setFont('helvetica');
+ }
+ }
+ if (hasFillColor) {
+ pdf.setTextColor(fillRGB.r, fillRGB.g, fillRGB.b);
+ }
+ var fontType = '';
+ if (node.hasAttribute('font-weight')) {
+ if (node.getAttribute('font-weight') === 'bold') {
+ fontType = 'bold';
+ } else {
+ node.removeAttribute('font-weight');
+ }
+ }
+ if (node.hasAttribute('font-style')) {
+ if (node.getAttribute('font-style') === 'italic') {
+ fontType += 'italic';
+ } else {
+ node.removeAttribute('font-style');
+ }
+ }
+ pdf.setFontType(fontType);
+ var pdfFontSize = 16;
+ if (node.hasAttribute('font-size')) {
+ pdfFontSize = parseInt(node.getAttribute('font-size'), 10);
+ }
+ var box = node.getBBox();
+ // FIXME: use more accurate positioning!!
+ var x, y, xOffset = 0;
+ if (node.hasAttribute('text-anchor')) {
+ switch (node.getAttribute('text-anchor')) {
+ case 'end': xOffset = box.width; break;
+ case 'middle': xOffset = box.width / 2; break;
+ case 'start': break;
+ case 'default': node.setAttribute('text-anchor', 'start'); break;
+ }
+ x = parseInt(node.getAttribute('x'), 10) - xOffset;
+ y = parseInt(node.getAttribute('y'), 10);
+ }
+ // console.log("fontSize:", pdfFontSize, "text:", node.textContent);
+ pdf.setFontSize(pdfFontSize).text(
+ k * x,
+ k * y,
+ node.textContent
+ );
+ removeAttributes(node, pdfSvgAttr.text);
+ break;
+ // TODO: image
+ default:
+ if (remove) {
+ console.log("can't translate to pdf:", node);
+ node.parentNode.removeChild(node);
+ }
+ }
+ });
+ return pdf;
};
jsPDFAPI.addSVG = function (element, x, y, options) {
- options = (options === undef ? {} : options);
- options.x_offset = x;
- options.y_offset = y;
+ options = (options === undef ? {} : options);
+ options.x_offset = x;
+ options.y_offset = y;
- if (typeof element === 'string') {
- element = new DOMParser().parseFromString(element, 'text/xml').documentElement;
- }
- svgElementToPdf(element, this, options);
- return this;
+ if (typeof element === 'string') {
+ element = new DOMParser().parseFromString(element, 'text/xml').documentElement;
+ }
+ svgElementToPdf(element, this, options);
+ return this;
};
}(jsPDF.API));
diff --git a/editor/locale/lang.af.js b/editor/locale/lang.af.js
index 8b6e8292..206ee887 100644
--- a/editor/locale/lang.af.js
+++ b/editor/locale/lang.af.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "af",
- dir: "ltr",
- common: {
- "ok": "Spaar",
- "cancel": "Annuleer",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klik om te verander vul kleur, verskuiwing klik om 'n beroerte kleur verander",
- "zoom_level": "Change zoom vlak",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Verandering vul kleur",
- "stroke_color": "Verandering beroerte kleur",
- "stroke_style": "Verandering beroerte dash styl",
- "stroke_width": "Verandering beroerte breedte",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Verandering rotasie-hoek",
- "blur": "Change gaussian blur value",
- "opacity": "Verander geselekteerde item opaciteit",
- "circle_cx": "Verandering sirkel se cx koördineer",
- "circle_cy": "Verandering sirkel se cy koördineer",
- "circle_r": "Verandering sirkel se radius",
- "ellipse_cx": "Verandering ellips se cx koördineer",
- "ellipse_cy": "Verander ellips se cy koördineer",
- "ellipse_rx": "Verandering ellips se x radius",
- "ellipse_ry": "Verander ellips se j radius",
- "line_x1": "Verandering lyn se vertrek x koördinaat",
- "line_x2": "Verandering lyn se eindig x koördinaat",
- "line_y1": "Verandering lyn se vertrek y koördinaat",
- "line_y2": "Verandering lyn se eindig y koördinaat",
- "rect_height": "Verandering reghoek hoogte",
- "rect_width": "Verandering reghoek breedte",
- "corner_radius": "Verandering Rechthoek Corner Radius",
- "image_width": "Verander prent breedte",
- "image_height": "Verandering prent hoogte",
- "image_url": "URL verander",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Verander teks inhoud",
- "font_family": "Lettertipe verander Familie",
- "font_size": "Verandering Lettertipe Grootte",
- "bold": "Vetgedrukte teks",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Verander agtergrondkleur / opaciteit",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Pas na inhoud",
- "fit_to_all": "Passing tot al inhoud",
- "fit_to_canvas": "Passing tot doek",
- "fit_to_layer_content": "Passing tot laag inhoud",
- "fit_to_sel": "Passing tot seleksie",
- "align_relative_to": "Align in verhouding tot ...",
- "relativeTo": "relatief tot:",
- "page": "bladsy",
- "largest_object": "grootste voorwerp",
- "selected_objects": "verkose voorwerpe",
- "smallest_object": "kleinste voorwerp",
- "new_doc": "Nuwe Beeld",
- "open_doc": "Open Beeld",
- "export_img": "Export",
- "save_doc": "Slaan Beeld",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Rig Middel",
- "align_left": "Links Regterkant",
- "align_middle": "Align Midde",
- "align_right": "Lijn regs uit",
- "align_top": "Align Top",
- "mode_select": "Select Gereedschap",
- "mode_fhpath": "Potlood tool",
- "mode_line": "Lyn Gereedskap",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-hand Rectangle",
- "mode_ellipse": "Ellips",
- "mode_circle": "Sirkel",
- "mode_fhellipse": "Gratis-Hand Ellips",
- "mode_path": "Poli Gereedskap",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Gereedskap",
- "mode_image": "Image Gereedskap",
- "mode_zoom": "Klik op die Gereedskap",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Boontoe",
- "redo": "Oordoen",
- "tool_source": "Wysig Bron",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Groep Elemente",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elemente",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Skuif na Bottom",
- "move_top": "Skuif na bo",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Spaar",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Verwyder Laag",
- "move_down": "Beweeg afbreek Down",
- "new": "Nuwe Layer",
- "rename": "Rename Layer",
- "move_up": "Beweeg afbreek Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Doek Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Kies gedefinieerde:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "af",
+ dir: "ltr",
+ common: {
+ "ok": "Spaar",
+ "cancel": "Annuleer",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klik om te verander vul kleur, verskuiwing klik om 'n beroerte kleur verander",
+ "zoom_level": "Change zoom vlak",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Verandering vul kleur",
+ "stroke_color": "Verandering beroerte kleur",
+ "stroke_style": "Verandering beroerte dash styl",
+ "stroke_width": "Verandering beroerte breedte",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Verandering rotasie-hoek",
+ "blur": "Change gaussian blur value",
+ "opacity": "Verander geselekteerde item opaciteit",
+ "circle_cx": "Verandering sirkel se cx koördineer",
+ "circle_cy": "Verandering sirkel se cy koördineer",
+ "circle_r": "Verandering sirkel se radius",
+ "ellipse_cx": "Verandering ellips se cx koördineer",
+ "ellipse_cy": "Verander ellips se cy koördineer",
+ "ellipse_rx": "Verandering ellips se x radius",
+ "ellipse_ry": "Verander ellips se j radius",
+ "line_x1": "Verandering lyn se vertrek x koördinaat",
+ "line_x2": "Verandering lyn se eindig x koördinaat",
+ "line_y1": "Verandering lyn se vertrek y koördinaat",
+ "line_y2": "Verandering lyn se eindig y koördinaat",
+ "rect_height": "Verandering reghoek hoogte",
+ "rect_width": "Verandering reghoek breedte",
+ "corner_radius": "Verandering Rechthoek Corner Radius",
+ "image_width": "Verander prent breedte",
+ "image_height": "Verandering prent hoogte",
+ "image_url": "URL verander",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Verander teks inhoud",
+ "font_family": "Lettertipe verander Familie",
+ "font_size": "Verandering Lettertipe Grootte",
+ "bold": "Vetgedrukte teks",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Verander agtergrondkleur / opaciteit",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Pas na inhoud",
+ "fit_to_all": "Passing tot al inhoud",
+ "fit_to_canvas": "Passing tot doek",
+ "fit_to_layer_content": "Passing tot laag inhoud",
+ "fit_to_sel": "Passing tot seleksie",
+ "align_relative_to": "Align in verhouding tot ...",
+ "relativeTo": "relatief tot:",
+ "page": "bladsy",
+ "largest_object": "grootste voorwerp",
+ "selected_objects": "verkose voorwerpe",
+ "smallest_object": "kleinste voorwerp",
+ "new_doc": "Nuwe Beeld",
+ "open_doc": "Open Beeld",
+ "export_img": "Export",
+ "save_doc": "Slaan Beeld",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Rig Middel",
+ "align_left": "Links Regterkant",
+ "align_middle": "Align Midde",
+ "align_right": "Lijn regs uit",
+ "align_top": "Align Top",
+ "mode_select": "Select Gereedschap",
+ "mode_fhpath": "Potlood tool",
+ "mode_line": "Lyn Gereedskap",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-hand Rectangle",
+ "mode_ellipse": "Ellips",
+ "mode_circle": "Sirkel",
+ "mode_fhellipse": "Gratis-Hand Ellips",
+ "mode_path": "Poli Gereedskap",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Gereedskap",
+ "mode_image": "Image Gereedskap",
+ "mode_zoom": "Klik op die Gereedskap",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Boontoe",
+ "redo": "Oordoen",
+ "tool_source": "Wysig Bron",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Groep Elemente",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elemente",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Skuif na Bottom",
+ "move_top": "Skuif na bo",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Spaar",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Verwyder Laag",
+ "move_down": "Beweeg afbreek Down",
+ "new": "Nuwe Layer",
+ "rename": "Rename Layer",
+ "move_up": "Beweeg afbreek Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Doek Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Kies gedefinieerde:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ar.js b/editor/locale/lang.ar.js
index 16626bcb..84e4f5e5 100644
--- a/editor/locale/lang.ar.js
+++ b/editor/locale/lang.ar.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ar",
- dir: "ltr",
- common: {
- "ok": "حفظ",
- "cancel": "إلغاء",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "انقر لتغيير لون التعبئة ، تحولا مزدوجا فوق لتغيير لون السكتة الدماغية",
- "zoom_level": "تغيير مستوى التكبير",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "تغير لون التعبئة",
- "stroke_color": "تغير لون السكتة الدماغية",
- "stroke_style": "تغيير نمط السكتة الدماغية اندفاعة",
- "stroke_width": "تغيير عرض السكتة الدماغية",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "تغيير زاوية الدوران",
- "blur": "Change gaussian blur value",
- "opacity": "تغيير مختارة غموض البند",
- "circle_cx": "دائرة التغيير لتنسيق cx",
- "circle_cy": "Change circle's cy coordinate",
- "circle_r": "التغيير في دائرة نصف قطرها",
- "ellipse_cx": "تغيير شكل البيضاوي cx تنسيق",
- "ellipse_cy": "تغيير شكل البيضاوي قبرصي تنسيق",
- "ellipse_rx": "تغيير شكل البيضاوي خ نصف قطرها",
- "ellipse_ry": "تغيير القطع الناقص في دائرة نصف قطرها ذ",
- "line_x1": "تغيير الخط لبدء تنسيق خ",
- "line_x2": "تغيير الخط لانهاء خ تنسيق",
- "line_y1": "تغيير الخط لبدء تنسيق ذ",
- "line_y2": "تغيير الخط لإنهاء تنسيق ذ",
- "rect_height": "تغيير المستطيل الارتفاع",
- "rect_width": "تغيير عرض المستطيل",
- "corner_radius": "تغيير مستطيل ركن الشعاع",
- "image_width": "تغيير صورة العرض",
- "image_height": "تغيير ارتفاع الصورة",
- "image_url": "تغيير العنوان",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "تغيير محتويات النص",
- "font_family": "تغيير الخط الأسرة",
- "font_size": "تغيير حجم الخط",
- "bold": "نص جريء",
- "italic": "مائل نص"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "تغير لون الخلفية / غموض",
- "connector_no_arrow": "No arrow",
- "fitToContent": "لائقا للمحتوى",
- "fit_to_all": "يصلح لجميع المحتويات",
- "fit_to_canvas": "يصلح لوحة زيتية على قماش",
- "fit_to_layer_content": "يصلح لطبقة المحتوى",
- "fit_to_sel": "يصلح لاختيار",
- "align_relative_to": "محاذاة النسبي ل ...",
- "relativeTo": "بالنسبة إلى:",
- "page": "الصفحة",
- "largest_object": "أكبر كائن",
- "selected_objects": "انتخب الأجسام",
- "smallest_object": "أصغر كائن",
- "new_doc": "صورة جديدة",
- "open_doc": "فتح الصورة",
- "export_img": "Export",
- "save_doc": "حفظ صورة",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "محاذاة القاع",
- "align_center": "مركز محاذاة",
- "align_left": "محاذاة إلى اليسار",
- "align_middle": "محاذاة الأوسط",
- "align_right": "محاذاة إلى اليمين",
- "align_top": "محاذاة الأعلى",
- "mode_select": "اختر أداة",
- "mode_fhpath": "أداة قلم رصاص",
- "mode_line": "خط أداة",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "القطع الناقص",
- "mode_circle": "دائرة",
- "mode_fhellipse": "اليد الحرة البيضوي",
- "mode_path": "بولي أداة",
- "mode_shapelib": "Shape library",
- "mode_text": "النص أداة",
- "mode_image": "الصورة أداة",
- "mode_zoom": "أداة تكبير",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "التراجع",
- "redo": "إعادته",
- "tool_source": "عدل المصدر",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "مجموعة عناصر",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "فك تجميع عناصر",
- "docprops": "خصائص المستند",
- "imagelib": "Image Library",
- "move_bottom": "الانتقال إلى أسفل",
- "move_top": "الانتقال إلى أعلى",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "حفظ",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "حذف طبقة",
- "move_down": "تحرك لأسفل طبقة",
- "new": "طبقة جديدة",
- "rename": "تسمية الطبقة",
- "move_up": "تحرك لأعلى طبقة",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "حدد سلفا:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ar",
+ dir: "ltr",
+ common: {
+ "ok": "حفظ",
+ "cancel": "إلغاء",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "انقر لتغيير لون التعبئة ، تحولا مزدوجا فوق لتغيير لون السكتة الدماغية",
+ "zoom_level": "تغيير مستوى التكبير",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "تغير لون التعبئة",
+ "stroke_color": "تغير لون السكتة الدماغية",
+ "stroke_style": "تغيير نمط السكتة الدماغية اندفاعة",
+ "stroke_width": "تغيير عرض السكتة الدماغية",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "تغيير زاوية الدوران",
+ "blur": "Change gaussian blur value",
+ "opacity": "تغيير مختارة غموض البند",
+ "circle_cx": "دائرة التغيير لتنسيق cx",
+ "circle_cy": "Change circle's cy coordinate",
+ "circle_r": "التغيير في دائرة نصف قطرها",
+ "ellipse_cx": "تغيير شكل البيضاوي cx تنسيق",
+ "ellipse_cy": "تغيير شكل البيضاوي قبرصي تنسيق",
+ "ellipse_rx": "تغيير شكل البيضاوي خ نصف قطرها",
+ "ellipse_ry": "تغيير القطع الناقص في دائرة نصف قطرها ذ",
+ "line_x1": "تغيير الخط لبدء تنسيق خ",
+ "line_x2": "تغيير الخط لانهاء خ تنسيق",
+ "line_y1": "تغيير الخط لبدء تنسيق ذ",
+ "line_y2": "تغيير الخط لإنهاء تنسيق ذ",
+ "rect_height": "تغيير المستطيل الارتفاع",
+ "rect_width": "تغيير عرض المستطيل",
+ "corner_radius": "تغيير مستطيل ركن الشعاع",
+ "image_width": "تغيير صورة العرض",
+ "image_height": "تغيير ارتفاع الصورة",
+ "image_url": "تغيير العنوان",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "تغيير محتويات النص",
+ "font_family": "تغيير الخط الأسرة",
+ "font_size": "تغيير حجم الخط",
+ "bold": "نص جريء",
+ "italic": "مائل نص"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "تغير لون الخلفية / غموض",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "لائقا للمحتوى",
+ "fit_to_all": "يصلح لجميع المحتويات",
+ "fit_to_canvas": "يصلح لوحة زيتية على قماش",
+ "fit_to_layer_content": "يصلح لطبقة المحتوى",
+ "fit_to_sel": "يصلح لاختيار",
+ "align_relative_to": "محاذاة النسبي ل ...",
+ "relativeTo": "بالنسبة إلى:",
+ "page": "الصفحة",
+ "largest_object": "أكبر كائن",
+ "selected_objects": "انتخب الأجسام",
+ "smallest_object": "أصغر كائن",
+ "new_doc": "صورة جديدة",
+ "open_doc": "فتح الصورة",
+ "export_img": "Export",
+ "save_doc": "حفظ صورة",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "محاذاة القاع",
+ "align_center": "مركز محاذاة",
+ "align_left": "محاذاة إلى اليسار",
+ "align_middle": "محاذاة الأوسط",
+ "align_right": "محاذاة إلى اليمين",
+ "align_top": "محاذاة الأعلى",
+ "mode_select": "اختر أداة",
+ "mode_fhpath": "أداة قلم رصاص",
+ "mode_line": "خط أداة",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "القطع الناقص",
+ "mode_circle": "دائرة",
+ "mode_fhellipse": "اليد الحرة البيضوي",
+ "mode_path": "بولي أداة",
+ "mode_shapelib": "Shape library",
+ "mode_text": "النص أداة",
+ "mode_image": "الصورة أداة",
+ "mode_zoom": "أداة تكبير",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "التراجع",
+ "redo": "إعادته",
+ "tool_source": "عدل المصدر",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "مجموعة عناصر",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "فك تجميع عناصر",
+ "docprops": "خصائص المستند",
+ "imagelib": "Image Library",
+ "move_bottom": "الانتقال إلى أسفل",
+ "move_top": "الانتقال إلى أعلى",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "حفظ",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "حذف طبقة",
+ "move_down": "تحرك لأسفل طبقة",
+ "new": "طبقة جديدة",
+ "rename": "تسمية الطبقة",
+ "move_up": "تحرك لأعلى طبقة",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "حدد سلفا:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.az.js b/editor/locale/lang.az.js
index 877225c6..572a2ab1 100644
--- a/editor/locale/lang.az.js
+++ b/editor/locale/lang.az.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "az",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click to change fill color, shift-click to change stroke color",
- "zoom_level": "Change zoom level",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change fill color",
- "stroke_color": "Change stroke color",
- "stroke_style": "Change stroke dash style",
- "stroke_width": "Change stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change rotation angle",
- "blur": "Change gaussian blur value",
- "opacity": "Change selected item opacity",
- "circle_cx": "Change circle's cx coordinate",
- "circle_cy": "Change circle's cy coordinate",
- "circle_r": "Change circle's radius",
- "ellipse_cx": "Change ellipse's cx coordinate",
- "ellipse_cy": "Change ellipse's cy coordinate",
- "ellipse_rx": "Change ellipse's x radius",
- "ellipse_ry": "Change ellipse's y radius",
- "line_x1": "Change line's starting x coordinate",
- "line_x2": "Change line's ending x coordinate",
- "line_y1": "Change line's starting y coordinate",
- "line_y2": "Change line's ending y coordinate",
- "rect_height": "Change rectangle height",
- "rect_width": "Change rectangle width",
- "corner_radius": "Change Rectangle Corner Radius",
- "image_width": "Change image width",
- "image_height": "Change image height",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Change text contents",
- "font_family": "Change Font Family",
- "font_size": "Change Font Size",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color/opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit to all content",
- "fit_to_canvas": "Fit to canvas",
- "fit_to_layer_content": "Fit to layer content",
- "fit_to_sel": "Fit to selection",
- "align_relative_to": "Align relative to ...",
- "relativeTo": "relative to:",
- "page": "page",
- "largest_object": "largest object",
- "selected_objects": "selected objects",
- "smallest_object": "smallest object",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Align Middle",
- "align_right": "Align Right",
- "align_top": "Align Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Apply Changes",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "az",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click to change fill color, shift-click to change stroke color",
+ "zoom_level": "Change zoom level",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change fill color",
+ "stroke_color": "Change stroke color",
+ "stroke_style": "Change stroke dash style",
+ "stroke_width": "Change stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change rotation angle",
+ "blur": "Change gaussian blur value",
+ "opacity": "Change selected item opacity",
+ "circle_cx": "Change circle's cx coordinate",
+ "circle_cy": "Change circle's cy coordinate",
+ "circle_r": "Change circle's radius",
+ "ellipse_cx": "Change ellipse's cx coordinate",
+ "ellipse_cy": "Change ellipse's cy coordinate",
+ "ellipse_rx": "Change ellipse's x radius",
+ "ellipse_ry": "Change ellipse's y radius",
+ "line_x1": "Change line's starting x coordinate",
+ "line_x2": "Change line's ending x coordinate",
+ "line_y1": "Change line's starting y coordinate",
+ "line_y2": "Change line's ending y coordinate",
+ "rect_height": "Change rectangle height",
+ "rect_width": "Change rectangle width",
+ "corner_radius": "Change Rectangle Corner Radius",
+ "image_width": "Change image width",
+ "image_height": "Change image height",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Change text contents",
+ "font_family": "Change Font Family",
+ "font_size": "Change Font Size",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color/opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit to all content",
+ "fit_to_canvas": "Fit to canvas",
+ "fit_to_layer_content": "Fit to layer content",
+ "fit_to_sel": "Fit to selection",
+ "align_relative_to": "Align relative to ...",
+ "relativeTo": "relative to:",
+ "page": "page",
+ "largest_object": "largest object",
+ "selected_objects": "selected objects",
+ "smallest_object": "smallest object",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Align Middle",
+ "align_right": "Align Right",
+ "align_top": "Align Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Apply Changes",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.be.js b/editor/locale/lang.be.js
index b5479d67..ebcb188d 100644
--- a/editor/locale/lang.be.js
+++ b/editor/locale/lang.be.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "be",
- dir: "ltr",
- common: {
- "ok": "Захаваць",
- "cancel": "Адмена",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Націсніце для змены колеру залівання, Shift-Click змяніць обводка",
- "zoom_level": "Змяненне маштабу",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Змяненне колеру залівання",
- "stroke_color": "Змяненне колеру інсульт",
- "stroke_style": "Змяненне стылю інсульт працяжнік",
- "stroke_width": "Змены шырыня штрых",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Змены вугла павароту",
- "blur": "Change gaussian blur value",
- "opacity": "Старонка абранага пункта непразрыстасці",
- "circle_cx": "CX змене круга каардынаты",
- "circle_cy": "Змены гуртка CY каардынаты",
- "circle_r": "Старонка круга's радыус",
- "ellipse_cx": "Змены эліпса CX каардынаты",
- "ellipse_cy": "Змены эліпса CY каардынаты",
- "ellipse_rx": "Х змяненні эліпса радыюсам",
- "ellipse_ry": "Змены у эліпса радыюсам",
- "line_x1": "Змены лінія пачынае каардынаты х",
- "line_x2": "Змяненне за перыяд, скончыўся лінія каардынаты х",
- "line_y1": "Змены лінія пачынае Y каардынаты",
- "line_y2": "Змяненне за перыяд, скончыўся лінія Y каардынаты",
- "rect_height": "Змены прастакутнік вышынёй",
- "rect_width": "Змяненне шырыні прамавугольніка",
- "corner_radius": "Змены прастакутнік Corner Radius",
- "image_width": "Змены шырыня выявы",
- "image_height": "Змена вышыні выявы",
- "image_url": "Змяніць URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Змяненне зместу тэксту",
- "font_family": "Змены Сямейства шрыфтоў",
- "font_size": "Змяніць памер шрыфта",
- "bold": "Тоўсты тэкст",
- "italic": "Нахілены тэкст"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Змяненне колеру фону / непразрыстасць",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Па памеры ўтрымання",
- "fit_to_all": "Па памеру ўсе змесціва",
- "fit_to_canvas": "Памер палатна",
- "fit_to_layer_content": "По размеру слой ўтрымання",
- "fit_to_sel": "Выбар памеру",
- "align_relative_to": "Выраўнаваць па дачыненні да ...",
- "relativeTo": "па параўнанні з:",
- "page": "старонка",
- "largest_object": "найбуйнейшы аб'ект",
- "selected_objects": "выбранымі аб'ектамі",
- "smallest_object": "маленькі аб'ект",
- "new_doc": "Новае выява",
- "open_doc": "Адкрыць выява",
- "export_img": "Export",
- "save_doc": "Захаваць малюнак",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Лінаваць па ніжнім краю",
- "align_center": "Лінаваць па цэнтру",
- "align_left": "Па левым краю",
- "align_middle": "Выраўнаваць Блізкага",
- "align_right": "Па правым краю",
- "align_top": "Лінаваць па верхнім краю",
- "mode_select": "Выберыце інструмент",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Свабоднай рукі Прастакутнік",
- "mode_ellipse": "Эліпс",
- "mode_circle": "Круг",
- "mode_fhellipse": "Свабоднай рукі Эліпс",
- "mode_path": "Poly Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Тэкст Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Адмяніць",
- "redo": "Паўтор",
- "tool_source": "Змяніць зыходны",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Група элементаў",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Элементы Разгруппировать",
- "docprops": "Уласцівасці дакумента",
- "imagelib": "Image Library",
- "move_bottom": "Перамясціць уніз",
- "move_top": "Перамясціць угару",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Захаваць",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Выдаліць слой",
- "move_down": "Перамясціць слой на",
- "new": "Новы слой",
- "rename": "Перайменаваць Слой",
- "move_up": "Перамяшчэнне слоя да",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Выберыце прадвызначэньні:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "be",
+ dir: "ltr",
+ common: {
+ "ok": "Захаваць",
+ "cancel": "Адмена",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Націсніце для змены колеру залівання, Shift-Click змяніць обводка",
+ "zoom_level": "Змяненне маштабу",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Змяненне колеру залівання",
+ "stroke_color": "Змяненне колеру інсульт",
+ "stroke_style": "Змяненне стылю інсульт працяжнік",
+ "stroke_width": "Змены шырыня штрых",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Змены вугла павароту",
+ "blur": "Change gaussian blur value",
+ "opacity": "Старонка абранага пункта непразрыстасці",
+ "circle_cx": "CX змене круга каардынаты",
+ "circle_cy": "Змены гуртка CY каардынаты",
+ "circle_r": "Старонка круга's радыус",
+ "ellipse_cx": "Змены эліпса CX каардынаты",
+ "ellipse_cy": "Змены эліпса CY каардынаты",
+ "ellipse_rx": "Х змяненні эліпса радыюсам",
+ "ellipse_ry": "Змены у эліпса радыюсам",
+ "line_x1": "Змены лінія пачынае каардынаты х",
+ "line_x2": "Змяненне за перыяд, скончыўся лінія каардынаты х",
+ "line_y1": "Змены лінія пачынае Y каардынаты",
+ "line_y2": "Змяненне за перыяд, скончыўся лінія Y каардынаты",
+ "rect_height": "Змены прастакутнік вышынёй",
+ "rect_width": "Змяненне шырыні прамавугольніка",
+ "corner_radius": "Змены прастакутнік Corner Radius",
+ "image_width": "Змены шырыня выявы",
+ "image_height": "Змена вышыні выявы",
+ "image_url": "Змяніць URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Змяненне зместу тэксту",
+ "font_family": "Змены Сямейства шрыфтоў",
+ "font_size": "Змяніць памер шрыфта",
+ "bold": "Тоўсты тэкст",
+ "italic": "Нахілены тэкст"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Змяненне колеру фону / непразрыстасць",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Па памеры ўтрымання",
+ "fit_to_all": "Па памеру ўсе змесціва",
+ "fit_to_canvas": "Памер палатна",
+ "fit_to_layer_content": "По размеру слой ўтрымання",
+ "fit_to_sel": "Выбар памеру",
+ "align_relative_to": "Выраўнаваць па дачыненні да ...",
+ "relativeTo": "па параўнанні з:",
+ "page": "старонка",
+ "largest_object": "найбуйнейшы аб'ект",
+ "selected_objects": "выбранымі аб'ектамі",
+ "smallest_object": "маленькі аб'ект",
+ "new_doc": "Новае выява",
+ "open_doc": "Адкрыць выява",
+ "export_img": "Export",
+ "save_doc": "Захаваць малюнак",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Лінаваць па ніжнім краю",
+ "align_center": "Лінаваць па цэнтру",
+ "align_left": "Па левым краю",
+ "align_middle": "Выраўнаваць Блізкага",
+ "align_right": "Па правым краю",
+ "align_top": "Лінаваць па верхнім краю",
+ "mode_select": "Выберыце інструмент",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Свабоднай рукі Прастакутнік",
+ "mode_ellipse": "Эліпс",
+ "mode_circle": "Круг",
+ "mode_fhellipse": "Свабоднай рукі Эліпс",
+ "mode_path": "Poly Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Тэкст Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Адмяніць",
+ "redo": "Паўтор",
+ "tool_source": "Змяніць зыходны",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Група элементаў",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Элементы Разгруппировать",
+ "docprops": "Уласцівасці дакумента",
+ "imagelib": "Image Library",
+ "move_bottom": "Перамясціць уніз",
+ "move_top": "Перамясціць угару",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Захаваць",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Выдаліць слой",
+ "move_down": "Перамясціць слой на",
+ "new": "Новы слой",
+ "rename": "Перайменаваць Слой",
+ "move_up": "Перамяшчэнне слоя да",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Выберыце прадвызначэньні:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.bg.js b/editor/locale/lang.bg.js
index 50d76f81..ea5728f6 100644
--- a/editor/locale/lang.bg.js
+++ b/editor/locale/lang.bg.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "bg",
- dir: "ltr",
- common: {
- "ok": "Спасявам",
- "cancel": "Отказ",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Кликнете, за да промени попълнете цвят, на смени, кликнете да променят цвета си удар",
- "zoom_level": "Промяна на ниво на мащабиране",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Промяна попълнете цвят",
- "stroke_color": "Промяна на инсулт цвят",
- "stroke_style": "Промяна на стила удар тире",
- "stroke_width": "Промяна на ширината инсулт",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Промяна ъгъл на завъртане",
- "blur": "Change gaussian blur value",
- "opacity": "Промяна на избрания елемент непрозрачност",
- "circle_cx": "CX Промяна кръг на координатната",
- "circle_cy": "Промяна кръг's CY координира",
- "circle_r": "Промяна кръг радиус",
- "ellipse_cx": "Промяна на елипса's CX координира",
- "ellipse_cy": "Промяна на елипса's CY координира",
- "ellipse_rx": "Промяна на елипса's X радиус",
- "ellipse_ry": "Промяна на елипса's Y радиус",
- "line_x1": "Промяна на линия, започваща х координира",
- "line_x2": "Промяна на линията приключва х координира",
- "line_y1": "Промяна линия, започваща Y координира",
- "line_y2": "Промяна на линията приключва Y координира",
- "rect_height": "Промяна на правоъгълник височина",
- "rect_width": "Промяна на правоъгълник ширина",
- "corner_radius": "Промяна на правоъгълник Corner Radius",
- "image_width": "Промяна на изображението ширина",
- "image_height": "Промяна на изображението височина",
- "image_url": "Промяна на URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Промяна на текст съдържание",
- "font_family": "Промяна на шрифта Семейство",
- "font_size": "Промени размера на буквите",
- "bold": "Получер текст",
- "italic": "Курсив текст"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Промяна на цвета на фона / непрозрачност",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit към съдържание",
- "fit_to_all": "Побери цялото съдържание",
- "fit_to_canvas": "Fit на платно",
- "fit_to_layer_content": "Fit да слой съдържание",
- "fit_to_sel": "Fit за подбор",
- "align_relative_to": "Привеждане в сравнение с ...",
- "relativeTo": "в сравнение с:",
- "page": "страница",
- "largest_object": "най-големият обект",
- "selected_objects": "избраните обекти",
- "smallest_object": "най-малката обект",
- "new_doc": "Ню Имидж",
- "open_doc": "Отворете изображението",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Привеждане Отдолу",
- "align_center": "Подравняване в средата",
- "align_left": "Подравняване вляво",
- "align_middle": "Привеждане в Близкия",
- "align_right": "Подравняване надясно",
- "align_top": "Привеждане Топ",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Свободен Употребявани правоъгълник",
- "mode_ellipse": "Елипса",
- "mode_circle": "Кръгът",
- "mode_fhellipse": "Свободен Употребявани Елипса",
- "mode_path": "Поли Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Текст Оръдие",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Отмени",
- "redo": "Възстановяване",
- "tool_source": "Редактиране Източник",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Група Елементи",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Разгрупирай Елементи",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Премести надолу",
- "move_top": "Премести в началото",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Спасявам",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Изтриване на слой",
- "move_down": "Move слой надолу",
- "new": "Нов слой",
- "rename": "Преименуване Layer",
- "move_up": "Move Up Layer",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Изберете предварително:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "bg",
+ dir: "ltr",
+ common: {
+ "ok": "Спасявам",
+ "cancel": "Отказ",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Кликнете, за да промени попълнете цвят, на смени, кликнете да променят цвета си удар",
+ "zoom_level": "Промяна на ниво на мащабиране",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Промяна попълнете цвят",
+ "stroke_color": "Промяна на инсулт цвят",
+ "stroke_style": "Промяна на стила удар тире",
+ "stroke_width": "Промяна на ширината инсулт",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Промяна ъгъл на завъртане",
+ "blur": "Change gaussian blur value",
+ "opacity": "Промяна на избрания елемент непрозрачност",
+ "circle_cx": "CX Промяна кръг на координатната",
+ "circle_cy": "Промяна кръг's CY координира",
+ "circle_r": "Промяна кръг радиус",
+ "ellipse_cx": "Промяна на елипса's CX координира",
+ "ellipse_cy": "Промяна на елипса's CY координира",
+ "ellipse_rx": "Промяна на елипса's X радиус",
+ "ellipse_ry": "Промяна на елипса's Y радиус",
+ "line_x1": "Промяна на линия, започваща х координира",
+ "line_x2": "Промяна на линията приключва х координира",
+ "line_y1": "Промяна линия, започваща Y координира",
+ "line_y2": "Промяна на линията приключва Y координира",
+ "rect_height": "Промяна на правоъгълник височина",
+ "rect_width": "Промяна на правоъгълник ширина",
+ "corner_radius": "Промяна на правоъгълник Corner Radius",
+ "image_width": "Промяна на изображението ширина",
+ "image_height": "Промяна на изображението височина",
+ "image_url": "Промяна на URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Промяна на текст съдържание",
+ "font_family": "Промяна на шрифта Семейство",
+ "font_size": "Промени размера на буквите",
+ "bold": "Получер текст",
+ "italic": "Курсив текст"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Промяна на цвета на фона / непрозрачност",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit към съдържание",
+ "fit_to_all": "Побери цялото съдържание",
+ "fit_to_canvas": "Fit на платно",
+ "fit_to_layer_content": "Fit да слой съдържание",
+ "fit_to_sel": "Fit за подбор",
+ "align_relative_to": "Привеждане в сравнение с ...",
+ "relativeTo": "в сравнение с:",
+ "page": "страница",
+ "largest_object": "най-големият обект",
+ "selected_objects": "избраните обекти",
+ "smallest_object": "най-малката обект",
+ "new_doc": "Ню Имидж",
+ "open_doc": "Отворете изображението",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Привеждане Отдолу",
+ "align_center": "Подравняване в средата",
+ "align_left": "Подравняване вляво",
+ "align_middle": "Привеждане в Близкия",
+ "align_right": "Подравняване надясно",
+ "align_top": "Привеждане Топ",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Свободен Употребявани правоъгълник",
+ "mode_ellipse": "Елипса",
+ "mode_circle": "Кръгът",
+ "mode_fhellipse": "Свободен Употребявани Елипса",
+ "mode_path": "Поли Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Текст Оръдие",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Отмени",
+ "redo": "Възстановяване",
+ "tool_source": "Редактиране Източник",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Група Елементи",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Разгрупирай Елементи",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Премести надолу",
+ "move_top": "Премести в началото",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Спасявам",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Изтриване на слой",
+ "move_down": "Move слой надолу",
+ "new": "Нов слой",
+ "rename": "Преименуване Layer",
+ "move_up": "Move Up Layer",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Изберете предварително:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ca.js b/editor/locale/lang.ca.js
index 7dfbbe10..42d6ef7e 100644
--- a/editor/locale/lang.ca.js
+++ b/editor/locale/lang.ca.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ca",
- dir: "ltr",
- common: {
- "ok": "Salvar",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Feu clic per canviar el color de farciment, shift-clic per canviar el color del traç",
- "zoom_level": "Canviar el nivell de zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Canviar el color de farciment",
- "stroke_color": "Canviar el color del traç",
- "stroke_style": "Canviar estil de traç guió",
- "stroke_width": "Canviar l'amplada del traç",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Canviar l'angle de rotació",
- "blur": "Change gaussian blur value",
- "opacity": "Canviar la opacitat tema seleccionat",
- "circle_cx": "CX cercle Canvi de coordenades",
- "circle_cy": "Cercle Canvi CY coordinar",
- "circle_r": "Ràdio de cercle Canvi",
- "ellipse_cx": "Canviar lipse CX coordinar",
- "ellipse_cy": "Lipse Canvi CY coordinar",
- "ellipse_rx": "Ràdio x lipse Canvi",
- "ellipse_ry": "Ràdio i lipse Canvi",
- "line_x1": "Canviar la línia de partida de la coordenada x",
- "line_x2": "Canviar la línia d'hores de coordenada x",
- "line_y1": "Canviar la línia de partida i de coordinar",
- "line_y2": "Canviar la línia d'hores de coordenada",
- "rect_height": "Rectangle d'alçada Canvi",
- "rect_width": "Ample rectangle Canvi",
- "corner_radius": "Canviar Rectangle Corner Radius",
- "image_width": "Amplada de la imatge Canvi",
- "image_height": "Canviar l'altura de la imatge",
- "image_url": "Canviar URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Contingut del text",
- "font_family": "Canviar la font Família",
- "font_size": "Change Font Size",
- "bold": "Text en negreta",
- "italic": "Text en cursiva"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Color de fons / opacitat",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Ajustar al contingut",
- "fit_to_all": "Ajustar a tot el contingut",
- "fit_to_canvas": "Ajustar a la lona",
- "fit_to_layer_content": "Ajustar al contingut de la capa d'",
- "fit_to_sel": "Ajustar a la selecció",
- "align_relative_to": "Alinear pel que fa a ...",
- "relativeTo": "en relació amb:",
- "page": "Pàgina",
- "largest_object": "objecte més gran",
- "selected_objects": "objectes escollits",
- "smallest_object": "objecte més petit",
- "new_doc": "Nova imatge",
- "open_doc": "Obrir imatge",
- "export_img": "Export",
- "save_doc": "Guardar imatge",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Alinear baix",
- "align_center": "Alinear al centre",
- "align_left": "Alinear a l'esquerra",
- "align_middle": "Alinear Medi",
- "align_right": "Alinear a la dreta",
- "align_top": "Alinear a dalt",
- "mode_select": "Eina de selecció",
- "mode_fhpath": "Eina Llapis",
- "mode_line": "L'eina",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Lipse",
- "mode_circle": "Cercle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Eina de text",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Desfés",
- "redo": "Refer",
- "tool_source": "Font Edita",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elements de Grup de",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Desagrupar elements",
- "docprops": "Propietats del document",
- "imagelib": "Image Library",
- "move_bottom": "Mou al final",
- "move_top": "Mou al principi",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Salvar",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Eliminar capa",
- "move_down": "Mou la capa de Down",
- "new": "Nova capa",
- "rename": "Canvieu el nom de la capa",
- "move_up": "Mou la capa Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Seleccioneu predefinides:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ca",
+ dir: "ltr",
+ common: {
+ "ok": "Salvar",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Feu clic per canviar el color de farciment, shift-clic per canviar el color del traç",
+ "zoom_level": "Canviar el nivell de zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Canviar el color de farciment",
+ "stroke_color": "Canviar el color del traç",
+ "stroke_style": "Canviar estil de traç guió",
+ "stroke_width": "Canviar l'amplada del traç",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Canviar l'angle de rotació",
+ "blur": "Change gaussian blur value",
+ "opacity": "Canviar la opacitat tema seleccionat",
+ "circle_cx": "CX cercle Canvi de coordenades",
+ "circle_cy": "Cercle Canvi CY coordinar",
+ "circle_r": "Ràdio de cercle Canvi",
+ "ellipse_cx": "Canviar lipse CX coordinar",
+ "ellipse_cy": "Lipse Canvi CY coordinar",
+ "ellipse_rx": "Ràdio x lipse Canvi",
+ "ellipse_ry": "Ràdio i lipse Canvi",
+ "line_x1": "Canviar la línia de partida de la coordenada x",
+ "line_x2": "Canviar la línia d'hores de coordenada x",
+ "line_y1": "Canviar la línia de partida i de coordinar",
+ "line_y2": "Canviar la línia d'hores de coordenada",
+ "rect_height": "Rectangle d'alçada Canvi",
+ "rect_width": "Ample rectangle Canvi",
+ "corner_radius": "Canviar Rectangle Corner Radius",
+ "image_width": "Amplada de la imatge Canvi",
+ "image_height": "Canviar l'altura de la imatge",
+ "image_url": "Canviar URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Contingut del text",
+ "font_family": "Canviar la font Família",
+ "font_size": "Change Font Size",
+ "bold": "Text en negreta",
+ "italic": "Text en cursiva"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Color de fons / opacitat",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Ajustar al contingut",
+ "fit_to_all": "Ajustar a tot el contingut",
+ "fit_to_canvas": "Ajustar a la lona",
+ "fit_to_layer_content": "Ajustar al contingut de la capa d'",
+ "fit_to_sel": "Ajustar a la selecció",
+ "align_relative_to": "Alinear pel que fa a ...",
+ "relativeTo": "en relació amb:",
+ "page": "Pàgina",
+ "largest_object": "objecte més gran",
+ "selected_objects": "objectes escollits",
+ "smallest_object": "objecte més petit",
+ "new_doc": "Nova imatge",
+ "open_doc": "Obrir imatge",
+ "export_img": "Export",
+ "save_doc": "Guardar imatge",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Alinear baix",
+ "align_center": "Alinear al centre",
+ "align_left": "Alinear a l'esquerra",
+ "align_middle": "Alinear Medi",
+ "align_right": "Alinear a la dreta",
+ "align_top": "Alinear a dalt",
+ "mode_select": "Eina de selecció",
+ "mode_fhpath": "Eina Llapis",
+ "mode_line": "L'eina",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Lipse",
+ "mode_circle": "Cercle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Eina de text",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Desfés",
+ "redo": "Refer",
+ "tool_source": "Font Edita",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elements de Grup de",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Desagrupar elements",
+ "docprops": "Propietats del document",
+ "imagelib": "Image Library",
+ "move_bottom": "Mou al final",
+ "move_top": "Mou al principi",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Salvar",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Eliminar capa",
+ "move_down": "Mou la capa de Down",
+ "new": "Nova capa",
+ "rename": "Canvieu el nom de la capa",
+ "move_up": "Mou la capa Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Seleccioneu predefinides:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.cs.js b/editor/locale/lang.cs.js
index b1735724..20bce41d 100644
--- a/editor/locale/lang.cs.js
+++ b/editor/locale/lang.cs.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "cs",
- dir: "ltr",
- common: {
- "ok": "Uložit",
- "cancel": "Storno",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "šipka dolů",
- "key_up": "šipka nahoru",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Běží na"
- },
- ui: {
- "toggle_stroke_tools": "Zobrazit/schovat více možností",
- "palette_info": "Kliknutím změníte barvu výplně, kliknutím současně s klávesou shift změníte barvu čáry",
- "zoom_level": "Změna přiblížení",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Změnit ID elementu",
- "fill_color": "Změnit barvu výplně",
- "stroke_color": "Změnit barvu čáry",
- "stroke_style": "Změnit styl čáry",
- "stroke_width": "Změnit šířku čáry",
- "pos_x": "Změnit souřadnici X",
- "pos_y": "Změnit souřadnici Y",
- "linecap_butt": "Konec úsečky: přesný",
- "linecap_round": "Konec úsečky: zaoblený",
- "linecap_square": "Konec úsečky: s čtvercovým přesahem",
- "linejoin_bevel": "Styl napojení úseček: zkosené",
- "linejoin_miter": "Styl napojení úseček: ostré",
- "linejoin_round": "Styl napojení úseček: oblé",
- "angle": "Změnit úhel natočení",
- "blur": "Změnit rozostření",
- "opacity": "Změnit průhlednost objektů",
- "circle_cx": "Změnit souřadnici X středu kružnice",
- "circle_cy": "Změnit souřadnici Y středu kružnice",
- "circle_r": "Změnit poloměr kružnice",
- "ellipse_cx": "Změnit souřadnici X středu elipsy",
- "ellipse_cy": "Změnit souřadnici Y středu elipsy",
- "ellipse_rx": "Změnit poloměr X elipsy",
- "ellipse_ry": "Změnit poloměr Y elipsy",
- "line_x1": "Změnit počáteční souřadnici X úsečky",
- "line_x2": "Změnit koncovou souřadnici X úsečky",
- "line_y1": "Změnit počáteční souřadnici Y úsečky",
- "line_y2": "Změnit koncovou souřadnici X úsečky",
- "rect_height": "Změnit výšku obdélníku",
- "rect_width": "Změnit šířku obdélníku",
- "corner_radius": "Změnit zaoblení obdélníku",
- "image_width": "Změnit šířku dokumentu",
- "image_height": "Změnit výšku dokumentu",
- "image_url": "Změnit adresu URL",
- "node_x": "Změnit souřadnici X uzlu",
- "node_y": "Změnit souřadnici Y uzlu",
- "seg_type": "Změnit typ segmentu",
- "straight_segments": "úsečka",
- "curve_segments": "křivka",
- "text_contents": "Změnit text",
- "font_family": "Změnit font",
- "font_size": "Změnit velikost písma",
- "bold": "Tučně",
- "italic": "Kurzíva"
- },
- tools: {
- "main_menu": "Hlavní menu",
- "bkgnd_color_opac": "Změnit barvu a průhlednost pozadí",
- "connector_no_arrow": "Bez šipky",
- "fitToContent": "přizpůsobit obsahu",
- "fit_to_all": "Přizpůsobit veškerému obsahu",
- "fit_to_canvas": "Přizpůsobit stránce",
- "fit_to_layer_content": "Přizpůsobit obsahu vrstvy",
- "fit_to_sel": "Přizpůsobit výběru",
- "align_relative_to": "Zarovnat relativně",
- "relativeTo": "relatativně k:",
- "page": "stránce",
- "largest_object": "největšímu objektu",
- "selected_objects": "zvoleným objektům",
- "smallest_object": "nejmenšímu objektu",
- "new_doc": "Nový dokument",
- "open_doc": "Otevřít dokument",
- "export_img": "Export",
- "save_doc": "Uložit dokument",
- "import_doc": "Importovat SVG",
- "align_to_page": "Zarovnat element na stránku",
- "align_bottom": "Zarovnat dolů",
- "align_center": "Zarovnat nastřed",
- "align_left": "Zarovnat doleva",
- "align_middle": "Zarovnat nastřed",
- "align_right": "Zarovnat doprava",
- "align_top": "Zarovnat nahoru",
- "mode_select": "Výběr a transformace objektů",
- "mode_fhpath": "Kresba od ruky",
- "mode_line": "Úsečka",
- "mode_connect": "Spojit dva objekty",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Obdélník volnou rukou",
- "mode_ellipse": "Elipsa",
- "mode_circle": "Kružnice",
- "mode_fhellipse": "Elipsa volnou rukou",
- "mode_path": "Křivka",
- "mode_shapelib": "Shape library",
- "mode_text": "Text",
- "mode_image": "Obrázek",
- "mode_zoom": "Přiblížení",
- "mode_eyedropper": "Kapátko",
- "no_embed": "POZOR: Obrázek nelze uložit s dokumentem. Bude zobrazován z adresáře, kde se nyní nachází.",
- "undo": "Zpět",
- "redo": "Znovu",
- "tool_source": "Upravovat SVG kód",
- "wireframe_mode": "Zobrazit jen kostru",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Seskupit objekty",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Objekt na křivku",
- "reorient_path": "Změna orientace křivky",
- "ungroup": "Zrušit seskupení",
- "docprops": "Vlastnosti dokumentu",
- "imagelib": "Image Library",
- "move_bottom": "Vrstvu úplně dospodu",
- "move_top": "Vrstvu úplně nahoru",
- "node_clone": "Vložit nový uzel",
- "node_delete": "Ostranit uzel",
- "node_link": "Provázat ovládací body uzlu",
- "add_subpath": "Přidat další součást křivky",
- "openclose_path": "Otevřít/zavřít součást křivky",
- "source_save": "Uložit",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Vrstva",
- "layers": "Layers",
- "del": "Odstranit vrstvu",
- "move_down": "Přesunout vrstvu níž",
- "new": "Přidat vrstvu",
- "rename": "Přejmenovat vrstvu",
- "move_up": "Přesunout vrstvu výš",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Přesunout objekty do:",
- "move_selected": "Přesunout objekty do jiné vrstvy"
- },
- config: {
- "image_props": "Vlastnosti dokumentu",
- "doc_title": "Název",
- "doc_dims": "Vlastní velikost",
- "included_images": "Vložené obrázky",
- "image_opt_embed": "Vkládat do dokumentu",
- "image_opt_ref": "Jen odkazem",
- "editor_prefs": "Nastavení editoru",
- "icon_size": "Velikost ikon",
- "language": "Jazyk",
- "background": "Obrázek v pozadí editoru",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Pozor: obrázek v pozadí nebude uložen jako součást dokumentu.",
- "icon_large": "velké",
- "icon_medium": "střední",
- "icon_small": "malé",
- "icon_xlarge": "největší",
- "select_predefined": "vybrat předdefinovaný:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Nevhodná hodnota",
- "noContentToFitTo": "Vyberte oblast pro přizpůsobení",
- "dupeLayerName": "Taková vrstva už bohužel existuje",
- "enterUniqueLayerName": "Zadejte prosím jedinečné jméno pro vrstvu",
- "enterNewLayerName": "Zadejte prosím jméno pro novou vrstvu",
- "layerHasThatName": "Vrstva už se tak jmenuje",
- "QmoveElemsToLayer": "Opravdu chcete přesunout vybrané objekty do vrstvy '%s'?",
- "QwantToClear": "Opravdu chcete smazat současný dokument?\nHistorie změn bude také smazána.",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Chyba v parsování zdrojového kódu SVG.\nChcete se vrátit k původnímu?",
- "QignoreSourceChanges": "Opravdu chcete stornovat změny provedené v SVG kódu?",
- "featNotSupported": "Tato vlastnost ještě není k dispozici",
- "enterNewImgURL": "Vložte adresu URL, na které se nachází vkládaný obrázek",
- "defsFailOnSave": "POZOR: Kvůli nedokonalosti Vašeho prohlížeče se mohou některé části dokumentu špatně vykreslovat (mohou chybět barevné přechody nebo některé objekty). Po uložení dokumentu by se ale vše mělo zobrazovat správně.",
- "loadingImage": "Nahrávám obrázek ...",
- "saveFromBrowser": "Použijte nabídku \"Uložit stránku jako ...\" ve Vašem prohlížeči pro uložení dokumentu do souboru %s.",
- "noteTheseIssues": "Mohou se vyskytnout následující problémy: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "cs",
+ dir: "ltr",
+ common: {
+ "ok": "Uložit",
+ "cancel": "Storno",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "šipka dolů",
+ "key_up": "šipka nahoru",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Běží na"
+ },
+ ui: {
+ "toggle_stroke_tools": "Zobrazit/schovat více možností",
+ "palette_info": "Kliknutím změníte barvu výplně, kliknutím současně s klávesou shift změníte barvu čáry",
+ "zoom_level": "Změna přiblížení",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Změnit ID elementu",
+ "fill_color": "Změnit barvu výplně",
+ "stroke_color": "Změnit barvu čáry",
+ "stroke_style": "Změnit styl čáry",
+ "stroke_width": "Změnit šířku čáry",
+ "pos_x": "Změnit souřadnici X",
+ "pos_y": "Změnit souřadnici Y",
+ "linecap_butt": "Konec úsečky: přesný",
+ "linecap_round": "Konec úsečky: zaoblený",
+ "linecap_square": "Konec úsečky: s čtvercovým přesahem",
+ "linejoin_bevel": "Styl napojení úseček: zkosené",
+ "linejoin_miter": "Styl napojení úseček: ostré",
+ "linejoin_round": "Styl napojení úseček: oblé",
+ "angle": "Změnit úhel natočení",
+ "blur": "Změnit rozostření",
+ "opacity": "Změnit průhlednost objektů",
+ "circle_cx": "Změnit souřadnici X středu kružnice",
+ "circle_cy": "Změnit souřadnici Y středu kružnice",
+ "circle_r": "Změnit poloměr kružnice",
+ "ellipse_cx": "Změnit souřadnici X středu elipsy",
+ "ellipse_cy": "Změnit souřadnici Y středu elipsy",
+ "ellipse_rx": "Změnit poloměr X elipsy",
+ "ellipse_ry": "Změnit poloměr Y elipsy",
+ "line_x1": "Změnit počáteční souřadnici X úsečky",
+ "line_x2": "Změnit koncovou souřadnici X úsečky",
+ "line_y1": "Změnit počáteční souřadnici Y úsečky",
+ "line_y2": "Změnit koncovou souřadnici X úsečky",
+ "rect_height": "Změnit výšku obdélníku",
+ "rect_width": "Změnit šířku obdélníku",
+ "corner_radius": "Změnit zaoblení obdélníku",
+ "image_width": "Změnit šířku dokumentu",
+ "image_height": "Změnit výšku dokumentu",
+ "image_url": "Změnit adresu URL",
+ "node_x": "Změnit souřadnici X uzlu",
+ "node_y": "Změnit souřadnici Y uzlu",
+ "seg_type": "Změnit typ segmentu",
+ "straight_segments": "úsečka",
+ "curve_segments": "křivka",
+ "text_contents": "Změnit text",
+ "font_family": "Změnit font",
+ "font_size": "Změnit velikost písma",
+ "bold": "Tučně",
+ "italic": "Kurzíva"
+ },
+ tools: {
+ "main_menu": "Hlavní menu",
+ "bkgnd_color_opac": "Změnit barvu a průhlednost pozadí",
+ "connector_no_arrow": "Bez šipky",
+ "fitToContent": "přizpůsobit obsahu",
+ "fit_to_all": "Přizpůsobit veškerému obsahu",
+ "fit_to_canvas": "Přizpůsobit stránce",
+ "fit_to_layer_content": "Přizpůsobit obsahu vrstvy",
+ "fit_to_sel": "Přizpůsobit výběru",
+ "align_relative_to": "Zarovnat relativně",
+ "relativeTo": "relatativně k:",
+ "page": "stránce",
+ "largest_object": "největšímu objektu",
+ "selected_objects": "zvoleným objektům",
+ "smallest_object": "nejmenšímu objektu",
+ "new_doc": "Nový dokument",
+ "open_doc": "Otevřít dokument",
+ "export_img": "Export",
+ "save_doc": "Uložit dokument",
+ "import_doc": "Importovat SVG",
+ "align_to_page": "Zarovnat element na stránku",
+ "align_bottom": "Zarovnat dolů",
+ "align_center": "Zarovnat nastřed",
+ "align_left": "Zarovnat doleva",
+ "align_middle": "Zarovnat nastřed",
+ "align_right": "Zarovnat doprava",
+ "align_top": "Zarovnat nahoru",
+ "mode_select": "Výběr a transformace objektů",
+ "mode_fhpath": "Kresba od ruky",
+ "mode_line": "Úsečka",
+ "mode_connect": "Spojit dva objekty",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Obdélník volnou rukou",
+ "mode_ellipse": "Elipsa",
+ "mode_circle": "Kružnice",
+ "mode_fhellipse": "Elipsa volnou rukou",
+ "mode_path": "Křivka",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text",
+ "mode_image": "Obrázek",
+ "mode_zoom": "Přiblížení",
+ "mode_eyedropper": "Kapátko",
+ "no_embed": "POZOR: Obrázek nelze uložit s dokumentem. Bude zobrazován z adresáře, kde se nyní nachází.",
+ "undo": "Zpět",
+ "redo": "Znovu",
+ "tool_source": "Upravovat SVG kód",
+ "wireframe_mode": "Zobrazit jen kostru",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Seskupit objekty",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Objekt na křivku",
+ "reorient_path": "Změna orientace křivky",
+ "ungroup": "Zrušit seskupení",
+ "docprops": "Vlastnosti dokumentu",
+ "imagelib": "Image Library",
+ "move_bottom": "Vrstvu úplně dospodu",
+ "move_top": "Vrstvu úplně nahoru",
+ "node_clone": "Vložit nový uzel",
+ "node_delete": "Ostranit uzel",
+ "node_link": "Provázat ovládací body uzlu",
+ "add_subpath": "Přidat další součást křivky",
+ "openclose_path": "Otevřít/zavřít součást křivky",
+ "source_save": "Uložit",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Vrstva",
+ "layers": "Layers",
+ "del": "Odstranit vrstvu",
+ "move_down": "Přesunout vrstvu níž",
+ "new": "Přidat vrstvu",
+ "rename": "Přejmenovat vrstvu",
+ "move_up": "Přesunout vrstvu výš",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Přesunout objekty do:",
+ "move_selected": "Přesunout objekty do jiné vrstvy"
+ },
+ config: {
+ "image_props": "Vlastnosti dokumentu",
+ "doc_title": "Název",
+ "doc_dims": "Vlastní velikost",
+ "included_images": "Vložené obrázky",
+ "image_opt_embed": "Vkládat do dokumentu",
+ "image_opt_ref": "Jen odkazem",
+ "editor_prefs": "Nastavení editoru",
+ "icon_size": "Velikost ikon",
+ "language": "Jazyk",
+ "background": "Obrázek v pozadí editoru",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Pozor: obrázek v pozadí nebude uložen jako součást dokumentu.",
+ "icon_large": "velké",
+ "icon_medium": "střední",
+ "icon_small": "malé",
+ "icon_xlarge": "největší",
+ "select_predefined": "vybrat předdefinovaný:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Nevhodná hodnota",
+ "noContentToFitTo": "Vyberte oblast pro přizpůsobení",
+ "dupeLayerName": "Taková vrstva už bohužel existuje",
+ "enterUniqueLayerName": "Zadejte prosím jedinečné jméno pro vrstvu",
+ "enterNewLayerName": "Zadejte prosím jméno pro novou vrstvu",
+ "layerHasThatName": "Vrstva už se tak jmenuje",
+ "QmoveElemsToLayer": "Opravdu chcete přesunout vybrané objekty do vrstvy '%s'?",
+ "QwantToClear": "Opravdu chcete smazat současný dokument?\nHistorie změn bude také smazána.",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Chyba v parsování zdrojového kódu SVG.\nChcete se vrátit k původnímu?",
+ "QignoreSourceChanges": "Opravdu chcete stornovat změny provedené v SVG kódu?",
+ "featNotSupported": "Tato vlastnost ještě není k dispozici",
+ "enterNewImgURL": "Vložte adresu URL, na které se nachází vkládaný obrázek",
+ "defsFailOnSave": "POZOR: Kvůli nedokonalosti Vašeho prohlížeče se mohou některé části dokumentu špatně vykreslovat (mohou chybět barevné přechody nebo některé objekty). Po uložení dokumentu by se ale vše mělo zobrazovat správně.",
+ "loadingImage": "Nahrávám obrázek ...",
+ "saveFromBrowser": "Použijte nabídku \"Uložit stránku jako ...\" ve Vašem prohlížeči pro uložení dokumentu do souboru %s.",
+ "noteTheseIssues": "Mohou se vyskytnout následující problémy: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.cy.js b/editor/locale/lang.cy.js
index 2f89f29d..5840123a 100644
--- a/editor/locale/lang.cy.js
+++ b/editor/locale/lang.cy.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "cy",
- dir: "ltr",
- common: {
- "ok": "Cadw",
- "cancel": "Canslo",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Cliciwch yma i lenwi newid lliw, sifft-cliciwch i newid lliw strôc",
- "zoom_level": "Newid lefel chwyddo",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Newid lliw llenwi",
- "stroke_color": "Newid lliw strôc",
- "stroke_style": "Newid arddull strôc diferyn",
- "stroke_width": "Lled strôc Newid",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Ongl cylchdro Newid",
- "blur": "Change gaussian blur value",
- "opacity": "Newid dewis Didreiddiad eitem",
- "circle_cx": "CX Newid cylch yn cydlynu",
- "circle_cy": "Newid cylch's cy gydgysylltu",
- "circle_r": "Newid radiws cylch yn",
- "ellipse_cx": "Newid Ellipse yn CX gydgysylltu",
- "ellipse_cy": "Newid Ellipse yn cydlynu cy",
- "ellipse_rx": "Radiws Newid Ellipse's x",
- "ellipse_ry": "Radiws Newid Ellipse yn y",
- "line_x1": "Newid llinell yn cychwyn x gydgysylltu",
- "line_x2": "Newid llinell yn diweddu x gydgysylltu",
- "line_y1": "Newid llinell ar y cychwyn yn cydlynu",
- "line_y2": "Newid llinell yn dod i ben y gydgysylltu",
- "rect_height": "Uchder petryal Newid",
- "rect_width": "Lled petryal Newid",
- "corner_radius": "Newid Hirsgwâr Corner Radiws",
- "image_width": "Lled delwedd Newid",
- "image_height": "Uchder delwedd Newid",
- "image_url": "Newid URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Cynnwys testun Newid",
- "font_family": "Newid Font Teulu",
- "font_size": "Newid Maint Ffont",
- "bold": "Testun Bras",
- "italic": "Italig Testun"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Newid lliw cefndir / Didreiddiad",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Ffit i Cynnwys",
- "fit_to_all": "Yn addas i bawb content",
- "fit_to_canvas": "Ffit i ofyn",
- "fit_to_layer_content": "Ffit cynnwys haen i",
- "fit_to_sel": "Yn addas at ddewis",
- "align_relative_to": "Alinio perthynas i ...",
- "relativeTo": "cymharol i:",
- "page": "tudalen",
- "largest_object": "gwrthrych mwyaf",
- "selected_objects": "gwrthrychau etholedig",
- "smallest_object": "lleiaf gwrthrych",
- "new_doc": "Newydd Delwedd",
- "open_doc": "Delwedd Agored",
- "export_img": "Export",
- "save_doc": "Cadw Delwedd",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Alinio Gwaelod",
- "align_center": "Alinio Center",
- "align_left": "Alinio Chwith",
- "align_middle": "Alinio Canol",
- "align_right": "Alinio Hawl",
- "align_top": "Alinio Top",
- "mode_select": "Dewiswch Offer",
- "mode_fhpath": "Teclyn pensil",
- "mode_line": "Llinell Offer",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Hand rhad ac am ddim Hirsgwâr",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Cylch",
- "mode_fhellipse": "Rhad ac am ddim Hand Ellipse",
- "mode_path": "Offer poly",
- "mode_shapelib": "Shape library",
- "mode_text": "Testun Offer",
- "mode_image": "Offer Delwedd",
- "mode_zoom": "Offer Chwyddo",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Dadwneud",
- "redo": "Ail-wneud",
- "tool_source": "Golygu Ffynhonnell",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elfennau Grŵp",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Elfennau Ungroup",
- "docprops": "Document Eiddo",
- "imagelib": "Image Library",
- "move_bottom": "Symud i'r Gwaelod",
- "move_top": "Symud i'r Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Cadw",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Dileu Haen",
- "move_down": "Symud Haen i Lawr",
- "new": "Haen Newydd",
- "rename": "Ail-enwi Haen",
- "move_up": "Symud Haen Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Rhagosodol Dewis:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "cy",
+ dir: "ltr",
+ common: {
+ "ok": "Cadw",
+ "cancel": "Canslo",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Cliciwch yma i lenwi newid lliw, sifft-cliciwch i newid lliw strôc",
+ "zoom_level": "Newid lefel chwyddo",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Newid lliw llenwi",
+ "stroke_color": "Newid lliw strôc",
+ "stroke_style": "Newid arddull strôc diferyn",
+ "stroke_width": "Lled strôc Newid",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Ongl cylchdro Newid",
+ "blur": "Change gaussian blur value",
+ "opacity": "Newid dewis Didreiddiad eitem",
+ "circle_cx": "CX Newid cylch yn cydlynu",
+ "circle_cy": "Newid cylch's cy gydgysylltu",
+ "circle_r": "Newid radiws cylch yn",
+ "ellipse_cx": "Newid Ellipse yn CX gydgysylltu",
+ "ellipse_cy": "Newid Ellipse yn cydlynu cy",
+ "ellipse_rx": "Radiws Newid Ellipse's x",
+ "ellipse_ry": "Radiws Newid Ellipse yn y",
+ "line_x1": "Newid llinell yn cychwyn x gydgysylltu",
+ "line_x2": "Newid llinell yn diweddu x gydgysylltu",
+ "line_y1": "Newid llinell ar y cychwyn yn cydlynu",
+ "line_y2": "Newid llinell yn dod i ben y gydgysylltu",
+ "rect_height": "Uchder petryal Newid",
+ "rect_width": "Lled petryal Newid",
+ "corner_radius": "Newid Hirsgwâr Corner Radiws",
+ "image_width": "Lled delwedd Newid",
+ "image_height": "Uchder delwedd Newid",
+ "image_url": "Newid URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Cynnwys testun Newid",
+ "font_family": "Newid Font Teulu",
+ "font_size": "Newid Maint Ffont",
+ "bold": "Testun Bras",
+ "italic": "Italig Testun"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Newid lliw cefndir / Didreiddiad",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Ffit i Cynnwys",
+ "fit_to_all": "Yn addas i bawb content",
+ "fit_to_canvas": "Ffit i ofyn",
+ "fit_to_layer_content": "Ffit cynnwys haen i",
+ "fit_to_sel": "Yn addas at ddewis",
+ "align_relative_to": "Alinio perthynas i ...",
+ "relativeTo": "cymharol i:",
+ "page": "tudalen",
+ "largest_object": "gwrthrych mwyaf",
+ "selected_objects": "gwrthrychau etholedig",
+ "smallest_object": "lleiaf gwrthrych",
+ "new_doc": "Newydd Delwedd",
+ "open_doc": "Delwedd Agored",
+ "export_img": "Export",
+ "save_doc": "Cadw Delwedd",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Alinio Gwaelod",
+ "align_center": "Alinio Center",
+ "align_left": "Alinio Chwith",
+ "align_middle": "Alinio Canol",
+ "align_right": "Alinio Hawl",
+ "align_top": "Alinio Top",
+ "mode_select": "Dewiswch Offer",
+ "mode_fhpath": "Teclyn pensil",
+ "mode_line": "Llinell Offer",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Hand rhad ac am ddim Hirsgwâr",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Cylch",
+ "mode_fhellipse": "Rhad ac am ddim Hand Ellipse",
+ "mode_path": "Offer poly",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Testun Offer",
+ "mode_image": "Offer Delwedd",
+ "mode_zoom": "Offer Chwyddo",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Dadwneud",
+ "redo": "Ail-wneud",
+ "tool_source": "Golygu Ffynhonnell",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elfennau Grŵp",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Elfennau Ungroup",
+ "docprops": "Document Eiddo",
+ "imagelib": "Image Library",
+ "move_bottom": "Symud i'r Gwaelod",
+ "move_top": "Symud i'r Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Cadw",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Dileu Haen",
+ "move_down": "Symud Haen i Lawr",
+ "new": "Haen Newydd",
+ "rename": "Ail-enwi Haen",
+ "move_up": "Symud Haen Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Rhagosodol Dewis:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.da.js b/editor/locale/lang.da.js
index 71cb12cb..a191d6df 100644
--- a/editor/locale/lang.da.js
+++ b/editor/locale/lang.da.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "da",
- dir: "ltr",
- common: {
- "ok": "Gemme",
- "cancel": "Annuller",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klik for at ændre fyldfarve, shift-klik for at ændre stregfarve",
- "zoom_level": "Skift zoomniveau",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Skift fyldfarve",
- "stroke_color": "Skift stregfarve",
- "stroke_style": "Skift slagtilfælde Dash stil",
- "stroke_width": "Skift slagtilfælde bredde",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Skift rotationsvinkel",
- "blur": "Change gaussian blur value",
- "opacity": "Skift valgte element opacitet",
- "circle_cx": "Skift cirklens cx koordinere",
- "circle_cy": "Skift cirklens cy koordinere",
- "circle_r": "Skift cirklens radius",
- "ellipse_cx": "Skift ellipse's cx koordinere",
- "ellipse_cy": "Skift ellipse's cy koordinere",
- "ellipse_rx": "Skift ellipse's x radius",
- "ellipse_ry": "Skift ellipse's y radius",
- "line_x1": "Skift linie's start x-koordinat",
- "line_x2": "Skift Line's slutter x-koordinat",
- "line_y1": "Skift linjens start y-koordinat",
- "line_y2": "Skift Line's slutter y-koordinat",
- "rect_height": "Skift rektangel højde",
- "rect_width": "Skift rektanglets bredde",
- "corner_radius": "Skift Rektangel Corner Radius",
- "image_width": "Skift billede bredde",
- "image_height": "Skift billede højde",
- "image_url": "Skift webadresse",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Skift tekst indhold",
- "font_family": "Skift Font Family",
- "font_size": "Skift skriftstørrelse",
- "bold": "Fed tekst",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Skift baggrundsfarve / uigennemsigtighed",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Tilpas til indhold",
- "fit_to_all": "Passer til alt indhold",
- "fit_to_canvas": "Tilpas til lærred",
- "fit_to_layer_content": "Tilpas til lag indhold",
- "fit_to_sel": "Tilpas til udvælgelse",
- "align_relative_to": "Juster i forhold til ...",
- "relativeTo": "i forhold til:",
- "page": "side",
- "largest_object": "største objekt",
- "selected_objects": "valgte objekter",
- "smallest_object": "mindste objekt",
- "new_doc": "Nyt billede",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Gem billede",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Juster Bottom",
- "align_center": "Centrer",
- "align_left": "Venstrejusteret",
- "align_middle": "Juster Mellemøsten",
- "align_right": "Højrejusteret",
- "align_top": "Juster Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rektangel",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Cirkel",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekstværktøj",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Fortryd",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Gruppe Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Opdel Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Flyt til bund",
- "move_top": "Flyt til toppen",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Gemme",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Slet Layer",
- "move_down": "Flyt lag ned",
- "new": "New Layer",
- "rename": "Omdøb Layer",
- "move_up": "Flyt Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Vælg foruddefinerede:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "da",
+ dir: "ltr",
+ common: {
+ "ok": "Gemme",
+ "cancel": "Annuller",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klik for at ændre fyldfarve, shift-klik for at ændre stregfarve",
+ "zoom_level": "Skift zoomniveau",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Skift fyldfarve",
+ "stroke_color": "Skift stregfarve",
+ "stroke_style": "Skift slagtilfælde Dash stil",
+ "stroke_width": "Skift slagtilfælde bredde",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Skift rotationsvinkel",
+ "blur": "Change gaussian blur value",
+ "opacity": "Skift valgte element opacitet",
+ "circle_cx": "Skift cirklens cx koordinere",
+ "circle_cy": "Skift cirklens cy koordinere",
+ "circle_r": "Skift cirklens radius",
+ "ellipse_cx": "Skift ellipse's cx koordinere",
+ "ellipse_cy": "Skift ellipse's cy koordinere",
+ "ellipse_rx": "Skift ellipse's x radius",
+ "ellipse_ry": "Skift ellipse's y radius",
+ "line_x1": "Skift linie's start x-koordinat",
+ "line_x2": "Skift Line's slutter x-koordinat",
+ "line_y1": "Skift linjens start y-koordinat",
+ "line_y2": "Skift Line's slutter y-koordinat",
+ "rect_height": "Skift rektangel højde",
+ "rect_width": "Skift rektanglets bredde",
+ "corner_radius": "Skift Rektangel Corner Radius",
+ "image_width": "Skift billede bredde",
+ "image_height": "Skift billede højde",
+ "image_url": "Skift webadresse",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Skift tekst indhold",
+ "font_family": "Skift Font Family",
+ "font_size": "Skift skriftstørrelse",
+ "bold": "Fed tekst",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Skift baggrundsfarve / uigennemsigtighed",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Tilpas til indhold",
+ "fit_to_all": "Passer til alt indhold",
+ "fit_to_canvas": "Tilpas til lærred",
+ "fit_to_layer_content": "Tilpas til lag indhold",
+ "fit_to_sel": "Tilpas til udvælgelse",
+ "align_relative_to": "Juster i forhold til ...",
+ "relativeTo": "i forhold til:",
+ "page": "side",
+ "largest_object": "største objekt",
+ "selected_objects": "valgte objekter",
+ "smallest_object": "mindste objekt",
+ "new_doc": "Nyt billede",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Gem billede",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Juster Bottom",
+ "align_center": "Centrer",
+ "align_left": "Venstrejusteret",
+ "align_middle": "Juster Mellemøsten",
+ "align_right": "Højrejusteret",
+ "align_top": "Juster Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rektangel",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Cirkel",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekstværktøj",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Fortryd",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Gruppe Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Opdel Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Flyt til bund",
+ "move_top": "Flyt til toppen",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Gemme",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Slet Layer",
+ "move_down": "Flyt lag ned",
+ "new": "New Layer",
+ "rename": "Omdøb Layer",
+ "move_up": "Flyt Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Vælg foruddefinerede:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.de.js b/editor/locale/lang.de.js
index 822f60a5..f06ecede 100644
--- a/editor/locale/lang.de.js
+++ b/editor/locale/lang.de.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "de",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Abbrechen",
- "key_backspace": "Rücktaste",
- "key_del": "Löschen",
- "key_down": "nach unten",
- "key_up": "nach oben",
- "more_opts": "Mehr Optionen",
- "url": "URL",
- "width": "Breite",
- "height": "Höhe"
- },
- misc: {
- "powered_by": "powered by"
- },
- ui: {
- "toggle_stroke_tools": "Zeige/Verberge weitere Linien-Werkzeuge",
- "palette_info": "Klick zum Ändern der Füllfarbe, Shift-Klick zum Ändern der Linienfarbe",
- "zoom_level": "vergrößern",
- "panel_drag": "Nach links/rechts ziehen, um die Größe vom Seitenpanel zu ändern"
- },
- properties: {
- "id": "Element identifizieren",
- "fill_color": "Füllfarbe ändern",
- "stroke_color": "Linienfarbe ändern",
- "stroke_style": "Linienstil ändern",
- "stroke_width": "Linienbreite ändern",
- "pos_x": "Ändere die X-Koordinate",
- "pos_y": "Ändere die Y-Koordinate",
- "linecap_butt": "Form der Linienendung: Stumpf",
- "linecap_round": "Form der Linienendung: Rund",
- "linecap_square": "Form der Linienendung: Rechteckig",
- "linejoin_bevel": "Zusammentreffen von zwei Linien: abgeschrägte Kante",
- "linejoin_miter": "Zusammentreffen von zwei Linien: Gehrung",
- "linejoin_round": "Zusammentreffen von zwei Linien: Rund",
- "angle": "Drehwinkel ändern",
- "blur": "Ändere Wert des Gaußschen Weichzeichners",
- "opacity": "Opazität des ausgewählten Objekts ändern",
- "circle_cx": "Kreiszentrum (cx) ändern",
- "circle_cy": "Kreiszentrum (cy) ändern",
- "circle_r": "Kreisradius (r) ändern",
- "ellipse_cx": "Ellipsenzentrum (cx) ändern",
- "ellipse_cy": "Ellipsenzentrum (cy) ändern",
- "ellipse_rx": "Ellipsenradius (x) ändern",
- "ellipse_ry": "Ellipsenradius (y) ändern",
- "line_x1": "X-Koordinate des Linienanfangs ändern",
- "line_x2": "X-Koordinate des Linienendes ändern",
- "line_y1": "Y-Koordinate des Linienanfangs ändern",
- "line_y2": "Y-Koordinate des Linienendes ändern",
- "rect_height": "Höhe des Rechtecks ändern",
- "rect_width": "Breite des Rechtecks ändern",
- "corner_radius": "Eckenradius des Rechtecks ändern",
- "image_width": "Bildbreite ändern",
- "image_height": "Bildhöhe ändern",
- "image_url": "URL ändern",
- "node_x": "Ändere die X-Koordinate des Knoten",
- "node_y": "Ändere die Y-Koordinate des Knoten",
- "seg_type": "Ändere den Typ des Segments",
- "straight_segments": "Gerade",
- "curve_segments": "Kurve",
- "text_contents": "Textinhalt erstellen und bearbeiten",
- "font_family": "Schriftart wählen",
- "font_size": "Schriftgröße einstellen",
- "bold": "Fetter Text",
- "italic": "Kursiver Text"
- },
- tools: {
- "main_menu": "Hauptmenü",
- "bkgnd_color_opac": "Hintergrundfarbe ändern / Opazität",
- "connector_no_arrow": "Kein Pfeil",
- "fitToContent": "An den Inhalt anpassen",
- "fit_to_all": "An gesamten Inhalt anpassen",
- "fit_to_canvas": "An die Zeichenfläche anpassen",
- "fit_to_layer_content": "An Inhalt der Ebene anpassen",
- "fit_to_sel": "An die Auswahl anpassen",
- "align_relative_to": "Relativ zu einem anderem Objekt ausrichten …",
- "relativeTo": "im Vergleich zu:",
- "page": "Seite",
- "largest_object": "größtes Objekt",
- "selected_objects": "gewählte Objekte",
- "smallest_object": "kleinstes Objekt",
- "new_doc": "Neues Bild",
- "open_doc": "Bild öffnen",
- "export_img": "Export",
- "save_doc": "Bild speichern",
- "import_doc": "Importiere SVG",
- "align_to_page": "Element an Seite ausrichten",
- "align_bottom": "Unten ausrichten",
- "align_center": "Zentriert ausrichten",
- "align_left": "Linksbündig ausrichten",
- "align_middle": "In der Mitte ausrichten",
- "align_right": "Rechtsbündig ausrichten",
- "align_top": "Oben ausrichten",
- "mode_select": "Objekte auswählen und verändern",
- "mode_fhpath": "Freihandlinien zeichnen",
- "mode_line": "Linien zeichnen",
- "mode_connect": "Verbinde zwei Objekte",
- "mode_rect": "Rechteck-Werkzeug",
- "mode_square": "Quadrat-Werkzeug",
- "mode_fhrect": "Freihand-Rechteck",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Kreis",
- "mode_fhellipse": "Freihand-Ellipse",
- "mode_path": "Pfad zeichnen",
- "mode_shapelib": "Form-Bibliothek",
- "mode_text": "Text erstellen und bearbeiten",
- "mode_image": "Bild einfügen",
- "mode_zoom": "Zoomfaktor vergrößern oder verringern",
- "mode_eyedropper": "Eye Dropper Werkzeug",
- "no_embed": "Hinweis: Dieses Bild kann nicht eingebettet werden. Eine Anzeige hängt von diesem Pfad ab.",
- "undo": "Rückgängig",
- "redo": "Wiederherstellen",
- "tool_source": "Quellcode bearbeiten",
- "wireframe_mode": "Drahtmodell-Modus",
- "toggle_grid": "Zeige/Verstecke Gitternetz",
- "clone": "Element(e) klonen",
- "del": "Element(e) löschen",
- "group_elements": "Element(e) gruppieren",
- "make_link": "Link erstellen",
- "set_link_url": "Link setzen (leer lassen zum Entfernen)",
- "to_path": "Gewähltes Objekt in einen Pfad konvertieren",
- "reorient_path": "Neuausrichtung des Pfades",
- "ungroup": "Gruppierung aufheben",
- "docprops": "Dokument-Eigenschaften",
- "imagelib": "Bilder-Bibliothek",
- "move_bottom": "Die gewählten Objekte nach ganz unten verschieben",
- "move_top": "Die gewählten Objekte nach ganz oben verschieben",
- "node_clone": "Klone den Knoten",
- "node_delete": "Lösche den Knoten",
- "node_link": "Gekoppelte oder separate Kontrollpunkte für die Bearbeitung des Pfades",
- "add_subpath": "Teilpfad hinzufügen",
- "openclose_path": "Öffne/Verbinde Unterpfad",
- "source_save": "Änderungen akzeptieren",
- "cut": "Ausschneiden",
- "copy": "Kopieren",
- "paste": "Einfügen",
- "paste_in_place": "Bei Originalposition einfügen",
- "delete": "Löschen",
- "group": "Gruppieren",
- "move_front": "Nach ganz oben verschieben",
- "move_up": "Hochschieben",
- "move_down": "Herunterschieben",
- "move_back": "Nach ganz unten verschieben"
- },
- layers: {
- "layer": "Ebene",
- "layers": "Ebenen",
- "del": "Ebene löschen",
- "move_down": "Ebene nach unten verschieben",
- "new": "Neue Ebene",
- "rename": "Ebene umbenennen",
- "move_up": "Ebene nach oben verschieben",
- "dupe": "Ebene duplizieren",
- "merge_down": "Nach unten zusammenführen",
- "merge_all": "Alle zusammenführen",
- "move_elems_to": "Verschiebe ausgewählte Objekte:",
- "move_selected": "Verschiebe ausgewählte Objekte auf eine andere Ebene"
- },
- config: {
- "image_props": "Bildeigenschaften",
- "doc_title": "Titel",
- "doc_dims": "Dimension der Zeichenfläche",
- "included_images": "Eingefügte Bilder",
- "image_opt_embed": "Daten einbetten (lokale Dateien)",
- "image_opt_ref": "Benutze die Dateireferenz",
- "editor_prefs": "Editor-Einstellungen",
- "icon_size": "Symbol-Abmessungen",
- "language": "Sprache",
- "background": "Editor-Hintergrund",
- "editor_img_url": "Bild-URL",
- "editor_bg_note": "Anmerkung: Der Hintergrund wird mit dem Bild nicht gespeichert.",
- "icon_large": "Groß",
- "icon_medium": "Mittel",
- "icon_small": "Klein",
- "icon_xlarge": "Sehr Groß",
- "select_predefined": "Auswahl einer vordefinierten:",
- "units_and_rulers": "Einheiten und Lineale",
- "show_rulers": "Zeige Lineale",
- "base_unit": "Basiseinheit:",
- "grid": "Gitternetz",
- "snapping_onoff": "Einrasten an/aus",
- "snapping_stepsize": "Einrastabstand:",
- "grid_color": "Gitterfarbe"
- },
- shape_cats: {
- "basic": "Standard",
- "object": "Objekte",
- "symbol": "Symbole",
- "arrow": "Pfeile",
- "flowchart": "Flussdiagramme",
- "animal": "Tiere",
- "game": "Spielkarten und Schach",
- "dialog_balloon": "Sprechblasen",
- "electronics": "Elektronik",
- "math": "Mathematik",
- "music": "Musik",
- "misc": "Sonstige",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Wähle eine Bild-Bibliothek aus",
- "show_list": "Zeige Bibliotheksliste",
- "import_single": "Einzelnes importieren",
- "import_multi": "Mehrere importieren",
- "open": "Als neues Dokument öffnen"
- },
- notification: {
- "invalidAttrValGiven": "Fehlerhafter Wert",
- "noContentToFitTo": "Kein Inhalt anzupassen",
- "dupeLayerName": "Eine Ebene hat bereits diesen Namen",
- "enterUniqueLayerName": "Verwenden Sie einen eindeutigen Namen für die Ebene",
- "enterNewLayerName": "Geben Sie bitte einen neuen Namen für die Ebene ein",
- "layerHasThatName": "Eine Ebene hat bereits diesen Namen",
- "QmoveElemsToLayer": "Verschiebe ausgewählte Objekte in die Ebene '%s'?",
- "QwantToClear": "Möchten Sie die Zeichnung löschen?\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!",
- "QwantToOpen": "Möchten Sie eine neue Datei öffnen?\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!",
- "QerrorsRevertToSource": "Es gibt Parser-Fehler in der SVG-Quelle.\nDie Original-SVG wiederherstellen?",
- "QignoreSourceChanges": "Sollen die Änderungen an der SVG-Quelle ignoriert werden?",
- "featNotSupported": "Diese Eigenschaft wird nicht unterstützt",
- "enterNewImgURL": "Geben Sie die URL für das neue Bild an",
- "defsFailOnSave": "Hinweis: Aufgrund eines Fehlers in Ihrem Browser kann dieses Bild falsch angezeigt werden (fehlende Gradienten oder Elemente). Es wird jedoch richtig angezeigt, sobald es gespeichert wird.",
- "loadingImage": "Bild wird geladen, bitte warten ...",
- "saveFromBrowser": "Wählen Sie \"Speichern unter ...\" in Ihrem Browser, um das Bild als Datei %s zu speichern.",
- "noteTheseIssues": "Beachten Sie außerdem die folgenden Probleme: ",
- "unsavedChanges": "Es sind nicht-gespeicherte Änderungen vorhanden.",
- "enterNewLinkURL": "Geben Sie die neue URL ein",
- "errorLoadingSVG": "Fehler: Kann SVG-Daten nicht laden",
- "URLloadFail": "Kann von dieser URL nicht laden",
- "retrieving": "Empfange \"%s\"..."
- },
- confirmSetStorage: {
- message: "Standardmäßig kann SVG-Edit Ihre Editor-Einstellungen " +
- "und die SVG-Inhalte lokal auf Ihrem Gerät abspeichern. So brauchen Sie " +
- "nicht jedes Mal die SVG neu laden. Falls Sie aus Datenschutzgründen " +
- "dies nicht wollen, " +
- "können Sie die Standardeinstellung im Folgenden ändern.",
- storagePrefsAndContent: "Editor-Einstellungen und SVG-Inhalt lokal speichern",
- storagePrefsOnly: "Nur Editor-Einstellungen lokal speichern",
- storagePrefs: "Editor-Einstellungen lokal speichern",
- storageNoPrefsOrContent: "Meine Editor-Einstellungen und die SVG-Inhalte nicht lokal speichern",
- storageNoPrefs: "Meine Editor-Einstellungen nicht lokal speichern",
- rememberLabel: "Auswahl merken?",
- rememberTooltip: "Wenn Sie die Einstellungen nicht speichern, wird sich die URL ändern, damit sie nicht noch einmal gefragt werden."
- }
+ lang: "de",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Abbrechen",
+ "key_backspace": "Rücktaste",
+ "key_del": "Löschen",
+ "key_down": "nach unten",
+ "key_up": "nach oben",
+ "more_opts": "Mehr Optionen",
+ "url": "URL",
+ "width": "Breite",
+ "height": "Höhe"
+ },
+ misc: {
+ "powered_by": "powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Zeige/Verberge weitere Linien-Werkzeuge",
+ "palette_info": "Klick zum Ändern der Füllfarbe, Shift-Klick zum Ändern der Linienfarbe",
+ "zoom_level": "vergrößern",
+ "panel_drag": "Nach links/rechts ziehen, um die Größe vom Seitenpanel zu ändern"
+ },
+ properties: {
+ "id": "Element identifizieren",
+ "fill_color": "Füllfarbe ändern",
+ "stroke_color": "Linienfarbe ändern",
+ "stroke_style": "Linienstil ändern",
+ "stroke_width": "Linienbreite ändern",
+ "pos_x": "Ändere die X-Koordinate",
+ "pos_y": "Ändere die Y-Koordinate",
+ "linecap_butt": "Form der Linienendung: Stumpf",
+ "linecap_round": "Form der Linienendung: Rund",
+ "linecap_square": "Form der Linienendung: Rechteckig",
+ "linejoin_bevel": "Zusammentreffen von zwei Linien: abgeschrägte Kante",
+ "linejoin_miter": "Zusammentreffen von zwei Linien: Gehrung",
+ "linejoin_round": "Zusammentreffen von zwei Linien: Rund",
+ "angle": "Drehwinkel ändern",
+ "blur": "Ändere Wert des Gaußschen Weichzeichners",
+ "opacity": "Opazität des ausgewählten Objekts ändern",
+ "circle_cx": "Kreiszentrum (cx) ändern",
+ "circle_cy": "Kreiszentrum (cy) ändern",
+ "circle_r": "Kreisradius (r) ändern",
+ "ellipse_cx": "Ellipsenzentrum (cx) ändern",
+ "ellipse_cy": "Ellipsenzentrum (cy) ändern",
+ "ellipse_rx": "Ellipsenradius (x) ändern",
+ "ellipse_ry": "Ellipsenradius (y) ändern",
+ "line_x1": "X-Koordinate des Linienanfangs ändern",
+ "line_x2": "X-Koordinate des Linienendes ändern",
+ "line_y1": "Y-Koordinate des Linienanfangs ändern",
+ "line_y2": "Y-Koordinate des Linienendes ändern",
+ "rect_height": "Höhe des Rechtecks ändern",
+ "rect_width": "Breite des Rechtecks ändern",
+ "corner_radius": "Eckenradius des Rechtecks ändern",
+ "image_width": "Bildbreite ändern",
+ "image_height": "Bildhöhe ändern",
+ "image_url": "URL ändern",
+ "node_x": "Ändere die X-Koordinate des Knoten",
+ "node_y": "Ändere die Y-Koordinate des Knoten",
+ "seg_type": "Ändere den Typ des Segments",
+ "straight_segments": "Gerade",
+ "curve_segments": "Kurve",
+ "text_contents": "Textinhalt erstellen und bearbeiten",
+ "font_family": "Schriftart wählen",
+ "font_size": "Schriftgröße einstellen",
+ "bold": "Fetter Text",
+ "italic": "Kursiver Text"
+ },
+ tools: {
+ "main_menu": "Hauptmenü",
+ "bkgnd_color_opac": "Hintergrundfarbe ändern / Opazität",
+ "connector_no_arrow": "Kein Pfeil",
+ "fitToContent": "An den Inhalt anpassen",
+ "fit_to_all": "An gesamten Inhalt anpassen",
+ "fit_to_canvas": "An die Zeichenfläche anpassen",
+ "fit_to_layer_content": "An Inhalt der Ebene anpassen",
+ "fit_to_sel": "An die Auswahl anpassen",
+ "align_relative_to": "Relativ zu einem anderem Objekt ausrichten …",
+ "relativeTo": "im Vergleich zu:",
+ "page": "Seite",
+ "largest_object": "größtes Objekt",
+ "selected_objects": "gewählte Objekte",
+ "smallest_object": "kleinstes Objekt",
+ "new_doc": "Neues Bild",
+ "open_doc": "Bild öffnen",
+ "export_img": "Export",
+ "save_doc": "Bild speichern",
+ "import_doc": "Importiere SVG",
+ "align_to_page": "Element an Seite ausrichten",
+ "align_bottom": "Unten ausrichten",
+ "align_center": "Zentriert ausrichten",
+ "align_left": "Linksbündig ausrichten",
+ "align_middle": "In der Mitte ausrichten",
+ "align_right": "Rechtsbündig ausrichten",
+ "align_top": "Oben ausrichten",
+ "mode_select": "Objekte auswählen und verändern",
+ "mode_fhpath": "Freihandlinien zeichnen",
+ "mode_line": "Linien zeichnen",
+ "mode_connect": "Verbinde zwei Objekte",
+ "mode_rect": "Rechteck-Werkzeug",
+ "mode_square": "Quadrat-Werkzeug",
+ "mode_fhrect": "Freihand-Rechteck",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Kreis",
+ "mode_fhellipse": "Freihand-Ellipse",
+ "mode_path": "Pfad zeichnen",
+ "mode_shapelib": "Form-Bibliothek",
+ "mode_text": "Text erstellen und bearbeiten",
+ "mode_image": "Bild einfügen",
+ "mode_zoom": "Zoomfaktor vergrößern oder verringern",
+ "mode_eyedropper": "Eye Dropper Werkzeug",
+ "no_embed": "Hinweis: Dieses Bild kann nicht eingebettet werden. Eine Anzeige hängt von diesem Pfad ab.",
+ "undo": "Rückgängig",
+ "redo": "Wiederherstellen",
+ "tool_source": "Quellcode bearbeiten",
+ "wireframe_mode": "Drahtmodell-Modus",
+ "toggle_grid": "Zeige/Verstecke Gitternetz",
+ "clone": "Element(e) klonen",
+ "del": "Element(e) löschen",
+ "group_elements": "Element(e) gruppieren",
+ "make_link": "Link erstellen",
+ "set_link_url": "Link setzen (leer lassen zum Entfernen)",
+ "to_path": "Gewähltes Objekt in einen Pfad konvertieren",
+ "reorient_path": "Neuausrichtung des Pfades",
+ "ungroup": "Gruppierung aufheben",
+ "docprops": "Dokument-Eigenschaften",
+ "imagelib": "Bilder-Bibliothek",
+ "move_bottom": "Die gewählten Objekte nach ganz unten verschieben",
+ "move_top": "Die gewählten Objekte nach ganz oben verschieben",
+ "node_clone": "Klone den Knoten",
+ "node_delete": "Lösche den Knoten",
+ "node_link": "Gekoppelte oder separate Kontrollpunkte für die Bearbeitung des Pfades",
+ "add_subpath": "Teilpfad hinzufügen",
+ "openclose_path": "Öffne/Verbinde Unterpfad",
+ "source_save": "Änderungen akzeptieren",
+ "cut": "Ausschneiden",
+ "copy": "Kopieren",
+ "paste": "Einfügen",
+ "paste_in_place": "Bei Originalposition einfügen",
+ "delete": "Löschen",
+ "group": "Gruppieren",
+ "move_front": "Nach ganz oben verschieben",
+ "move_up": "Hochschieben",
+ "move_down": "Herunterschieben",
+ "move_back": "Nach ganz unten verschieben"
+ },
+ layers: {
+ "layer": "Ebene",
+ "layers": "Ebenen",
+ "del": "Ebene löschen",
+ "move_down": "Ebene nach unten verschieben",
+ "new": "Neue Ebene",
+ "rename": "Ebene umbenennen",
+ "move_up": "Ebene nach oben verschieben",
+ "dupe": "Ebene duplizieren",
+ "merge_down": "Nach unten zusammenführen",
+ "merge_all": "Alle zusammenführen",
+ "move_elems_to": "Verschiebe ausgewählte Objekte:",
+ "move_selected": "Verschiebe ausgewählte Objekte auf eine andere Ebene"
+ },
+ config: {
+ "image_props": "Bildeigenschaften",
+ "doc_title": "Titel",
+ "doc_dims": "Dimension der Zeichenfläche",
+ "included_images": "Eingefügte Bilder",
+ "image_opt_embed": "Daten einbetten (lokale Dateien)",
+ "image_opt_ref": "Benutze die Dateireferenz",
+ "editor_prefs": "Editor-Einstellungen",
+ "icon_size": "Symbol-Abmessungen",
+ "language": "Sprache",
+ "background": "Editor-Hintergrund",
+ "editor_img_url": "Bild-URL",
+ "editor_bg_note": "Anmerkung: Der Hintergrund wird mit dem Bild nicht gespeichert.",
+ "icon_large": "Groß",
+ "icon_medium": "Mittel",
+ "icon_small": "Klein",
+ "icon_xlarge": "Sehr Groß",
+ "select_predefined": "Auswahl einer vordefinierten:",
+ "units_and_rulers": "Einheiten und Lineale",
+ "show_rulers": "Zeige Lineale",
+ "base_unit": "Basiseinheit:",
+ "grid": "Gitternetz",
+ "snapping_onoff": "Einrasten an/aus",
+ "snapping_stepsize": "Einrastabstand:",
+ "grid_color": "Gitterfarbe"
+ },
+ shape_cats: {
+ "basic": "Standard",
+ "object": "Objekte",
+ "symbol": "Symbole",
+ "arrow": "Pfeile",
+ "flowchart": "Flussdiagramme",
+ "animal": "Tiere",
+ "game": "Spielkarten und Schach",
+ "dialog_balloon": "Sprechblasen",
+ "electronics": "Elektronik",
+ "math": "Mathematik",
+ "music": "Musik",
+ "misc": "Sonstige",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Wähle eine Bild-Bibliothek aus",
+ "show_list": "Zeige Bibliotheksliste",
+ "import_single": "Einzelnes importieren",
+ "import_multi": "Mehrere importieren",
+ "open": "Als neues Dokument öffnen"
+ },
+ notification: {
+ "invalidAttrValGiven": "Fehlerhafter Wert",
+ "noContentToFitTo": "Kein Inhalt anzupassen",
+ "dupeLayerName": "Eine Ebene hat bereits diesen Namen",
+ "enterUniqueLayerName": "Verwenden Sie einen eindeutigen Namen für die Ebene",
+ "enterNewLayerName": "Geben Sie bitte einen neuen Namen für die Ebene ein",
+ "layerHasThatName": "Eine Ebene hat bereits diesen Namen",
+ "QmoveElemsToLayer": "Verschiebe ausgewählte Objekte in die Ebene '%s'?",
+ "QwantToClear": "Möchten Sie die Zeichnung löschen?\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!",
+ "QwantToOpen": "Möchten Sie eine neue Datei öffnen?\nDadurch wird auch die Rückgängig-Funktion zurückgesetzt!",
+ "QerrorsRevertToSource": "Es gibt Parser-Fehler in der SVG-Quelle.\nDie Original-SVG wiederherstellen?",
+ "QignoreSourceChanges": "Sollen die Änderungen an der SVG-Quelle ignoriert werden?",
+ "featNotSupported": "Diese Eigenschaft wird nicht unterstützt",
+ "enterNewImgURL": "Geben Sie die URL für das neue Bild an",
+ "defsFailOnSave": "Hinweis: Aufgrund eines Fehlers in Ihrem Browser kann dieses Bild falsch angezeigt werden (fehlende Gradienten oder Elemente). Es wird jedoch richtig angezeigt, sobald es gespeichert wird.",
+ "loadingImage": "Bild wird geladen, bitte warten ...",
+ "saveFromBrowser": "Wählen Sie \"Speichern unter ...\" in Ihrem Browser, um das Bild als Datei %s zu speichern.",
+ "noteTheseIssues": "Beachten Sie außerdem die folgenden Probleme: ",
+ "unsavedChanges": "Es sind nicht-gespeicherte Änderungen vorhanden.",
+ "enterNewLinkURL": "Geben Sie die neue URL ein",
+ "errorLoadingSVG": "Fehler: Kann SVG-Daten nicht laden",
+ "URLloadFail": "Kann von dieser URL nicht laden",
+ "retrieving": "Empfange \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "Standardmäßig kann SVG-Edit Ihre Editor-Einstellungen " +
+ "und die SVG-Inhalte lokal auf Ihrem Gerät abspeichern. So brauchen Sie " +
+ "nicht jedes Mal die SVG neu laden. Falls Sie aus Datenschutzgründen " +
+ "dies nicht wollen, " +
+ "können Sie die Standardeinstellung im Folgenden ändern.",
+ storagePrefsAndContent: "Editor-Einstellungen und SVG-Inhalt lokal speichern",
+ storagePrefsOnly: "Nur Editor-Einstellungen lokal speichern",
+ storagePrefs: "Editor-Einstellungen lokal speichern",
+ storageNoPrefsOrContent: "Meine Editor-Einstellungen und die SVG-Inhalte nicht lokal speichern",
+ storageNoPrefs: "Meine Editor-Einstellungen nicht lokal speichern",
+ rememberLabel: "Auswahl merken?",
+ rememberTooltip: "Wenn Sie die Einstellungen nicht speichern, wird sich die URL ändern, damit sie nicht noch einmal gefragt werden."
+ }
});
diff --git a/editor/locale/lang.el.js b/editor/locale/lang.el.js
index a5cbfb86..1be93ba5 100644
--- a/editor/locale/lang.el.js
+++ b/editor/locale/lang.el.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "el",
- dir: "ltr",
- common: {
- "ok": "Αποθηκεύω",
- "cancel": "Άκυρο",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Κάντε κλικ για να συμπληρώσετε την αλλαγή χρώματος, στροφή κλικ για να αλλάξετε το χρώμα εγκεφαλικό",
- "zoom_level": "Αλλαγή επίπεδο μεγέθυνσης",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Αλλαγή συμπληρώστε χρώμα",
- "stroke_color": "Αλλαγή χρώματος εγκεφαλικό",
- "stroke_style": "Αλλαγή στυλ παύλα εγκεφαλικό",
- "stroke_width": "Αλλαγή πλάτος γραμμής",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Αλλαγή γωνία περιστροφής",
- "blur": "Change gaussian blur value",
- "opacity": "Αλλαγή αδιαφάνεια επιλεγμένο σημείο",
- "circle_cx": "Cx Αλλαγή κύκλου συντονίζουν",
- "circle_cy": "Αλλαγή κύκλου cy συντονίζουν",
- "circle_r": "Αλλαγή ακτίνα κύκλου",
- "ellipse_cx": "Αλλαγή ellipse του CX συντονίζουν",
- "ellipse_cy": "Αλλαγή ellipse του cy συντονίζουν",
- "ellipse_rx": "X ακτίνα Αλλαγή ellipse του",
- "ellipse_ry": "Y ακτίνα Αλλαγή ellipse του",
- "line_x1": "Αλλαγή γραμμής εκκίνησης x συντονίζουν",
- "line_x2": "Αλλαγή γραμμής λήγει x συντονίζουν",
- "line_y1": "Αλλαγή γραμμής εκκίνησης y συντονίζουν",
- "line_y2": "Αλλαγή γραμμής λήγει y συντονίζουν",
- "rect_height": "Αλλαγή ύψος ορθογωνίου",
- "rect_width": "Αλλαγή πλάτους ορθογώνιο",
- "corner_radius": "Αλλαγή ορθογώνιο Corner Radius",
- "image_width": "Αλλαγή πλάτος εικόνας",
- "image_height": "Αλλαγή ύψος εικόνας",
- "image_url": "Αλλαγή URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Αλλαγή περιεχόμενο κειμένου",
- "font_family": "Αλλαγή γραμματοσειράς Οικογένεια",
- "font_size": "Αλλαγή μεγέθους γραμματοσειράς",
- "bold": "Bold Text",
- "italic": "Πλάγιους"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Αλλαγή χρώματος φόντου / αδιαφάνεια",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Ταιριάζει σε όλο το περιεχόμενο",
- "fit_to_canvas": "Προσαρμογή στο μουσαμά",
- "fit_to_layer_content": "Προσαρμογή στο περιεχόμενο στρώμα",
- "fit_to_sel": "Fit to επιλογή",
- "align_relative_to": "Στοίχιση σε σχέση με ...",
- "relativeTo": "σε σχέση με:",
- "page": "σελίδα",
- "largest_object": "μεγαλύτερο αντικείμενο",
- "selected_objects": "εκλέγεται αντικείμενα",
- "smallest_object": "μικρότερο αντικείμενο",
- "new_doc": "Νέα εικόνα",
- "open_doc": "Άνοιγμα εικόνας",
- "export_img": "Export",
- "save_doc": "Αποθήκευση εικόνας",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Στοίχισηκάτω",
- "align_center": "Στοίχισηστοκέντρο",
- "align_left": "Στοίχισηαριστερά",
- "align_middle": "Ευθυγράμμιση Μέση",
- "align_right": "Στοίχισηδεξιά",
- "align_top": "Στοίχισηπάνω",
- "mode_select": "Select Tool",
- "mode_fhpath": "Εργαλείομολυβιού",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Δωρεάν-Hand ορθογώνιο",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Κύκλος",
- "mode_fhellipse": "Δωρεάν-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Κείμενο Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Αναίρεση",
- "redo": "Redo",
- "tool_source": "Επεξεργασία Πηγή",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Ομάδα Στοιχεία",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Κατάργηση ομαδοποίησης Στοιχεία",
- "docprops": "Ιδιότητες εγγράφου",
- "imagelib": "Image Library",
- "move_bottom": "Μετακίνηση προς τα κάτω",
- "move_top": "Μετακίνηση στην αρχή",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Αποθηκεύω",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Διαγραφήστρώματος",
- "move_down": "Μετακίνηση Layer Down",
- "new": "Νέο Layer",
- "rename": "Μετονομασία Layer",
- "move_up": "Μετακίνηση Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Επιλογή προκαθορισμένων:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "el",
+ dir: "ltr",
+ common: {
+ "ok": "Αποθηκεύω",
+ "cancel": "Άκυρο",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Κάντε κλικ για να συμπληρώσετε την αλλαγή χρώματος, στροφή κλικ για να αλλάξετε το χρώμα εγκεφαλικό",
+ "zoom_level": "Αλλαγή επίπεδο μεγέθυνσης",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Αλλαγή συμπληρώστε χρώμα",
+ "stroke_color": "Αλλαγή χρώματος εγκεφαλικό",
+ "stroke_style": "Αλλαγή στυλ παύλα εγκεφαλικό",
+ "stroke_width": "Αλλαγή πλάτος γραμμής",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Αλλαγή γωνία περιστροφής",
+ "blur": "Change gaussian blur value",
+ "opacity": "Αλλαγή αδιαφάνεια επιλεγμένο σημείο",
+ "circle_cx": "Cx Αλλαγή κύκλου συντονίζουν",
+ "circle_cy": "Αλλαγή κύκλου cy συντονίζουν",
+ "circle_r": "Αλλαγή ακτίνα κύκλου",
+ "ellipse_cx": "Αλλαγή ellipse του CX συντονίζουν",
+ "ellipse_cy": "Αλλαγή ellipse του cy συντονίζουν",
+ "ellipse_rx": "X ακτίνα Αλλαγή ellipse του",
+ "ellipse_ry": "Y ακτίνα Αλλαγή ellipse του",
+ "line_x1": "Αλλαγή γραμμής εκκίνησης x συντονίζουν",
+ "line_x2": "Αλλαγή γραμμής λήγει x συντονίζουν",
+ "line_y1": "Αλλαγή γραμμής εκκίνησης y συντονίζουν",
+ "line_y2": "Αλλαγή γραμμής λήγει y συντονίζουν",
+ "rect_height": "Αλλαγή ύψος ορθογωνίου",
+ "rect_width": "Αλλαγή πλάτους ορθογώνιο",
+ "corner_radius": "Αλλαγή ορθογώνιο Corner Radius",
+ "image_width": "Αλλαγή πλάτος εικόνας",
+ "image_height": "Αλλαγή ύψος εικόνας",
+ "image_url": "Αλλαγή URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Αλλαγή περιεχόμενο κειμένου",
+ "font_family": "Αλλαγή γραμματοσειράς Οικογένεια",
+ "font_size": "Αλλαγή μεγέθους γραμματοσειράς",
+ "bold": "Bold Text",
+ "italic": "Πλάγιους"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Αλλαγή χρώματος φόντου / αδιαφάνεια",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Ταιριάζει σε όλο το περιεχόμενο",
+ "fit_to_canvas": "Προσαρμογή στο μουσαμά",
+ "fit_to_layer_content": "Προσαρμογή στο περιεχόμενο στρώμα",
+ "fit_to_sel": "Fit to επιλογή",
+ "align_relative_to": "Στοίχιση σε σχέση με ...",
+ "relativeTo": "σε σχέση με:",
+ "page": "σελίδα",
+ "largest_object": "μεγαλύτερο αντικείμενο",
+ "selected_objects": "εκλέγεται αντικείμενα",
+ "smallest_object": "μικρότερο αντικείμενο",
+ "new_doc": "Νέα εικόνα",
+ "open_doc": "Άνοιγμα εικόνας",
+ "export_img": "Export",
+ "save_doc": "Αποθήκευση εικόνας",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Στοίχισηκάτω",
+ "align_center": "Στοίχισηστοκέντρο",
+ "align_left": "Στοίχισηαριστερά",
+ "align_middle": "Ευθυγράμμιση Μέση",
+ "align_right": "Στοίχισηδεξιά",
+ "align_top": "Στοίχισηπάνω",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Εργαλείομολυβιού",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Δωρεάν-Hand ορθογώνιο",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Κύκλος",
+ "mode_fhellipse": "Δωρεάν-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Κείμενο Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Αναίρεση",
+ "redo": "Redo",
+ "tool_source": "Επεξεργασία Πηγή",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Ομάδα Στοιχεία",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Κατάργηση ομαδοποίησης Στοιχεία",
+ "docprops": "Ιδιότητες εγγράφου",
+ "imagelib": "Image Library",
+ "move_bottom": "Μετακίνηση προς τα κάτω",
+ "move_top": "Μετακίνηση στην αρχή",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Αποθηκεύω",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Διαγραφήστρώματος",
+ "move_down": "Μετακίνηση Layer Down",
+ "new": "Νέο Layer",
+ "rename": "Μετονομασία Layer",
+ "move_up": "Μετακίνηση Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Επιλογή προκαθορισμένων:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.en.js b/editor/locale/lang.en.js
index e5c6ca7c..90eed0d5 100644
--- a/editor/locale/lang.en.js
+++ b/editor/locale/lang.en.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "en",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click to change fill color, shift-click to change stroke color",
- "zoom_level": "Change zoom level",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change fill color",
- "stroke_color": "Change stroke color",
- "stroke_style": "Change stroke dash style",
- "stroke_width": "Change stroke width by 1, shift-click to change by 0.1",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change rotation angle",
- "blur": "Change gaussian blur value",
- "opacity": "Change selected item opacity",
- "circle_cx": "Change circle's cx coordinate",
- "circle_cy": "Change circle's cy coordinate",
- "circle_r": "Change circle's radius",
- "ellipse_cx": "Change ellipse's cx coordinate",
- "ellipse_cy": "Change ellipse's cy coordinate",
- "ellipse_rx": "Change ellipse's x radius",
- "ellipse_ry": "Change ellipse's y radius",
- "line_x1": "Change line's starting x coordinate",
- "line_x2": "Change line's ending x coordinate",
- "line_y1": "Change line's starting y coordinate",
- "line_y2": "Change line's ending y coordinate",
- "rect_height": "Change rectangle height",
- "rect_width": "Change rectangle width",
- "corner_radius": "Change Rectangle Corner Radius",
- "image_width": "Change image width",
- "image_height": "Change image height",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Change text contents",
- "font_family": "Change Font Family",
- "font_size": "Change Font Size",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color/opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit to all content",
- "fit_to_canvas": "Fit to canvas",
- "fit_to_layer_content": "Fit to layer content",
- "fit_to_sel": "Fit to selection",
- "align_relative_to": "Align relative to ...",
- "relativeTo": "relative to:",
- "page": "page",
- "largest_object": "largest object",
- "selected_objects": "selected objects",
- "smallest_object": "smallest object",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Align Middle",
- "align_right": "Align Right",
- "align_top": "Align Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Apply Changes",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Move Layer Up",
- "move_down": "Move Layer Down",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer \"%s\"?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "en",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click to change fill color, shift-click to change stroke color",
+ "zoom_level": "Change zoom level",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change fill color",
+ "stroke_color": "Change stroke color",
+ "stroke_style": "Change stroke dash style",
+ "stroke_width": "Change stroke width by 1, shift-click to change by 0.1",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change rotation angle",
+ "blur": "Change gaussian blur value",
+ "opacity": "Change selected item opacity",
+ "circle_cx": "Change circle's cx coordinate",
+ "circle_cy": "Change circle's cy coordinate",
+ "circle_r": "Change circle's radius",
+ "ellipse_cx": "Change ellipse's cx coordinate",
+ "ellipse_cy": "Change ellipse's cy coordinate",
+ "ellipse_rx": "Change ellipse's x radius",
+ "ellipse_ry": "Change ellipse's y radius",
+ "line_x1": "Change line's starting x coordinate",
+ "line_x2": "Change line's ending x coordinate",
+ "line_y1": "Change line's starting y coordinate",
+ "line_y2": "Change line's ending y coordinate",
+ "rect_height": "Change rectangle height",
+ "rect_width": "Change rectangle width",
+ "corner_radius": "Change Rectangle Corner Radius",
+ "image_width": "Change image width",
+ "image_height": "Change image height",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Change text contents",
+ "font_family": "Change Font Family",
+ "font_size": "Change Font Size",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color/opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit to all content",
+ "fit_to_canvas": "Fit to canvas",
+ "fit_to_layer_content": "Fit to layer content",
+ "fit_to_sel": "Fit to selection",
+ "align_relative_to": "Align relative to ...",
+ "relativeTo": "relative to:",
+ "page": "page",
+ "largest_object": "largest object",
+ "selected_objects": "selected objects",
+ "smallest_object": "smallest object",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Align Middle",
+ "align_right": "Align Right",
+ "align_top": "Align Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Apply Changes",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Move Layer Up",
+ "move_down": "Move Layer Down",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer \"%s\"?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.es.js b/editor/locale/lang.es.js
index 0158d636..eb56fb13 100644
--- a/editor/locale/lang.es.js
+++ b/editor/locale/lang.es.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "es",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Cancelar",
- "key_backspace": "retroceso",
- "key_del": "suprimir",
- "key_down": "abajo",
- "key_up": "arriba",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Mostrar/ocultar herramientas de trazo adicionales",
- "palette_info": "Haga clic para cambiar el color de relleno. Pulse Mayús y haga clic para cambiar el color del contorno.",
- "zoom_level": "Cambiar el nivel de zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Cambiar el color de relleno",
- "stroke_color": "Cambiar el color del contorno",
- "stroke_style": "Cambiar el estilo del trazo del contorno",
- "stroke_width": "Cambiar el grosor del contorno",
- "pos_x": "Cambiar la posición horizontal X",
- "pos_y": "Cambiar la posición vertical Y",
- "linecap_butt": "Final de la línea: en el nodo",
- "linecap_round": "Final de la línea: redondeada",
- "linecap_square": "Final de la línea: cuadrada",
- "linejoin_bevel": "Unión: biselada",
- "linejoin_miter": "Unión: recta",
- "linejoin_round": "Unión: redondeada",
- "angle": "Cambiar ángulo de rotación",
- "blur": "Ajustar desenfoque gausiano",
- "opacity": "Cambiar la opacidad del objeto seleccionado",
- "circle_cx": "Cambiar la posición horizonral CX del círculo",
- "circle_cy": "Cambiar la posición vertical CY del círculo",
- "circle_r": "Cambiar el radio del círculo",
- "ellipse_cx": "Cambiar la posición horizontal CX de la elipse",
- "ellipse_cy": "Cambiar la posición vertical CY de la elipse",
- "ellipse_rx": "Cambiar el radio horizontal X de la elipse",
- "ellipse_ry": "Cambiar el radio vertical Y de la elipse",
- "line_x1": "Cambiar la posición horizontal X del comienzo de la línea",
- "line_x2": "Cambiar la posición horizontal X del final de la línea",
- "line_y1": "Cambiar la posición vertical Y del comienzo de la línea",
- "line_y2": "Cambiar la posición vertical Y del final de la línea",
- "rect_height": "Cambiar la altura del rectángulo",
- "rect_width": "Cambiar el ancho rectángulo",
- "corner_radius": "Cambiar el radio de las esquinas del rectángulo",
- "image_width": "Cambiar el ancho de la imagen",
- "image_height": "Cambiar la altura de la imagen",
- "image_url": "Modificar URL",
- "node_x": "Cambiar la posición horizontal X del nodo",
- "node_y": "Cambiar la posición vertical Y del nodo",
- "seg_type": "Cambiar el tipo de segmento",
- "straight_segments": "Recta",
- "curve_segments": "Curva",
- "text_contents": "Modificar el texto",
- "font_family": "Tipo de fuente",
- "font_size": "Tamaño de la fuente",
- "bold": "Texto en negrita",
- "italic": "Texto en cursiva"
- },
- tools: {
- "main_menu": "Menú principal",
- "bkgnd_color_opac": "Cambiar color de fondo / opacidad",
- "connector_no_arrow": "Sin flecha",
- "fitToContent": "Ajustar al contenido",
- "fit_to_all": "Ajustar a todo el contenido",
- "fit_to_canvas": "Ajustar al lienzo",
- "fit_to_layer_content": "Ajustar al contenido de la capa",
- "fit_to_sel": "Ajustar a la selección",
- "align_relative_to": "Alinear con respecto a ...",
- "relativeTo": "en relación con:",
- "page": "Página",
- "largest_object": "El objeto más grande",
- "selected_objects": "Objetos seleccionados",
- "smallest_object": "El objeto más pequeño",
- "new_doc": "Nueva imagen",
- "open_doc": "Abrir imagen",
- "export_img": "Export",
- "save_doc": "Guardar imagen",
- "import_doc": "Importar un archivo SVG",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Alinear parte inferior",
- "align_center": "Centrar verticalmente",
- "align_left": "Alinear lado izquierdo",
- "align_middle": "Centrar horizontalmente",
- "align_right": "Alinear lado derecho",
- "align_top": "Alinear parte superior",
- "mode_select": "Herramienta de selección",
- "mode_fhpath": "Herramienta de lápiz",
- "mode_line": "Trazado de líneas",
- "mode_connect": "Conectar dos objetos",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Rectángulo a mano alzada",
- "mode_ellipse": "Elipse",
- "mode_circle": "Círculo",
- "mode_fhellipse": "Elipse a mano alzada",
- "mode_path": "Herramienta de trazado",
- "mode_shapelib": "Shape library",
- "mode_text": "Insertar texto",
- "mode_image": "Insertar imagen",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Herramienta de pipeta",
- "no_embed": "NOTA: La imagen no puede ser integrada. El contenido mostrado dependerá de la imagen ubicada en esta ruta. ",
- "undo": "Deshacer",
- "redo": "Rehacer",
- "tool_source": "Editar código fuente",
- "wireframe_mode": "Modo marco de alambre",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Agrupar objetos",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convertir a trazado",
- "reorient_path": "Reorientar el trazado",
- "ungroup": "Desagrupar objetos",
- "docprops": "Propiedades del documento",
- "imagelib": "Image Library",
- "move_bottom": "Mover abajo",
- "move_top": "Mover arriba",
- "node_clone": "Clonar nodo",
- "node_delete": "Suprimir nodo",
- "node_link": "Enlazar puntos de control",
- "add_subpath": "Añadir subtrazado",
- "openclose_path": "Open/close sub-path",
- "source_save": "Aplicar cambios",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Capa",
- "layers": "Layers",
- "del": "Suprimir capa",
- "move_down": "Mover la capa hacia abajo",
- "new": "Nueva capa",
- "rename": "Renombrar capa",
- "move_up": "Mover la capa hacia arriba",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Desplazar objetos a:",
- "move_selected": "Mover los objetos seleccionados a otra capa"
- },
- config: {
- "image_props": "Propiedades de la Imagen",
- "doc_title": "Título",
- "doc_dims": "Tamaño del lienzo",
- "included_images": "Imágenes integradas",
- "image_opt_embed": "Integrar imágenes en forma de datos (archivos locales)",
- "image_opt_ref": "Usar la referencia del archivo",
- "editor_prefs": "Preferencias del Editor",
- "icon_size": "Tamaño de los iconos",
- "language": "Idioma",
- "background": "Fondo del editor",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Nota: El fondo no se guardará junto con la imagen.",
- "icon_large": "Grande",
- "icon_medium": "Mediano",
- "icon_small": "Pequeño",
- "icon_xlarge": "Muy grande",
- "select_predefined": "Seleccionar predefinido:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Valor no válido",
- "noContentToFitTo": "No existe un contenido al que ajustarse.",
- "dupeLayerName": "¡Ya existe una capa con este nombre!",
- "enterUniqueLayerName": "Introduzca otro nombre distinto para la capa.",
- "enterNewLayerName": "Introduzca el nuevo nombre de la capa.",
- "layerHasThatName": "El nombre introducido es el nombre actual de la capa.",
- "QmoveElemsToLayer": "¿Desplazar los elementos seleccionados a la capa '%s'?",
- "QwantToClear": "¿Desea borrar el dibujo?\n¡El historial de acciones también se borrará!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Existen errores sintácticos en su código fuente SVG.\n¿Desea volver al código fuente SVG original?",
- "QignoreSourceChanges": "¿Desea ignorar los cambios realizados sobre el código fuente SVG?",
- "featNotSupported": "Función no compatible.",
- "enterNewImgURL": "Introduzca la nueva URL de la imagen.",
- "defsFailOnSave": "NOTA: Debido a un fallo de su navegador, es posible que la imagen aparezca de forma incorrecta (ciertas gradaciones o elementos podría perderse). La imagen aparecerá en su forma correcta una vez guardada.",
- "loadingImage": "Cargando imagen. Espere, por favor.",
- "saveFromBrowser": "Seleccionar \"Guardar como...\" en su navegador para guardar la imagen en forma de archivo %s.",
- "noteTheseIssues": "Existen además los problemas siguientes:",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "es",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Cancelar",
+ "key_backspace": "retroceso",
+ "key_del": "suprimir",
+ "key_down": "abajo",
+ "key_up": "arriba",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Mostrar/ocultar herramientas de trazo adicionales",
+ "palette_info": "Haga clic para cambiar el color de relleno. Pulse Mayús y haga clic para cambiar el color del contorno.",
+ "zoom_level": "Cambiar el nivel de zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Cambiar el color de relleno",
+ "stroke_color": "Cambiar el color del contorno",
+ "stroke_style": "Cambiar el estilo del trazo del contorno",
+ "stroke_width": "Cambiar el grosor del contorno",
+ "pos_x": "Cambiar la posición horizontal X",
+ "pos_y": "Cambiar la posición vertical Y",
+ "linecap_butt": "Final de la línea: en el nodo",
+ "linecap_round": "Final de la línea: redondeada",
+ "linecap_square": "Final de la línea: cuadrada",
+ "linejoin_bevel": "Unión: biselada",
+ "linejoin_miter": "Unión: recta",
+ "linejoin_round": "Unión: redondeada",
+ "angle": "Cambiar ángulo de rotación",
+ "blur": "Ajustar desenfoque gausiano",
+ "opacity": "Cambiar la opacidad del objeto seleccionado",
+ "circle_cx": "Cambiar la posición horizonral CX del círculo",
+ "circle_cy": "Cambiar la posición vertical CY del círculo",
+ "circle_r": "Cambiar el radio del círculo",
+ "ellipse_cx": "Cambiar la posición horizontal CX de la elipse",
+ "ellipse_cy": "Cambiar la posición vertical CY de la elipse",
+ "ellipse_rx": "Cambiar el radio horizontal X de la elipse",
+ "ellipse_ry": "Cambiar el radio vertical Y de la elipse",
+ "line_x1": "Cambiar la posición horizontal X del comienzo de la línea",
+ "line_x2": "Cambiar la posición horizontal X del final de la línea",
+ "line_y1": "Cambiar la posición vertical Y del comienzo de la línea",
+ "line_y2": "Cambiar la posición vertical Y del final de la línea",
+ "rect_height": "Cambiar la altura del rectángulo",
+ "rect_width": "Cambiar el ancho rectángulo",
+ "corner_radius": "Cambiar el radio de las esquinas del rectángulo",
+ "image_width": "Cambiar el ancho de la imagen",
+ "image_height": "Cambiar la altura de la imagen",
+ "image_url": "Modificar URL",
+ "node_x": "Cambiar la posición horizontal X del nodo",
+ "node_y": "Cambiar la posición vertical Y del nodo",
+ "seg_type": "Cambiar el tipo de segmento",
+ "straight_segments": "Recta",
+ "curve_segments": "Curva",
+ "text_contents": "Modificar el texto",
+ "font_family": "Tipo de fuente",
+ "font_size": "Tamaño de la fuente",
+ "bold": "Texto en negrita",
+ "italic": "Texto en cursiva"
+ },
+ tools: {
+ "main_menu": "Menú principal",
+ "bkgnd_color_opac": "Cambiar color de fondo / opacidad",
+ "connector_no_arrow": "Sin flecha",
+ "fitToContent": "Ajustar al contenido",
+ "fit_to_all": "Ajustar a todo el contenido",
+ "fit_to_canvas": "Ajustar al lienzo",
+ "fit_to_layer_content": "Ajustar al contenido de la capa",
+ "fit_to_sel": "Ajustar a la selección",
+ "align_relative_to": "Alinear con respecto a ...",
+ "relativeTo": "en relación con:",
+ "page": "Página",
+ "largest_object": "El objeto más grande",
+ "selected_objects": "Objetos seleccionados",
+ "smallest_object": "El objeto más pequeño",
+ "new_doc": "Nueva imagen",
+ "open_doc": "Abrir imagen",
+ "export_img": "Export",
+ "save_doc": "Guardar imagen",
+ "import_doc": "Importar un archivo SVG",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Alinear parte inferior",
+ "align_center": "Centrar verticalmente",
+ "align_left": "Alinear lado izquierdo",
+ "align_middle": "Centrar horizontalmente",
+ "align_right": "Alinear lado derecho",
+ "align_top": "Alinear parte superior",
+ "mode_select": "Herramienta de selección",
+ "mode_fhpath": "Herramienta de lápiz",
+ "mode_line": "Trazado de líneas",
+ "mode_connect": "Conectar dos objetos",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Rectángulo a mano alzada",
+ "mode_ellipse": "Elipse",
+ "mode_circle": "Círculo",
+ "mode_fhellipse": "Elipse a mano alzada",
+ "mode_path": "Herramienta de trazado",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Insertar texto",
+ "mode_image": "Insertar imagen",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Herramienta de pipeta",
+ "no_embed": "NOTA: La imagen no puede ser integrada. El contenido mostrado dependerá de la imagen ubicada en esta ruta. ",
+ "undo": "Deshacer",
+ "redo": "Rehacer",
+ "tool_source": "Editar código fuente",
+ "wireframe_mode": "Modo marco de alambre",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Agrupar objetos",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convertir a trazado",
+ "reorient_path": "Reorientar el trazado",
+ "ungroup": "Desagrupar objetos",
+ "docprops": "Propiedades del documento",
+ "imagelib": "Image Library",
+ "move_bottom": "Mover abajo",
+ "move_top": "Mover arriba",
+ "node_clone": "Clonar nodo",
+ "node_delete": "Suprimir nodo",
+ "node_link": "Enlazar puntos de control",
+ "add_subpath": "Añadir subtrazado",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Aplicar cambios",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Capa",
+ "layers": "Layers",
+ "del": "Suprimir capa",
+ "move_down": "Mover la capa hacia abajo",
+ "new": "Nueva capa",
+ "rename": "Renombrar capa",
+ "move_up": "Mover la capa hacia arriba",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Desplazar objetos a:",
+ "move_selected": "Mover los objetos seleccionados a otra capa"
+ },
+ config: {
+ "image_props": "Propiedades de la Imagen",
+ "doc_title": "Título",
+ "doc_dims": "Tamaño del lienzo",
+ "included_images": "Imágenes integradas",
+ "image_opt_embed": "Integrar imágenes en forma de datos (archivos locales)",
+ "image_opt_ref": "Usar la referencia del archivo",
+ "editor_prefs": "Preferencias del Editor",
+ "icon_size": "Tamaño de los iconos",
+ "language": "Idioma",
+ "background": "Fondo del editor",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Nota: El fondo no se guardará junto con la imagen.",
+ "icon_large": "Grande",
+ "icon_medium": "Mediano",
+ "icon_small": "Pequeño",
+ "icon_xlarge": "Muy grande",
+ "select_predefined": "Seleccionar predefinido:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Valor no válido",
+ "noContentToFitTo": "No existe un contenido al que ajustarse.",
+ "dupeLayerName": "¡Ya existe una capa con este nombre!",
+ "enterUniqueLayerName": "Introduzca otro nombre distinto para la capa.",
+ "enterNewLayerName": "Introduzca el nuevo nombre de la capa.",
+ "layerHasThatName": "El nombre introducido es el nombre actual de la capa.",
+ "QmoveElemsToLayer": "¿Desplazar los elementos seleccionados a la capa '%s'?",
+ "QwantToClear": "¿Desea borrar el dibujo?\n¡El historial de acciones también se borrará!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Existen errores sintácticos en su código fuente SVG.\n¿Desea volver al código fuente SVG original?",
+ "QignoreSourceChanges": "¿Desea ignorar los cambios realizados sobre el código fuente SVG?",
+ "featNotSupported": "Función no compatible.",
+ "enterNewImgURL": "Introduzca la nueva URL de la imagen.",
+ "defsFailOnSave": "NOTA: Debido a un fallo de su navegador, es posible que la imagen aparezca de forma incorrecta (ciertas gradaciones o elementos podría perderse). La imagen aparecerá en su forma correcta una vez guardada.",
+ "loadingImage": "Cargando imagen. Espere, por favor.",
+ "saveFromBrowser": "Seleccionar \"Guardar como...\" en su navegador para guardar la imagen en forma de archivo %s.",
+ "noteTheseIssues": "Existen además los problemas siguientes:",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.et.js b/editor/locale/lang.et.js
index 8cdb5351..1c6b768c 100644
--- a/editor/locale/lang.et.js
+++ b/editor/locale/lang.et.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "et",
- dir: "ltr",
- common: {
- "ok": "Salvestama",
- "cancel": "Tühista",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click muuta täitke värvi, Shift-nuppu, et muuta insult värvi",
- "zoom_level": "Muuda suumi taset",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Muuda täitke värvi",
- "stroke_color": "Muuda insult värvi",
- "stroke_style": "Muuda insult kriips stiil",
- "stroke_width": "Muuda insult laius",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Muuda Pöördenurk",
- "blur": "Change gaussian blur value",
- "opacity": "Muuda valitud elemendi läbipaistmatus",
- "circle_cx": "Muuda ringi's cx kooskõlastada",
- "circle_cy": "Muuda ringi's cy kooskõlastada",
- "circle_r": "Muuda ring on raadiusega",
- "ellipse_cx": "Muuda ellips's cx kooskõlastada",
- "ellipse_cy": "Muuda ellips's cy kooskõlastada",
- "ellipse_rx": "Muuda ellips's x raadius",
- "ellipse_ry": "Muuda ellips's y raadius",
- "line_x1": "Muuda rööbastee algab x-koordinaadi",
- "line_x2": "Muuda Line lõpeb x-koordinaadi",
- "line_y1": "Muuda rööbastee algab y-koordinaadi",
- "line_y2": "Muuda Line lõppenud y-koordinaadi",
- "rect_height": "Muuda ristküliku kõrgus",
- "rect_width": "Muuda ristküliku laius",
- "corner_radius": "Muuda ristkülik Nurgakabe Raadius",
- "image_width": "Muuda pilt laius",
- "image_height": "Muuda pilt kõrgus",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Muuda teksti sisu",
- "font_family": "Muutke Kirjasinperhe",
- "font_size": "Change font size",
- "bold": "Rasvane kiri",
- "italic": "Kursiiv"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Muuda tausta värvi / läbipaistmatus",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Sobita kogu sisu",
- "fit_to_canvas": "Sobita lõuend",
- "fit_to_layer_content": "Sobita kiht sisu",
- "fit_to_sel": "Fit valiku",
- "align_relative_to": "Viia võrreldes ...",
- "relativeTo": "võrreldes:",
- "page": "lehekülg",
- "largest_object": "suurim objekt",
- "selected_objects": "valitud objektide",
- "smallest_object": "väikseim objekt",
- "new_doc": "Uus pilt",
- "open_doc": "Pildi avamine",
- "export_img": "Export",
- "save_doc": "Salvesta pilt",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Viia Bottom",
- "align_center": "Keskele joondamine",
- "align_left": "Vasakjoondus",
- "align_middle": "Viia Lähis -",
- "align_right": "Paremjoondus",
- "align_top": "Viia Üles",
- "mode_select": "Vali Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Online-Hand Ristkülik",
- "mode_ellipse": "Ellips",
- "mode_circle": "Circle",
- "mode_fhellipse": "Online-Hand Ellips",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekst Tool",
- "mode_image": "Pilt Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Muuda Allikas",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Rühma elemendid",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Lõhu Elements",
- "docprops": "Dokumendi omadused",
- "imagelib": "Image Library",
- "move_bottom": "Liiguta alla",
- "move_top": "Liiguta üles",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Salvestama",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Kustuta Kiht",
- "move_down": "Liiguta kiht alla",
- "new": "Uus kiht",
- "rename": "Nimeta kiht",
- "move_up": "Liiguta kiht üles",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Valige eelmääratletud:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "et",
+ dir: "ltr",
+ common: {
+ "ok": "Salvestama",
+ "cancel": "Tühista",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click muuta täitke värvi, Shift-nuppu, et muuta insult värvi",
+ "zoom_level": "Muuda suumi taset",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Muuda täitke värvi",
+ "stroke_color": "Muuda insult värvi",
+ "stroke_style": "Muuda insult kriips stiil",
+ "stroke_width": "Muuda insult laius",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Muuda Pöördenurk",
+ "blur": "Change gaussian blur value",
+ "opacity": "Muuda valitud elemendi läbipaistmatus",
+ "circle_cx": "Muuda ringi's cx kooskõlastada",
+ "circle_cy": "Muuda ringi's cy kooskõlastada",
+ "circle_r": "Muuda ring on raadiusega",
+ "ellipse_cx": "Muuda ellips's cx kooskõlastada",
+ "ellipse_cy": "Muuda ellips's cy kooskõlastada",
+ "ellipse_rx": "Muuda ellips's x raadius",
+ "ellipse_ry": "Muuda ellips's y raadius",
+ "line_x1": "Muuda rööbastee algab x-koordinaadi",
+ "line_x2": "Muuda Line lõpeb x-koordinaadi",
+ "line_y1": "Muuda rööbastee algab y-koordinaadi",
+ "line_y2": "Muuda Line lõppenud y-koordinaadi",
+ "rect_height": "Muuda ristküliku kõrgus",
+ "rect_width": "Muuda ristküliku laius",
+ "corner_radius": "Muuda ristkülik Nurgakabe Raadius",
+ "image_width": "Muuda pilt laius",
+ "image_height": "Muuda pilt kõrgus",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Muuda teksti sisu",
+ "font_family": "Muutke Kirjasinperhe",
+ "font_size": "Change font size",
+ "bold": "Rasvane kiri",
+ "italic": "Kursiiv"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Muuda tausta värvi / läbipaistmatus",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Sobita kogu sisu",
+ "fit_to_canvas": "Sobita lõuend",
+ "fit_to_layer_content": "Sobita kiht sisu",
+ "fit_to_sel": "Fit valiku",
+ "align_relative_to": "Viia võrreldes ...",
+ "relativeTo": "võrreldes:",
+ "page": "lehekülg",
+ "largest_object": "suurim objekt",
+ "selected_objects": "valitud objektide",
+ "smallest_object": "väikseim objekt",
+ "new_doc": "Uus pilt",
+ "open_doc": "Pildi avamine",
+ "export_img": "Export",
+ "save_doc": "Salvesta pilt",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Viia Bottom",
+ "align_center": "Keskele joondamine",
+ "align_left": "Vasakjoondus",
+ "align_middle": "Viia Lähis -",
+ "align_right": "Paremjoondus",
+ "align_top": "Viia Üles",
+ "mode_select": "Vali Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Online-Hand Ristkülik",
+ "mode_ellipse": "Ellips",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Online-Hand Ellips",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekst Tool",
+ "mode_image": "Pilt Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Muuda Allikas",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Rühma elemendid",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Lõhu Elements",
+ "docprops": "Dokumendi omadused",
+ "imagelib": "Image Library",
+ "move_bottom": "Liiguta alla",
+ "move_top": "Liiguta üles",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Salvestama",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Kustuta Kiht",
+ "move_down": "Liiguta kiht alla",
+ "new": "Uus kiht",
+ "rename": "Nimeta kiht",
+ "move_up": "Liiguta kiht üles",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Valige eelmääratletud:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.fa.js b/editor/locale/lang.fa.js
index ab5224dc..832ccdd2 100644
--- a/editor/locale/lang.fa.js
+++ b/editor/locale/lang.fa.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "fa",
- dir: "ltr",
- common: {
- "ok": "تأیید",
- "cancel": "لغو",
- "key_backspace": "پس بر ",
- "key_del": "حذف ",
- "key_down": "پایین ",
- "key_up": "بالا ",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید",
- "zoom_level": "تغییر بزرگ نمایی",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "تغییر رنگ",
- "stroke_color": "تغییر رنگ لبه",
- "stroke_style": "تغییر نقطه چین لبه",
- "stroke_width": "تغییر عرض لبه",
- "pos_x": "تغییر مختصات X",
- "pos_y": "تغییر مختصات Y",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "تغییر زاویه چرخش",
- "blur": "Change gaussian blur value",
- "opacity": "تغییر تاری عنصر انتخاب شده",
- "circle_cx": "تغییر مختصات cx دایره",
- "circle_cy": "تغییر مختصات cy دایره",
- "circle_r": "تغییر شعاع دایره",
- "ellipse_cx": "تغییر مختصات cx بیضی",
- "ellipse_cy": "تغییر مختصات cy بیضی",
- "ellipse_rx": "تغییر شعاع rx بیضی",
- "ellipse_ry": "تغییر شعاع ry بیضی",
- "line_x1": "تغییر مختصات x آغاز خط",
- "line_x2": "تغییر مختصات x پایان خط",
- "line_y1": "تغییر مختصات y آغاز خط",
- "line_y2": "تغییر مختصات y پایان خط",
- "rect_height": "تغییر ارتفاع مستطیل",
- "rect_width": "تغییر عرض مستطیل",
- "corner_radius": "شعاع گوشه:",
- "image_width": "تغییر عرض تصویر",
- "image_height": "تغییر ارتفاع تصویر",
- "image_url": "تغییر نشانی وب (url)",
- "node_x": "تغییر مختصات x نقطه",
- "node_y": "تغییر مختصات y نقطه",
- "seg_type": "تغییر نوع قطعه (segment)",
- "straight_segments": "مستقیم",
- "curve_segments": "منحنی",
- "text_contents": "تغییر محتویات متن",
- "font_family": "تغییر خانواده قلم",
- "font_size": "تغییر اندازه قلم",
- "bold": "متن توپر ",
- "italic": "متن کج "
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "تغییر رنگ پس زمینه / تاری",
- "connector_no_arrow": "No arrow",
- "fitToContent": "هم اندازه شدن با محتوا",
- "fit_to_all": "هم اندازه شدن با همه محتویات",
- "fit_to_canvas": "هم اندازه شدن با صفحه مجازی (بوم)",
- "fit_to_layer_content": "هم اندازه شدن با محتوای لایه",
- "fit_to_sel": "هم اندازه شدن با اشیاء انتخاب شده",
- "align_relative_to": "تراز نسبت به ...",
- "relativeTo": "نسبت به:",
- "page": "صفحه",
- "largest_object": "بزرگترین شئ",
- "selected_objects": "اشیاء انتخاب شده",
- "smallest_object": "کوچکترین شئ",
- "new_doc": "تصویر جدید ",
- "open_doc": "باز کردن تصویر ",
- "export_img": "Export",
- "save_doc": "ذخیره تصویر ",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "تراز پایین",
- "align_center": "وسط چین",
- "align_left": "چپ چین",
- "align_middle": "تراز میانه",
- "align_right": "راست چین",
- "align_top": "تراز بالا",
- "mode_select": "ابزار انتخاب ",
- "mode_fhpath": "ابزار مداد ",
- "mode_line": "ابزار خط ",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "مستطیل با قابلیت تغییر پویا",
- "mode_ellipse": "بیضی",
- "mode_circle": "دایره",
- "mode_fhellipse": "بیضی با قابلیت تغییر پویا",
- "mode_path": "ابزار مسیر ",
- "mode_shapelib": "Shape library",
- "mode_text": "ابزار متن ",
- "mode_image": "ابزار تصویر ",
- "mode_zoom": "ابزار بزرگ نمایی ",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "واگرد ",
- "redo": "ازنو ",
- "tool_source": "ویرایش منبع ",
- "wireframe_mode": "حالت نمایش لبه ها ",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "قرار دادن عناصر در گروه ",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "تبدیل به مسیر",
- "reorient_path": "جهت دهی مجدد مسیر",
- "ungroup": "خارج کردن عناصر از گروه ",
- "docprops": "مشخصات سند ",
- "imagelib": "Image Library",
- "move_bottom": "انتقال به پایین ترین ",
- "move_top": "انتقال به بالاترین ",
- "node_clone": "ایجاد کپی از نقطه",
- "node_delete": "حذف نقطه",
- "node_link": "پیوند دادن نقاط کنترل",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "اعمال تغییرات",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete ": "حذف",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "لایه",
- "layers": "Layers",
- "del": "حذف لایه",
- "move_down": "انتقال لایه به پایین",
- "new": "لایه جدید",
- "rename": "تغییر نام لایه",
- "move_up": "انتقال لایه به بالا",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "انتقال عناصر به:",
- "move_selected": "انتقال عناصر انتخاب شده به یک لایه متفاوت"
- },
- config: {
- "image_props": "مشخصات تصویر",
- "doc_title": "عنوان",
- "doc_dims": "ابعاد صفحه مجازی (بوم)",
- "included_images": "تصاویر گنجانده شده",
- "image_opt_embed": "داده های جای داده شده (پرونده های محلی)",
- "image_opt_ref": "استفاده از ارجاع به پرونده",
- "editor_prefs": "تنظیمات ویراستار",
- "icon_size": "اندازه شمایل",
- "language": "زبان",
- "background": "پس زمینه ویراستار",
- "editor_img_url": "Image URL",
- "editor_bg_note": "توجه: پس زمینه همراه تصویر ذخیره نخواهد شد.",
- "icon_large": "بزرگ",
- "icon_medium": "متوسط",
- "icon_small": "کوچک",
- "icon_xlarge": "خیلی بزرگ",
- "select_predefined": "از پیش تعریف شده را انتخاب کنید:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "مقدار داده شده نامعتبر است",
- "noContentToFitTo": "محتوایی برای هم اندازه شدن وجود ندارد",
- "dupeLayerName": "لایه ای با آن نام وجود دارد!",
- "enterUniqueLayerName": "لطفا یک نام لایه یکتا انتخاب کنید",
- "enterNewLayerName": "لطفا نام لایه جدید را وارد کنید",
- "layerHasThatName": "لایه از قبل آن نام را دارد",
- "QmoveElemsToLayer": "عناصر انتخاب شده به لایه '%s' منتقل شوند؟",
- "QwantToClear": "آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\nبه منبع SVG اصلی بازگردانده شود؟",
- "QignoreSourceChanges": "تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟",
- "featNotSupported": "این ویژگی پشتیبانی نشده است",
- "enterNewImgURL": "نشانی وب (url) تصویر جدید را وارد کنید",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "fa",
+ dir: "ltr",
+ common: {
+ "ok": "تأیید",
+ "cancel": "لغو",
+ "key_backspace": "پس بر ",
+ "key_del": "حذف ",
+ "key_down": "پایین ",
+ "key_up": "بالا ",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید",
+ "zoom_level": "تغییر بزرگ نمایی",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "تغییر رنگ",
+ "stroke_color": "تغییر رنگ لبه",
+ "stroke_style": "تغییر نقطه چین لبه",
+ "stroke_width": "تغییر عرض لبه",
+ "pos_x": "تغییر مختصات X",
+ "pos_y": "تغییر مختصات Y",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "تغییر زاویه چرخش",
+ "blur": "Change gaussian blur value",
+ "opacity": "تغییر تاری عنصر انتخاب شده",
+ "circle_cx": "تغییر مختصات cx دایره",
+ "circle_cy": "تغییر مختصات cy دایره",
+ "circle_r": "تغییر شعاع دایره",
+ "ellipse_cx": "تغییر مختصات cx بیضی",
+ "ellipse_cy": "تغییر مختصات cy بیضی",
+ "ellipse_rx": "تغییر شعاع rx بیضی",
+ "ellipse_ry": "تغییر شعاع ry بیضی",
+ "line_x1": "تغییر مختصات x آغاز خط",
+ "line_x2": "تغییر مختصات x پایان خط",
+ "line_y1": "تغییر مختصات y آغاز خط",
+ "line_y2": "تغییر مختصات y پایان خط",
+ "rect_height": "تغییر ارتفاع مستطیل",
+ "rect_width": "تغییر عرض مستطیل",
+ "corner_radius": "شعاع گوشه:",
+ "image_width": "تغییر عرض تصویر",
+ "image_height": "تغییر ارتفاع تصویر",
+ "image_url": "تغییر نشانی وب (url)",
+ "node_x": "تغییر مختصات x نقطه",
+ "node_y": "تغییر مختصات y نقطه",
+ "seg_type": "تغییر نوع قطعه (segment)",
+ "straight_segments": "مستقیم",
+ "curve_segments": "منحنی",
+ "text_contents": "تغییر محتویات متن",
+ "font_family": "تغییر خانواده قلم",
+ "font_size": "تغییر اندازه قلم",
+ "bold": "متن توپر ",
+ "italic": "متن کج "
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "تغییر رنگ پس زمینه / تاری",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "هم اندازه شدن با محتوا",
+ "fit_to_all": "هم اندازه شدن با همه محتویات",
+ "fit_to_canvas": "هم اندازه شدن با صفحه مجازی (بوم)",
+ "fit_to_layer_content": "هم اندازه شدن با محتوای لایه",
+ "fit_to_sel": "هم اندازه شدن با اشیاء انتخاب شده",
+ "align_relative_to": "تراز نسبت به ...",
+ "relativeTo": "نسبت به:",
+ "page": "صفحه",
+ "largest_object": "بزرگترین شئ",
+ "selected_objects": "اشیاء انتخاب شده",
+ "smallest_object": "کوچکترین شئ",
+ "new_doc": "تصویر جدید ",
+ "open_doc": "باز کردن تصویر ",
+ "export_img": "Export",
+ "save_doc": "ذخیره تصویر ",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "تراز پایین",
+ "align_center": "وسط چین",
+ "align_left": "چپ چین",
+ "align_middle": "تراز میانه",
+ "align_right": "راست چین",
+ "align_top": "تراز بالا",
+ "mode_select": "ابزار انتخاب ",
+ "mode_fhpath": "ابزار مداد ",
+ "mode_line": "ابزار خط ",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "مستطیل با قابلیت تغییر پویا",
+ "mode_ellipse": "بیضی",
+ "mode_circle": "دایره",
+ "mode_fhellipse": "بیضی با قابلیت تغییر پویا",
+ "mode_path": "ابزار مسیر ",
+ "mode_shapelib": "Shape library",
+ "mode_text": "ابزار متن ",
+ "mode_image": "ابزار تصویر ",
+ "mode_zoom": "ابزار بزرگ نمایی ",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "واگرد ",
+ "redo": "ازنو ",
+ "tool_source": "ویرایش منبع ",
+ "wireframe_mode": "حالت نمایش لبه ها ",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "قرار دادن عناصر در گروه ",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "تبدیل به مسیر",
+ "reorient_path": "جهت دهی مجدد مسیر",
+ "ungroup": "خارج کردن عناصر از گروه ",
+ "docprops": "مشخصات سند ",
+ "imagelib": "Image Library",
+ "move_bottom": "انتقال به پایین ترین ",
+ "move_top": "انتقال به بالاترین ",
+ "node_clone": "ایجاد کپی از نقطه",
+ "node_delete": "حذف نقطه",
+ "node_link": "پیوند دادن نقاط کنترل",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "اعمال تغییرات",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete ": "حذف",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "لایه",
+ "layers": "Layers",
+ "del": "حذف لایه",
+ "move_down": "انتقال لایه به پایین",
+ "new": "لایه جدید",
+ "rename": "تغییر نام لایه",
+ "move_up": "انتقال لایه به بالا",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "انتقال عناصر به:",
+ "move_selected": "انتقال عناصر انتخاب شده به یک لایه متفاوت"
+ },
+ config: {
+ "image_props": "مشخصات تصویر",
+ "doc_title": "عنوان",
+ "doc_dims": "ابعاد صفحه مجازی (بوم)",
+ "included_images": "تصاویر گنجانده شده",
+ "image_opt_embed": "داده های جای داده شده (پرونده های محلی)",
+ "image_opt_ref": "استفاده از ارجاع به پرونده",
+ "editor_prefs": "تنظیمات ویراستار",
+ "icon_size": "اندازه شمایل",
+ "language": "زبان",
+ "background": "پس زمینه ویراستار",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "توجه: پس زمینه همراه تصویر ذخیره نخواهد شد.",
+ "icon_large": "بزرگ",
+ "icon_medium": "متوسط",
+ "icon_small": "کوچک",
+ "icon_xlarge": "خیلی بزرگ",
+ "select_predefined": "از پیش تعریف شده را انتخاب کنید:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "مقدار داده شده نامعتبر است",
+ "noContentToFitTo": "محتوایی برای هم اندازه شدن وجود ندارد",
+ "dupeLayerName": "لایه ای با آن نام وجود دارد!",
+ "enterUniqueLayerName": "لطفا یک نام لایه یکتا انتخاب کنید",
+ "enterNewLayerName": "لطفا نام لایه جدید را وارد کنید",
+ "layerHasThatName": "لایه از قبل آن نام را دارد",
+ "QmoveElemsToLayer": "عناصر انتخاب شده به لایه '%s' منتقل شوند؟",
+ "QwantToClear": "آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\nبه منبع SVG اصلی بازگردانده شود؟",
+ "QignoreSourceChanges": "تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟",
+ "featNotSupported": "این ویژگی پشتیبانی نشده است",
+ "enterNewImgURL": "نشانی وب (url) تصویر جدید را وارد کنید",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.fi.js b/editor/locale/lang.fi.js
index ed72c1a0..36dc9e2d 100644
--- a/editor/locale/lang.fi.js
+++ b/editor/locale/lang.fi.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "fi",
- dir: "ltr",
- common: {
- "ok": "Tallentaa",
- "cancel": "Peruuta",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klikkaa muuttaa täyttöväri, Shift-click vaihtaa aivohalvauksen väriä",
- "zoom_level": "Muuta suurennustaso",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Muuta täyttöväri",
- "stroke_color": "Muuta aivohalvaus väri",
- "stroke_style": "Muuta aivohalvaus Dash tyyli",
- "stroke_width": "Muuta aivohalvaus leveys",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Muuta kiertokulma",
- "blur": "Change gaussian blur value",
- "opacity": "Muuta valitun kohteen läpinäkyvyys",
- "circle_cx": "Muuta Circlen CX koordinoida",
- "circle_cy": "Muuta Circlen CY koordinoida",
- "circle_r": "Muuta ympyrän säde",
- "ellipse_cx": "Muuta ellipsi's CX koordinoida",
- "ellipse_cy": "Muuta ellipsi's CY koordinoida",
- "ellipse_rx": "Muuta ellipsi's x säde",
- "ellipse_ry": "Muuta ellipsi n y säde",
- "line_x1": "Muuta Linen alkaa x-koordinaatti",
- "line_x2": "Muuta Linen päättyy x koordinoida",
- "line_y1": "Muuta Linen alkaa y-koordinaatti",
- "line_y2": "Muuta Linen päättyy y koordinoida",
- "rect_height": "Muuta suorakaiteen korkeus",
- "rect_width": "Muuta suorakaiteen leveys",
- "corner_radius": "Muuta suorakaide Corner Säde",
- "image_width": "Muuta kuvan leveys",
- "image_height": "Muuta kuvan korkeus",
- "image_url": "Muuta URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Muuta tekstin sisältö",
- "font_family": "Muuta Font Family",
- "font_size": "Muuta fontin kokoa",
- "bold": "Lihavoitu teksti",
- "italic": "Kursivoitu"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Vaihda taustaväri / sameuden",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Sovita Content",
- "fit_to_all": "Sovita kaikki content",
- "fit_to_canvas": "Sovita kangas",
- "fit_to_layer_content": "Sovita kerros sisältöön",
- "fit_to_sel": "Sovita valinta",
- "align_relative_to": "Kohdista suhteessa ...",
- "relativeTo": "suhteessa:",
- "page": "sivulta",
- "largest_object": "Suurin kohde",
- "selected_objects": "valittujen objektien",
- "smallest_object": "pienin kohde",
- "new_doc": "Uusi kuva",
- "open_doc": "Avaa kuva",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Keskitä",
- "align_left": "Tasaa vasemmalle",
- "align_middle": "Kohdista Lähi",
- "align_right": "Tasaa oikealle",
- "align_top": "Kohdista Top",
- "mode_select": "Valitse työkalu",
- "mode_fhpath": "Kynätyökalu",
- "mode_line": "Viivatyökalulla",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand suorakaide",
- "mode_ellipse": "Soikion",
- "mode_circle": "Ympyrään",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Työkalua",
- "mode_image": "Image Tool",
- "mode_zoom": "Suurennustyökalu",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Kumoa",
- "redo": "Tulppaamalla ilmakanavan",
- "tool_source": "Muokkaa lähdekoodipaketti",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Tuoteryhmään Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Asiakirjan ominaisuudet",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Tallentaa",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Poista Layer",
- "move_down": "Siirrä Layer alas",
- "new": "New Layer",
- "rename": "Nimeä Layer",
- "move_up": "Siirrä Layer",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Valitse ennalta:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "fi",
+ dir: "ltr",
+ common: {
+ "ok": "Tallentaa",
+ "cancel": "Peruuta",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klikkaa muuttaa täyttöväri, Shift-click vaihtaa aivohalvauksen väriä",
+ "zoom_level": "Muuta suurennustaso",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Muuta täyttöväri",
+ "stroke_color": "Muuta aivohalvaus väri",
+ "stroke_style": "Muuta aivohalvaus Dash tyyli",
+ "stroke_width": "Muuta aivohalvaus leveys",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Muuta kiertokulma",
+ "blur": "Change gaussian blur value",
+ "opacity": "Muuta valitun kohteen läpinäkyvyys",
+ "circle_cx": "Muuta Circlen CX koordinoida",
+ "circle_cy": "Muuta Circlen CY koordinoida",
+ "circle_r": "Muuta ympyrän säde",
+ "ellipse_cx": "Muuta ellipsi's CX koordinoida",
+ "ellipse_cy": "Muuta ellipsi's CY koordinoida",
+ "ellipse_rx": "Muuta ellipsi's x säde",
+ "ellipse_ry": "Muuta ellipsi n y säde",
+ "line_x1": "Muuta Linen alkaa x-koordinaatti",
+ "line_x2": "Muuta Linen päättyy x koordinoida",
+ "line_y1": "Muuta Linen alkaa y-koordinaatti",
+ "line_y2": "Muuta Linen päättyy y koordinoida",
+ "rect_height": "Muuta suorakaiteen korkeus",
+ "rect_width": "Muuta suorakaiteen leveys",
+ "corner_radius": "Muuta suorakaide Corner Säde",
+ "image_width": "Muuta kuvan leveys",
+ "image_height": "Muuta kuvan korkeus",
+ "image_url": "Muuta URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Muuta tekstin sisältö",
+ "font_family": "Muuta Font Family",
+ "font_size": "Muuta fontin kokoa",
+ "bold": "Lihavoitu teksti",
+ "italic": "Kursivoitu"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Vaihda taustaväri / sameuden",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Sovita Content",
+ "fit_to_all": "Sovita kaikki content",
+ "fit_to_canvas": "Sovita kangas",
+ "fit_to_layer_content": "Sovita kerros sisältöön",
+ "fit_to_sel": "Sovita valinta",
+ "align_relative_to": "Kohdista suhteessa ...",
+ "relativeTo": "suhteessa:",
+ "page": "sivulta",
+ "largest_object": "Suurin kohde",
+ "selected_objects": "valittujen objektien",
+ "smallest_object": "pienin kohde",
+ "new_doc": "Uusi kuva",
+ "open_doc": "Avaa kuva",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Keskitä",
+ "align_left": "Tasaa vasemmalle",
+ "align_middle": "Kohdista Lähi",
+ "align_right": "Tasaa oikealle",
+ "align_top": "Kohdista Top",
+ "mode_select": "Valitse työkalu",
+ "mode_fhpath": "Kynätyökalu",
+ "mode_line": "Viivatyökalulla",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand suorakaide",
+ "mode_ellipse": "Soikion",
+ "mode_circle": "Ympyrään",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Työkalua",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Suurennustyökalu",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Kumoa",
+ "redo": "Tulppaamalla ilmakanavan",
+ "tool_source": "Muokkaa lähdekoodipaketti",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Tuoteryhmään Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Asiakirjan ominaisuudet",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Tallentaa",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Poista Layer",
+ "move_down": "Siirrä Layer alas",
+ "new": "New Layer",
+ "rename": "Nimeä Layer",
+ "move_up": "Siirrä Layer",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Valitse ennalta:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.fr.js b/editor/locale/lang.fr.js
index 4e0f9a4b..0ee8d8e6 100644
--- a/editor/locale/lang.fr.js
+++ b/editor/locale/lang.fr.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "fr",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Annuler",
- "key_backspace": "Retour Arr.",
- "key_del": "Suppr.",
- "key_down": "Bas",
- "key_up": "Haut",
- "more_opts": "Plus d'options",
- "url": "URL",
- "width": "Largeur",
- "height": "Hauteur"
- },
- misc: {
- "powered_by": "Propulsé par"
- },
- ui: {
- "toggle_stroke_tools": "Montrer/cacher plus d'outils de contour",
- "palette_info": "Cliquer pour changer la couleur de remplissage, Maj+clic pour changer la couleur de contour",
- "zoom_level": "Changer le niveau de zoom",
- "panel_drag": "Tirer vers la gauche/droite pour redimensionner le panneau"
- },
- properties: {
- "id": "Identifier l'élément",
- "fill_color": "Changer la couleur de remplissage",
- "stroke_color": "Changer la couleur du contour",
- "stroke_style": "Changer le style du contour",
- "stroke_width": "Changer la largeur du contour de 1, Maj+clic pour changer la largeur de 0,1",
- "pos_x": "Changer l'abscisse (coordonnée X)",
- "pos_y": "Changer l'ordonnée (coordonnée Y)",
- "linecap_butt": "Terminaison : Sur le nœud",
- "linecap_round": "Terminaison : Arrondie",
- "linecap_square": "Terminaison : Carrée",
- "linejoin_bevel": "Raccord : Biseauté",
- "linejoin_miter": "Raccord : Droit",
- "linejoin_round": "Raccord : Arrondi",
- "angle": "Changer l'angle de rotation",
- "blur": "Changer la valeur du flou gaussien",
- "opacity": "Changer l'opacité de l'élément sélectionné",
- "circle_cx": "Changer la position horizontale cx du cercle",
- "circle_cy": "Changer la position verticale cy du cercle",
- "circle_r": "Changer le rayon du cercle",
- "ellipse_cx": "Changer la position horizontale cx de l'ellipse",
- "ellipse_cy": "Changer la position verticale cy de l'ellipse",
- "ellipse_rx": "Changer le rayon horizontal x de l'ellipse",
- "ellipse_ry": "Changer le rayon vertical y de l'ellipse",
- "line_x1": "Changer la position horizontale x de début de la ligne",
- "line_x2": "Changer la position horizontale x de fin de la ligne",
- "line_y1": "Changer la position verticale y de début de la ligne",
- "line_y2": "Changer la position verticale y de fin de la ligne",
- "rect_height": "Changer la hauteur du rectangle",
- "rect_width": "Changer la largeur du rectangle",
- "corner_radius": "Changer le rayon des coins du rectangle",
- "image_width": "Changer la largeur de l'image",
- "image_height": "Changer la hauteur de l'image",
- "image_url": "Modifier l'URL",
- "node_x": "Changer la positon horizontale x du nœud",
- "node_y": "Changer la position verticale y du nœud",
- "seg_type": "Changer le type du segment",
- "straight_segments": "Droit",
- "curve_segments": "Courbe",
- "text_contents": "Changer le contenu du texte",
- "font_family": "Changer la famille de police",
- "font_size": "Changer la taille de la police",
- "bold": "Texte en gras",
- "italic": "Texte en italique"
- },
- tools: {
- "main_menu": "Menu principal",
- "bkgnd_color_opac": "Changer la couleur d'arrière-plan/l'opacité",
- "connector_no_arrow": "Sans flèches",
- "fitToContent": "Ajuster au contenu",
- "fit_to_all": "Ajuster à l'ensemble du contenu",
- "fit_to_canvas": "Ajuster au canevas",
- "fit_to_layer_content": "Ajuster au contenu du calque",
- "fit_to_sel": "Ajuster à la sélection",
- "align_relative_to": "Aligner par rapport à…",
- "relativeTo": "par rapport à :",
- "page": "page",
- "largest_object": "objet le plus gros",
- "selected_objects": "objets sélectionnés",
- "smallest_object": "objet le plus petit",
- "new_doc": "Nouvelle image",
- "open_doc": "Ouvrir une image SVG",
- "export_img": "Exporter",
- "save_doc": "Enregistrer l'image",
- "import_doc": "Importer une image",
- "align_to_page": "Aligner l'élément à la page",
- "align_bottom": "Aligner en bas",
- "align_center": "Centrer verticalement",
- "align_left": "Aligner à gauche",
- "align_middle": "Centrer horizontalement",
- "align_right": "Aligner à droite",
- "align_top": "Aligner en haut",
- "mode_select": "Outil de sélection",
- "mode_fhpath": "Crayon à main levée",
- "mode_line": "Tracer des lignes",
- "mode_connect": "Connecter deux objets",
- "mode_rect": "Outil rectangle",
- "mode_square": "Outil carré",
- "mode_fhrect": "Rectangle à main levée",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Cercle",
- "mode_fhellipse": "Ellipse à main levée",
- "mode_path": "Outil chemin",
- "mode_shapelib": "Bibliothèque d'images",
- "mode_text": "Outil texte",
- "mode_image": "Outil image",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Outil pipette",
- "no_embed": "NOTE : Cette image ne peut pas être incorporée. Elle sera chargée à cette adresse",
- "undo": "Annuler",
- "redo": "Restaurer",
- "tool_source": "Modifier la source",
- "wireframe_mode": "Mode Fil de fer",
- "toggle_grid": "Montrer/cacher la grille",
- "clone": "Cloner élément(s)",
- "del": "Supprimer élément(s)",
- "group_elements": "Grouper les éléments",
- "make_link": "Créer un hyperlien",
- "set_link_url": "Définir l'URL du lien (laisser vide pour supprimer)",
- "to_path": "Convertir en chemin",
- "reorient_path": "Réorienter le chemin",
- "ungroup": "Dégrouper les éléments",
- "docprops": "Propriétés du document",
- "imagelib": "Bibliothèque d'images",
- "move_bottom": "Déplacer vers le bas",
- "move_top": "Déplacer vers le haut",
- "node_clone": "Cloner le nœud",
- "node_delete": "Supprimer le nœud",
- "node_link": "Rendre les points de contrôle solidaires",
- "add_subpath": "Ajouter un tracé secondaire",
- "openclose_path": "Ouvrir/fermer le sous-chemin",
- "source_save": "Appliquer les modifications",
- "cut": "Couper",
- "copy": "Copier",
- "paste": "Coller",
- "paste_in_place": "Coller sur place",
- "delete": "Supprimer",
- "group": "Grouper",
- "move_front": "Placer au premier plan",
- "move_up": "Avancer d'un plan",
- "move_down": "Reculer d'un plan",
- "move_back": "Placer au fond"
- },
- layers: {
- "layer": "Calque",
- "layers": "Calques",
- "del": "Supprimer le calque",
- "move_down": "Descendre le calque",
- "new": "Nouveau calque",
- "rename": "Renommer le calque",
- "move_up": "Monter le calque",
- "dupe": "Dupliquer le calque",
- "merge_down": "Fusionner vers le bas",
- "merge_all": "Tout fusionner",
- "move_elems_to": "Déplacer les éléments vers :",
- "move_selected": "Déplacer les éléments sélectionnés vers un autre calque"
- },
- config: {
- "image_props": "Propriétés de l'image",
- "doc_title": "Titre",
- "doc_dims": "Dimensions du canevas",
- "included_images": "Images insérées",
- "image_opt_embed": "Incorporer les données des images (fichiers locaux)",
- "image_opt_ref": "Utiliser l'adresse des fichiers",
- "editor_prefs": "Préférences de l'éditeur",
- "icon_size": "Taille des icônes",
- "language": "Langue",
- "background": "Toile de fond de l'éditeur",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note : La toile de fond ne sera pas sauvegardée avec l'image.",
- "icon_large": "Grande",
- "icon_medium": "Moyenne",
- "icon_small": "Petite",
- "icon_xlarge": "Super grande",
- "select_predefined": "Sélectionner prédéfinis :",
- "units_and_rulers": "Unités et règles",
- "show_rulers": "Afficher les règles",
- "base_unit": "Unité de mesure :",
- "grid": "Grille",
- "snapping_onoff": "Ancrer oui/non",
- "snapping_stepsize": "Pas d'ancrage :",
- "grid_color": "Couleur de la grille"
- },
- shape_cats: {
- "basic": "Basique",
- "object": "Objets",
- "symbol": "Symboles",
- "arrow": "Flèches",
- "flowchart": "Diagramme de flux",
- "animal": "Animaux",
- "game": "Cartes & Échecs",
- "dialog_balloon": "Bulles de dialogue",
- "electronics": "Électronique",
- "math": "Mathématiques",
- "music": "Musique",
- "misc": "Divers",
- "raphael_1": "raphaeljs.com ensemble 1",
- "raphael_2": "raphaeljs.com ensemble 2"
- },
- imagelib: {
- "select_lib": "Choisir une bibliothèque d'images",
- "show_list": "Afficher la liste de la bibliothèque",
- "import_single": "Importation simple",
- "import_multi": "Importation multiple",
- "open": "Ouvrir en tant que nouveau document"
- },
- notification: {
- "invalidAttrValGiven": "Valeur fournie invalide",
- "noContentToFitTo": "Il n'y a pas de contenu auquel ajuster",
- "dupeLayerName": "Un autre calque porte déjà ce nom !",
- "enterUniqueLayerName": "Veuillez entrer un nom (unique) pour le calque",
- "enterNewLayerName": "Veuillez entrer le nouveau nom du calque",
- "layerHasThatName": "Le calque porte déjà ce nom",
- "QmoveElemsToLayer": "Déplacer les éléments sélectionnés vers le calque « %s » ?",
- "QwantToClear": "Voulez-vous effacer le dessin ?\nL'historique de vos actions sera également effacé !",
- "QwantToOpen": "Voulez-vous ouvrir un nouveau document ?\nVous perdrez l'historique de vos modifications !",
- "QerrorsRevertToSource": "Il y a des erreurs de syntaxe dans votre code source SVG.\nRestaurer le code source SVG antérieur aux modifications ?",
- "QignoreSourceChanges": "Ignorer les modifications faites à la source SVG ?",
- "featNotSupported": "Fonction non supportée",
- "enterNewImgURL": "Entrer la nouvelle URL de l'image",
- "defsFailOnSave": "NOTE : En raison d'un bogue dans votre navigateur, il se peut que cette image ne soit pas correctement affichée (dégradés ou éléments manquants). Le souci sera néanmoins réglé à la sauvegarde.",
- "loadingImage": "Chargement de l'image, veuillez patienter…",
- "saveFromBrowser": "Sélectionner « Enregistrer sous… » dans votre navigateur pour sauvegarder l'image en tant que fichier %s.",
- "noteTheseIssues": "Notez également les problèmes suivants : ",
- "unsavedChanges": "Il y a des changements non sauvegardés.",
- "enterNewLinkURL": "Entrez la nouvelle URL de l'hyperlien",
- "errorLoadingSVG": "Erreur : Impossible de charger les données SVG",
- "URLloadFail": "Impossible de charger l'URL",
- "retrieving": "Récupération de « %s »…"
- },
- confirmSetStorage: {
- message: "Par défaut et si supporté, SVG-Edit peut stocker les préférences de l'éditeur " +
- "et le contenu SVG localement sur votre machine de sorte que vous n'ayez pas besoin de les " +
- "rajouter chaque fois que vous chargez SVG-Edit. Si, pour des raisons de confidentialité, " +
- "vous ne souhaitez pas stocker ces données sur votre machine, vous pouvez changer ce " +
- "comportement ci-dessous.",
- storagePrefsAndContent: "Stocker les préférences et le contenu SVG localement",
- storagePrefsOnly: "Ne stocker localement que les préférences",
- storagePrefs: "Stocker les préférences localement",
- storageNoPrefsOrContent: "Ne stocker ni mes préférences ni mon contenu SVG localement",
- storageNoPrefs: "Ne pas stocker mes préférences localement",
- rememberLabel: "Se souvenir de ce choix ?",
- rememberTooltip: "Si vous choisissez de désactiver le stockage en mémorisant le choix, l'URL va changer afin que la question ne vous soit plus reposée."
- }
+ lang: "fr",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Annuler",
+ "key_backspace": "Retour Arr.",
+ "key_del": "Suppr.",
+ "key_down": "Bas",
+ "key_up": "Haut",
+ "more_opts": "Plus d'options",
+ "url": "URL",
+ "width": "Largeur",
+ "height": "Hauteur"
+ },
+ misc: {
+ "powered_by": "Propulsé par"
+ },
+ ui: {
+ "toggle_stroke_tools": "Montrer/cacher plus d'outils de contour",
+ "palette_info": "Cliquer pour changer la couleur de remplissage, Maj+clic pour changer la couleur de contour",
+ "zoom_level": "Changer le niveau de zoom",
+ "panel_drag": "Tirer vers la gauche/droite pour redimensionner le panneau"
+ },
+ properties: {
+ "id": "Identifier l'élément",
+ "fill_color": "Changer la couleur de remplissage",
+ "stroke_color": "Changer la couleur du contour",
+ "stroke_style": "Changer le style du contour",
+ "stroke_width": "Changer la largeur du contour de 1, Maj+clic pour changer la largeur de 0,1",
+ "pos_x": "Changer l'abscisse (coordonnée X)",
+ "pos_y": "Changer l'ordonnée (coordonnée Y)",
+ "linecap_butt": "Terminaison : Sur le nœud",
+ "linecap_round": "Terminaison : Arrondie",
+ "linecap_square": "Terminaison : Carrée",
+ "linejoin_bevel": "Raccord : Biseauté",
+ "linejoin_miter": "Raccord : Droit",
+ "linejoin_round": "Raccord : Arrondi",
+ "angle": "Changer l'angle de rotation",
+ "blur": "Changer la valeur du flou gaussien",
+ "opacity": "Changer l'opacité de l'élément sélectionné",
+ "circle_cx": "Changer la position horizontale cx du cercle",
+ "circle_cy": "Changer la position verticale cy du cercle",
+ "circle_r": "Changer le rayon du cercle",
+ "ellipse_cx": "Changer la position horizontale cx de l'ellipse",
+ "ellipse_cy": "Changer la position verticale cy de l'ellipse",
+ "ellipse_rx": "Changer le rayon horizontal x de l'ellipse",
+ "ellipse_ry": "Changer le rayon vertical y de l'ellipse",
+ "line_x1": "Changer la position horizontale x de début de la ligne",
+ "line_x2": "Changer la position horizontale x de fin de la ligne",
+ "line_y1": "Changer la position verticale y de début de la ligne",
+ "line_y2": "Changer la position verticale y de fin de la ligne",
+ "rect_height": "Changer la hauteur du rectangle",
+ "rect_width": "Changer la largeur du rectangle",
+ "corner_radius": "Changer le rayon des coins du rectangle",
+ "image_width": "Changer la largeur de l'image",
+ "image_height": "Changer la hauteur de l'image",
+ "image_url": "Modifier l'URL",
+ "node_x": "Changer la positon horizontale x du nœud",
+ "node_y": "Changer la position verticale y du nœud",
+ "seg_type": "Changer le type du segment",
+ "straight_segments": "Droit",
+ "curve_segments": "Courbe",
+ "text_contents": "Changer le contenu du texte",
+ "font_family": "Changer la famille de police",
+ "font_size": "Changer la taille de la police",
+ "bold": "Texte en gras",
+ "italic": "Texte en italique"
+ },
+ tools: {
+ "main_menu": "Menu principal",
+ "bkgnd_color_opac": "Changer la couleur d'arrière-plan/l'opacité",
+ "connector_no_arrow": "Sans flèches",
+ "fitToContent": "Ajuster au contenu",
+ "fit_to_all": "Ajuster à l'ensemble du contenu",
+ "fit_to_canvas": "Ajuster au canevas",
+ "fit_to_layer_content": "Ajuster au contenu du calque",
+ "fit_to_sel": "Ajuster à la sélection",
+ "align_relative_to": "Aligner par rapport à…",
+ "relativeTo": "par rapport à :",
+ "page": "page",
+ "largest_object": "objet le plus gros",
+ "selected_objects": "objets sélectionnés",
+ "smallest_object": "objet le plus petit",
+ "new_doc": "Nouvelle image",
+ "open_doc": "Ouvrir une image SVG",
+ "export_img": "Exporter",
+ "save_doc": "Enregistrer l'image",
+ "import_doc": "Importer une image",
+ "align_to_page": "Aligner l'élément à la page",
+ "align_bottom": "Aligner en bas",
+ "align_center": "Centrer verticalement",
+ "align_left": "Aligner à gauche",
+ "align_middle": "Centrer horizontalement",
+ "align_right": "Aligner à droite",
+ "align_top": "Aligner en haut",
+ "mode_select": "Outil de sélection",
+ "mode_fhpath": "Crayon à main levée",
+ "mode_line": "Tracer des lignes",
+ "mode_connect": "Connecter deux objets",
+ "mode_rect": "Outil rectangle",
+ "mode_square": "Outil carré",
+ "mode_fhrect": "Rectangle à main levée",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Cercle",
+ "mode_fhellipse": "Ellipse à main levée",
+ "mode_path": "Outil chemin",
+ "mode_shapelib": "Bibliothèque d'images",
+ "mode_text": "Outil texte",
+ "mode_image": "Outil image",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Outil pipette",
+ "no_embed": "NOTE : Cette image ne peut pas être incorporée. Elle sera chargée à cette adresse",
+ "undo": "Annuler",
+ "redo": "Restaurer",
+ "tool_source": "Modifier la source",
+ "wireframe_mode": "Mode Fil de fer",
+ "toggle_grid": "Montrer/cacher la grille",
+ "clone": "Cloner élément(s)",
+ "del": "Supprimer élément(s)",
+ "group_elements": "Grouper les éléments",
+ "make_link": "Créer un hyperlien",
+ "set_link_url": "Définir l'URL du lien (laisser vide pour supprimer)",
+ "to_path": "Convertir en chemin",
+ "reorient_path": "Réorienter le chemin",
+ "ungroup": "Dégrouper les éléments",
+ "docprops": "Propriétés du document",
+ "imagelib": "Bibliothèque d'images",
+ "move_bottom": "Déplacer vers le bas",
+ "move_top": "Déplacer vers le haut",
+ "node_clone": "Cloner le nœud",
+ "node_delete": "Supprimer le nœud",
+ "node_link": "Rendre les points de contrôle solidaires",
+ "add_subpath": "Ajouter un tracé secondaire",
+ "openclose_path": "Ouvrir/fermer le sous-chemin",
+ "source_save": "Appliquer les modifications",
+ "cut": "Couper",
+ "copy": "Copier",
+ "paste": "Coller",
+ "paste_in_place": "Coller sur place",
+ "delete": "Supprimer",
+ "group": "Grouper",
+ "move_front": "Placer au premier plan",
+ "move_up": "Avancer d'un plan",
+ "move_down": "Reculer d'un plan",
+ "move_back": "Placer au fond"
+ },
+ layers: {
+ "layer": "Calque",
+ "layers": "Calques",
+ "del": "Supprimer le calque",
+ "move_down": "Descendre le calque",
+ "new": "Nouveau calque",
+ "rename": "Renommer le calque",
+ "move_up": "Monter le calque",
+ "dupe": "Dupliquer le calque",
+ "merge_down": "Fusionner vers le bas",
+ "merge_all": "Tout fusionner",
+ "move_elems_to": "Déplacer les éléments vers :",
+ "move_selected": "Déplacer les éléments sélectionnés vers un autre calque"
+ },
+ config: {
+ "image_props": "Propriétés de l'image",
+ "doc_title": "Titre",
+ "doc_dims": "Dimensions du canevas",
+ "included_images": "Images insérées",
+ "image_opt_embed": "Incorporer les données des images (fichiers locaux)",
+ "image_opt_ref": "Utiliser l'adresse des fichiers",
+ "editor_prefs": "Préférences de l'éditeur",
+ "icon_size": "Taille des icônes",
+ "language": "Langue",
+ "background": "Toile de fond de l'éditeur",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note : La toile de fond ne sera pas sauvegardée avec l'image.",
+ "icon_large": "Grande",
+ "icon_medium": "Moyenne",
+ "icon_small": "Petite",
+ "icon_xlarge": "Super grande",
+ "select_predefined": "Sélectionner prédéfinis :",
+ "units_and_rulers": "Unités et règles",
+ "show_rulers": "Afficher les règles",
+ "base_unit": "Unité de mesure :",
+ "grid": "Grille",
+ "snapping_onoff": "Ancrer oui/non",
+ "snapping_stepsize": "Pas d'ancrage :",
+ "grid_color": "Couleur de la grille"
+ },
+ shape_cats: {
+ "basic": "Basique",
+ "object": "Objets",
+ "symbol": "Symboles",
+ "arrow": "Flèches",
+ "flowchart": "Diagramme de flux",
+ "animal": "Animaux",
+ "game": "Cartes & Échecs",
+ "dialog_balloon": "Bulles de dialogue",
+ "electronics": "Électronique",
+ "math": "Mathématiques",
+ "music": "Musique",
+ "misc": "Divers",
+ "raphael_1": "raphaeljs.com ensemble 1",
+ "raphael_2": "raphaeljs.com ensemble 2"
+ },
+ imagelib: {
+ "select_lib": "Choisir une bibliothèque d'images",
+ "show_list": "Afficher la liste de la bibliothèque",
+ "import_single": "Importation simple",
+ "import_multi": "Importation multiple",
+ "open": "Ouvrir en tant que nouveau document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Valeur fournie invalide",
+ "noContentToFitTo": "Il n'y a pas de contenu auquel ajuster",
+ "dupeLayerName": "Un autre calque porte déjà ce nom !",
+ "enterUniqueLayerName": "Veuillez entrer un nom (unique) pour le calque",
+ "enterNewLayerName": "Veuillez entrer le nouveau nom du calque",
+ "layerHasThatName": "Le calque porte déjà ce nom",
+ "QmoveElemsToLayer": "Déplacer les éléments sélectionnés vers le calque « %s » ?",
+ "QwantToClear": "Voulez-vous effacer le dessin ?\nL'historique de vos actions sera également effacé !",
+ "QwantToOpen": "Voulez-vous ouvrir un nouveau document ?\nVous perdrez l'historique de vos modifications !",
+ "QerrorsRevertToSource": "Il y a des erreurs de syntaxe dans votre code source SVG.\nRestaurer le code source SVG antérieur aux modifications ?",
+ "QignoreSourceChanges": "Ignorer les modifications faites à la source SVG ?",
+ "featNotSupported": "Fonction non supportée",
+ "enterNewImgURL": "Entrer la nouvelle URL de l'image",
+ "defsFailOnSave": "NOTE : En raison d'un bogue dans votre navigateur, il se peut que cette image ne soit pas correctement affichée (dégradés ou éléments manquants). Le souci sera néanmoins réglé à la sauvegarde.",
+ "loadingImage": "Chargement de l'image, veuillez patienter…",
+ "saveFromBrowser": "Sélectionner « Enregistrer sous… » dans votre navigateur pour sauvegarder l'image en tant que fichier %s.",
+ "noteTheseIssues": "Notez également les problèmes suivants : ",
+ "unsavedChanges": "Il y a des changements non sauvegardés.",
+ "enterNewLinkURL": "Entrez la nouvelle URL de l'hyperlien",
+ "errorLoadingSVG": "Erreur : Impossible de charger les données SVG",
+ "URLloadFail": "Impossible de charger l'URL",
+ "retrieving": "Récupération de « %s »…"
+ },
+ confirmSetStorage: {
+ message: "Par défaut et si supporté, SVG-Edit peut stocker les préférences de l'éditeur " +
+ "et le contenu SVG localement sur votre machine de sorte que vous n'ayez pas besoin de les " +
+ "rajouter chaque fois que vous chargez SVG-Edit. Si, pour des raisons de confidentialité, " +
+ "vous ne souhaitez pas stocker ces données sur votre machine, vous pouvez changer ce " +
+ "comportement ci-dessous.",
+ storagePrefsAndContent: "Stocker les préférences et le contenu SVG localement",
+ storagePrefsOnly: "Ne stocker localement que les préférences",
+ storagePrefs: "Stocker les préférences localement",
+ storageNoPrefsOrContent: "Ne stocker ni mes préférences ni mon contenu SVG localement",
+ storageNoPrefs: "Ne pas stocker mes préférences localement",
+ rememberLabel: "Se souvenir de ce choix ?",
+ rememberTooltip: "Si vous choisissez de désactiver le stockage en mémorisant le choix, l'URL va changer afin que la question ne vous soit plus reposée."
+ }
});
diff --git a/editor/locale/lang.fy.js b/editor/locale/lang.fy.js
index fde59b06..80dc2e93 100644
--- a/editor/locale/lang.fy.js
+++ b/editor/locale/lang.fy.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "fy",
- dir: "ltr",
- common: {
- "ok": "Ok",
- "cancel": "Ôfbrekke",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "omleech",
- "key_up": "omheech",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klik om de folkleur te feroarjen, shift-klik om de linekleur te feroarjen.",
- "zoom_level": "Yn-/útzoome",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Folkleur oanpasse",
- "stroke_color": "Linekleur oanpasse",
- "stroke_style": "Linestijl oanpasse",
- "stroke_width": "Linebreedte oanpasse",
- "pos_x": "X-koördinaat oanpasse",
- "pos_y": "Y-koördinaat oanpasse",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Draaie",
- "blur": "Change gaussian blur value",
- "opacity": "Trochsichtigens oanpasse",
- "circle_cx": "Feroarje it X-koördinaat fan it middelpunt fan'e sirkel.",
- "circle_cy": "Feroarje it Y-koördinaat fan it middelpunt fan'e sirkel.",
- "circle_r": "Feroarje sirkelradius",
- "ellipse_cx": "Feroarje it X-koördinaat fan it middelpunt fan'e ellips.",
- "ellipse_cy": "Feroarje it Y-koördinaat fan it middelpunt fan'e ellips.",
- "ellipse_rx": "Feroarje ellips X radius",
- "ellipse_ry": "Feroarje ellips Y radius",
- "line_x1": "Feroarje start X koördinaat fan'e line",
- "line_x2": "Feroarje ein X koördinaat fan'e line",
- "line_y1": "Feroarje start Y koördinaat fan'e line",
- "line_y2": "Feroarje ein Y koördinaat fan'e line",
- "rect_height": "Hichte rjochthoeke oanpasse",
- "rect_width": "Breedte rjochthoeke oanpasse",
- "corner_radius": "Hoekeradius oanpasse",
- "image_width": "Breedte ôfbielding oanpasse",
- "image_height": "Hichte ôfbielding oanpasse",
- "image_url": "URL oanpasse",
- "node_x": "X-koördinaat knooppunt oanpasse",
- "node_y": "Y-koördinaat knooppunt oanpasse",
- "seg_type": "Segmenttype oanpasse",
- "straight_segments": "Rjocht",
- "curve_segments": "Bûcht",
- "text_contents": "Tekst oanpasse",
- "font_family": "Lettertype oanpasse",
- "font_size": "Lettergrutte oanpasse",
- "bold": "Fet",
- "italic": "Skean"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Eftergrûnkleur/trochsichtigens oanpasse",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Passe op ynhâld",
- "fit_to_all": "Op alle ynhâld passe",
- "fit_to_canvas": "Op kanvas passe",
- "fit_to_layer_content": "Op laachynhâld passe",
- "fit_to_sel": "Op seleksje passe",
- "align_relative_to": "Útlijne relatyf oan...",
- "relativeTo": "Relatief tsjinoer:",
- "page": "Side",
- "largest_object": "Grutste ûnderdiel",
- "selected_objects": "Selektearre ûnderdielen",
- "smallest_object": "Lytste ûnderdiel",
- "new_doc": "Nije ôfbielding",
- "open_doc": "Ôfbielding iepenje",
- "export_img": "Export",
- "save_doc": "Ôfbielding bewarje",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Ûnder útlijne",
- "align_center": "Midden útlijne",
- "align_left": "Lofts útlijne",
- "align_middle": "Midden útlijne",
- "align_right": "Rjochts útlijne",
- "align_top": "Boppe útlijne",
- "mode_select": "Selektearje",
- "mode_fhpath": "Potlead",
- "mode_line": "Line",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Frije rjochthoeke",
- "mode_ellipse": "Ellips",
- "mode_circle": "Sirkel",
- "mode_fhellipse": "Frije ellips",
- "mode_path": "Paad",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekst",
- "mode_image": "Ôfbielding",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Ungedien meitjse",
- "redo": "Op 'e nij",
- "tool_source": "Boarne oanpasse",
- "wireframe_mode": "Triemodel",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Ûnderdielen groepearje",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Omsette nei paad",
- "reorient_path": "Paad opnij orientearje",
- "ungroup": "Groepering opheffe",
- "docprops": "Dokuminteigenskippen",
- "imagelib": "Image Library",
- "move_bottom": "Nei eftergrûn",
- "move_top": "Nei foargrûn",
- "node_clone": "Knooppunt duplisearje",
- "node_delete": "Knooppunt fuortsmite",
- "node_link": "Knooppunten keppelje",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Feroarings tapasse",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Laach",
- "layers": "Layers",
- "del": "Laach fuortsmite",
- "move_down": "Laach omleech bringe",
- "new": "Nije laach",
- "rename": "Laach omneame",
- "move_up": "Laach omheech bringe",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Ûnderdielen ferplaate nei:",
- "move_selected": "Selektearre ûnderdielen ferplaatse nei in oare laach"
- },
- config: {
- "image_props": "Ôfbieldingseigenskippen",
- "doc_title": "Titel",
- "doc_dims": "Kanvasgrutte",
- "included_images": "Ynslúten ôfbieldingen",
- "image_opt_embed": "Ynformaasje tafoege (lokale triemen)",
- "image_opt_ref": "Triemreferensje brûke",
- "editor_prefs": "Eigenskippen bewurker",
- "icon_size": "Ikoangrutte",
- "language": "Taal",
- "background": "Eftergrûn bewurker",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Let op: de eftergrûn wurd net mei de ôfbielding bewarre.",
- "icon_large": "Grut",
- "icon_medium": "Middel",
- "icon_small": "Lyts",
- "icon_xlarge": "Ekstra grut",
- "select_predefined": "Selektearje:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Ferkearde waarde jûn",
- "noContentToFitTo": "Gjin ynhâld om te passen",
- "dupeLayerName": "Der is al in laach mei dy namme!",
- "enterUniqueLayerName": "Type in unyke laachnamme",
- "enterNewLayerName": "Type in nije laachnamme",
- "layerHasThatName": "Laach hat dy namme al",
- "QmoveElemsToLayer": "Selektearre ûnderdielen ferplaatse nei '%s'?",
- "QwantToClear": "Ôfbielding leechmeitsje? Dit sil ek de skiednis fuortsmite!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Der wiene flaters yn de SVG-boarne.\nWeromgean nei foarige SVG-boarne?",
- "QignoreSourceChanges": "Feroarings yn SVG-boarne negeare?",
- "featNotSupported": "Funksje wurdt net ûndersteund",
- "enterNewImgURL": "Jou de nije URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "fy",
+ dir: "ltr",
+ common: {
+ "ok": "Ok",
+ "cancel": "Ôfbrekke",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "omleech",
+ "key_up": "omheech",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klik om de folkleur te feroarjen, shift-klik om de linekleur te feroarjen.",
+ "zoom_level": "Yn-/útzoome",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Folkleur oanpasse",
+ "stroke_color": "Linekleur oanpasse",
+ "stroke_style": "Linestijl oanpasse",
+ "stroke_width": "Linebreedte oanpasse",
+ "pos_x": "X-koördinaat oanpasse",
+ "pos_y": "Y-koördinaat oanpasse",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Draaie",
+ "blur": "Change gaussian blur value",
+ "opacity": "Trochsichtigens oanpasse",
+ "circle_cx": "Feroarje it X-koördinaat fan it middelpunt fan'e sirkel.",
+ "circle_cy": "Feroarje it Y-koördinaat fan it middelpunt fan'e sirkel.",
+ "circle_r": "Feroarje sirkelradius",
+ "ellipse_cx": "Feroarje it X-koördinaat fan it middelpunt fan'e ellips.",
+ "ellipse_cy": "Feroarje it Y-koördinaat fan it middelpunt fan'e ellips.",
+ "ellipse_rx": "Feroarje ellips X radius",
+ "ellipse_ry": "Feroarje ellips Y radius",
+ "line_x1": "Feroarje start X koördinaat fan'e line",
+ "line_x2": "Feroarje ein X koördinaat fan'e line",
+ "line_y1": "Feroarje start Y koördinaat fan'e line",
+ "line_y2": "Feroarje ein Y koördinaat fan'e line",
+ "rect_height": "Hichte rjochthoeke oanpasse",
+ "rect_width": "Breedte rjochthoeke oanpasse",
+ "corner_radius": "Hoekeradius oanpasse",
+ "image_width": "Breedte ôfbielding oanpasse",
+ "image_height": "Hichte ôfbielding oanpasse",
+ "image_url": "URL oanpasse",
+ "node_x": "X-koördinaat knooppunt oanpasse",
+ "node_y": "Y-koördinaat knooppunt oanpasse",
+ "seg_type": "Segmenttype oanpasse",
+ "straight_segments": "Rjocht",
+ "curve_segments": "Bûcht",
+ "text_contents": "Tekst oanpasse",
+ "font_family": "Lettertype oanpasse",
+ "font_size": "Lettergrutte oanpasse",
+ "bold": "Fet",
+ "italic": "Skean"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Eftergrûnkleur/trochsichtigens oanpasse",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Passe op ynhâld",
+ "fit_to_all": "Op alle ynhâld passe",
+ "fit_to_canvas": "Op kanvas passe",
+ "fit_to_layer_content": "Op laachynhâld passe",
+ "fit_to_sel": "Op seleksje passe",
+ "align_relative_to": "Útlijne relatyf oan...",
+ "relativeTo": "Relatief tsjinoer:",
+ "page": "Side",
+ "largest_object": "Grutste ûnderdiel",
+ "selected_objects": "Selektearre ûnderdielen",
+ "smallest_object": "Lytste ûnderdiel",
+ "new_doc": "Nije ôfbielding",
+ "open_doc": "Ôfbielding iepenje",
+ "export_img": "Export",
+ "save_doc": "Ôfbielding bewarje",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Ûnder útlijne",
+ "align_center": "Midden útlijne",
+ "align_left": "Lofts útlijne",
+ "align_middle": "Midden útlijne",
+ "align_right": "Rjochts útlijne",
+ "align_top": "Boppe útlijne",
+ "mode_select": "Selektearje",
+ "mode_fhpath": "Potlead",
+ "mode_line": "Line",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Frije rjochthoeke",
+ "mode_ellipse": "Ellips",
+ "mode_circle": "Sirkel",
+ "mode_fhellipse": "Frije ellips",
+ "mode_path": "Paad",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekst",
+ "mode_image": "Ôfbielding",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Ungedien meitjse",
+ "redo": "Op 'e nij",
+ "tool_source": "Boarne oanpasse",
+ "wireframe_mode": "Triemodel",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Ûnderdielen groepearje",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Omsette nei paad",
+ "reorient_path": "Paad opnij orientearje",
+ "ungroup": "Groepering opheffe",
+ "docprops": "Dokuminteigenskippen",
+ "imagelib": "Image Library",
+ "move_bottom": "Nei eftergrûn",
+ "move_top": "Nei foargrûn",
+ "node_clone": "Knooppunt duplisearje",
+ "node_delete": "Knooppunt fuortsmite",
+ "node_link": "Knooppunten keppelje",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Feroarings tapasse",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Laach",
+ "layers": "Layers",
+ "del": "Laach fuortsmite",
+ "move_down": "Laach omleech bringe",
+ "new": "Nije laach",
+ "rename": "Laach omneame",
+ "move_up": "Laach omheech bringe",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Ûnderdielen ferplaate nei:",
+ "move_selected": "Selektearre ûnderdielen ferplaatse nei in oare laach"
+ },
+ config: {
+ "image_props": "Ôfbieldingseigenskippen",
+ "doc_title": "Titel",
+ "doc_dims": "Kanvasgrutte",
+ "included_images": "Ynslúten ôfbieldingen",
+ "image_opt_embed": "Ynformaasje tafoege (lokale triemen)",
+ "image_opt_ref": "Triemreferensje brûke",
+ "editor_prefs": "Eigenskippen bewurker",
+ "icon_size": "Ikoangrutte",
+ "language": "Taal",
+ "background": "Eftergrûn bewurker",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Let op: de eftergrûn wurd net mei de ôfbielding bewarre.",
+ "icon_large": "Grut",
+ "icon_medium": "Middel",
+ "icon_small": "Lyts",
+ "icon_xlarge": "Ekstra grut",
+ "select_predefined": "Selektearje:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Ferkearde waarde jûn",
+ "noContentToFitTo": "Gjin ynhâld om te passen",
+ "dupeLayerName": "Der is al in laach mei dy namme!",
+ "enterUniqueLayerName": "Type in unyke laachnamme",
+ "enterNewLayerName": "Type in nije laachnamme",
+ "layerHasThatName": "Laach hat dy namme al",
+ "QmoveElemsToLayer": "Selektearre ûnderdielen ferplaatse nei '%s'?",
+ "QwantToClear": "Ôfbielding leechmeitsje? Dit sil ek de skiednis fuortsmite!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Der wiene flaters yn de SVG-boarne.\nWeromgean nei foarige SVG-boarne?",
+ "QignoreSourceChanges": "Feroarings yn SVG-boarne negeare?",
+ "featNotSupported": "Funksje wurdt net ûndersteund",
+ "enterNewImgURL": "Jou de nije URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ga.js b/editor/locale/lang.ga.js
index 1dde0593..5da9ec11 100644
--- a/editor/locale/lang.ga.js
+++ b/editor/locale/lang.ga.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ga",
- dir: "ltr",
- common: {
- "ok": "Sábháil",
- "cancel": "Cealaigh",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Cliceáil chun athrú a líonadh dath, aistriú-cliceáil chun dath a athrú stróc",
- "zoom_level": "Athraigh súmáil leibhéal",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Athraigh an dath a líonadh",
- "stroke_color": "Dath stróc Athrú",
- "stroke_style": "Athraigh an stíl Fleasc stróc",
- "stroke_width": "Leithead stróc Athrú",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Uillinn rothlaithe Athrú",
- "blur": "Change gaussian blur value",
- "opacity": "Athraigh roghnaithe teimhneacht mír",
- "circle_cx": "Athraigh an ciorcal a chomhordú CX",
- "circle_cy": "Athraigh an ciorcal a chomhordú ga",
- "circle_r": "Athraigh an ciorcal's ga",
- "ellipse_cx": "Athraigh Éilips's CX a chomhordú",
- "ellipse_cy": "Athraigh an Éilips a chomhordú ga",
- "ellipse_rx": "Éilips Athraigh an gha x",
- "ellipse_ry": "Éilips Athraigh an gha y",
- "line_x1": "Athraigh an líne tosaigh a chomhordú x",
- "line_x2": "Athraigh an líne deireadh x chomhordú",
- "line_y1": "Athraigh an líne tosaigh a chomhordú y",
- "line_y2": "Athrú ar líne deireadh y chomhordú",
- "rect_height": "Airde dronuilleog Athrú",
- "rect_width": "Leithead dronuilleog Athrú",
- "corner_radius": "Athraigh Dronuilleog Cúinne na Ga",
- "image_width": "Leithead íomhá Athrú",
- "image_height": "Airde íomhá Athrú",
- "image_url": "Athraigh an URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Inneachar Athraigh téacs",
- "font_family": "Athraigh an Cló Teaghlaigh",
- "font_size": "Athraigh Clómhéid",
- "bold": "Trom Téacs",
- "italic": "Iodálach Téacs"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Dath cúlra Athraigh / teimhneacht",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Laghdaigh do gach ábhar",
- "fit_to_canvas": "Laghdaigh ar chanbhás",
- "fit_to_layer_content": "Laghdaigh shraith ábhar a",
- "fit_to_sel": "Laghdaigh a roghnú",
- "align_relative_to": "Ailínigh i gcomparáid leis ...",
- "relativeTo": "i gcomparáid leis:",
- "page": "leathanach",
- "largest_object": "réad is mó",
- "selected_objects": "réada tofa",
- "smallest_object": "lú réad",
- "new_doc": "Íomhá Nua",
- "open_doc": "Íomhá Oscailte",
- "export_img": "Export",
- "save_doc": "Sábháil Íomhá",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Cineál Bun",
- "align_center": "Ailínigh sa Lár",
- "align_left": "Ailínigh ar Chlé",
- "align_middle": "Cineál Middle",
- "align_right": "Ailínigh ar Dheis",
- "align_top": "Cineál Barr",
- "mode_select": "Roghnaigh Uirlis",
- "mode_fhpath": "Phionsail Uirlis",
- "mode_line": "Uirlis Líne",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Saor Hand Dronuilleog",
- "mode_ellipse": "Éilips",
- "mode_circle": "Ciorcal",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Téacs Uirlis",
- "mode_image": "Íomhá Uirlis",
- "mode_zoom": "Zúmáil Uirlis",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Cealaigh",
- "redo": "Athdhéan",
- "tool_source": "Cuir Foinse",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Eilimintí Grúpa",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Eilimintí Díghrúpáil",
- "docprops": "Doiciméad Airíonna",
- "imagelib": "Image Library",
- "move_bottom": "Téigh go Bun",
- "move_top": "Téigh go Barr",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Sábháil",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Scrios Sraith",
- "move_down": "Bog Sraith Síos",
- "new": "Sraith Nua",
- "rename": "Athainmnigh Sraith",
- "move_up": "Bog Sraith Suas",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Roghnaigh réamhshainithe:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ga",
+ dir: "ltr",
+ common: {
+ "ok": "Sábháil",
+ "cancel": "Cealaigh",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Cliceáil chun athrú a líonadh dath, aistriú-cliceáil chun dath a athrú stróc",
+ "zoom_level": "Athraigh súmáil leibhéal",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Athraigh an dath a líonadh",
+ "stroke_color": "Dath stróc Athrú",
+ "stroke_style": "Athraigh an stíl Fleasc stróc",
+ "stroke_width": "Leithead stróc Athrú",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Uillinn rothlaithe Athrú",
+ "blur": "Change gaussian blur value",
+ "opacity": "Athraigh roghnaithe teimhneacht mír",
+ "circle_cx": "Athraigh an ciorcal a chomhordú CX",
+ "circle_cy": "Athraigh an ciorcal a chomhordú ga",
+ "circle_r": "Athraigh an ciorcal's ga",
+ "ellipse_cx": "Athraigh Éilips's CX a chomhordú",
+ "ellipse_cy": "Athraigh an Éilips a chomhordú ga",
+ "ellipse_rx": "Éilips Athraigh an gha x",
+ "ellipse_ry": "Éilips Athraigh an gha y",
+ "line_x1": "Athraigh an líne tosaigh a chomhordú x",
+ "line_x2": "Athraigh an líne deireadh x chomhordú",
+ "line_y1": "Athraigh an líne tosaigh a chomhordú y",
+ "line_y2": "Athrú ar líne deireadh y chomhordú",
+ "rect_height": "Airde dronuilleog Athrú",
+ "rect_width": "Leithead dronuilleog Athrú",
+ "corner_radius": "Athraigh Dronuilleog Cúinne na Ga",
+ "image_width": "Leithead íomhá Athrú",
+ "image_height": "Airde íomhá Athrú",
+ "image_url": "Athraigh an URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Inneachar Athraigh téacs",
+ "font_family": "Athraigh an Cló Teaghlaigh",
+ "font_size": "Athraigh Clómhéid",
+ "bold": "Trom Téacs",
+ "italic": "Iodálach Téacs"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Dath cúlra Athraigh / teimhneacht",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Laghdaigh do gach ábhar",
+ "fit_to_canvas": "Laghdaigh ar chanbhás",
+ "fit_to_layer_content": "Laghdaigh shraith ábhar a",
+ "fit_to_sel": "Laghdaigh a roghnú",
+ "align_relative_to": "Ailínigh i gcomparáid leis ...",
+ "relativeTo": "i gcomparáid leis:",
+ "page": "leathanach",
+ "largest_object": "réad is mó",
+ "selected_objects": "réada tofa",
+ "smallest_object": "lú réad",
+ "new_doc": "Íomhá Nua",
+ "open_doc": "Íomhá Oscailte",
+ "export_img": "Export",
+ "save_doc": "Sábháil Íomhá",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Cineál Bun",
+ "align_center": "Ailínigh sa Lár",
+ "align_left": "Ailínigh ar Chlé",
+ "align_middle": "Cineál Middle",
+ "align_right": "Ailínigh ar Dheis",
+ "align_top": "Cineál Barr",
+ "mode_select": "Roghnaigh Uirlis",
+ "mode_fhpath": "Phionsail Uirlis",
+ "mode_line": "Uirlis Líne",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Saor Hand Dronuilleog",
+ "mode_ellipse": "Éilips",
+ "mode_circle": "Ciorcal",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Téacs Uirlis",
+ "mode_image": "Íomhá Uirlis",
+ "mode_zoom": "Zúmáil Uirlis",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Cealaigh",
+ "redo": "Athdhéan",
+ "tool_source": "Cuir Foinse",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Eilimintí Grúpa",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Eilimintí Díghrúpáil",
+ "docprops": "Doiciméad Airíonna",
+ "imagelib": "Image Library",
+ "move_bottom": "Téigh go Bun",
+ "move_top": "Téigh go Barr",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Sábháil",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Scrios Sraith",
+ "move_down": "Bog Sraith Síos",
+ "new": "Sraith Nua",
+ "rename": "Athainmnigh Sraith",
+ "move_up": "Bog Sraith Suas",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Roghnaigh réamhshainithe:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.gl.js b/editor/locale/lang.gl.js
index 6811d905..a4cb0117 100644
--- a/editor/locale/lang.gl.js
+++ b/editor/locale/lang.gl.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "gl",
- dir: "ltr",
- common: {
- "ok": "Gardar",
- "cancel": "Cancelar",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Preme aquí para cambiar a cor de recheo, Shift-clic para cambiar a cor do curso",
- "zoom_level": "Cambiar o nivel de zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Cambia-la cor de recheo",
- "stroke_color": "Cambiar a cor do curso",
- "stroke_style": "Modifica o estilo do trazo do curso",
- "stroke_width": "Cambiar o ancho do curso",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Cambiar o ángulo de xiro",
- "blur": "Change gaussian blur value",
- "opacity": "Cambia a opacidade elemento seleccionado",
- "circle_cx": "Cx Cambiar círculo de coordenadas",
- "circle_cy": "Círculo Cambio cy coordinar",
- "circle_r": "Cambiar círculo de raio",
- "ellipse_cx": "Cambiar elipse cx coordinar",
- "ellipse_cy": "Elipse Cambio cy coordinar",
- "ellipse_rx": "Raios X Change elipse",
- "ellipse_ry": "Radio y Change elipse",
- "line_x1": "Cambie a liña de partida coordenada x",
- "line_x2": "Cambie a liña acaba coordenada x",
- "line_y1": "Cambio na liña do recurso coordinada y",
- "line_y2": "Salto de liña acaba coordinada y",
- "rect_height": "Cambiar altura do rectángulo",
- "rect_width": "Cambiar a largo rectángulo",
- "corner_radius": "Cambiar Corner Rectangle Radius",
- "image_width": "Cambiar o ancho da imaxe",
- "image_height": "Cambiar altura da imaxe",
- "image_url": "Cambiar URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Cambiar o contido de texto",
- "font_family": "Cambiar fonte Familia",
- "font_size": "Mudar tamaño de letra",
- "bold": "Bold Text",
- "italic": "Texto en cursiva"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Mudar a cor de fondo / Opacidade",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Axustar ó contido",
- "fit_to_all": "Axustar a todo o contido",
- "fit_to_canvas": "Axustar a pantalla",
- "fit_to_layer_content": "Axustar o contido da capa de",
- "fit_to_sel": "Axustar a selección",
- "align_relative_to": "Aliñar en relación a ...",
- "relativeTo": "en relación ao:",
- "page": "Portada",
- "largest_object": "maior obxecto",
- "selected_objects": "obxectos elixidos",
- "smallest_object": "menor obxecto",
- "new_doc": "Nova Imaxe",
- "open_doc": "Abrir Imaxe",
- "export_img": "Export",
- "save_doc": "Gardar Imaxe",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align bottom",
- "align_center": "Centrar",
- "align_left": "Aliñar á Esquerda",
- "align_middle": "Aliñar Medio",
- "align_right": "Aliñar á Dereita",
- "align_top": "Align Top",
- "mode_select": "Seleccionar a ferramenta",
- "mode_fhpath": "Ferramenta Lapis",
- "mode_line": "Ferramenta Liña",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Elipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Ferramenta de Texto",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Desfacer",
- "redo": "Volver",
- "tool_source": "Fonte Editar",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elementos do grupo",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Elementos Desagrupadas",
- "docprops": "Propriedades do Documento",
- "imagelib": "Image Library",
- "move_bottom": "Move a Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Gardar",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move capa inferior",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Seleccione por defecto:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "gl",
+ dir: "ltr",
+ common: {
+ "ok": "Gardar",
+ "cancel": "Cancelar",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Preme aquí para cambiar a cor de recheo, Shift-clic para cambiar a cor do curso",
+ "zoom_level": "Cambiar o nivel de zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Cambia-la cor de recheo",
+ "stroke_color": "Cambiar a cor do curso",
+ "stroke_style": "Modifica o estilo do trazo do curso",
+ "stroke_width": "Cambiar o ancho do curso",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Cambiar o ángulo de xiro",
+ "blur": "Change gaussian blur value",
+ "opacity": "Cambia a opacidade elemento seleccionado",
+ "circle_cx": "Cx Cambiar círculo de coordenadas",
+ "circle_cy": "Círculo Cambio cy coordinar",
+ "circle_r": "Cambiar círculo de raio",
+ "ellipse_cx": "Cambiar elipse cx coordinar",
+ "ellipse_cy": "Elipse Cambio cy coordinar",
+ "ellipse_rx": "Raios X Change elipse",
+ "ellipse_ry": "Radio y Change elipse",
+ "line_x1": "Cambie a liña de partida coordenada x",
+ "line_x2": "Cambie a liña acaba coordenada x",
+ "line_y1": "Cambio na liña do recurso coordinada y",
+ "line_y2": "Salto de liña acaba coordinada y",
+ "rect_height": "Cambiar altura do rectángulo",
+ "rect_width": "Cambiar a largo rectángulo",
+ "corner_radius": "Cambiar Corner Rectangle Radius",
+ "image_width": "Cambiar o ancho da imaxe",
+ "image_height": "Cambiar altura da imaxe",
+ "image_url": "Cambiar URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Cambiar o contido de texto",
+ "font_family": "Cambiar fonte Familia",
+ "font_size": "Mudar tamaño de letra",
+ "bold": "Bold Text",
+ "italic": "Texto en cursiva"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Mudar a cor de fondo / Opacidade",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Axustar ó contido",
+ "fit_to_all": "Axustar a todo o contido",
+ "fit_to_canvas": "Axustar a pantalla",
+ "fit_to_layer_content": "Axustar o contido da capa de",
+ "fit_to_sel": "Axustar a selección",
+ "align_relative_to": "Aliñar en relación a ...",
+ "relativeTo": "en relación ao:",
+ "page": "Portada",
+ "largest_object": "maior obxecto",
+ "selected_objects": "obxectos elixidos",
+ "smallest_object": "menor obxecto",
+ "new_doc": "Nova Imaxe",
+ "open_doc": "Abrir Imaxe",
+ "export_img": "Export",
+ "save_doc": "Gardar Imaxe",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align bottom",
+ "align_center": "Centrar",
+ "align_left": "Aliñar á Esquerda",
+ "align_middle": "Aliñar Medio",
+ "align_right": "Aliñar á Dereita",
+ "align_top": "Align Top",
+ "mode_select": "Seleccionar a ferramenta",
+ "mode_fhpath": "Ferramenta Lapis",
+ "mode_line": "Ferramenta Liña",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Elipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Ferramenta de Texto",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Desfacer",
+ "redo": "Volver",
+ "tool_source": "Fonte Editar",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elementos do grupo",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Elementos Desagrupadas",
+ "docprops": "Propriedades do Documento",
+ "imagelib": "Image Library",
+ "move_bottom": "Move a Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Gardar",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move capa inferior",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Seleccione por defecto:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.he.js b/editor/locale/lang.he.js
index d5b1b36c..d9a406f0 100755
--- a/editor/locale/lang.he.js
+++ b/editor/locale/lang.he.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "he",
- dir: "ltr",
- common: {
- "ok": "לשמור",
- "cancel": "ביטול",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "לחץ כדי לשנות צבע מילוי, לחץ על Shift-לשנות צבע שבץ",
- "zoom_level": "שינוי גודל תצוגה",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "שינוי צבע מילוי",
- "stroke_color": "שינוי צבע שבץ",
- "stroke_style": "דש שבץ שינוי סגנון",
- "stroke_width": "שינוי רוחב שבץ",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "שינוי זווית הסיבוב",
- "blur": "Change gaussian blur value",
- "opacity": "שינוי הפריט הנבחר אטימות",
- "circle_cx": "CX מעגל של שנה לתאם",
- "circle_cy": "מעגל שנה של cy לתאם",
- "circle_r": "מעגל שנה של רדיוס",
- "ellipse_cx": "שינוי של אליפסה CX לתאם",
- "ellipse_cy": "אליפסה שינוי של cy לתאם",
- "ellipse_rx": "אליפסה שינוי של רדיוס x",
- "ellipse_ry": "אליפסה שינוי של Y רדיוס",
- "line_x1": "שינוי קו ההתחלה של x לתאם",
- "line_x2": "שינוי קו הסיום של x לתאם",
- "line_y1": "שינוי קו ההתחלה של Y לתאם",
- "line_y2": "שינוי קו הסיום של Y לתאם",
- "rect_height": "שינוי גובה המלבן",
- "rect_width": "שינוי רוחב המלבן",
- "corner_radius": "לשנות מלבן פינת רדיוס",
- "image_width": "שינוי רוחב התמונה",
- "image_height": "שינוי גובה התמונה",
- "image_url": "שינוי כתובת",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "שינוי תוכן טקסט",
- "font_family": "שינוי גופן משפחה",
- "font_size": "שנה גודל גופן",
- "bold": "טקסט מודגש",
- "italic": "טקסט נטוי"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "שנה את צבע הרקע / אטימות",
- "connector_no_arrow": "No arrow",
- "fitToContent": "התאם תוכן",
- "fit_to_all": "התאם התכנים",
- "fit_to_canvas": "התאם בד",
- "fit_to_layer_content": "מתאים לתוכן שכבת",
- "fit_to_sel": "התאם הבחירה",
- "align_relative_to": "יישור ביחס ...",
- "relativeTo": "יחסית:",
- "page": "דף",
- "largest_object": "האובייקט הגדול",
- "selected_objects": "elected objects",
- "smallest_object": "הקטן אובייקט",
- "new_doc": "תמונה חדשה",
- "open_doc": "פתח תמונה",
- "export_img": "Export",
- "save_doc": "שמור תמונה",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "יישור תחתון",
- "align_center": "ישור לאמצע",
- "align_left": "יישור לשמאל",
- "align_middle": "יישור התיכון",
- "align_right": "יישור לימין",
- "align_top": "יישור למעלה",
- "mode_select": "Select Tool",
- "mode_fhpath": "כלי העיפרון",
- "mode_line": "כלי הקו",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand מלבן",
- "mode_ellipse": "אליפסה",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand אליפסה",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "כלי טקסט",
- "mode_image": "כלי תמונה",
- "mode_zoom": "זום כלי",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "בטל",
- "redo": "בצע שוב",
- "tool_source": "מקור ערוך",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "אלמנטים הקבוצה",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "אלמנטים פרק קבוצה",
- "docprops": "מאפייני מסמך",
- "imagelib": "Image Library",
- "move_bottom": "הזז למטה",
- "move_top": "עבור לראש הדף",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "לשמור",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "מחיקת שכבה",
- "move_down": "הזז למטה שכבה",
- "new": "שכבהחדשה",
- "rename": "שינוי שם שכבה",
- "move_up": "העבר שכבה Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "בחר מוגדרים מראש:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "he",
+ dir: "ltr",
+ common: {
+ "ok": "לשמור",
+ "cancel": "ביטול",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "לחץ כדי לשנות צבע מילוי, לחץ על Shift-לשנות צבע שבץ",
+ "zoom_level": "שינוי גודל תצוגה",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "שינוי צבע מילוי",
+ "stroke_color": "שינוי צבע שבץ",
+ "stroke_style": "דש שבץ שינוי סגנון",
+ "stroke_width": "שינוי רוחב שבץ",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "שינוי זווית הסיבוב",
+ "blur": "Change gaussian blur value",
+ "opacity": "שינוי הפריט הנבחר אטימות",
+ "circle_cx": "CX מעגל של שנה לתאם",
+ "circle_cy": "מעגל שנה של cy לתאם",
+ "circle_r": "מעגל שנה של רדיוס",
+ "ellipse_cx": "שינוי של אליפסה CX לתאם",
+ "ellipse_cy": "אליפסה שינוי של cy לתאם",
+ "ellipse_rx": "אליפסה שינוי של רדיוס x",
+ "ellipse_ry": "אליפסה שינוי של Y רדיוס",
+ "line_x1": "שינוי קו ההתחלה של x לתאם",
+ "line_x2": "שינוי קו הסיום של x לתאם",
+ "line_y1": "שינוי קו ההתחלה של Y לתאם",
+ "line_y2": "שינוי קו הסיום של Y לתאם",
+ "rect_height": "שינוי גובה המלבן",
+ "rect_width": "שינוי רוחב המלבן",
+ "corner_radius": "לשנות מלבן פינת רדיוס",
+ "image_width": "שינוי רוחב התמונה",
+ "image_height": "שינוי גובה התמונה",
+ "image_url": "שינוי כתובת",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "שינוי תוכן טקסט",
+ "font_family": "שינוי גופן משפחה",
+ "font_size": "שנה גודל גופן",
+ "bold": "טקסט מודגש",
+ "italic": "טקסט נטוי"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "שנה את צבע הרקע / אטימות",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "התאם תוכן",
+ "fit_to_all": "התאם התכנים",
+ "fit_to_canvas": "התאם בד",
+ "fit_to_layer_content": "מתאים לתוכן שכבת",
+ "fit_to_sel": "התאם הבחירה",
+ "align_relative_to": "יישור ביחס ...",
+ "relativeTo": "יחסית:",
+ "page": "דף",
+ "largest_object": "האובייקט הגדול",
+ "selected_objects": "elected objects",
+ "smallest_object": "הקטן אובייקט",
+ "new_doc": "תמונה חדשה",
+ "open_doc": "פתח תמונה",
+ "export_img": "Export",
+ "save_doc": "שמור תמונה",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "יישור תחתון",
+ "align_center": "ישור לאמצע",
+ "align_left": "יישור לשמאל",
+ "align_middle": "יישור התיכון",
+ "align_right": "יישור לימין",
+ "align_top": "יישור למעלה",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "כלי העיפרון",
+ "mode_line": "כלי הקו",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand מלבן",
+ "mode_ellipse": "אליפסה",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand אליפסה",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "כלי טקסט",
+ "mode_image": "כלי תמונה",
+ "mode_zoom": "זום כלי",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "בטל",
+ "redo": "בצע שוב",
+ "tool_source": "מקור ערוך",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "אלמנטים הקבוצה",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "אלמנטים פרק קבוצה",
+ "docprops": "מאפייני מסמך",
+ "imagelib": "Image Library",
+ "move_bottom": "הזז למטה",
+ "move_top": "עבור לראש הדף",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "לשמור",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "מחיקת שכבה",
+ "move_down": "הזז למטה שכבה",
+ "new": "שכבהחדשה",
+ "rename": "שינוי שם שכבה",
+ "move_up": "העבר שכבה Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "בחר מוגדרים מראש:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.hi.js b/editor/locale/lang.hi.js
index ea6dd41b..97f0cc77 100644
--- a/editor/locale/lang.hi.js
+++ b/editor/locale/lang.hi.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "hi",
- dir: "ltr",
- common: {
- "ok": "बचाना",
- "cancel": "रद्द करें",
- "key_backspace": "बैकस्पेस",
- "key_del": "हटायें",
- "key_down": "नीचे",
- "key_up": "ऊपर",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "रंग बदलने पर क्लिक करें, बदलाव भरने के क्लिक करने के लिए स्ट्रोक का रंग बदलने के लिए",
- "zoom_level": "बदलें स्तर ज़ूम",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "बदलें का रंग भरना",
- "stroke_color": "बदलें स्ट्रोक रंग",
- "stroke_style": "बदलें स्ट्रोक डेश शैली",
- "stroke_width": "बदलें स्ट्रोक चौड़ाई",
- "pos_x": "X समकक्ष बदलें ",
- "pos_y": "Y समकक्ष बदलें",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "बदलें रोटेशन कोण",
- "blur": "Change gaussian blur value",
- "opacity": "पारदर्शिता बदलें",
- "circle_cx": "बदल रहा है चक्र cx समन्वय",
- "circle_cy": "परिवर्तन चक्र cy समन्वय है",
- "circle_r": "बदल रहा है चक्र त्रिज्या",
- "ellipse_cx": "बदलें दीर्घवृत्त है cx समन्वय",
- "ellipse_cy": "बदलें दीर्घवृत्त cy समन्वय है",
- "ellipse_rx": "बदल रहा है दीर्घवृत्त x त्रिज्या",
- "ellipse_ry": "बदल रहा है दीर्घवृत्त y त्रिज्या",
- "line_x1": "बदल रहा है लाइन x समन्वय शुरू",
- "line_x2": "बदल रहा है लाइन x समन्वय समाप्त",
- "line_y1": "बदलें रेखा y शुरू हो रहा है समन्वय",
- "line_y2": "बदलें रेखा y अंत है समन्वय",
- "rect_height": "बदलें आयत ऊंचाई",
- "rect_width": "बदलें आयत चौड़ाई",
- "corner_radius": "बदलें आयत कॉर्नर त्रिज्या",
- "image_width": "बदलें छवि चौड़ाई",
- "image_height": "बदलें छवि ऊँचाई",
- "image_url": "बदलें यूआरएल",
- "node_x": "नोड का x समकक्ष बदलें",
- "node_y": "नोड का y समकक्ष बदलें",
- "seg_type": "वर्ग प्रकार बदलें",
- "straight_segments": "सीधे वर्ग",
- "curve_segments": "घुमाव",
- "text_contents": "बदलें पाठ सामग्री",
- "font_family": "बदलें फ़ॉन्ट परिवार",
- "font_size": "फ़ॉन्ट का आकार बदलें",
- "bold": "मोटा पाठ",
- "italic": "इटैलिक पाठ"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "पृष्ठभूमि का रंग बदल / अस्पष्टता",
- "connector_no_arrow": "No arrow",
- "fitToContent": "सामग्री के लिए फिट",
- "fit_to_all": "सभी सामग्री के लिए फिट",
- "fit_to_canvas": "फिट कैनवास को",
- "fit_to_layer_content": "फिट परत सामग्री के लिए",
- "fit_to_sel": "चयन के लिए फिट",
- "align_relative_to": "संरेखित करें रिश्तेदार को ...",
- "relativeTo": "रिश्तेदार को:",
- "page": "पृष्ठ",
- "largest_object": "सबसे बड़ी वस्तु",
- "selected_objects": "निर्वाचित वस्तुओं",
- "smallest_object": "छोटी से छोटी वस्तु",
- "new_doc": "नई छवि",
- "open_doc": "छवि खोलें",
- "export_img": "Export",
- "save_doc": "सहेजें छवि",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "तलमेंपंक्तिबद्धकरें",
- "align_center": "मध्य में समंजित करें",
- "align_left": " पंक्तिबद्ध करें",
- "align_middle": "मध्य संरेखित करें",
- "align_right": "दायाँपंक्तिबद्धकरें",
- "align_top": "शीर्षमेंपंक्तिबद्धकरें",
- "mode_select": "उपकरण चुनें",
- "mode_fhpath": "पेंसिल उपकरण",
- "mode_line": "लाइन उपकरण",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "नि: शुल्क हाथ आयत",
- "mode_ellipse": "दीर्घवृत्त",
- "mode_circle": "वृत्त",
- "mode_fhellipse": "नि: शुल्क हाथ दीर्घवृत्त",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "पाठ उपकरण",
- "mode_image": "छवि उपकरण",
- "mode_zoom": "ज़ूम उपकरण",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "पूर्ववत करें",
- "redo": "फिर से करें",
- "tool_source": "स्रोत में बदलाव करें",
- "wireframe_mode": "रूपरेखा मोड",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "समूह तत्वों",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "पथ में बदलें",
- "reorient_path": "पथ को नई दिशा दें",
- "ungroup": "अंश को समूह से अलग करें",
- "docprops": "दस्तावेज़ गुण",
- "imagelib": "Image Library",
- "move_bottom": "नीचे ले जाएँ",
- "move_top": "ऊपर ले जाएँ",
- "node_clone": "नोड क्लोन",
- "node_delete": "नोड हटायें",
- "node_link": "कड़ी नियंत्रण बिंदु",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "बचाना",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "परत",
- "layers": "Layers",
- "del": "परत हटाएँ",
- "move_down": "परत नीचे ले जाएँ",
- "new": "नई परत",
- "rename": "परत का नाम बदलें",
- "move_up": "परत ऊपर ले जाएँ",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "अंश को ले जाएँ:",
- "move_selected": "चयनित अंश को दूसरी परत पर ले जाएँ"
- },
- config: {
- "image_props": "छवि के गुण",
- "doc_title": "शीर्षक",
- "doc_dims": "कैनवास आयाम",
- "included_images": "शामिल छवियाँ",
- "image_opt_embed": "एम्बेड डेटा (स्थानीय फ़ाइलें)",
- "image_opt_ref": "फाइल के संदर्भ का प्रयोग",
- "editor_prefs": "संपादक वरीयताएँ",
- "icon_size": "चिह्न का आकार",
- "language": "भाषा",
- "background": "संपादक पृष्ठभूमि",
- "editor_img_url": "Image URL",
- "editor_bg_note": "नोट: पृष्ठभूमि छवि के साथ नहीं बचायी जाएगी",
- "icon_large": "बड़ा",
- "icon_medium": "मध्यम",
- "icon_small": "छोटा",
- "icon_xlarge": "बहुत बड़ा",
- "select_predefined": "चुनें पूर्वनिर्धारित:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "अमान्य मूल्य",
- "noContentToFitTo": "कोई सामग्री फिट करने के लिए उपलब्ध नहीं",
- "dupeLayerName": "इस नाम कि परत पहले से मौजूद है !",
- "enterUniqueLayerName": "कृपया परत का एक अद्वितीय नाम डालें",
- "enterNewLayerName": "कृपया परत का एक नया नाम डालें",
- "layerHasThatName": "परत का पहले से ही यही नाम है",
- "QmoveElemsToLayer": "चयनित अंश को परत '%s' पर ले जाएँ ?",
- "QwantToClear": "क्या आप छवि साफ़ करना चाहते हैं?\nयह आपके उन्डू इतिहास को भी मिटा देगा!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "आपके एस.वी.जी. स्रोत में त्रुटियों थी.\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?",
- "QignoreSourceChanges": "एसवीजी स्रोत से लाये बदलावों को ध्यान न दें?",
- "featNotSupported": "सुविधा असमर्थित है",
- "enterNewImgURL": "नई छवि URL दर्ज करें",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "hi",
+ dir: "ltr",
+ common: {
+ "ok": "बचाना",
+ "cancel": "रद्द करें",
+ "key_backspace": "बैकस्पेस",
+ "key_del": "हटायें",
+ "key_down": "नीचे",
+ "key_up": "ऊपर",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "रंग बदलने पर क्लिक करें, बदलाव भरने के क्लिक करने के लिए स्ट्रोक का रंग बदलने के लिए",
+ "zoom_level": "बदलें स्तर ज़ूम",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "बदलें का रंग भरना",
+ "stroke_color": "बदलें स्ट्रोक रंग",
+ "stroke_style": "बदलें स्ट्रोक डेश शैली",
+ "stroke_width": "बदलें स्ट्रोक चौड़ाई",
+ "pos_x": "X समकक्ष बदलें ",
+ "pos_y": "Y समकक्ष बदलें",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "बदलें रोटेशन कोण",
+ "blur": "Change gaussian blur value",
+ "opacity": "पारदर्शिता बदलें",
+ "circle_cx": "बदल रहा है चक्र cx समन्वय",
+ "circle_cy": "परिवर्तन चक्र cy समन्वय है",
+ "circle_r": "बदल रहा है चक्र त्रिज्या",
+ "ellipse_cx": "बदलें दीर्घवृत्त है cx समन्वय",
+ "ellipse_cy": "बदलें दीर्घवृत्त cy समन्वय है",
+ "ellipse_rx": "बदल रहा है दीर्घवृत्त x त्रिज्या",
+ "ellipse_ry": "बदल रहा है दीर्घवृत्त y त्रिज्या",
+ "line_x1": "बदल रहा है लाइन x समन्वय शुरू",
+ "line_x2": "बदल रहा है लाइन x समन्वय समाप्त",
+ "line_y1": "बदलें रेखा y शुरू हो रहा है समन्वय",
+ "line_y2": "बदलें रेखा y अंत है समन्वय",
+ "rect_height": "बदलें आयत ऊंचाई",
+ "rect_width": "बदलें आयत चौड़ाई",
+ "corner_radius": "बदलें आयत कॉर्नर त्रिज्या",
+ "image_width": "बदलें छवि चौड़ाई",
+ "image_height": "बदलें छवि ऊँचाई",
+ "image_url": "बदलें यूआरएल",
+ "node_x": "नोड का x समकक्ष बदलें",
+ "node_y": "नोड का y समकक्ष बदलें",
+ "seg_type": "वर्ग प्रकार बदलें",
+ "straight_segments": "सीधे वर्ग",
+ "curve_segments": "घुमाव",
+ "text_contents": "बदलें पाठ सामग्री",
+ "font_family": "बदलें फ़ॉन्ट परिवार",
+ "font_size": "फ़ॉन्ट का आकार बदलें",
+ "bold": "मोटा पाठ",
+ "italic": "इटैलिक पाठ"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "पृष्ठभूमि का रंग बदल / अस्पष्टता",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "सामग्री के लिए फिट",
+ "fit_to_all": "सभी सामग्री के लिए फिट",
+ "fit_to_canvas": "फिट कैनवास को",
+ "fit_to_layer_content": "फिट परत सामग्री के लिए",
+ "fit_to_sel": "चयन के लिए फिट",
+ "align_relative_to": "संरेखित करें रिश्तेदार को ...",
+ "relativeTo": "रिश्तेदार को:",
+ "page": "पृष्ठ",
+ "largest_object": "सबसे बड़ी वस्तु",
+ "selected_objects": "निर्वाचित वस्तुओं",
+ "smallest_object": "छोटी से छोटी वस्तु",
+ "new_doc": "नई छवि",
+ "open_doc": "छवि खोलें",
+ "export_img": "Export",
+ "save_doc": "सहेजें छवि",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "तलमेंपंक्तिबद्धकरें",
+ "align_center": "मध्य में समंजित करें",
+ "align_left": " पंक्तिबद्ध करें",
+ "align_middle": "मध्य संरेखित करें",
+ "align_right": "दायाँपंक्तिबद्धकरें",
+ "align_top": "शीर्षमेंपंक्तिबद्धकरें",
+ "mode_select": "उपकरण चुनें",
+ "mode_fhpath": "पेंसिल उपकरण",
+ "mode_line": "लाइन उपकरण",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "नि: शुल्क हाथ आयत",
+ "mode_ellipse": "दीर्घवृत्त",
+ "mode_circle": "वृत्त",
+ "mode_fhellipse": "नि: शुल्क हाथ दीर्घवृत्त",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "पाठ उपकरण",
+ "mode_image": "छवि उपकरण",
+ "mode_zoom": "ज़ूम उपकरण",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "पूर्ववत करें",
+ "redo": "फिर से करें",
+ "tool_source": "स्रोत में बदलाव करें",
+ "wireframe_mode": "रूपरेखा मोड",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "समूह तत्वों",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "पथ में बदलें",
+ "reorient_path": "पथ को नई दिशा दें",
+ "ungroup": "अंश को समूह से अलग करें",
+ "docprops": "दस्तावेज़ गुण",
+ "imagelib": "Image Library",
+ "move_bottom": "नीचे ले जाएँ",
+ "move_top": "ऊपर ले जाएँ",
+ "node_clone": "नोड क्लोन",
+ "node_delete": "नोड हटायें",
+ "node_link": "कड़ी नियंत्रण बिंदु",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "बचाना",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "परत",
+ "layers": "Layers",
+ "del": "परत हटाएँ",
+ "move_down": "परत नीचे ले जाएँ",
+ "new": "नई परत",
+ "rename": "परत का नाम बदलें",
+ "move_up": "परत ऊपर ले जाएँ",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "अंश को ले जाएँ:",
+ "move_selected": "चयनित अंश को दूसरी परत पर ले जाएँ"
+ },
+ config: {
+ "image_props": "छवि के गुण",
+ "doc_title": "शीर्षक",
+ "doc_dims": "कैनवास आयाम",
+ "included_images": "शामिल छवियाँ",
+ "image_opt_embed": "एम्बेड डेटा (स्थानीय फ़ाइलें)",
+ "image_opt_ref": "फाइल के संदर्भ का प्रयोग",
+ "editor_prefs": "संपादक वरीयताएँ",
+ "icon_size": "चिह्न का आकार",
+ "language": "भाषा",
+ "background": "संपादक पृष्ठभूमि",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "नोट: पृष्ठभूमि छवि के साथ नहीं बचायी जाएगी",
+ "icon_large": "बड़ा",
+ "icon_medium": "मध्यम",
+ "icon_small": "छोटा",
+ "icon_xlarge": "बहुत बड़ा",
+ "select_predefined": "चुनें पूर्वनिर्धारित:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "अमान्य मूल्य",
+ "noContentToFitTo": "कोई सामग्री फिट करने के लिए उपलब्ध नहीं",
+ "dupeLayerName": "इस नाम कि परत पहले से मौजूद है !",
+ "enterUniqueLayerName": "कृपया परत का एक अद्वितीय नाम डालें",
+ "enterNewLayerName": "कृपया परत का एक नया नाम डालें",
+ "layerHasThatName": "परत का पहले से ही यही नाम है",
+ "QmoveElemsToLayer": "चयनित अंश को परत '%s' पर ले जाएँ ?",
+ "QwantToClear": "क्या आप छवि साफ़ करना चाहते हैं?\nयह आपके उन्डू इतिहास को भी मिटा देगा!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "आपके एस.वी.जी. स्रोत में त्रुटियों थी.\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?",
+ "QignoreSourceChanges": "एसवीजी स्रोत से लाये बदलावों को ध्यान न दें?",
+ "featNotSupported": "सुविधा असमर्थित है",
+ "enterNewImgURL": "नई छवि URL दर्ज करें",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.hr.js b/editor/locale/lang.hr.js
index 21934fff..6bc0c0be 100644
--- a/editor/locale/lang.hr.js
+++ b/editor/locale/lang.hr.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "hr",
- dir: "ltr",
- common: {
- "ok": "Spremiti",
- "cancel": "Odustani",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Kliknite promijeniti boju ispune, shift-click to promijeniti boju moždanog udara",
- "zoom_level": "Promjena razine zumiranja",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Promjena boje ispune",
- "stroke_color": "Promjena boje moždani udar",
- "stroke_style": "Promijeni stroke crtica stil",
- "stroke_width": "Promjena širine moždani udar",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Promijeni rotation angle",
- "blur": "Change gaussian blur value",
- "opacity": "Promjena odabrane stavke neprozirnost",
- "circle_cx": "Promjena krug's CX koordinirati",
- "circle_cy": "Cy Promijeni krug je koordinirati",
- "circle_r": "Promjena krug je radijusa",
- "ellipse_cx": "Promjena elipsa's CX koordinirati",
- "ellipse_cy": "Cy Promijeni elipsa je koordinirati",
- "ellipse_rx": "Promijeniti elipsa's x polumjer",
- "ellipse_ry": "Promjena elipsa's y polumjer",
- "line_x1": "Promijeni linija je početak x koordinatu",
- "line_x2": "Promjena linije završetak x koordinatu",
- "line_y1": "Promijeni linija je početak y koordinatu",
- "line_y2": "Promjena linije završetak y koordinatu",
- "rect_height": "Promijeni pravokutnik visine",
- "rect_width": "Promijeni pravokutnik širine",
- "corner_radius": "Promijeni Pravokutnik Corner Radius",
- "image_width": "Promijeni sliku širine",
- "image_height": "Promijeni sliku visina",
- "image_url": "Promijeni URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Promjena sadržaja teksta",
- "font_family": "Promjena fontova",
- "font_size": "Change font size",
- "bold": "Podebljani tekst",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Promijeni boju pozadine / neprozirnost",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Prilagodi na sve sadržaje",
- "fit_to_canvas": "Prilagodi na platnu",
- "fit_to_layer_content": "Prilagodi sloj sadržaj",
- "fit_to_sel": "Prilagodi odabir",
- "align_relative_to": "Poravnaj u odnosu na ...",
- "relativeTo": "u odnosu na:",
- "page": "stranica",
- "largest_object": "najveći objekt",
- "selected_objects": "izabrani objekti",
- "smallest_object": "najmanji objekt",
- "new_doc": "Nove slike",
- "open_doc": "Otvori sliku",
- "export_img": "Export",
- "save_doc": "Spremanje slike",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Poravnaj dolje",
- "align_center": "Centriraj",
- "align_left": "Poravnaj lijevo",
- "align_middle": "Poravnaj Srednji",
- "align_right": "Poravnaj desno",
- "align_top": "Poravnaj Top",
- "mode_select": "Odaberite alat",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Pravokutnik",
- "mode_ellipse": "Elipsa",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekst Alat",
- "mode_image": "Image Tool",
- "mode_zoom": "Alat za zumiranje",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Poništi",
- "redo": "Redo",
- "tool_source": "Uredi Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Grupa Elementi",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Razgrupiranje Elementi",
- "docprops": "Svojstva dokumenta",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Pomakni na vrh",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Spremiti",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Brisanje sloja",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Preimenuj Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefinirane:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "hr",
+ dir: "ltr",
+ common: {
+ "ok": "Spremiti",
+ "cancel": "Odustani",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Kliknite promijeniti boju ispune, shift-click to promijeniti boju moždanog udara",
+ "zoom_level": "Promjena razine zumiranja",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Promjena boje ispune",
+ "stroke_color": "Promjena boje moždani udar",
+ "stroke_style": "Promijeni stroke crtica stil",
+ "stroke_width": "Promjena širine moždani udar",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Promijeni rotation angle",
+ "blur": "Change gaussian blur value",
+ "opacity": "Promjena odabrane stavke neprozirnost",
+ "circle_cx": "Promjena krug's CX koordinirati",
+ "circle_cy": "Cy Promijeni krug je koordinirati",
+ "circle_r": "Promjena krug je radijusa",
+ "ellipse_cx": "Promjena elipsa's CX koordinirati",
+ "ellipse_cy": "Cy Promijeni elipsa je koordinirati",
+ "ellipse_rx": "Promijeniti elipsa's x polumjer",
+ "ellipse_ry": "Promjena elipsa's y polumjer",
+ "line_x1": "Promijeni linija je početak x koordinatu",
+ "line_x2": "Promjena linije završetak x koordinatu",
+ "line_y1": "Promijeni linija je početak y koordinatu",
+ "line_y2": "Promjena linije završetak y koordinatu",
+ "rect_height": "Promijeni pravokutnik visine",
+ "rect_width": "Promijeni pravokutnik širine",
+ "corner_radius": "Promijeni Pravokutnik Corner Radius",
+ "image_width": "Promijeni sliku širine",
+ "image_height": "Promijeni sliku visina",
+ "image_url": "Promijeni URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Promjena sadržaja teksta",
+ "font_family": "Promjena fontova",
+ "font_size": "Change font size",
+ "bold": "Podebljani tekst",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Promijeni boju pozadine / neprozirnost",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Prilagodi na sve sadržaje",
+ "fit_to_canvas": "Prilagodi na platnu",
+ "fit_to_layer_content": "Prilagodi sloj sadržaj",
+ "fit_to_sel": "Prilagodi odabir",
+ "align_relative_to": "Poravnaj u odnosu na ...",
+ "relativeTo": "u odnosu na:",
+ "page": "stranica",
+ "largest_object": "najveći objekt",
+ "selected_objects": "izabrani objekti",
+ "smallest_object": "najmanji objekt",
+ "new_doc": "Nove slike",
+ "open_doc": "Otvori sliku",
+ "export_img": "Export",
+ "save_doc": "Spremanje slike",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Poravnaj dolje",
+ "align_center": "Centriraj",
+ "align_left": "Poravnaj lijevo",
+ "align_middle": "Poravnaj Srednji",
+ "align_right": "Poravnaj desno",
+ "align_top": "Poravnaj Top",
+ "mode_select": "Odaberite alat",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Pravokutnik",
+ "mode_ellipse": "Elipsa",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekst Alat",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Alat za zumiranje",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Poništi",
+ "redo": "Redo",
+ "tool_source": "Uredi Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Grupa Elementi",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Razgrupiranje Elementi",
+ "docprops": "Svojstva dokumenta",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Pomakni na vrh",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Spremiti",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Brisanje sloja",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Preimenuj Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefinirane:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.hu.js b/editor/locale/lang.hu.js
index 22c251c6..da3782bb 100644
--- a/editor/locale/lang.hu.js
+++ b/editor/locale/lang.hu.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "hu",
- dir: "ltr",
- common: {
- "ok": "Ment",
- "cancel": "Szakítani",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Kattints ide a változások töltse szín, shift-click változtatni stroke color",
- "zoom_level": "Change nagyítási",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change töltse color",
- "stroke_color": "Change stroke color",
- "stroke_style": "Change stroke kötőjel style",
- "stroke_width": "Change stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Váltás forgás szög",
- "blur": "Change gaussian blur value",
- "opacity": "A kijelölt elem opacity",
- "circle_cx": "Change kör CX koordináta",
- "circle_cy": "Change kör cy koordináta",
- "circle_r": "Change kör sugara",
- "ellipse_cx": "Change ellipszis's CX koordináta",
- "ellipse_cy": "Change ellipszis's cy koordináta",
- "ellipse_rx": "Change ellipszis's x sugarú",
- "ellipse_ry": "Change ellipszis's y sugara",
- "line_x1": "A sor kezd x koordináta",
- "line_x2": "A sor vége az x koordináta",
- "line_y1": "A sor kezd y koordináta",
- "line_y2": "A sor vége az y koordináta",
- "rect_height": "Change téglalap magassága",
- "rect_width": "Change téglalap szélessége",
- "corner_radius": "Change téglalap sarok sugara",
- "image_width": "Change kép szélessége",
- "image_height": "Kép módosítása height",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "A szöveg tartalma",
- "font_family": "Change Betűcsalád",
- "font_size": "Change font size",
- "bold": "Félkövér szöveg",
- "italic": "Dőlt szöveg"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color / homályosság",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Illeszkednek az összes tartalom",
- "fit_to_canvas": "Igazítás a vászonra",
- "fit_to_layer_content": "Igazítás a réteg tartalma",
- "fit_to_sel": "Igazítás a kiválasztási",
- "align_relative_to": "Képest Igazítás ...",
- "relativeTo": "relatív hogy:",
- "page": "Page",
- "largest_object": "legnagyobb objektum",
- "selected_objects": "választott tárgyak",
- "smallest_object": "legkisebb objektum",
- "new_doc": "Új kép",
- "open_doc": "Kép megnyitása",
- "export_img": "Export",
- "save_doc": "Kép mentése más",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Alulra igazítás",
- "align_center": "Középre igazítás",
- "align_left": "Balra igazítás",
- "align_middle": "Közép-align",
- "align_right": "Jobbra igazítás",
- "align_top": "Align Top",
- "mode_select": "Válassza ki az eszközt",
- "mode_fhpath": "Ceruza eszköz",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand téglalap",
- "mode_ellipse": "Ellipszisszelet",
- "mode_circle": "Körbe",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Szöveg eszköz",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Visszavon",
- "redo": "Megismétléséhez",
- "tool_source": "Szerkesztés Forrás",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Csoport elemei",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Szétbont elemei",
- "docprops": "Dokumentum tulajdonságai",
- "imagelib": "Image Library",
- "move_bottom": "Mozgatás lefelé",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Ment",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Réteg törlése",
- "move_down": "Mozgatása lefelé",
- "new": "Új réteg",
- "rename": "Réteg átnevezése",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Válassza ki előre definiált:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "hu",
+ dir: "ltr",
+ common: {
+ "ok": "Ment",
+ "cancel": "Szakítani",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Kattints ide a változások töltse szín, shift-click változtatni stroke color",
+ "zoom_level": "Change nagyítási",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change töltse color",
+ "stroke_color": "Change stroke color",
+ "stroke_style": "Change stroke kötőjel style",
+ "stroke_width": "Change stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Váltás forgás szög",
+ "blur": "Change gaussian blur value",
+ "opacity": "A kijelölt elem opacity",
+ "circle_cx": "Change kör CX koordináta",
+ "circle_cy": "Change kör cy koordináta",
+ "circle_r": "Change kör sugara",
+ "ellipse_cx": "Change ellipszis's CX koordináta",
+ "ellipse_cy": "Change ellipszis's cy koordináta",
+ "ellipse_rx": "Change ellipszis's x sugarú",
+ "ellipse_ry": "Change ellipszis's y sugara",
+ "line_x1": "A sor kezd x koordináta",
+ "line_x2": "A sor vége az x koordináta",
+ "line_y1": "A sor kezd y koordináta",
+ "line_y2": "A sor vége az y koordináta",
+ "rect_height": "Change téglalap magassága",
+ "rect_width": "Change téglalap szélessége",
+ "corner_radius": "Change téglalap sarok sugara",
+ "image_width": "Change kép szélessége",
+ "image_height": "Kép módosítása height",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "A szöveg tartalma",
+ "font_family": "Change Betűcsalád",
+ "font_size": "Change font size",
+ "bold": "Félkövér szöveg",
+ "italic": "Dőlt szöveg"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color / homályosság",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Illeszkednek az összes tartalom",
+ "fit_to_canvas": "Igazítás a vászonra",
+ "fit_to_layer_content": "Igazítás a réteg tartalma",
+ "fit_to_sel": "Igazítás a kiválasztási",
+ "align_relative_to": "Képest Igazítás ...",
+ "relativeTo": "relatív hogy:",
+ "page": "Page",
+ "largest_object": "legnagyobb objektum",
+ "selected_objects": "választott tárgyak",
+ "smallest_object": "legkisebb objektum",
+ "new_doc": "Új kép",
+ "open_doc": "Kép megnyitása",
+ "export_img": "Export",
+ "save_doc": "Kép mentése más",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Alulra igazítás",
+ "align_center": "Középre igazítás",
+ "align_left": "Balra igazítás",
+ "align_middle": "Közép-align",
+ "align_right": "Jobbra igazítás",
+ "align_top": "Align Top",
+ "mode_select": "Válassza ki az eszközt",
+ "mode_fhpath": "Ceruza eszköz",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand téglalap",
+ "mode_ellipse": "Ellipszisszelet",
+ "mode_circle": "Körbe",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Szöveg eszköz",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Visszavon",
+ "redo": "Megismétléséhez",
+ "tool_source": "Szerkesztés Forrás",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Csoport elemei",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Szétbont elemei",
+ "docprops": "Dokumentum tulajdonságai",
+ "imagelib": "Image Library",
+ "move_bottom": "Mozgatás lefelé",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Ment",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Réteg törlése",
+ "move_down": "Mozgatása lefelé",
+ "new": "Új réteg",
+ "rename": "Réteg átnevezése",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Válassza ki előre definiált:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.hy.js b/editor/locale/lang.hy.js
index 7411b950..76042044 100644
--- a/editor/locale/lang.hy.js
+++ b/editor/locale/lang.hy.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "hy",
- dir: "ltr",
- common: {
- "ok": "Save",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click to change fill color, shift-click to change stroke color",
- "zoom_level": "Change zoom level",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change fill color",
- "stroke_color": "Change stroke color",
- "stroke_style": "Change stroke dash style",
- "stroke_width": "Change stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change rotation angle",
- "blur": "Change gaussian blur value",
- "opacity": "Change selected item opacity",
- "circle_cx": "Change circle's cx coordinate",
- "circle_cy": "Change circle's cy coordinate",
- "circle_r": "Change circle's radius",
- "ellipse_cx": "Change ellipse's cx coordinate",
- "ellipse_cy": "Change ellipse's cy coordinate",
- "ellipse_rx": "Change ellipse's x radius",
- "ellipse_ry": "Change ellipse's y radius",
- "line_x1": "Change line's starting x coordinate",
- "line_x2": "Change line's ending x coordinate",
- "line_y1": "Change line's starting y coordinate",
- "line_y2": "Change line's ending y coordinate",
- "rect_height": "Change rectangle height",
- "rect_width": "Change rectangle width",
- "corner_radius": "Change Rectangle Corner Radius",
- "image_width": "Change image width",
- "image_height": "Change image height",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Change text contents",
- "font_family": "Change Font Family",
- "font_size": "Change Font Size",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color/opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit to all content",
- "fit_to_canvas": "Fit to canvas",
- "fit_to_layer_content": "Fit to layer content",
- "fit_to_sel": "Fit to selection",
- "align_relative_to": "Align relative to ...",
- "relativeTo": "relative to:",
- "page": "page",
- "largest_object": "largest object",
- "selected_objects": "elected objects",
- "smallest_object": "smallest object",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Align Middle",
- "align_right": "Align Right",
- "align_top": "Align Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Save",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "hy",
+ dir: "ltr",
+ common: {
+ "ok": "Save",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click to change fill color, shift-click to change stroke color",
+ "zoom_level": "Change zoom level",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change fill color",
+ "stroke_color": "Change stroke color",
+ "stroke_style": "Change stroke dash style",
+ "stroke_width": "Change stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change rotation angle",
+ "blur": "Change gaussian blur value",
+ "opacity": "Change selected item opacity",
+ "circle_cx": "Change circle's cx coordinate",
+ "circle_cy": "Change circle's cy coordinate",
+ "circle_r": "Change circle's radius",
+ "ellipse_cx": "Change ellipse's cx coordinate",
+ "ellipse_cy": "Change ellipse's cy coordinate",
+ "ellipse_rx": "Change ellipse's x radius",
+ "ellipse_ry": "Change ellipse's y radius",
+ "line_x1": "Change line's starting x coordinate",
+ "line_x2": "Change line's ending x coordinate",
+ "line_y1": "Change line's starting y coordinate",
+ "line_y2": "Change line's ending y coordinate",
+ "rect_height": "Change rectangle height",
+ "rect_width": "Change rectangle width",
+ "corner_radius": "Change Rectangle Corner Radius",
+ "image_width": "Change image width",
+ "image_height": "Change image height",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Change text contents",
+ "font_family": "Change Font Family",
+ "font_size": "Change Font Size",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color/opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit to all content",
+ "fit_to_canvas": "Fit to canvas",
+ "fit_to_layer_content": "Fit to layer content",
+ "fit_to_sel": "Fit to selection",
+ "align_relative_to": "Align relative to ...",
+ "relativeTo": "relative to:",
+ "page": "page",
+ "largest_object": "largest object",
+ "selected_objects": "elected objects",
+ "smallest_object": "smallest object",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Align Middle",
+ "align_right": "Align Right",
+ "align_top": "Align Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Save",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.id.js b/editor/locale/lang.id.js
index 81066397..c3bfa36f 100644
--- a/editor/locale/lang.id.js
+++ b/editor/locale/lang.id.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "id",
- dir: "ltr",
- common: {
- "ok": "Simpan",
- "cancel": "Batal",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klik untuk mengubah warna mengisi, shift-klik untuk mengubah warna stroke",
- "zoom_level": "Mengubah tingkat pembesaran",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Ubah warna mengisi",
- "stroke_color": "Ubah warna stroke",
- "stroke_style": "Ubah gaya dash stroke",
- "stroke_width": "Ubah stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Ubah sudut rotasi",
- "blur": "Change gaussian blur value",
- "opacity": "Mengubah item yang dipilih keburaman",
- "circle_cx": "Mengubah koordinat lingkaran cx",
- "circle_cy": "Mengubah koordinat cy lingkaran",
- "circle_r": "Ubah jari-jari lingkaran",
- "ellipse_cx": "Ubah elips's cx koordinat",
- "ellipse_cy": "Ubah elips's cy koordinat",
- "ellipse_rx": "Ubah elips's x jari-jari",
- "ellipse_ry": "Ubah elips's y jari-jari",
- "line_x1": "Ubah baris mulai x koordinat",
- "line_x2": "Ubah baris's Berakhir x koordinat",
- "line_y1": "Ubah baris mulai y koordinat",
- "line_y2": "Ubah baris di tiap akhir y koordinat",
- "rect_height": "Perubahan tinggi persegi panjang",
- "rect_width": "Ubah persegi panjang lebar",
- "corner_radius": "Ubah Corner Rectangle Radius",
- "image_width": "Ubah Lebar gambar",
- "image_height": "Tinggi gambar Perubahan",
- "image_url": "Ubah URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Ubah isi teks",
- "font_family": "Ubah Font Keluarga",
- "font_size": "Ubah Ukuran Font",
- "bold": "Bold Teks",
- "italic": "Italic Teks"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Mengubah warna latar belakang / keburaman",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Cocok untuk semua konten",
- "fit_to_canvas": "Muat kanvas",
- "fit_to_layer_content": "Muat konten lapisan",
- "fit_to_sel": "Fit seleksi",
- "align_relative_to": "Rata relatif ...",
- "relativeTo": "relatif:",
- "page": "Halaman",
- "largest_object": "objek terbesar",
- "selected_objects": "objek terpilih",
- "smallest_object": "objek terkecil",
- "new_doc": "Gambar Baru",
- "open_doc": "Membuka Image",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Rata Bottom",
- "align_center": "Rata Tengah",
- "align_left": "Rata Kiri",
- "align_middle": "Rata Tengah",
- "align_right": "Rata Kanan",
- "align_top": "Rata Top",
- "mode_select": "Pilih Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Persegi Panjang",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Lingkaran",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Teks Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Kelompok Elemen",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elemen",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Pindah ke Bawah",
- "move_top": "Pindahkan ke Atas",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Simpan",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Hapus Layer",
- "move_down": "Pindahkan Layer Bawah",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Pindahkan Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Pilih standar:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "id",
+ dir: "ltr",
+ common: {
+ "ok": "Simpan",
+ "cancel": "Batal",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klik untuk mengubah warna mengisi, shift-klik untuk mengubah warna stroke",
+ "zoom_level": "Mengubah tingkat pembesaran",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Ubah warna mengisi",
+ "stroke_color": "Ubah warna stroke",
+ "stroke_style": "Ubah gaya dash stroke",
+ "stroke_width": "Ubah stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Ubah sudut rotasi",
+ "blur": "Change gaussian blur value",
+ "opacity": "Mengubah item yang dipilih keburaman",
+ "circle_cx": "Mengubah koordinat lingkaran cx",
+ "circle_cy": "Mengubah koordinat cy lingkaran",
+ "circle_r": "Ubah jari-jari lingkaran",
+ "ellipse_cx": "Ubah elips's cx koordinat",
+ "ellipse_cy": "Ubah elips's cy koordinat",
+ "ellipse_rx": "Ubah elips's x jari-jari",
+ "ellipse_ry": "Ubah elips's y jari-jari",
+ "line_x1": "Ubah baris mulai x koordinat",
+ "line_x2": "Ubah baris's Berakhir x koordinat",
+ "line_y1": "Ubah baris mulai y koordinat",
+ "line_y2": "Ubah baris di tiap akhir y koordinat",
+ "rect_height": "Perubahan tinggi persegi panjang",
+ "rect_width": "Ubah persegi panjang lebar",
+ "corner_radius": "Ubah Corner Rectangle Radius",
+ "image_width": "Ubah Lebar gambar",
+ "image_height": "Tinggi gambar Perubahan",
+ "image_url": "Ubah URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Ubah isi teks",
+ "font_family": "Ubah Font Keluarga",
+ "font_size": "Ubah Ukuran Font",
+ "bold": "Bold Teks",
+ "italic": "Italic Teks"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Mengubah warna latar belakang / keburaman",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Cocok untuk semua konten",
+ "fit_to_canvas": "Muat kanvas",
+ "fit_to_layer_content": "Muat konten lapisan",
+ "fit_to_sel": "Fit seleksi",
+ "align_relative_to": "Rata relatif ...",
+ "relativeTo": "relatif:",
+ "page": "Halaman",
+ "largest_object": "objek terbesar",
+ "selected_objects": "objek terpilih",
+ "smallest_object": "objek terkecil",
+ "new_doc": "Gambar Baru",
+ "open_doc": "Membuka Image",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Rata Bottom",
+ "align_center": "Rata Tengah",
+ "align_left": "Rata Kiri",
+ "align_middle": "Rata Tengah",
+ "align_right": "Rata Kanan",
+ "align_top": "Rata Top",
+ "mode_select": "Pilih Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Persegi Panjang",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Lingkaran",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Teks Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Kelompok Elemen",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elemen",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Pindah ke Bawah",
+ "move_top": "Pindahkan ke Atas",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Simpan",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Hapus Layer",
+ "move_down": "Pindahkan Layer Bawah",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Pindahkan Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Pilih standar:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.is.js b/editor/locale/lang.is.js
index df259166..61b997b7 100644
--- a/editor/locale/lang.is.js
+++ b/editor/locale/lang.is.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "is",
- dir: "ltr",
- common: {
- "ok": "Vista",
- "cancel": "Hætta",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Smelltu hér til að breyta fylla lit, Shift-smelltu til að breyta högg lit",
- "zoom_level": "Breyta Stækkunarstig",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Breyta fylla color",
- "stroke_color": "Breyta heilablķđfall color",
- "stroke_style": "Breyta heilablķđfall þjóta stíl",
- "stroke_width": "Breyta heilablķđfall width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Breyting snúningur horn",
- "blur": "Change gaussian blur value",
- "opacity": "Breyta valin atriði opacity",
- "circle_cx": "Cx Breyta hring er að samræma",
- "circle_cy": "Breyta hring's cy samræma",
- "circle_r": "Radíus Breyta hringsins er",
- "ellipse_cx": "Breyta sporbaug's cx samræma",
- "ellipse_cy": "Breyta sporbaug's cy samræma",
- "ellipse_rx": "X radíus Breyta sporbaug's",
- "ellipse_ry": "Y radíus Breyta sporbaug's",
- "line_x1": "Breyta lína í byrjun x samræma",
- "line_x2": "Breyta lína's Ending x samræma",
- "line_y1": "Breyta lína í byrjun y samræma",
- "line_y2": "Breyta lína er endir y samræma",
- "rect_height": "Breyta rétthyrningur hæð",
- "rect_width": "Skipta rétthyrningur width",
- "corner_radius": "Breyta rétthyrningur Corner Radíus",
- "image_width": "Breyta mynd width",
- "image_height": "Breyta mynd hæð",
- "image_url": "Breyta URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Breyta texta innihald",
- "font_family": "Change Leturfjölskylda",
- "font_size": "Breyta leturstærð",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Breyta bakgrunnslit / opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Laga til efni",
- "fit_to_canvas": "Fit á striga",
- "fit_to_layer_content": "Laga til lag efni",
- "fit_to_sel": "Fit til val",
- "align_relative_to": "Jafna miðað við ...",
- "relativeTo": "hlutfallslegt til:",
- "page": "síðu",
- "largest_object": "stærsti hlutinn",
- "selected_objects": "kjörinn hlutir",
- "smallest_object": "lítill hluti",
- "new_doc": "New Image",
- "open_doc": "Opna mynd",
- "export_img": "Export",
- "save_doc": "Spara Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Jafna Bottom",
- "align_center": "Jafna Center",
- "align_left": "Vinstri jöfnun",
- "align_middle": "Jafna Mið",
- "align_right": "Hægri jöfnun",
- "align_top": "Jöfnun Top",
- "mode_select": "Veldu Tól",
- "mode_fhpath": "Blýantur Tól",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand rétthyrningur",
- "mode_ellipse": "Sporbaugur",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Sporbaugur",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Mynd Tól",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Hætta",
- "redo": "Endurtaka",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Færa Bottom",
- "move_top": "Fara efst á síðu",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Vista",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Eyða Lag",
- "move_down": "Færa Layer Down",
- "new": "Lag",
- "rename": "Endurnefna Lag",
- "move_up": "Færa Lag Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Veldu predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "is",
+ dir: "ltr",
+ common: {
+ "ok": "Vista",
+ "cancel": "Hætta",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Smelltu hér til að breyta fylla lit, Shift-smelltu til að breyta högg lit",
+ "zoom_level": "Breyta Stækkunarstig",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Breyta fylla color",
+ "stroke_color": "Breyta heilablķđfall color",
+ "stroke_style": "Breyta heilablķđfall þjóta stíl",
+ "stroke_width": "Breyta heilablķđfall width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Breyting snúningur horn",
+ "blur": "Change gaussian blur value",
+ "opacity": "Breyta valin atriði opacity",
+ "circle_cx": "Cx Breyta hring er að samræma",
+ "circle_cy": "Breyta hring's cy samræma",
+ "circle_r": "Radíus Breyta hringsins er",
+ "ellipse_cx": "Breyta sporbaug's cx samræma",
+ "ellipse_cy": "Breyta sporbaug's cy samræma",
+ "ellipse_rx": "X radíus Breyta sporbaug's",
+ "ellipse_ry": "Y radíus Breyta sporbaug's",
+ "line_x1": "Breyta lína í byrjun x samræma",
+ "line_x2": "Breyta lína's Ending x samræma",
+ "line_y1": "Breyta lína í byrjun y samræma",
+ "line_y2": "Breyta lína er endir y samræma",
+ "rect_height": "Breyta rétthyrningur hæð",
+ "rect_width": "Skipta rétthyrningur width",
+ "corner_radius": "Breyta rétthyrningur Corner Radíus",
+ "image_width": "Breyta mynd width",
+ "image_height": "Breyta mynd hæð",
+ "image_url": "Breyta URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Breyta texta innihald",
+ "font_family": "Change Leturfjölskylda",
+ "font_size": "Breyta leturstærð",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Breyta bakgrunnslit / opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Laga til efni",
+ "fit_to_canvas": "Fit á striga",
+ "fit_to_layer_content": "Laga til lag efni",
+ "fit_to_sel": "Fit til val",
+ "align_relative_to": "Jafna miðað við ...",
+ "relativeTo": "hlutfallslegt til:",
+ "page": "síðu",
+ "largest_object": "stærsti hlutinn",
+ "selected_objects": "kjörinn hlutir",
+ "smallest_object": "lítill hluti",
+ "new_doc": "New Image",
+ "open_doc": "Opna mynd",
+ "export_img": "Export",
+ "save_doc": "Spara Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Jafna Bottom",
+ "align_center": "Jafna Center",
+ "align_left": "Vinstri jöfnun",
+ "align_middle": "Jafna Mið",
+ "align_right": "Hægri jöfnun",
+ "align_top": "Jöfnun Top",
+ "mode_select": "Veldu Tól",
+ "mode_fhpath": "Blýantur Tól",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand rétthyrningur",
+ "mode_ellipse": "Sporbaugur",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Sporbaugur",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Mynd Tól",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Hætta",
+ "redo": "Endurtaka",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Færa Bottom",
+ "move_top": "Fara efst á síðu",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Vista",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Eyða Lag",
+ "move_down": "Færa Layer Down",
+ "new": "Lag",
+ "rename": "Endurnefna Lag",
+ "move_up": "Færa Lag Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Veldu predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.it.js b/editor/locale/lang.it.js
index 24805e44..cacf8344 100644
--- a/editor/locale/lang.it.js
+++ b/editor/locale/lang.it.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "it",
- dir: "ltr",
- common: {
- "ok": "Salva",
- "cancel": "Annulla",
- "key_backspace": "backspace",
- "key_del": "Canc",
- "key_down": "giù",
- "key_up": "su",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Mostra/nascondi strumenti per il tratto",
- "palette_info": "Fare clic per cambiare il colore di riempimento, shift-click per cambiare colore del tratto",
- "zoom_level": "Cambia il livello di zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identifica l'elemento",
- "fill_color": "Cambia il colore di riempimento",
- "stroke_color": "Cambia il colore del tratto",
- "stroke_style": "Cambia lo stile del tratto",
- "stroke_width": "Cambia la larghezza del tratto",
- "pos_x": "Modifica la coordinata x",
- "pos_y": "Modifica la coordinata y",
- "linecap_butt": "Inizio linea: Punto",
- "linecap_round": "Inizio linea: Tondo",
- "linecap_square": "Inizio linea: Quadrato",
- "linejoin_bevel": "Giunzione: smussata",
- "linejoin_miter": "Giunzione: spezzata",
- "linejoin_round": "Giunzione: arrotondata",
- "angle": "Cambia l'angolo di rotazione",
- "blur": "Cambia l'intensità della sfocatura",
- "opacity": "Cambia l'opacità dell'oggetto selezionato",
- "circle_cx": "Cambia la coordinata Cx del cerchio",
- "circle_cy": "Cambia la coordinata Cy del cerchio",
- "circle_r": "Cambia il raggio del cerchio",
- "ellipse_cx": "Cambia la coordinata Cx dell'ellisse",
- "ellipse_cy": "Cambia la coordinata Cy dell'ellisse",
- "ellipse_rx": "Cambia l'asse x dell'ellisse",
- "ellipse_ry": "Cambia l'asse y dell'ellisse",
- "line_x1": "Modifica la coordinata iniziale x della linea",
- "line_x2": "Modifica la coordinata finale x della linea",
- "line_y1": "Modifica la coordinata iniziale y della linea",
- "line_y2": "Modifica la coordinata finale y della linea",
- "rect_height": "Cambia l'altezza rettangolo",
- "rect_width": "Cambia la larghezza rettangolo",
- "corner_radius": "Cambia il raggio dell'angolo",
- "image_width": "Cambia la larghezza dell'immagine",
- "image_height": "Cambia l'altezza dell'immagine",
- "image_url": "Cambia URL",
- "node_x": "Modifica la coordinata x del nodo",
- "node_y": "Modifica la coordinata y del nodo",
- "seg_type": "Cambia il tipo di segmento",
- "straight_segments": "Linea retta",
- "curve_segments": "Curva",
- "text_contents": "Cambia il contenuto del testo",
- "font_family": "Cambia il tipo di Font",
- "font_size": "Modifica dimensione carattere",
- "bold": "Grassetto",
- "italic": "Corsivo"
- },
- tools: {
- "main_menu": "Menù principale",
- "bkgnd_color_opac": "Cambia colore/opacità dello sfondo",
- "connector_no_arrow": "No freccia",
- "fitToContent": "Adatta al contenuto",
- "fit_to_all": "Adatta a tutti i contenuti",
- "fit_to_canvas": "Adatta all'area di disegno",
- "fit_to_layer_content": "Adatta al contenuto del livello",
- "fit_to_sel": "Adatta alla selezione",
- "align_relative_to": "Allineati a ...",
- "relativeTo": "Rispetto a:",
- "page": "Pagina",
- "largest_object": "Oggetto più grande",
- "selected_objects": "Oggetti selezionati",
- "smallest_object": "Oggetto più piccolo",
- "new_doc": "Nuova immagine",
- "open_doc": "Apri immagine",
- "export_img": "Export",
- "save_doc": "Salva",
- "import_doc": "Importa SVG",
- "align_to_page": "Allinea elementi alla pagina",
- "align_bottom": "Allinea in basso",
- "align_center": "Allinea al centro",
- "align_left": "Allinea a sinistra",
- "align_middle": "Allinea al centro",
- "align_right": "Allinea a destra",
- "align_top": "Allinea in alto",
- "mode_select": "Seleziona",
- "mode_fhpath": "Matita",
- "mode_line": "Linea",
- "mode_connect": "Collega due oggetti",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Rettangolo a mano libera",
- "mode_ellipse": "Ellisse",
- "mode_circle": "Cerchio",
- "mode_fhellipse": "Ellisse a mano libera",
- "mode_path": "Spezzata",
- "mode_shapelib": "Shape library",
- "mode_text": "Testo",
- "mode_image": "Immagine",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Seleziona colore",
- "no_embed": "NOTA: L'immagine non può essere incorporata: dipenderà dal percorso assoluto per essere vista",
- "undo": "Annulla",
- "redo": "Rifai",
- "tool_source": "Modifica sorgente",
- "wireframe_mode": "Contorno",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Raggruppa elementi",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Converti in tracciato",
- "reorient_path": "Riallinea",
- "ungroup": "Separa gli elementi",
- "docprops": "Proprietà del documento",
- "imagelib": "Image Library",
- "move_bottom": "Sposta in fondo",
- "move_top": "Sposta in cima",
- "node_clone": "Clona nodo",
- "node_delete": "Elimina nodo",
- "node_link": "Collegamento tra punti di controllo",
- "add_subpath": "Aggiungi sotto-percorso",
- "openclose_path": "Apri/chiudi spezzata",
- "source_save": "Salva",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Livello",
- "layers": "Layers",
- "del": "Elimina il livello",
- "move_down": "Sposta indietro il livello",
- "new": "Nuovo livello",
- "rename": "Rinomina il livello",
- "move_up": "Sposta avanti il livello",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Sposta verso:",
- "move_selected": "Sposta gli elementi in un diverso livello"
- },
- config: {
- "image_props": "Proprietà Immagine",
- "doc_title": "Titolo",
- "doc_dims": "Dimensioni dell'area di disegno",
- "included_images": "Immagini incluse",
- "image_opt_embed": "Incorpora dati (file locali)",
- "image_opt_ref": "Usa l'identificativo di riferimento",
- "editor_prefs": "Preferenze",
- "icon_size": "Dimensione Icona",
- "language": "Lingua",
- "background": "Sfondo dell'editor",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Nota: Lo sfondo non verrà salvato con l'immagine.",
- "icon_large": "Grande",
- "icon_medium": "Medio",
- "icon_small": "Piccolo",
- "icon_xlarge": "Molto grande",
- "select_predefined": "Selezioni predefinite:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Valore assegnato non valido",
- "noContentToFitTo": "Non c'è contenuto cui adeguarsi",
- "dupeLayerName": "C'è già un livello con questo nome!",
- "enterUniqueLayerName": "Assegna un diverso nome a ciascun livello, grazie!",
- "enterNewLayerName": "Assegna un nome al livello",
- "layerHasThatName": "Un livello ha già questo nome",
- "QmoveElemsToLayer": "Sposta gli elementi selezionali al livello '%s'?",
- "QwantToClear": "Vuoi cancellare il disegno?\nVerrà eliminato anche lo storico delle modifiche!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Ci sono errori nel codice sorgente SVG.\nRitorno al codice originale?",
- "QignoreSourceChanges": "Ignoro i cambiamenti nel sorgente SVG?",
- "featNotSupported": "Caratteristica non supportata",
- "enterNewImgURL": "Scrivi un nuovo URL per l'immagine",
- "defsFailOnSave": "NOTA: A causa dlle caratteristiche del tuo browser, l'immagine potrà apparire errata (senza elementi o gradazioni) finché non sarà salvata.",
- "loadingImage": "Sto caricando l'immagine. attendere prego...",
- "saveFromBrowser": "Seleziona \"Salva con nome...\" nel browser per salvare l'immagine con nome %s .",
- "noteTheseIssues": "Nota le seguenti particolarità: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "it",
+ dir: "ltr",
+ common: {
+ "ok": "Salva",
+ "cancel": "Annulla",
+ "key_backspace": "backspace",
+ "key_del": "Canc",
+ "key_down": "giù",
+ "key_up": "su",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Mostra/nascondi strumenti per il tratto",
+ "palette_info": "Fare clic per cambiare il colore di riempimento, shift-click per cambiare colore del tratto",
+ "zoom_level": "Cambia il livello di zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identifica l'elemento",
+ "fill_color": "Cambia il colore di riempimento",
+ "stroke_color": "Cambia il colore del tratto",
+ "stroke_style": "Cambia lo stile del tratto",
+ "stroke_width": "Cambia la larghezza del tratto",
+ "pos_x": "Modifica la coordinata x",
+ "pos_y": "Modifica la coordinata y",
+ "linecap_butt": "Inizio linea: Punto",
+ "linecap_round": "Inizio linea: Tondo",
+ "linecap_square": "Inizio linea: Quadrato",
+ "linejoin_bevel": "Giunzione: smussata",
+ "linejoin_miter": "Giunzione: spezzata",
+ "linejoin_round": "Giunzione: arrotondata",
+ "angle": "Cambia l'angolo di rotazione",
+ "blur": "Cambia l'intensità della sfocatura",
+ "opacity": "Cambia l'opacità dell'oggetto selezionato",
+ "circle_cx": "Cambia la coordinata Cx del cerchio",
+ "circle_cy": "Cambia la coordinata Cy del cerchio",
+ "circle_r": "Cambia il raggio del cerchio",
+ "ellipse_cx": "Cambia la coordinata Cx dell'ellisse",
+ "ellipse_cy": "Cambia la coordinata Cy dell'ellisse",
+ "ellipse_rx": "Cambia l'asse x dell'ellisse",
+ "ellipse_ry": "Cambia l'asse y dell'ellisse",
+ "line_x1": "Modifica la coordinata iniziale x della linea",
+ "line_x2": "Modifica la coordinata finale x della linea",
+ "line_y1": "Modifica la coordinata iniziale y della linea",
+ "line_y2": "Modifica la coordinata finale y della linea",
+ "rect_height": "Cambia l'altezza rettangolo",
+ "rect_width": "Cambia la larghezza rettangolo",
+ "corner_radius": "Cambia il raggio dell'angolo",
+ "image_width": "Cambia la larghezza dell'immagine",
+ "image_height": "Cambia l'altezza dell'immagine",
+ "image_url": "Cambia URL",
+ "node_x": "Modifica la coordinata x del nodo",
+ "node_y": "Modifica la coordinata y del nodo",
+ "seg_type": "Cambia il tipo di segmento",
+ "straight_segments": "Linea retta",
+ "curve_segments": "Curva",
+ "text_contents": "Cambia il contenuto del testo",
+ "font_family": "Cambia il tipo di Font",
+ "font_size": "Modifica dimensione carattere",
+ "bold": "Grassetto",
+ "italic": "Corsivo"
+ },
+ tools: {
+ "main_menu": "Menù principale",
+ "bkgnd_color_opac": "Cambia colore/opacità dello sfondo",
+ "connector_no_arrow": "No freccia",
+ "fitToContent": "Adatta al contenuto",
+ "fit_to_all": "Adatta a tutti i contenuti",
+ "fit_to_canvas": "Adatta all'area di disegno",
+ "fit_to_layer_content": "Adatta al contenuto del livello",
+ "fit_to_sel": "Adatta alla selezione",
+ "align_relative_to": "Allineati a ...",
+ "relativeTo": "Rispetto a:",
+ "page": "Pagina",
+ "largest_object": "Oggetto più grande",
+ "selected_objects": "Oggetti selezionati",
+ "smallest_object": "Oggetto più piccolo",
+ "new_doc": "Nuova immagine",
+ "open_doc": "Apri immagine",
+ "export_img": "Export",
+ "save_doc": "Salva",
+ "import_doc": "Importa SVG",
+ "align_to_page": "Allinea elementi alla pagina",
+ "align_bottom": "Allinea in basso",
+ "align_center": "Allinea al centro",
+ "align_left": "Allinea a sinistra",
+ "align_middle": "Allinea al centro",
+ "align_right": "Allinea a destra",
+ "align_top": "Allinea in alto",
+ "mode_select": "Seleziona",
+ "mode_fhpath": "Matita",
+ "mode_line": "Linea",
+ "mode_connect": "Collega due oggetti",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Rettangolo a mano libera",
+ "mode_ellipse": "Ellisse",
+ "mode_circle": "Cerchio",
+ "mode_fhellipse": "Ellisse a mano libera",
+ "mode_path": "Spezzata",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Testo",
+ "mode_image": "Immagine",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Seleziona colore",
+ "no_embed": "NOTA: L'immagine non può essere incorporata: dipenderà dal percorso assoluto per essere vista",
+ "undo": "Annulla",
+ "redo": "Rifai",
+ "tool_source": "Modifica sorgente",
+ "wireframe_mode": "Contorno",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Raggruppa elementi",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Converti in tracciato",
+ "reorient_path": "Riallinea",
+ "ungroup": "Separa gli elementi",
+ "docprops": "Proprietà del documento",
+ "imagelib": "Image Library",
+ "move_bottom": "Sposta in fondo",
+ "move_top": "Sposta in cima",
+ "node_clone": "Clona nodo",
+ "node_delete": "Elimina nodo",
+ "node_link": "Collegamento tra punti di controllo",
+ "add_subpath": "Aggiungi sotto-percorso",
+ "openclose_path": "Apri/chiudi spezzata",
+ "source_save": "Salva",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Livello",
+ "layers": "Layers",
+ "del": "Elimina il livello",
+ "move_down": "Sposta indietro il livello",
+ "new": "Nuovo livello",
+ "rename": "Rinomina il livello",
+ "move_up": "Sposta avanti il livello",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Sposta verso:",
+ "move_selected": "Sposta gli elementi in un diverso livello"
+ },
+ config: {
+ "image_props": "Proprietà Immagine",
+ "doc_title": "Titolo",
+ "doc_dims": "Dimensioni dell'area di disegno",
+ "included_images": "Immagini incluse",
+ "image_opt_embed": "Incorpora dati (file locali)",
+ "image_opt_ref": "Usa l'identificativo di riferimento",
+ "editor_prefs": "Preferenze",
+ "icon_size": "Dimensione Icona",
+ "language": "Lingua",
+ "background": "Sfondo dell'editor",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Nota: Lo sfondo non verrà salvato con l'immagine.",
+ "icon_large": "Grande",
+ "icon_medium": "Medio",
+ "icon_small": "Piccolo",
+ "icon_xlarge": "Molto grande",
+ "select_predefined": "Selezioni predefinite:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Valore assegnato non valido",
+ "noContentToFitTo": "Non c'è contenuto cui adeguarsi",
+ "dupeLayerName": "C'è già un livello con questo nome!",
+ "enterUniqueLayerName": "Assegna un diverso nome a ciascun livello, grazie!",
+ "enterNewLayerName": "Assegna un nome al livello",
+ "layerHasThatName": "Un livello ha già questo nome",
+ "QmoveElemsToLayer": "Sposta gli elementi selezionali al livello '%s'?",
+ "QwantToClear": "Vuoi cancellare il disegno?\nVerrà eliminato anche lo storico delle modifiche!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Ci sono errori nel codice sorgente SVG.\nRitorno al codice originale?",
+ "QignoreSourceChanges": "Ignoro i cambiamenti nel sorgente SVG?",
+ "featNotSupported": "Caratteristica non supportata",
+ "enterNewImgURL": "Scrivi un nuovo URL per l'immagine",
+ "defsFailOnSave": "NOTA: A causa dlle caratteristiche del tuo browser, l'immagine potrà apparire errata (senza elementi o gradazioni) finché non sarà salvata.",
+ "loadingImage": "Sto caricando l'immagine. attendere prego...",
+ "saveFromBrowser": "Seleziona \"Salva con nome...\" nel browser per salvare l'immagine con nome %s .",
+ "noteTheseIssues": "Nota le seguenti particolarità: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ja.js b/editor/locale/lang.ja.js
index 9047136a..ff818916 100644
--- a/editor/locale/lang.ja.js
+++ b/editor/locale/lang.ja.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ja",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "キャンセル",
- "key_backspace": "backspace",
- "key_del": "削除",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "クリックで塗りの色を選択、Shift+クリックで線の色を選択",
- "zoom_level": "ズーム倍率の変更",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "塗りの色を変更",
- "stroke_color": "線の色を変更",
- "stroke_style": "線種の変更",
- "stroke_width": "線幅の変更",
- "pos_x": "X座標を変更",
- "pos_y": "Y座標を変更",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "回転角の変更",
- "blur": "Change gaussian blur value",
- "opacity": "不透明度",
- "circle_cx": "円の中心を変更(X座標)",
- "circle_cy": "円の中心を変更(Y座標)",
- "circle_r": "変更円の半径",
- "ellipse_cx": "楕円の中心を変更(X座標)",
- "ellipse_cy": "楕円の中心を変更(Y座標)",
- "ellipse_rx": "楕円の半径を変更(X座標)",
- "ellipse_ry": "楕円の半径を変更(Y座標)",
- "line_x1": "開始X座標",
- "line_x2": "終了X座標",
- "line_y1": "開始Y座標",
- "line_y2": "終了Y座標",
- "rect_height": "長方形の高さを変更",
- "rect_width": "長方形の幅を変更",
- "corner_radius": "長方形の角の半径を変更",
- "image_width": "画像の幅を変更",
- "image_height": "画像の高さを変更",
- "image_url": "URLを変更",
- "node_x": "ノードのX座標を変更",
- "node_y": "ノードのY座標を変更",
- "seg_type": "線分の種類を変更",
- "straight_segments": "直線",
- "curve_segments": "カーブ",
- "text_contents": "テキストの内容の変更",
- "font_family": "フォントファミリーの変更",
- "font_size": "文字サイズの変更",
- "bold": "太字",
- "italic": "イタリック体"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "背景色/不透明度の変更",
- "connector_no_arrow": "No arrow",
- "fitToContent": "コンテンツに合わせる",
- "fit_to_all": "すべてのコンテンツに合わせる",
- "fit_to_canvas": "キャンバスに合わせる",
- "fit_to_layer_content": "レイヤー上のコンテンツに合わせる",
- "fit_to_sel": "選択対象に合わせる",
- "align_relative_to": "揃える",
- "relativeTo": "相対:",
- "page": "ページ",
- "largest_object": "最大のオブジェクト",
- "selected_objects": "選択オブジェクト",
- "smallest_object": "最小のオブジェクト",
- "new_doc": "新規イメージ",
- "open_doc": "イメージを開く",
- "export_img": "Export",
- "save_doc": "画像を保存",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "下揃え",
- "align_center": "中央揃え",
- "align_left": "左揃え",
- "align_middle": "中央揃え",
- "align_right": "右揃え",
- "align_top": "上揃え",
- "mode_select": "選択ツール",
- "mode_fhpath": "鉛筆ツール",
- "mode_line": "直線ツール",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "フリーハンド長方形",
- "mode_ellipse": "楕円",
- "mode_circle": "円",
- "mode_fhellipse": "フリーハンド楕円",
- "mode_path": "パスツール",
- "mode_shapelib": "Shape library",
- "mode_text": "テキストツール",
- "mode_image": "イメージツール",
- "mode_zoom": "ズームツール",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "元に戻す",
- "redo": "やり直し",
- "tool_source": "ソースの編集",
- "wireframe_mode": "ワイヤーフレームで表示 [F]",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "グループ化",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "パスに変換",
- "reorient_path": "現在の角度を0度とする",
- "ungroup": "グループ化を解除",
- "docprops": "文書のプロパティ",
- "imagelib": "Image Library",
- "move_bottom": "奥に移動",
- "move_top": "手前に移動",
- "node_clone": "ノードを複製",
- "node_delete": "ノードを削除",
- "node_link": "制御点の接続",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "適用",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "レイヤ",
- "layers": "Layers",
- "del": "レイヤの削除",
- "move_down": "レイヤを下へ移動",
- "new": "新規レイヤ",
- "rename": "レイヤの名前を変更",
- "move_up": "レイヤを上へ移動",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "移動先レイヤ:",
- "move_selected": "選択対象を別のレイヤに移動"
- },
- config: {
- "image_props": "イメージの設定",
- "doc_title": "タイトル",
- "doc_dims": "キャンバスの大きさ",
- "included_images": "挿入された画像の扱い",
- "image_opt_embed": "SVGファイルに埋め込む",
- "image_opt_ref": "画像を参照する",
- "editor_prefs": "エディタの設定",
- "icon_size": "アイコンの大きさ",
- "language": "言語",
- "background": "エディタの背景色",
- "editor_img_url": "Image URL",
- "editor_bg_note": "※背景色はファイルに保存されません。",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "デフォルト",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "無効な値が指定されています。",
- "noContentToFitTo": "合わせる対象のコンテンツがありません。",
- "dupeLayerName": "同名のレイヤーが既に存在します。",
- "enterUniqueLayerName": "新規レイヤの一意な名前を入力してください。",
- "enterNewLayerName": "レイヤの新しい名前を入力してください。",
- "layerHasThatName": "既に同名が付いています。",
- "QmoveElemsToLayer": "選択した要素をレイヤー '%s' に移動しますか?",
- "QwantToClear": "キャンバスをクリアしますか?\nアンドゥ履歴も消去されます。",
- "QwantToOpen": "新しいファイルを開きますか?\nアンドゥ履歴も消去されます。",
- "QerrorsRevertToSource": "ソースにエラーがあります。\n元のソースに戻しますか?",
- "QignoreSourceChanges": "ソースの変更を無視しますか?",
- "featNotSupported": "機能はサポートされていません。",
- "enterNewImgURL": "画像のURLを入力してください。",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ja",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "キャンセル",
+ "key_backspace": "backspace",
+ "key_del": "削除",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "クリックで塗りの色を選択、Shift+クリックで線の色を選択",
+ "zoom_level": "ズーム倍率の変更",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "塗りの色を変更",
+ "stroke_color": "線の色を変更",
+ "stroke_style": "線種の変更",
+ "stroke_width": "線幅の変更",
+ "pos_x": "X座標を変更",
+ "pos_y": "Y座標を変更",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "回転角の変更",
+ "blur": "Change gaussian blur value",
+ "opacity": "不透明度",
+ "circle_cx": "円の中心を変更(X座標)",
+ "circle_cy": "円の中心を変更(Y座標)",
+ "circle_r": "変更円の半径",
+ "ellipse_cx": "楕円の中心を変更(X座標)",
+ "ellipse_cy": "楕円の中心を変更(Y座標)",
+ "ellipse_rx": "楕円の半径を変更(X座標)",
+ "ellipse_ry": "楕円の半径を変更(Y座標)",
+ "line_x1": "開始X座標",
+ "line_x2": "終了X座標",
+ "line_y1": "開始Y座標",
+ "line_y2": "終了Y座標",
+ "rect_height": "長方形の高さを変更",
+ "rect_width": "長方形の幅を変更",
+ "corner_radius": "長方形の角の半径を変更",
+ "image_width": "画像の幅を変更",
+ "image_height": "画像の高さを変更",
+ "image_url": "URLを変更",
+ "node_x": "ノードのX座標を変更",
+ "node_y": "ノードのY座標を変更",
+ "seg_type": "線分の種類を変更",
+ "straight_segments": "直線",
+ "curve_segments": "カーブ",
+ "text_contents": "テキストの内容の変更",
+ "font_family": "フォントファミリーの変更",
+ "font_size": "文字サイズの変更",
+ "bold": "太字",
+ "italic": "イタリック体"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "背景色/不透明度の変更",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "コンテンツに合わせる",
+ "fit_to_all": "すべてのコンテンツに合わせる",
+ "fit_to_canvas": "キャンバスに合わせる",
+ "fit_to_layer_content": "レイヤー上のコンテンツに合わせる",
+ "fit_to_sel": "選択対象に合わせる",
+ "align_relative_to": "揃える",
+ "relativeTo": "相対:",
+ "page": "ページ",
+ "largest_object": "最大のオブジェクト",
+ "selected_objects": "選択オブジェクト",
+ "smallest_object": "最小のオブジェクト",
+ "new_doc": "新規イメージ",
+ "open_doc": "イメージを開く",
+ "export_img": "Export",
+ "save_doc": "画像を保存",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "下揃え",
+ "align_center": "中央揃え",
+ "align_left": "左揃え",
+ "align_middle": "中央揃え",
+ "align_right": "右揃え",
+ "align_top": "上揃え",
+ "mode_select": "選択ツール",
+ "mode_fhpath": "鉛筆ツール",
+ "mode_line": "直線ツール",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "フリーハンド長方形",
+ "mode_ellipse": "楕円",
+ "mode_circle": "円",
+ "mode_fhellipse": "フリーハンド楕円",
+ "mode_path": "パスツール",
+ "mode_shapelib": "Shape library",
+ "mode_text": "テキストツール",
+ "mode_image": "イメージツール",
+ "mode_zoom": "ズームツール",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "元に戻す",
+ "redo": "やり直し",
+ "tool_source": "ソースの編集",
+ "wireframe_mode": "ワイヤーフレームで表示 [F]",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "グループ化",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "パスに変換",
+ "reorient_path": "現在の角度を0度とする",
+ "ungroup": "グループ化を解除",
+ "docprops": "文書のプロパティ",
+ "imagelib": "Image Library",
+ "move_bottom": "奥に移動",
+ "move_top": "手前に移動",
+ "node_clone": "ノードを複製",
+ "node_delete": "ノードを削除",
+ "node_link": "制御点の接続",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "適用",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "レイヤ",
+ "layers": "Layers",
+ "del": "レイヤの削除",
+ "move_down": "レイヤを下へ移動",
+ "new": "新規レイヤ",
+ "rename": "レイヤの名前を変更",
+ "move_up": "レイヤを上へ移動",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "移動先レイヤ:",
+ "move_selected": "選択対象を別のレイヤに移動"
+ },
+ config: {
+ "image_props": "イメージの設定",
+ "doc_title": "タイトル",
+ "doc_dims": "キャンバスの大きさ",
+ "included_images": "挿入された画像の扱い",
+ "image_opt_embed": "SVGファイルに埋め込む",
+ "image_opt_ref": "画像を参照する",
+ "editor_prefs": "エディタの設定",
+ "icon_size": "アイコンの大きさ",
+ "language": "言語",
+ "background": "エディタの背景色",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "※背景色はファイルに保存されません。",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "デフォルト",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "無効な値が指定されています。",
+ "noContentToFitTo": "合わせる対象のコンテンツがありません。",
+ "dupeLayerName": "同名のレイヤーが既に存在します。",
+ "enterUniqueLayerName": "新規レイヤの一意な名前を入力してください。",
+ "enterNewLayerName": "レイヤの新しい名前を入力してください。",
+ "layerHasThatName": "既に同名が付いています。",
+ "QmoveElemsToLayer": "選択した要素をレイヤー '%s' に移動しますか?",
+ "QwantToClear": "キャンバスをクリアしますか?\nアンドゥ履歴も消去されます。",
+ "QwantToOpen": "新しいファイルを開きますか?\nアンドゥ履歴も消去されます。",
+ "QerrorsRevertToSource": "ソースにエラーがあります。\n元のソースに戻しますか?",
+ "QignoreSourceChanges": "ソースの変更を無視しますか?",
+ "featNotSupported": "機能はサポートされていません。",
+ "enterNewImgURL": "画像のURLを入力してください。",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ko.js b/editor/locale/lang.ko.js
index ef2c6e5a..4c63f095 100644
--- a/editor/locale/lang.ko.js
+++ b/editor/locale/lang.ko.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ko",
- dir: "ltr",
- common: {
- "ok": "저장",
- "cancel": "취소",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "색상을 클릭, 근무 시간 채우기 스트로크 색상을 변경하려면 변경하려면",
- "zoom_level": "변경 수준으로 확대",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "채우기 색상 변경",
- "stroke_color": "뇌졸중으로 색상 변경",
- "stroke_style": "뇌졸중 변경 대시 스타일",
- "stroke_width": "뇌졸중 너비 변경",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "회전 각도를 변경",
- "blur": "Change gaussian blur value",
- "opacity": "변경 항목을 선택 불투명도",
- "circle_cx": "변경 동그라미 CX는 좌표",
- "circle_cy": "동그라미 싸이 변경 조정할 수있어",
- "circle_r": "변경 원의 반지름",
- "ellipse_cx": "CX는 타원의 좌표 변경",
- "ellipse_cy": "싸이 타원 변경 조정할 수있어",
- "ellipse_rx": "변경 타원의 x 반지름",
- "ellipse_ry": "변경 타원의 y를 반경",
- "line_x1": "변경 라인의 X 좌표 시작",
- "line_x2": "변경 라인의 X 좌표 결말",
- "line_y1": "라인 변경 y를 시작 좌표",
- "line_y2": "라인 변경 y를 결말의 좌표",
- "rect_height": "사각형의 높이를 변경",
- "rect_width": "사각형의 너비 변경",
- "corner_radius": "변경 직사각형 코너 반경",
- "image_width": "이미지 변경 폭",
- "image_height": "이미지 높이 변경",
- "image_url": "URL 변경",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "텍스트 변경 내용",
- "font_family": "글꼴 변경 패밀리",
- "font_size": "글꼴 크기 변경",
- "bold": "굵은 텍스트",
- "italic": "기울임꼴 텍스트"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "배경 색상 변경 / 투명도",
- "connector_no_arrow": "No arrow",
- "fitToContent": "맞춤 콘텐츠",
- "fit_to_all": "맞춤 모든 콘텐츠에",
- "fit_to_canvas": "맞춤 캔버스",
- "fit_to_layer_content": "레이어에 맞게 콘텐츠",
- "fit_to_sel": "맞춤 선택",
- "align_relative_to": "정렬 상대적으로 ...",
- "relativeTo": "상대:",
- "page": "페이지",
- "largest_object": "큰 개체",
- "selected_objects": "당선 개체",
- "smallest_object": "작은 개체",
- "new_doc": "새 이미지",
- "open_doc": "오픈 이미지",
- "export_img": "Export",
- "save_doc": "이미지 저장",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "히프 정렬",
- "align_center": "정렬 센터",
- "align_left": "왼쪽 정렬",
- "align_middle": "중간 정렬",
- "align_right": "오른쪽 맞춤",
- "align_top": "정렬 탑",
- "mode_select": "선택 도구",
- "mode_fhpath": "연필 도구",
- "mode_line": "선 도구",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "자유 핸드 직사각형",
- "mode_ellipse": "타원",
- "mode_circle": "동그라미",
- "mode_fhellipse": "자유 핸드 타원",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "텍스트 도구",
- "mode_image": "이미지 도구",
- "mode_zoom": "줌 도구",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "취소",
- "redo": "재실행",
- "tool_source": "수정 소스",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "그룹 요소",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "그룹 해제 요소",
- "docprops": "문서 속성",
- "imagelib": "Image Library",
- "move_bottom": "아래로 이동",
- "move_top": "상단으로 이동",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "저장",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "레이어 삭제",
- "move_down": "레이어 아래로 이동",
- "new": "새 레이어",
- "rename": "레이어 이름 바꾸기",
- "move_up": "레이어 위로 이동",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "미리 정의된 선택:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ko",
+ dir: "ltr",
+ common: {
+ "ok": "저장",
+ "cancel": "취소",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "색상을 클릭, 근무 시간 채우기 스트로크 색상을 변경하려면 변경하려면",
+ "zoom_level": "변경 수준으로 확대",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "채우기 색상 변경",
+ "stroke_color": "뇌졸중으로 색상 변경",
+ "stroke_style": "뇌졸중 변경 대시 스타일",
+ "stroke_width": "뇌졸중 너비 변경",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "회전 각도를 변경",
+ "blur": "Change gaussian blur value",
+ "opacity": "변경 항목을 선택 불투명도",
+ "circle_cx": "변경 동그라미 CX는 좌표",
+ "circle_cy": "동그라미 싸이 변경 조정할 수있어",
+ "circle_r": "변경 원의 반지름",
+ "ellipse_cx": "CX는 타원의 좌표 변경",
+ "ellipse_cy": "싸이 타원 변경 조정할 수있어",
+ "ellipse_rx": "변경 타원의 x 반지름",
+ "ellipse_ry": "변경 타원의 y를 반경",
+ "line_x1": "변경 라인의 X 좌표 시작",
+ "line_x2": "변경 라인의 X 좌표 결말",
+ "line_y1": "라인 변경 y를 시작 좌표",
+ "line_y2": "라인 변경 y를 결말의 좌표",
+ "rect_height": "사각형의 높이를 변경",
+ "rect_width": "사각형의 너비 변경",
+ "corner_radius": "변경 직사각형 코너 반경",
+ "image_width": "이미지 변경 폭",
+ "image_height": "이미지 높이 변경",
+ "image_url": "URL 변경",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "텍스트 변경 내용",
+ "font_family": "글꼴 변경 패밀리",
+ "font_size": "글꼴 크기 변경",
+ "bold": "굵은 텍스트",
+ "italic": "기울임꼴 텍스트"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "배경 색상 변경 / 투명도",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "맞춤 콘텐츠",
+ "fit_to_all": "맞춤 모든 콘텐츠에",
+ "fit_to_canvas": "맞춤 캔버스",
+ "fit_to_layer_content": "레이어에 맞게 콘텐츠",
+ "fit_to_sel": "맞춤 선택",
+ "align_relative_to": "정렬 상대적으로 ...",
+ "relativeTo": "상대:",
+ "page": "페이지",
+ "largest_object": "큰 개체",
+ "selected_objects": "당선 개체",
+ "smallest_object": "작은 개체",
+ "new_doc": "새 이미지",
+ "open_doc": "오픈 이미지",
+ "export_img": "Export",
+ "save_doc": "이미지 저장",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "히프 정렬",
+ "align_center": "정렬 센터",
+ "align_left": "왼쪽 정렬",
+ "align_middle": "중간 정렬",
+ "align_right": "오른쪽 맞춤",
+ "align_top": "정렬 탑",
+ "mode_select": "선택 도구",
+ "mode_fhpath": "연필 도구",
+ "mode_line": "선 도구",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "자유 핸드 직사각형",
+ "mode_ellipse": "타원",
+ "mode_circle": "동그라미",
+ "mode_fhellipse": "자유 핸드 타원",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "텍스트 도구",
+ "mode_image": "이미지 도구",
+ "mode_zoom": "줌 도구",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "취소",
+ "redo": "재실행",
+ "tool_source": "수정 소스",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "그룹 요소",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "그룹 해제 요소",
+ "docprops": "문서 속성",
+ "imagelib": "Image Library",
+ "move_bottom": "아래로 이동",
+ "move_top": "상단으로 이동",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "저장",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "레이어 삭제",
+ "move_down": "레이어 아래로 이동",
+ "new": "새 레이어",
+ "rename": "레이어 이름 바꾸기",
+ "move_up": "레이어 위로 이동",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "미리 정의된 선택:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.lt.js b/editor/locale/lang.lt.js
index 080a6a8a..e2d526c4 100644
--- a/editor/locale/lang.lt.js
+++ b/editor/locale/lang.lt.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "lt",
- dir: "ltr",
- common: {
- "ok": "Saugoti",
- "cancel": "Atšaukti",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Spustelėkite norėdami keisti užpildo spalvą, perėjimo spustelėkite pakeisti insultas spalva",
- "zoom_level": "Keisti mastelį",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Keisti užpildyti spalvos",
- "stroke_color": "Keisti insultas spalva",
- "stroke_style": "Keisti insultas brūkšnys stilius",
- "stroke_width": "Keisti insultas plotis",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Keisti sukimosi kampas",
- "blur": "Change gaussian blur value",
- "opacity": "Pakeisti pasirinkto elemento neskaidrumo",
- "circle_cx": "Keisti ratas's CX koordinuoti",
- "circle_cy": "Keisti ratas's CY koordinuoti",
- "circle_r": "Keisti savo apskritimo spindulys",
- "ellipse_cx": "Keisti elipse's CX koordinuoti",
- "ellipse_cy": "Keisti elipse's CY koordinuoti",
- "ellipse_rx": "Keisti elipsė "X spindulys",
- "ellipse_ry": "Keisti elipse Y spindulys",
- "line_x1": "Keisti linijos nuo koordinačių x",
- "line_x2": "Keisti linijos baigėsi x koordinuoti",
- "line_y1": "Keisti linijos pradžios y koordinačių",
- "line_y2": "Keisti linijos baigėsi y koordinačių",
- "rect_height": "Keisti stačiakampio aukščio",
- "rect_width": "Pakeisti stačiakampio plotis",
- "corner_radius": "Keisti stačiakampis skyrelį Spindulys",
- "image_width": "Keisti paveikslėlio plotis",
- "image_height": "Keisti vaizdo aukštis",
- "image_url": "Pakeisti URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Keisti teksto turinys",
- "font_family": "Pakeistišriftą Šeima",
- "font_size": "Change font size",
- "bold": "Pusjuodis",
- "italic": "Kursyvas"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Pakeisti fono spalvą / drumstumas",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Talpinti turinys",
- "fit_to_all": "Talpinti All content",
- "fit_to_canvas": "Talpinti drobė",
- "fit_to_layer_content": "Talpinti sluoksnis turinio",
- "fit_to_sel": "Talpinti atrankos",
- "align_relative_to": "Derinti palyginti ...",
- "relativeTo": "palyginti:",
- "page": "puslapis",
- "largest_object": "didžiausias objektas",
- "selected_objects": "išrinktas objektai",
- "smallest_object": "mažiausias objektą",
- "new_doc": "New Image",
- "open_doc": "Atidaryti atvaizdą",
- "export_img": "Export",
- "save_doc": "Išsaugoti nuotrauką",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Lygiuoti apačioje",
- "align_center": "Lygiuoti",
- "align_left": "Lygiuoti kairėje",
- "align_middle": "Suderinti Vidurio",
- "align_right": "Lygiuoti dešinėje",
- "align_top": "Lygiuoti viršų",
- "mode_select": "Įrankis",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free Hand stačiakampis",
- "mode_ellipse": "Elipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free Hand Elipsė",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekstas Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Įrankį",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Atšaukti",
- "redo": "Atstatyti",
- "tool_source": "Taisyti Šaltinis",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elementų grupės",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Išgrupuoti elementai",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Perkelti į apačią",
- "move_top": "Perkelti į viršų",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Saugoti",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Ištrinti Layer",
- "move_down": "Perkelti sluoksnį Žemyn",
- "new": "New Layer",
- "rename": "Pervadinti sluoksnį",
- "move_up": "Perkelti sluoksnį Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Pasirinkite iš anksto:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "lt",
+ dir: "ltr",
+ common: {
+ "ok": "Saugoti",
+ "cancel": "Atšaukti",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Spustelėkite norėdami keisti užpildo spalvą, perėjimo spustelėkite pakeisti insultas spalva",
+ "zoom_level": "Keisti mastelį",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Keisti užpildyti spalvos",
+ "stroke_color": "Keisti insultas spalva",
+ "stroke_style": "Keisti insultas brūkšnys stilius",
+ "stroke_width": "Keisti insultas plotis",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Keisti sukimosi kampas",
+ "blur": "Change gaussian blur value",
+ "opacity": "Pakeisti pasirinkto elemento neskaidrumo",
+ "circle_cx": "Keisti ratas's CX koordinuoti",
+ "circle_cy": "Keisti ratas's CY koordinuoti",
+ "circle_r": "Keisti savo apskritimo spindulys",
+ "ellipse_cx": "Keisti elipse's CX koordinuoti",
+ "ellipse_cy": "Keisti elipse's CY koordinuoti",
+ "ellipse_rx": "Keisti elipsė "X spindulys",
+ "ellipse_ry": "Keisti elipse Y spindulys",
+ "line_x1": "Keisti linijos nuo koordinačių x",
+ "line_x2": "Keisti linijos baigėsi x koordinuoti",
+ "line_y1": "Keisti linijos pradžios y koordinačių",
+ "line_y2": "Keisti linijos baigėsi y koordinačių",
+ "rect_height": "Keisti stačiakampio aukščio",
+ "rect_width": "Pakeisti stačiakampio plotis",
+ "corner_radius": "Keisti stačiakampis skyrelį Spindulys",
+ "image_width": "Keisti paveikslėlio plotis",
+ "image_height": "Keisti vaizdo aukštis",
+ "image_url": "Pakeisti URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Keisti teksto turinys",
+ "font_family": "Pakeistišriftą Šeima",
+ "font_size": "Change font size",
+ "bold": "Pusjuodis",
+ "italic": "Kursyvas"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Pakeisti fono spalvą / drumstumas",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Talpinti turinys",
+ "fit_to_all": "Talpinti All content",
+ "fit_to_canvas": "Talpinti drobė",
+ "fit_to_layer_content": "Talpinti sluoksnis turinio",
+ "fit_to_sel": "Talpinti atrankos",
+ "align_relative_to": "Derinti palyginti ...",
+ "relativeTo": "palyginti:",
+ "page": "puslapis",
+ "largest_object": "didžiausias objektas",
+ "selected_objects": "išrinktas objektai",
+ "smallest_object": "mažiausias objektą",
+ "new_doc": "New Image",
+ "open_doc": "Atidaryti atvaizdą",
+ "export_img": "Export",
+ "save_doc": "Išsaugoti nuotrauką",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Lygiuoti apačioje",
+ "align_center": "Lygiuoti",
+ "align_left": "Lygiuoti kairėje",
+ "align_middle": "Suderinti Vidurio",
+ "align_right": "Lygiuoti dešinėje",
+ "align_top": "Lygiuoti viršų",
+ "mode_select": "Įrankis",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free Hand stačiakampis",
+ "mode_ellipse": "Elipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free Hand Elipsė",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekstas Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Įrankį",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Atšaukti",
+ "redo": "Atstatyti",
+ "tool_source": "Taisyti Šaltinis",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elementų grupės",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Išgrupuoti elementai",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Perkelti į apačią",
+ "move_top": "Perkelti į viršų",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Saugoti",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Ištrinti Layer",
+ "move_down": "Perkelti sluoksnį Žemyn",
+ "new": "New Layer",
+ "rename": "Pervadinti sluoksnį",
+ "move_up": "Perkelti sluoksnį Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Pasirinkite iš anksto:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.lv.js b/editor/locale/lang.lv.js
index dd1d7707..56bdc5fd 100644
--- a/editor/locale/lang.lv.js
+++ b/editor/locale/lang.lv.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "lv",
- dir: "ltr",
- common: {
- "ok": "Glābt",
- "cancel": "Atcelt",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Noklikšķiniet, lai mainītu aizpildījuma krāsu, shift-click to mainīt stroke krāsa",
- "zoom_level": "Pārmaiņu mērogu",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change aizpildījuma krāsu",
- "stroke_color": "Change stroke krāsa",
- "stroke_style": "Maina stroke domuzīme stils",
- "stroke_width": "Change stroke platums",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Mainīt griešanās leņķis",
- "blur": "Change gaussian blur value",
- "opacity": "Mainīt izvēlēto objektu necaurredzamība",
- "circle_cx": "Maina aplis's CX koordinēt",
- "circle_cy": "Pārmaiņu loks ir cy koordinēt",
- "circle_r": "Pārmaiņu loks ir rādiuss",
- "ellipse_cx": "Mainīt elipses's CX koordinēt",
- "ellipse_cy": "Mainīt elipses's cy koordinēt",
- "ellipse_rx": "Mainīt elipses's x rādiuss",
- "ellipse_ry": "Mainīt elipses's y rādiuss",
- "line_x1": "Mainīt līnijas sākas x koordinēt",
- "line_x2": "Mainīt līnijas beigu x koordinēt",
- "line_y1": "Mainīt līnijas sākas y koordinātu",
- "line_y2": "Mainīt līnijas beigu y koordinātu",
- "rect_height": "Change Taisnstūra augstums",
- "rect_width": "Change taisnstūra platums",
- "corner_radius": "Maina Taisnstūris Corner Rādiuss",
- "image_width": "Mainīt attēla platumu",
- "image_height": "Mainīt attēla augstums",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Mainītu teksta saturs",
- "font_family": "Mainīt fonta Family",
- "font_size": "Mainīt fonta izmēru",
- "bold": "Bold Text",
- "italic": "Kursīvs"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color / necaurredzamība",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit uz visu saturu",
- "fit_to_canvas": "Ievietot audekls",
- "fit_to_layer_content": "Ievietot slānis saturs",
- "fit_to_sel": "Fit atlases",
- "align_relative_to": "Līdzināt, salīdzinot ar ...",
- "relativeTo": "salīdzinājumā ar:",
- "page": "lapa",
- "largest_object": "lielākais objekts",
- "selected_objects": "ievēlēts objekti",
- "smallest_object": "mazākais objekts",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Līdzināt Bottom",
- "align_center": "Līdzināt uz centru",
- "align_left": "Līdzināt pa kreisi",
- "align_middle": "Līdzināt Middle",
- "align_right": "Līdzināt pa labi",
- "align_top": "Līdzināt Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Taisnstūris",
- "mode_ellipse": "Elipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Atpogāt",
- "redo": "Redo",
- "tool_source": "Rediģēt Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Grupa Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Atgrupēt Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Pārvietot uz leju",
- "move_top": "Pārvietot uz augšu",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Glābt",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Dzēst Layer",
- "move_down": "Pārvietot slāni uz leju",
- "new": "New Layer",
- "rename": "Pārdēvēt Layer",
- "move_up": "Pārvietot slāni uz augšu",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Izvēlieties iepriekš:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "lv",
+ dir: "ltr",
+ common: {
+ "ok": "Glābt",
+ "cancel": "Atcelt",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Noklikšķiniet, lai mainītu aizpildījuma krāsu, shift-click to mainīt stroke krāsa",
+ "zoom_level": "Pārmaiņu mērogu",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change aizpildījuma krāsu",
+ "stroke_color": "Change stroke krāsa",
+ "stroke_style": "Maina stroke domuzīme stils",
+ "stroke_width": "Change stroke platums",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Mainīt griešanās leņķis",
+ "blur": "Change gaussian blur value",
+ "opacity": "Mainīt izvēlēto objektu necaurredzamība",
+ "circle_cx": "Maina aplis's CX koordinēt",
+ "circle_cy": "Pārmaiņu loks ir cy koordinēt",
+ "circle_r": "Pārmaiņu loks ir rādiuss",
+ "ellipse_cx": "Mainīt elipses's CX koordinēt",
+ "ellipse_cy": "Mainīt elipses's cy koordinēt",
+ "ellipse_rx": "Mainīt elipses's x rādiuss",
+ "ellipse_ry": "Mainīt elipses's y rādiuss",
+ "line_x1": "Mainīt līnijas sākas x koordinēt",
+ "line_x2": "Mainīt līnijas beigu x koordinēt",
+ "line_y1": "Mainīt līnijas sākas y koordinātu",
+ "line_y2": "Mainīt līnijas beigu y koordinātu",
+ "rect_height": "Change Taisnstūra augstums",
+ "rect_width": "Change taisnstūra platums",
+ "corner_radius": "Maina Taisnstūris Corner Rādiuss",
+ "image_width": "Mainīt attēla platumu",
+ "image_height": "Mainīt attēla augstums",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Mainītu teksta saturs",
+ "font_family": "Mainīt fonta Family",
+ "font_size": "Mainīt fonta izmēru",
+ "bold": "Bold Text",
+ "italic": "Kursīvs"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color / necaurredzamība",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit uz visu saturu",
+ "fit_to_canvas": "Ievietot audekls",
+ "fit_to_layer_content": "Ievietot slānis saturs",
+ "fit_to_sel": "Fit atlases",
+ "align_relative_to": "Līdzināt, salīdzinot ar ...",
+ "relativeTo": "salīdzinājumā ar:",
+ "page": "lapa",
+ "largest_object": "lielākais objekts",
+ "selected_objects": "ievēlēts objekti",
+ "smallest_object": "mazākais objekts",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Līdzināt Bottom",
+ "align_center": "Līdzināt uz centru",
+ "align_left": "Līdzināt pa kreisi",
+ "align_middle": "Līdzināt Middle",
+ "align_right": "Līdzināt pa labi",
+ "align_top": "Līdzināt Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Taisnstūris",
+ "mode_ellipse": "Elipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Atpogāt",
+ "redo": "Redo",
+ "tool_source": "Rediģēt Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Grupa Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Atgrupēt Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Pārvietot uz leju",
+ "move_top": "Pārvietot uz augšu",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Glābt",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Dzēst Layer",
+ "move_down": "Pārvietot slāni uz leju",
+ "new": "New Layer",
+ "rename": "Pārdēvēt Layer",
+ "move_up": "Pārvietot slāni uz augšu",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Izvēlieties iepriekš:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.mk.js b/editor/locale/lang.mk.js
index b1729426..3b98d03f 100644
--- a/editor/locale/lang.mk.js
+++ b/editor/locale/lang.mk.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "mk",
- dir: "ltr",
- common: {
- "ok": "Зачувува",
- "cancel": "Откажи",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Кликни за да внесете промени бојата, промена клик да се промени бојата удар",
- "zoom_level": "Промена зум ниво",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Измени пополнете боја",
- "stroke_color": "Промена боја на мозочен удар",
- "stroke_style": "Промена удар цртичка стил",
- "stroke_width": "Промена удар Ширина",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change ротација агол",
- "blur": "Change gaussian blur value",
- "opacity": "Промена избрани ставка непроѕирноста",
- "circle_cx": "Промена круг на cx координира",
- "circle_cy": "Промена круг's cy координираат",
- "circle_r": "Промена на круг со радиус",
- "ellipse_cx": "Промена елипса's cx координираат",
- "ellipse_cy": "Промена на елипса cy координира",
- "ellipse_rx": "Промена на елипса x радиус",
- "ellipse_ry": "Промена на елипса у радиус",
- "line_x1": "Промена линија почетна x координира",
- "line_x2": "Промена линија завршува x координира",
- "line_y1": "Промена линија координираат почетна y",
- "line_y2": "Промена линија завршува y координира",
- "rect_height": "Промена правоаголник височина",
- "rect_width": "Промена правоаголник Ширина",
- "corner_radius": "Промена правоаголник Corner Radius",
- "image_width": "Промена Ширина на сликата",
- "image_height": "Промена на слика височина",
- "image_url": "Промена URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Промена текст содржина",
- "font_family": "Смени фонт Фамилија",
- "font_size": "Изменифонт Големина",
- "bold": "Задебелен текст",
- "italic": "Italic текст"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Смени позадина / непроѕирноста",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Способен да Содржина",
- "fit_to_all": "Способен да сите содржина",
- "fit_to_canvas": "Побиране да платно",
- "fit_to_layer_content": "Способен да слој содржина",
- "fit_to_sel": "Способен да селекција",
- "align_relative_to": "Порамни во поглед на ...",
- "relativeTo": "во поглед на:",
- "page": "страница",
- "largest_object": "најголемиот објект",
- "selected_objects": "избран објекти",
- "smallest_object": "најмалата објект",
- "new_doc": "Нови слики",
- "open_doc": "Отвори слика",
- "export_img": "Export",
- "save_doc": "Зачувај слика",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Центрирано",
- "align_left": "Порамни лево Порамни",
- "align_middle": "Израмни Среден",
- "align_right": "Порамни десно",
- "align_top": "Израмни почетокот",
- "mode_select": "Изберете ја алатката",
- "mode_fhpath": "Алатка за молив",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Правоаголник слободна рака",
- "mode_ellipse": "Елипса",
- "mode_circle": "Круг",
- "mode_fhellipse": "Free-Hand Елипса",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Алатка за текст",
- "mode_image": "Алатка за сликата",
- "mode_zoom": "Алатка за зумирање",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Врати",
- "redo": "Повтори",
- "tool_source": "Уреди Извор",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Група на елементи",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Елементи",
- "docprops": "Својства на документот",
- "imagelib": "Image Library",
- "move_bottom": "Move to bottom",
- "move_top": "Поместување на почетокот",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Зачувува",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Избриши Слој",
- "move_down": "Премести слој долу",
- "new": "Нов слој",
- "rename": "Преименувај слој",
- "move_up": "Премести слој горе",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Изберете предефинирани:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "mk",
+ dir: "ltr",
+ common: {
+ "ok": "Зачувува",
+ "cancel": "Откажи",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Кликни за да внесете промени бојата, промена клик да се промени бојата удар",
+ "zoom_level": "Промена зум ниво",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Измени пополнете боја",
+ "stroke_color": "Промена боја на мозочен удар",
+ "stroke_style": "Промена удар цртичка стил",
+ "stroke_width": "Промена удар Ширина",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change ротација агол",
+ "blur": "Change gaussian blur value",
+ "opacity": "Промена избрани ставка непроѕирноста",
+ "circle_cx": "Промена круг на cx координира",
+ "circle_cy": "Промена круг's cy координираат",
+ "circle_r": "Промена на круг со радиус",
+ "ellipse_cx": "Промена елипса's cx координираат",
+ "ellipse_cy": "Промена на елипса cy координира",
+ "ellipse_rx": "Промена на елипса x радиус",
+ "ellipse_ry": "Промена на елипса у радиус",
+ "line_x1": "Промена линија почетна x координира",
+ "line_x2": "Промена линија завршува x координира",
+ "line_y1": "Промена линија координираат почетна y",
+ "line_y2": "Промена линија завршува y координира",
+ "rect_height": "Промена правоаголник височина",
+ "rect_width": "Промена правоаголник Ширина",
+ "corner_radius": "Промена правоаголник Corner Radius",
+ "image_width": "Промена Ширина на сликата",
+ "image_height": "Промена на слика височина",
+ "image_url": "Промена URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Промена текст содржина",
+ "font_family": "Смени фонт Фамилија",
+ "font_size": "Изменифонт Големина",
+ "bold": "Задебелен текст",
+ "italic": "Italic текст"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Смени позадина / непроѕирноста",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Способен да Содржина",
+ "fit_to_all": "Способен да сите содржина",
+ "fit_to_canvas": "Побиране да платно",
+ "fit_to_layer_content": "Способен да слој содржина",
+ "fit_to_sel": "Способен да селекција",
+ "align_relative_to": "Порамни во поглед на ...",
+ "relativeTo": "во поглед на:",
+ "page": "страница",
+ "largest_object": "најголемиот објект",
+ "selected_objects": "избран објекти",
+ "smallest_object": "најмалата објект",
+ "new_doc": "Нови слики",
+ "open_doc": "Отвори слика",
+ "export_img": "Export",
+ "save_doc": "Зачувај слика",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Центрирано",
+ "align_left": "Порамни лево Порамни",
+ "align_middle": "Израмни Среден",
+ "align_right": "Порамни десно",
+ "align_top": "Израмни почетокот",
+ "mode_select": "Изберете ја алатката",
+ "mode_fhpath": "Алатка за молив",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Правоаголник слободна рака",
+ "mode_ellipse": "Елипса",
+ "mode_circle": "Круг",
+ "mode_fhellipse": "Free-Hand Елипса",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Алатка за текст",
+ "mode_image": "Алатка за сликата",
+ "mode_zoom": "Алатка за зумирање",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Врати",
+ "redo": "Повтори",
+ "tool_source": "Уреди Извор",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Група на елементи",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Елементи",
+ "docprops": "Својства на документот",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to bottom",
+ "move_top": "Поместување на почетокот",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Зачувува",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Избриши Слој",
+ "move_down": "Премести слој долу",
+ "new": "Нов слој",
+ "rename": "Преименувај слој",
+ "move_up": "Премести слој горе",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Изберете предефинирани:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ms.js b/editor/locale/lang.ms.js
index 0f87667c..478c7cfd 100644
--- a/editor/locale/lang.ms.js
+++ b/editor/locale/lang.ms.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ms",
- dir: "ltr",
- common: {
- "ok": "Simpan",
- "cancel": "Batal",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klik untuk menukar warna mengisi, shift-klik untuk menukar warna stroke",
- "zoom_level": "Mengubah peringkat pembesaran",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Tukar Warna mengisi",
- "stroke_color": "Tukar Warna stroke",
- "stroke_style": "Tukar gaya dash stroke",
- "stroke_width": "Tukar stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Namakan sudut putaran",
- "blur": "Change gaussian blur value",
- "opacity": "Mengubah item yang dipilih keburaman",
- "circle_cx": "Mengubah koordinat bulatan cx",
- "circle_cy": "Mengubah koordinat cy bulatan",
- "circle_r": "Tukar jari-jari lingkaran",
- "ellipse_cx": "Tukar elips's cx koordinat",
- "ellipse_cy": "Tukar elips's cy koordinat",
- "ellipse_rx": "Tukar elips's x jari-jari",
- "ellipse_ry": "Tukar elips's y jari-jari",
- "line_x1": "Ubah baris mulai x koordinat",
- "line_x2": "Ubah baris's Berakhir x koordinat",
- "line_y1": "Ubah baris mulai y koordinat",
- "line_y2": "Ubah baris di tiap akhir y koordinat",
- "rect_height": "Perubahan quality persegi panjang",
- "rect_width": "Tukar persegi panjang lebar",
- "corner_radius": "Tukar Corner Rectangle Radius",
- "image_width": "Tukar Lebar imej",
- "image_height": "Tinggi gambar Kaca",
- "image_url": "Tukar URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Tukar isi teks",
- "font_family": "Tukar Font Keluarga",
- "font_size": "Ubah Saiz Font",
- "bold": "Bold Teks",
- "italic": "Italic Teks"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Mengubah warna latar belakang / keburaman",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Cocok untuk semua kandungan",
- "fit_to_canvas": "Muat kanvas",
- "fit_to_layer_content": "Muat kandungan lapisan",
- "fit_to_sel": "Fit seleksi",
- "align_relative_to": "Rata relatif ...",
- "relativeTo": "relatif:",
- "page": "Laman",
- "largest_object": "objek terbesar",
- "selected_objects": "objek terpilih",
- "smallest_object": "objek terkecil",
- "new_doc": "Imej Baru",
- "open_doc": "Membuka Image",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Rata Bottom",
- "align_center": "Rata Tengah",
- "align_left": "Rata Kiri",
- "align_middle": "Rata Tengah",
- "align_right": "Rata Kanan",
- "align_top": "Rata Popular",
- "mode_select": "Pilih Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Persegi Panjang",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Lingkaran",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Teks Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Kelompok Elemen",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elemen",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Pindah ke Bawah",
- "move_top": "Pindah ke Atas",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Simpan",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Padam Layer",
- "move_down": "Pindah Layer Bawah",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Pindah Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Pilih standard:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ms",
+ dir: "ltr",
+ common: {
+ "ok": "Simpan",
+ "cancel": "Batal",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klik untuk menukar warna mengisi, shift-klik untuk menukar warna stroke",
+ "zoom_level": "Mengubah peringkat pembesaran",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Tukar Warna mengisi",
+ "stroke_color": "Tukar Warna stroke",
+ "stroke_style": "Tukar gaya dash stroke",
+ "stroke_width": "Tukar stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Namakan sudut putaran",
+ "blur": "Change gaussian blur value",
+ "opacity": "Mengubah item yang dipilih keburaman",
+ "circle_cx": "Mengubah koordinat bulatan cx",
+ "circle_cy": "Mengubah koordinat cy bulatan",
+ "circle_r": "Tukar jari-jari lingkaran",
+ "ellipse_cx": "Tukar elips's cx koordinat",
+ "ellipse_cy": "Tukar elips's cy koordinat",
+ "ellipse_rx": "Tukar elips's x jari-jari",
+ "ellipse_ry": "Tukar elips's y jari-jari",
+ "line_x1": "Ubah baris mulai x koordinat",
+ "line_x2": "Ubah baris's Berakhir x koordinat",
+ "line_y1": "Ubah baris mulai y koordinat",
+ "line_y2": "Ubah baris di tiap akhir y koordinat",
+ "rect_height": "Perubahan quality persegi panjang",
+ "rect_width": "Tukar persegi panjang lebar",
+ "corner_radius": "Tukar Corner Rectangle Radius",
+ "image_width": "Tukar Lebar imej",
+ "image_height": "Tinggi gambar Kaca",
+ "image_url": "Tukar URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Tukar isi teks",
+ "font_family": "Tukar Font Keluarga",
+ "font_size": "Ubah Saiz Font",
+ "bold": "Bold Teks",
+ "italic": "Italic Teks"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Mengubah warna latar belakang / keburaman",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Cocok untuk semua kandungan",
+ "fit_to_canvas": "Muat kanvas",
+ "fit_to_layer_content": "Muat kandungan lapisan",
+ "fit_to_sel": "Fit seleksi",
+ "align_relative_to": "Rata relatif ...",
+ "relativeTo": "relatif:",
+ "page": "Laman",
+ "largest_object": "objek terbesar",
+ "selected_objects": "objek terpilih",
+ "smallest_object": "objek terkecil",
+ "new_doc": "Imej Baru",
+ "open_doc": "Membuka Image",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Rata Bottom",
+ "align_center": "Rata Tengah",
+ "align_left": "Rata Kiri",
+ "align_middle": "Rata Tengah",
+ "align_right": "Rata Kanan",
+ "align_top": "Rata Popular",
+ "mode_select": "Pilih Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Persegi Panjang",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Lingkaran",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Teks Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Kelompok Elemen",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elemen",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Pindah ke Bawah",
+ "move_top": "Pindah ke Atas",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Simpan",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Padam Layer",
+ "move_down": "Pindah Layer Bawah",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Pindah Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Pilih standard:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.mt.js b/editor/locale/lang.mt.js
index ceeaa78f..eb30782f 100644
--- a/editor/locale/lang.mt.js
+++ b/editor/locale/lang.mt.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "mt",
- dir: "ltr",
- common: {
- "ok": "Save",
- "cancel": "Ikkanċella",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Ikklikkja biex timla l-bidla fil-kulur, ikklikkja-bidla għall-bidla color stroke",
- "zoom_level": "Bidla zoom livell",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Bidla imla color",
- "stroke_color": "Color stroke Bidla",
- "stroke_style": "Bidla stroke dash stil",
- "stroke_width": "Wisa 'puplesija Bidla",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Angolu ta 'rotazzjoni Bidla",
- "blur": "Change gaussian blur value",
- "opacity": "Bidla magħżula opaċità partita",
- "circle_cx": "CX ċirku Tibdil jikkoordinaw",
- "circle_cy": "Ċirku Tibdil cy jikkoordinaw",
- "circle_r": "Raġġ ta 'ċirku tal-Bidla",
- "ellipse_cx": "Bidla ellissi's CX jikkoordinaw",
- "ellipse_cy": "Ellissi Tibdil cy jikkoordinaw",
- "ellipse_rx": "Raġġ x ellissi Tibdil",
- "ellipse_ry": "Raġġ y ellissi Tibdil",
- "line_x1": "Bidla fil-linja tal-bidu tikkoordina x",
- "line_x2": "Linja tal-Bidla li jispiċċa x jikkoordinaw",
- "line_y1": "Bidla fil-linja tal-bidu y jikkoordinaw",
- "line_y2": "Linja Tibdil jispiċċa y jikkoordinaw",
- "rect_height": "Għoli rettangolu Bidla",
- "rect_width": "Wisa 'rettangolu Bidla",
- "corner_radius": "Bidla Rectangle Corner Radius",
- "image_width": "Wisa image Bidla",
- "image_height": "Għoli image Bidla",
- "image_url": "Bidla URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Test kontenut Bidla",
- "font_family": "Bidla Font Familja",
- "font_size": "Change font size",
- "bold": "Bold Test",
- "italic": "Test korsiv"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Bidla fil-kulur fl-isfond / opaċità",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit għall-kontenut",
- "fit_to_all": "Tajbin għall-kontenut",
- "fit_to_canvas": "Xieraq li kanvas",
- "fit_to_layer_content": "Fit-kontenut ta 'saff għal",
- "fit_to_sel": "Fit-għażla",
- "align_relative_to": "Jallinjaw relattiv għall - ...",
- "relativeTo": "relattiv għall -:",
- "page": "paġna",
- "largest_object": "akbar oġġett",
- "selected_objects": "oġġetti elett",
- "smallest_object": "iżgħar oġġett",
- "new_doc": "Image New",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Image Save",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Tallinja Bottom",
- "align_center": "Tallinja Center",
- "align_left": "Tallinja Left",
- "align_middle": "Tallinja Nofsani",
- "align_right": "Tallinja Dritt",
- "align_top": "Tallinja Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Lapes Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free Hand-Rectangle",
- "mode_ellipse": "Ellissi",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free Hand-ellissi",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Jneħħu",
- "redo": "Jerġa 'jagħmel",
- "tool_source": "Source Edit",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Grupp Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Dokument Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Save",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Ħassar Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Semmi mill-ġdid Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefiniti:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "mt",
+ dir: "ltr",
+ common: {
+ "ok": "Save",
+ "cancel": "Ikkanċella",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Ikklikkja biex timla l-bidla fil-kulur, ikklikkja-bidla għall-bidla color stroke",
+ "zoom_level": "Bidla zoom livell",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Bidla imla color",
+ "stroke_color": "Color stroke Bidla",
+ "stroke_style": "Bidla stroke dash stil",
+ "stroke_width": "Wisa 'puplesija Bidla",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Angolu ta 'rotazzjoni Bidla",
+ "blur": "Change gaussian blur value",
+ "opacity": "Bidla magħżula opaċità partita",
+ "circle_cx": "CX ċirku Tibdil jikkoordinaw",
+ "circle_cy": "Ċirku Tibdil cy jikkoordinaw",
+ "circle_r": "Raġġ ta 'ċirku tal-Bidla",
+ "ellipse_cx": "Bidla ellissi's CX jikkoordinaw",
+ "ellipse_cy": "Ellissi Tibdil cy jikkoordinaw",
+ "ellipse_rx": "Raġġ x ellissi Tibdil",
+ "ellipse_ry": "Raġġ y ellissi Tibdil",
+ "line_x1": "Bidla fil-linja tal-bidu tikkoordina x",
+ "line_x2": "Linja tal-Bidla li jispiċċa x jikkoordinaw",
+ "line_y1": "Bidla fil-linja tal-bidu y jikkoordinaw",
+ "line_y2": "Linja Tibdil jispiċċa y jikkoordinaw",
+ "rect_height": "Għoli rettangolu Bidla",
+ "rect_width": "Wisa 'rettangolu Bidla",
+ "corner_radius": "Bidla Rectangle Corner Radius",
+ "image_width": "Wisa image Bidla",
+ "image_height": "Għoli image Bidla",
+ "image_url": "Bidla URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Test kontenut Bidla",
+ "font_family": "Bidla Font Familja",
+ "font_size": "Change font size",
+ "bold": "Bold Test",
+ "italic": "Test korsiv"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Bidla fil-kulur fl-isfond / opaċità",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit għall-kontenut",
+ "fit_to_all": "Tajbin għall-kontenut",
+ "fit_to_canvas": "Xieraq li kanvas",
+ "fit_to_layer_content": "Fit-kontenut ta 'saff għal",
+ "fit_to_sel": "Fit-għażla",
+ "align_relative_to": "Jallinjaw relattiv għall - ...",
+ "relativeTo": "relattiv għall -:",
+ "page": "paġna",
+ "largest_object": "akbar oġġett",
+ "selected_objects": "oġġetti elett",
+ "smallest_object": "iżgħar oġġett",
+ "new_doc": "Image New",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Image Save",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Tallinja Bottom",
+ "align_center": "Tallinja Center",
+ "align_left": "Tallinja Left",
+ "align_middle": "Tallinja Nofsani",
+ "align_right": "Tallinja Dritt",
+ "align_top": "Tallinja Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Lapes Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free Hand-Rectangle",
+ "mode_ellipse": "Ellissi",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free Hand-ellissi",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Jneħħu",
+ "redo": "Jerġa 'jagħmel",
+ "tool_source": "Source Edit",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Grupp Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Dokument Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Save",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Ħassar Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Semmi mill-ġdid Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefiniti:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.nl.js b/editor/locale/lang.nl.js
index 62c36fdc..030e1003 100644
--- a/editor/locale/lang.nl.js
+++ b/editor/locale/lang.nl.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "nl",
- dir: "ltr",
- common: {
- "ok": "Ok",
- "cancel": "Annuleren",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "omlaag",
- "key_up": "omhoog",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Mogelijk gemaakt door"
- },
- ui: {
- "toggle_stroke_tools": "Toon/verberg meer lijn gereedschap",
- "palette_info": "Klik om de vul kleur te veranderen, shift-klik om de lijn kleur te veranderen",
- "zoom_level": "In-/uitzoomen",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identificeer het element",
- "fill_color": "Verander vul kleur",
- "stroke_color": "Verander lijn kleur",
- "stroke_style": "Verander lijn stijl",
- "stroke_width": "Verander lijn breedte",
- "pos_x": "Verander X coordinaat",
- "pos_y": "Verander Y coordinaat",
- "linecap_butt": "Lijneinde: Geen",
- "linecap_round": "Lijneinde: Rond",
- "linecap_square": "Lijneinde: Vierkant",
- "linejoin_bevel": "Lijnverbinding: Afgestompt",
- "linejoin_miter": "Lijnverbinding: Hoek",
- "linejoin_round": "Lijnverbinding: Rond",
- "angle": "Draai",
- "blur": "Verander Gaussische vervaging waarde",
- "opacity": "Verander opaciteit geselecteerde item",
- "circle_cx": "Verander het X coordinaat van het cirkel middelpunt",
- "circle_cy": "Verander het Y coordinaat van het cirkel middelpunt",
- "circle_r": "Verander de cirkel radius",
- "ellipse_cx": "Verander het X coordinaat van het ellips middelpunt",
- "ellipse_cy": "Verander het Y coordinaat van het ellips middelpunt",
- "ellipse_rx": "Verander ellips X radius",
- "ellipse_ry": "Verander ellips Y radius",
- "line_x1": "Verander start X coordinaat van de lijn",
- "line_x2": "Verander eind X coordinaat van de lijn",
- "line_y1": "Verander start Y coordinaat van de lijn",
- "line_y2": "Verander eind Y coordinaat van de lijn",
- "rect_height": "Verander hoogte rechthoek",
- "rect_width": "Verander breedte rechthoek",
- "corner_radius": "Verander hoekradius rechthoek",
- "image_width": "Verander breedte afbeelding",
- "image_height": "Verander hoogte afbeelding",
- "image_url": "Verander URL",
- "node_x": "Verander X coordinaat knooppunt",
- "node_y": "Verander Y coordinaat knooppunt",
- "seg_type": "Verander segment type",
- "straight_segments": "Recht",
- "curve_segments": "Gebogen",
- "text_contents": "Wijzig tekst",
- "font_family": "Verander lettertype",
- "font_size": "Verander lettertype grootte",
- "bold": "Vet",
- "italic": "Cursief"
- },
- tools: {
- "main_menu": "Hoofdmenu",
- "bkgnd_color_opac": "Verander achtergrond kleur/doorzichtigheid",
- "connector_no_arrow": "Geen pijl",
- "fitToContent": "Pas om inhoud",
- "fit_to_all": "Pas om alle inhoud",
- "fit_to_canvas": "Pas om canvas",
- "fit_to_layer_content": "Pas om laag inhoud",
- "fit_to_sel": "Pas om selectie",
- "align_relative_to": "Uitlijnen relatief ten opzichte van ...",
- "relativeTo": "Relatief ten opzichte van:",
- "page": "Pagina",
- "largest_object": "Grootste object",
- "selected_objects": "Geselecteerde objecten",
- "smallest_object": "Kleinste object",
- "new_doc": "Nieuwe afbeelding",
- "open_doc": "Open afbeelding",
- "export_img": "Export",
- "save_doc": "Afbeelding opslaan",
- "import_doc": "Importeer SVG",
- "align_to_page": "Lijn element uit relatief ten opzichte van de pagina",
- "align_bottom": "Onder uitlijnen",
- "align_center": "Centreren",
- "align_left": "Links uitlijnen",
- "align_middle": "Midden uitlijnen",
- "align_right": "Rechts uitlijnen",
- "align_top": "Boven uitlijnen",
- "mode_select": "Selecteer",
- "mode_fhpath": "Potlood",
- "mode_line": "Lijn",
- "mode_connect": "Verbind twee objecten",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Vrije stijl rechthoek",
- "mode_ellipse": "Ellips",
- "mode_circle": "Cirkel",
- "mode_fhellipse": "Vrije stijl ellips",
- "mode_path": "Pad",
- "mode_shapelib": "Shape library",
- "mode_text": "Tekst",
- "mode_image": "Afbeelding",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Kleuren kopieer gereedschap",
- "no_embed": "Let op: Dit plaatje kan niet worden geintegreerd (embeded). Het hangt af van dit pad om te worden afgebeeld.",
- "undo": "Ongedaan maken",
- "redo": "Opnieuw doen",
- "tool_source": "Bewerk bron",
- "wireframe_mode": "Draadmodel",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Groepeer elementen",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Zet om naar pad",
- "reorient_path": "Herorienteer pad",
- "ungroup": "Groepering opheffen",
- "docprops": "Documenteigenschappen",
- "imagelib": "Image Library",
- "move_bottom": "Naar achtergrond",
- "move_top": "Naar voorgrond",
- "node_clone": "Kloon knooppunt",
- "node_delete": "Delete knooppunt",
- "node_link": "Koppel controle punten",
- "add_subpath": "Subpad toevoegen",
- "openclose_path": "Open/sluit subpad",
- "source_save": "Veranderingen toepassen",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Laag",
- "layers": "Layers",
- "del": "Delete laag",
- "move_down": "Beweeg laag omlaag",
- "new": "Nieuwe laag",
- "rename": "Hernoem laag",
- "move_up": "Beweeg laag omhoog",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Verplaats elementen naar:",
- "move_selected": "Verplaats geselecteerde elementen naar andere laag"
- },
- config: {
- "image_props": "Afbeeldingeigenschappen",
- "doc_title": "Titel",
- "doc_dims": "Canvas afmetingen",
- "included_images": "Ingesloten afbeeldingen",
- "image_opt_embed": "Toevoegen data (lokale bestanden)",
- "image_opt_ref": "Gebruik bestand referentie",
- "editor_prefs": "Editor eigenschappen",
- "icon_size": "Icoon grootte",
- "language": "Taal",
- "background": "Editor achtergrond",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Let op: De achtergrond wordt niet opgeslagen met de afbeelding.",
- "icon_large": "Groot",
- "icon_medium": "Gemiddeld",
- "icon_small": "Klein",
- "icon_xlarge": "Extra groot",
- "select_predefined": "Kies voorgedefinieerd:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Verkeerde waarde gegeven",
- "noContentToFitTo": "Geen inhoud om omheen te passen",
- "dupeLayerName": "Er is al een laag met die naam!",
- "enterUniqueLayerName": "Geef een unieke laag naam",
- "enterNewLayerName": "Geef een nieuwe laag naam",
- "layerHasThatName": "Laag heeft al die naam",
- "QmoveElemsToLayer": "Verplaats geselecteerde elementen naar laag '%s'?",
- "QwantToClear": "Wil je de afbeelding leeg maken?\nDit zal ook de ongedaan maak geschiedenis wissen!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Er waren analyse fouten in je SVG bron.\nTeruggaan naar de originele SVG bron?",
- "QignoreSourceChanges": "Veranderingen in de SVG bron negeren?",
- "featNotSupported": "Functie wordt niet ondersteund",
- "enterNewImgURL": "Geef de nieuwe afbeelding URL",
- "defsFailOnSave": "Let op: Vanwege een fout in je browser, kan dit plaatje verkeerd verschijnen (missende hoeken en/of elementen). Het zal goed verschijnen zodra het plaatje echt wordt opgeslagen.",
- "loadingImage": "Laden van het plaatje, even geduld aub...",
- "saveFromBrowser": "Kies \"Save As...\" in je browser om dit plaatje op te slaan als een %s bestand.",
- "noteTheseIssues": "Let op de volgende problemen: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "nl",
+ dir: "ltr",
+ common: {
+ "ok": "Ok",
+ "cancel": "Annuleren",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "omlaag",
+ "key_up": "omhoog",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Mogelijk gemaakt door"
+ },
+ ui: {
+ "toggle_stroke_tools": "Toon/verberg meer lijn gereedschap",
+ "palette_info": "Klik om de vul kleur te veranderen, shift-klik om de lijn kleur te veranderen",
+ "zoom_level": "In-/uitzoomen",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identificeer het element",
+ "fill_color": "Verander vul kleur",
+ "stroke_color": "Verander lijn kleur",
+ "stroke_style": "Verander lijn stijl",
+ "stroke_width": "Verander lijn breedte",
+ "pos_x": "Verander X coordinaat",
+ "pos_y": "Verander Y coordinaat",
+ "linecap_butt": "Lijneinde: Geen",
+ "linecap_round": "Lijneinde: Rond",
+ "linecap_square": "Lijneinde: Vierkant",
+ "linejoin_bevel": "Lijnverbinding: Afgestompt",
+ "linejoin_miter": "Lijnverbinding: Hoek",
+ "linejoin_round": "Lijnverbinding: Rond",
+ "angle": "Draai",
+ "blur": "Verander Gaussische vervaging waarde",
+ "opacity": "Verander opaciteit geselecteerde item",
+ "circle_cx": "Verander het X coordinaat van het cirkel middelpunt",
+ "circle_cy": "Verander het Y coordinaat van het cirkel middelpunt",
+ "circle_r": "Verander de cirkel radius",
+ "ellipse_cx": "Verander het X coordinaat van het ellips middelpunt",
+ "ellipse_cy": "Verander het Y coordinaat van het ellips middelpunt",
+ "ellipse_rx": "Verander ellips X radius",
+ "ellipse_ry": "Verander ellips Y radius",
+ "line_x1": "Verander start X coordinaat van de lijn",
+ "line_x2": "Verander eind X coordinaat van de lijn",
+ "line_y1": "Verander start Y coordinaat van de lijn",
+ "line_y2": "Verander eind Y coordinaat van de lijn",
+ "rect_height": "Verander hoogte rechthoek",
+ "rect_width": "Verander breedte rechthoek",
+ "corner_radius": "Verander hoekradius rechthoek",
+ "image_width": "Verander breedte afbeelding",
+ "image_height": "Verander hoogte afbeelding",
+ "image_url": "Verander URL",
+ "node_x": "Verander X coordinaat knooppunt",
+ "node_y": "Verander Y coordinaat knooppunt",
+ "seg_type": "Verander segment type",
+ "straight_segments": "Recht",
+ "curve_segments": "Gebogen",
+ "text_contents": "Wijzig tekst",
+ "font_family": "Verander lettertype",
+ "font_size": "Verander lettertype grootte",
+ "bold": "Vet",
+ "italic": "Cursief"
+ },
+ tools: {
+ "main_menu": "Hoofdmenu",
+ "bkgnd_color_opac": "Verander achtergrond kleur/doorzichtigheid",
+ "connector_no_arrow": "Geen pijl",
+ "fitToContent": "Pas om inhoud",
+ "fit_to_all": "Pas om alle inhoud",
+ "fit_to_canvas": "Pas om canvas",
+ "fit_to_layer_content": "Pas om laag inhoud",
+ "fit_to_sel": "Pas om selectie",
+ "align_relative_to": "Uitlijnen relatief ten opzichte van ...",
+ "relativeTo": "Relatief ten opzichte van:",
+ "page": "Pagina",
+ "largest_object": "Grootste object",
+ "selected_objects": "Geselecteerde objecten",
+ "smallest_object": "Kleinste object",
+ "new_doc": "Nieuwe afbeelding",
+ "open_doc": "Open afbeelding",
+ "export_img": "Export",
+ "save_doc": "Afbeelding opslaan",
+ "import_doc": "Importeer SVG",
+ "align_to_page": "Lijn element uit relatief ten opzichte van de pagina",
+ "align_bottom": "Onder uitlijnen",
+ "align_center": "Centreren",
+ "align_left": "Links uitlijnen",
+ "align_middle": "Midden uitlijnen",
+ "align_right": "Rechts uitlijnen",
+ "align_top": "Boven uitlijnen",
+ "mode_select": "Selecteer",
+ "mode_fhpath": "Potlood",
+ "mode_line": "Lijn",
+ "mode_connect": "Verbind twee objecten",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Vrije stijl rechthoek",
+ "mode_ellipse": "Ellips",
+ "mode_circle": "Cirkel",
+ "mode_fhellipse": "Vrije stijl ellips",
+ "mode_path": "Pad",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Tekst",
+ "mode_image": "Afbeelding",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Kleuren kopieer gereedschap",
+ "no_embed": "Let op: Dit plaatje kan niet worden geintegreerd (embeded). Het hangt af van dit pad om te worden afgebeeld.",
+ "undo": "Ongedaan maken",
+ "redo": "Opnieuw doen",
+ "tool_source": "Bewerk bron",
+ "wireframe_mode": "Draadmodel",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Groepeer elementen",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Zet om naar pad",
+ "reorient_path": "Herorienteer pad",
+ "ungroup": "Groepering opheffen",
+ "docprops": "Documenteigenschappen",
+ "imagelib": "Image Library",
+ "move_bottom": "Naar achtergrond",
+ "move_top": "Naar voorgrond",
+ "node_clone": "Kloon knooppunt",
+ "node_delete": "Delete knooppunt",
+ "node_link": "Koppel controle punten",
+ "add_subpath": "Subpad toevoegen",
+ "openclose_path": "Open/sluit subpad",
+ "source_save": "Veranderingen toepassen",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Laag",
+ "layers": "Layers",
+ "del": "Delete laag",
+ "move_down": "Beweeg laag omlaag",
+ "new": "Nieuwe laag",
+ "rename": "Hernoem laag",
+ "move_up": "Beweeg laag omhoog",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Verplaats elementen naar:",
+ "move_selected": "Verplaats geselecteerde elementen naar andere laag"
+ },
+ config: {
+ "image_props": "Afbeeldingeigenschappen",
+ "doc_title": "Titel",
+ "doc_dims": "Canvas afmetingen",
+ "included_images": "Ingesloten afbeeldingen",
+ "image_opt_embed": "Toevoegen data (lokale bestanden)",
+ "image_opt_ref": "Gebruik bestand referentie",
+ "editor_prefs": "Editor eigenschappen",
+ "icon_size": "Icoon grootte",
+ "language": "Taal",
+ "background": "Editor achtergrond",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Let op: De achtergrond wordt niet opgeslagen met de afbeelding.",
+ "icon_large": "Groot",
+ "icon_medium": "Gemiddeld",
+ "icon_small": "Klein",
+ "icon_xlarge": "Extra groot",
+ "select_predefined": "Kies voorgedefinieerd:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Verkeerde waarde gegeven",
+ "noContentToFitTo": "Geen inhoud om omheen te passen",
+ "dupeLayerName": "Er is al een laag met die naam!",
+ "enterUniqueLayerName": "Geef een unieke laag naam",
+ "enterNewLayerName": "Geef een nieuwe laag naam",
+ "layerHasThatName": "Laag heeft al die naam",
+ "QmoveElemsToLayer": "Verplaats geselecteerde elementen naar laag '%s'?",
+ "QwantToClear": "Wil je de afbeelding leeg maken?\nDit zal ook de ongedaan maak geschiedenis wissen!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Er waren analyse fouten in je SVG bron.\nTeruggaan naar de originele SVG bron?",
+ "QignoreSourceChanges": "Veranderingen in de SVG bron negeren?",
+ "featNotSupported": "Functie wordt niet ondersteund",
+ "enterNewImgURL": "Geef de nieuwe afbeelding URL",
+ "defsFailOnSave": "Let op: Vanwege een fout in je browser, kan dit plaatje verkeerd verschijnen (missende hoeken en/of elementen). Het zal goed verschijnen zodra het plaatje echt wordt opgeslagen.",
+ "loadingImage": "Laden van het plaatje, even geduld aub...",
+ "saveFromBrowser": "Kies \"Save As...\" in je browser om dit plaatje op te slaan als een %s bestand.",
+ "noteTheseIssues": "Let op de volgende problemen: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.no.js b/editor/locale/lang.no.js
index 92521968..4b9d7285 100644
--- a/editor/locale/lang.no.js
+++ b/editor/locale/lang.no.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "no",
- dir: "ltr",
- common: {
- "ok": "Lagre",
- "cancel": "Avbryt",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click å endre fyllfarge, shift-klikke for å endre slag farge",
- "zoom_level": "Endre zoomnivå",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Endre fyllfarge",
- "stroke_color": "Endre stroke color",
- "stroke_style": "Endre stroke dash stil",
- "stroke_width": "Endre stroke width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Endre rotasjonsvinkelen",
- "blur": "Change gaussian blur value",
- "opacity": "Endre valgte elementet opasitet",
- "circle_cx": "Endre sirkelens CX koordinatsystem",
- "circle_cy": "Endre sirkelens koordinere cy",
- "circle_r": "Endre sirkelens radius",
- "ellipse_cx": "Endre ellipse's CX koordinatsystem",
- "ellipse_cy": "Endre ellipse's koordinere cy",
- "ellipse_rx": "Endre ellipse's x radius",
- "ellipse_ry": "Endre ellipse's y radius",
- "line_x1": "Endre linje begynner x koordinat",
- "line_x2": "Endre linje's ending x koordinat",
- "line_y1": "Endre linje begynner y koordinat",
- "line_y2": "Endre linje's ending y koordinat",
- "rect_height": "Endre rektangel høyde",
- "rect_width": "Endre rektangel bredde",
- "corner_radius": "Endre rektangel Corner Radius",
- "image_width": "Endre bilde bredde",
- "image_height": "Endre bilde høyde",
- "image_url": "Endre URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Endre tekst innholdet",
- "font_family": "Change Font Family",
- "font_size": "Endre skriftstørrelse",
- "bold": "Fet tekst",
- "italic": "Kursiv tekst"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Endre bakgrunnsfarge / opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Passer til alt innhold",
- "fit_to_canvas": "Tilpass til lerret",
- "fit_to_layer_content": "Fit to lag innhold",
- "fit_to_sel": "Tilpass til valg",
- "align_relative_to": "Juster i forhold til ...",
- "relativeTo": "i forhold til:",
- "page": "side",
- "largest_object": "største objekt",
- "selected_objects": "velges objekter",
- "smallest_object": "minste objekt",
- "new_doc": "New Image",
- "open_doc": "Åpne Image",
- "export_img": "Export",
- "save_doc": "Lagre bilde",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Midtstill",
- "align_left": "Venstrejuster",
- "align_middle": "Rett Middle",
- "align_right": "Høyrejuster",
- "align_top": "Align Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Linjeverktøy",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand rektangel",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Angre",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Gruppe Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Dele opp Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Flytt til toppen",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Lagre",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Slett laget",
- "move_down": "Flytt laget ned",
- "new": "Nytt lag",
- "rename": "Rename Layer",
- "move_up": "Flytt Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Velg forhåndsdefinerte:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "no",
+ dir: "ltr",
+ common: {
+ "ok": "Lagre",
+ "cancel": "Avbryt",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click å endre fyllfarge, shift-klikke for å endre slag farge",
+ "zoom_level": "Endre zoomnivå",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Endre fyllfarge",
+ "stroke_color": "Endre stroke color",
+ "stroke_style": "Endre stroke dash stil",
+ "stroke_width": "Endre stroke width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Endre rotasjonsvinkelen",
+ "blur": "Change gaussian blur value",
+ "opacity": "Endre valgte elementet opasitet",
+ "circle_cx": "Endre sirkelens CX koordinatsystem",
+ "circle_cy": "Endre sirkelens koordinere cy",
+ "circle_r": "Endre sirkelens radius",
+ "ellipse_cx": "Endre ellipse's CX koordinatsystem",
+ "ellipse_cy": "Endre ellipse's koordinere cy",
+ "ellipse_rx": "Endre ellipse's x radius",
+ "ellipse_ry": "Endre ellipse's y radius",
+ "line_x1": "Endre linje begynner x koordinat",
+ "line_x2": "Endre linje's ending x koordinat",
+ "line_y1": "Endre linje begynner y koordinat",
+ "line_y2": "Endre linje's ending y koordinat",
+ "rect_height": "Endre rektangel høyde",
+ "rect_width": "Endre rektangel bredde",
+ "corner_radius": "Endre rektangel Corner Radius",
+ "image_width": "Endre bilde bredde",
+ "image_height": "Endre bilde høyde",
+ "image_url": "Endre URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Endre tekst innholdet",
+ "font_family": "Change Font Family",
+ "font_size": "Endre skriftstørrelse",
+ "bold": "Fet tekst",
+ "italic": "Kursiv tekst"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Endre bakgrunnsfarge / opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Passer til alt innhold",
+ "fit_to_canvas": "Tilpass til lerret",
+ "fit_to_layer_content": "Fit to lag innhold",
+ "fit_to_sel": "Tilpass til valg",
+ "align_relative_to": "Juster i forhold til ...",
+ "relativeTo": "i forhold til:",
+ "page": "side",
+ "largest_object": "største objekt",
+ "selected_objects": "velges objekter",
+ "smallest_object": "minste objekt",
+ "new_doc": "New Image",
+ "open_doc": "Åpne Image",
+ "export_img": "Export",
+ "save_doc": "Lagre bilde",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Midtstill",
+ "align_left": "Venstrejuster",
+ "align_middle": "Rett Middle",
+ "align_right": "Høyrejuster",
+ "align_top": "Align Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Linjeverktøy",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand rektangel",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Angre",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Gruppe Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Dele opp Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Flytt til toppen",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Lagre",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Slett laget",
+ "move_down": "Flytt laget ned",
+ "new": "Nytt lag",
+ "rename": "Rename Layer",
+ "move_up": "Flytt Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Velg forhåndsdefinerte:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.pl.js b/editor/locale/lang.pl.js
index 9bce78d4..69ecd0c3 100644
--- a/editor/locale/lang.pl.js
+++ b/editor/locale/lang.pl.js
@@ -1,252 +1,252 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "pl",
- dir: "ltr",
- author: "Aleksander Lurie",
- common: {
- "ok": "OK",
- "cancel": "Anuluj",
- "key_backspace": "usuń",
- "key_del": "usuń",
- "key_down": "w dół",
- "key_up": "w górę",
- "more_opts": "więcej opcji",
- "url": "adres url",
- "width": "Szerokość",
- "height": "Wysokość"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Pokaż/ukryj więcej opcji obramowania",
- "palette_info": "Kliknij aby zmienić kolor wypełnienia, przytrzymaj shift aby zmienić kolor obramowania",
- "zoom_level": "Zmiana powiększenia",
- "panel_drag": "Przeciągnij w lewo/prawo aby zmienić szerokość panelu"
- },
- properties: {
- "id": "Identyfikator elementu",
- "fill_color": "Zmień kolor wypełnienia",
- "stroke_color": "Zmień kolor obramowania",
- "stroke_style": "Zmień styl obramowania",
- "stroke_width": "Zmień szerokość obramowania o 1, przytrzymaj shift aby zmienić szerokość o 0.1",
- "pos_x": "Zmień współrzędną X",
- "pos_y": "Zmień współrzędną Y",
- "linecap_butt": "Zakończenie linii: grzbiet",
- "linecap_round": "Zakończenie linii: zaokrąglone",
- "linecap_square": "Zakończenie linii: kwadrat",
- "linejoin_bevel": "Łączenie linii: ścięte",
- "linejoin_miter": "Łączenie linii: ostre",
- "linejoin_round": "Łączenie linii: zaokrąglone",
- "angle": "Zmień kąt obrotu",
- "blur": "Zmień wartość rozmycia gaussa",
- "opacity": "Zmień przezroczystość zaznaczonego elementu",
- "circle_cx": "Zmień współrzędną cx okręgu",
- "circle_cy": "Zmień współrzędną cy okręgu",
- "circle_r": "zmień promień okręgu",
- "ellipse_cx": "Zmień współrzędną cx elipsy",
- "ellipse_cy": "Zmień współrzędną cy elipsy",
- "ellipse_rx": "Zmień promień x elipsy",
- "ellipse_ry": "Zmień promień y elipsy",
- "line_x1": "Zmień współrzędna x początku linii",
- "line_x2": "Zmień współrzędną x końca linii",
- "line_y1": "Zmień współrzędną y początku linii",
- "line_y2": "Zmień współrzędną y końca linii",
- "rect_height": "Zmień wysokość prostokąta",
- "rect_width": "Zmień szerokość prostokąta",
- "corner_radius": "Zmień promień zaokrąglenia narożników prostokąta",
- "image_width": "Zmień wysokość obrazu",
- "image_height": "Zmień szerokość obrazu",
- "image_url": "Zmień adres URL",
- "node_x": "Zmień współrzędną x węzła",
- "node_y": "Zmień współrzędną y węzła",
- "seg_type": "Zmień typ segmentu",
- "straight_segments": "Prosty",
- "curve_segments": "Zaokrąglony",
- "text_contents": "Zmień text",
- "font_family": "Zmień krój czcionki",
- "font_size": "Zmień rozmiar czcionki",
- "bold": "Pogrubienie textu",
- "italic": "Kursywa"
- },
- tools: {
- "main_menu": "Menu główne",
- "bkgnd_color_opac": "Zmiana koloru/przezroczystości tła",
- "connector_no_arrow": "Brak strzałek",
- "fitToContent": "Dopasuj do zawartości",
- "fit_to_all": "Dopasuj do całej zawartości",
- "fit_to_canvas": "Dopasuj do widoku",
- "fit_to_layer_content": "Dopasuj do zawartości warstwy",
- "fit_to_sel": "Dopasuj do zaznaczenia",
- "align_relative_to": "Wyrównaj relatywnie do ...",
- "relativeTo": "relatywnie do:",
- "page": "strona",
- "largest_object": "największy obiekt",
- "selected_objects": "zaznaczone obiekty",
- "smallest_object": "najmniejszy obiekt",
- "new_doc": "Nowy obraz",
- "open_doc": "Otwórz obraz",
- "export_img": "Eksportuj",
- "save_doc": "Zapisz obraz",
- "import_doc": "Importuj SVG",
- "align_to_page": "Wyrównaj element do strony",
- "align_bottom": "Wyrównaj do dołu",
- "align_center": "Wyśrodkuj w poziomie",
- "align_left": "Wyrównaj do lewej",
- "align_middle": "Wyśrodkuj w pionie",
- "align_right": "Wyrównaj do prawej",
- "align_top": "Wyrównaj do góry",
- "mode_select": "Zaznaczenie",
- "mode_fhpath": "Ołówek",
- "mode_line": "Linia",
- "mode_connect": "Połącz dwa obiekty",
- "mode_rect": "Prostokąt",
- "mode_square": "Kwadrat",
- "mode_fhrect": "Dowolny prostokąt",
- "mode_ellipse": "Elipsa",
- "mode_circle": "Okrąg",
- "mode_fhellipse": "Dowolna elipsa",
- "mode_path": "Ścieżka",
- "mode_shapelib": "Biblioteka kształtów",
- "mode_text": "Tekst",
- "mode_image": "Obraz",
- "mode_zoom": "Powiększenie",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "Uwaga: Ten obraz nie może być osadzony. Być może podany adres na to nie pozwala",
- "undo": "Wstecz",
- "redo": "Dalej",
- "tool_source": "Edytuj źródło",
- "wireframe_mode": "Tryb szkieletowy",
- "toggle_grid": "Pokaż/ukryj siatkę",
- "clone": "Klonuj element(y)",
- "del": "Usuń warstwę",
- "group_elements": "Grupuj elementy",
- "make_link": "Utwórz łącze",
- "set_link_url": "Ustal adres URL (pozostaw puste aby usunąć)",
- "to_path": "Konwertuj do ścieżki",
- "reorient_path": "Zresetuj obwiednię",
- "ungroup": "Rozgrupuj elementy",
- "docprops": "Właściwości dokumentu",
- "imagelib": "Biblioteka obrazów",
- "move_bottom": "Przenieś pod spód",
- "move_top": "Przenieś na wierzch",
- "node_clone": "Klonuj węzeł",
- "node_delete": "Usuń węzeł",
- "node_link": "Podłącz punkty kontrolne",
- "add_subpath": "Dodaj ścieżkę podrzędną",
- "openclose_path": "Otwórz/zamknij ścieżkę podrzędną",
- "source_save": "Zachowaj zmiany",
- "cut": "Wytnij",
- "copy": "Kopiuj",
- "paste": "Wklej",
- "paste_in_place": "Wklej w miejscu",
- "delete": "Usuń",
- "group": "Grupuj",
- "move_front": "Przenieś do przodu",
- "move_up": "Przenieś warstwę w górę",
- "move_down": "Przenieś warstwę w dół",
- "move_back": "Przenieś do tyłu"
- },
- layers: {
- "layer": "Warstwa",
- "layers": "Warstwy",
- "del": "Usuń warstwę",
- "move_down": "Przenieś warstwę w dół",
- "new": "Nowa warstwa",
- "rename": "Zmień nazwę warstwy",
- "move_up": "Przenieś warstwę w górę",
- "dupe": "Duplikuj warstwę",
- "merge_down": "Scal w dół",
- "merge_all": "Scal wszystko",
- "move_elems_to": "Przenieś elementy do:",
- "move_selected": "Przenieś zaznaczone elementy do innej warstwy"
- },
- config: {
- "image_props": "Własciwości obrazu",
- "doc_title": "Tytuł",
- "doc_dims": "Wymiary pola roboczego",
- "included_images": "Dołączone obrazy",
- "image_opt_embed": "Dane osadzone (pliki lokalne)",
- "image_opt_ref": "Użyj referencji do pliku",
- "editor_prefs": "Ustawienia edytora",
- "icon_size": "Rozmiar ikon",
- "language": "Język",
- "background": "Tło edytora",
- "editor_img_url": "Adres URL obrazu",
- "editor_bg_note": "Uwaga: Tło nie zostało zapisane z obrazem.",
- "icon_large": "Duże",
- "icon_medium": "Średnie",
- "icon_small": "Małe",
- "icon_xlarge": "Bardzo duże",
- "select_predefined": "Wybierz predefiniowany:",
- "units_and_rulers": "Jednostki/Linijki",
- "show_rulers": "Pokaż linijki",
- "base_unit": "Podstawowa jednostka:",
- "grid": "Siatka",
- "snapping_onoff": "Włącz/wyłącz przyciąganie",
- "snapping_stepsize": "Przyciągaj co:",
- "grid_color": "Kolor siatki"
- },
- shape_cats: {
- "basic": "Podstawowe",
- "object": "Obiekty",
- "symbol": "Symbole",
- "arrow": "Strzałki",
- "flowchart": "Bloki",
- "animal": "Zwierzęta",
- "game": "Karty i szachy",
- "dialog_balloon": "Dymki",
- "electronics": "Elektronika",
- "math": "Matematyka",
- "music": "Muzyka",
- "misc": "Inne",
- "raphael_1": "raphaeljs.com zestaw 1",
- "raphael_2": "raphaeljs.com zestaw 2"
- },
- imagelib: {
- "select_lib": "Wybierz bibliotekę obrazów",
- "show_list": "Pokaż listę bibliotek",
- "import_single": "Importuj pojedyńczo",
- "import_multi": "Importuj wiele",
- "open": "Otwórz jako nowy dokument"
- },
- notification: {
- "invalidAttrValGiven": "Podano nieprawidłową wartość",
- "noContentToFitTo": "Brak zawartości do dopasowania",
- "dupeLayerName": "Istnieje już warstwa o takiej nazwie!",
- "enterUniqueLayerName": "Podaj unikalną nazwę warstwy",
- "enterNewLayerName": "Podaj nazwe nowej warstwy",
- "layerHasThatName": "Warstwa już tak się nazywa",
- "QmoveElemsToLayer": "Przenies zaznaczone elementy do warstwy \"%s\"?",
- "QwantToClear": "Jesteś pewien, że chcesz wyczyścić pole robocze?\nHistoria projektu również zostanie skasowana",
- "QwantToOpen": "Jesteś pewien, że chcesz otworzyć nowy plik?\nHistoria projektu również zostanie skasowana",
- "QerrorsRevertToSource": "Błąd parsowania źródła Twojego pliku SVG.\nPrzywrócić orginalne źródło pliku SVG?",
- "QignoreSourceChanges": "Zignorowac zmiany w źródle pliku SVG?",
- "featNotSupported": "Funkcjonalność niedostępna",
- "enterNewImgURL": "Podaj adres URL nowego obrazu",
- "defsFailOnSave": "Uwaga: Ze względu na błąd w przeglądarce, ten obraz może się źle wyswietlać (brak gradientów lub elementów). Będzie jednak wyświetlał się poprawnie skoro został zapisany.",
- "loadingImage": "Ładowanie obrazu, proszę czekać...",
- "saveFromBrowser": "Wybierz \"Zapisz jako...\" w przeglądarce aby zapisać obraz jako plik %s.",
- "noteTheseIssues": "Zwróć uwagę na nastepujące kwestie: ",
- "unsavedChanges": "Wykryto niezapisane zmiany.",
- "enterNewLinkURL": "Wpisz nowy adres URL hiperłącza",
- "errorLoadingSVG": "Błąd: Nie można załadować danych SVG",
- "URLloadFail": "Nie można załadować z adresu URL",
- "retrieving": "Pobieranie \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "pl",
+ dir: "ltr",
+ author: "Aleksander Lurie",
+ common: {
+ "ok": "OK",
+ "cancel": "Anuluj",
+ "key_backspace": "usuń",
+ "key_del": "usuń",
+ "key_down": "w dół",
+ "key_up": "w górę",
+ "more_opts": "więcej opcji",
+ "url": "adres url",
+ "width": "Szerokość",
+ "height": "Wysokość"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Pokaż/ukryj więcej opcji obramowania",
+ "palette_info": "Kliknij aby zmienić kolor wypełnienia, przytrzymaj shift aby zmienić kolor obramowania",
+ "zoom_level": "Zmiana powiększenia",
+ "panel_drag": "Przeciągnij w lewo/prawo aby zmienić szerokość panelu"
+ },
+ properties: {
+ "id": "Identyfikator elementu",
+ "fill_color": "Zmień kolor wypełnienia",
+ "stroke_color": "Zmień kolor obramowania",
+ "stroke_style": "Zmień styl obramowania",
+ "stroke_width": "Zmień szerokość obramowania o 1, przytrzymaj shift aby zmienić szerokość o 0.1",
+ "pos_x": "Zmień współrzędną X",
+ "pos_y": "Zmień współrzędną Y",
+ "linecap_butt": "Zakończenie linii: grzbiet",
+ "linecap_round": "Zakończenie linii: zaokrąglone",
+ "linecap_square": "Zakończenie linii: kwadrat",
+ "linejoin_bevel": "Łączenie linii: ścięte",
+ "linejoin_miter": "Łączenie linii: ostre",
+ "linejoin_round": "Łączenie linii: zaokrąglone",
+ "angle": "Zmień kąt obrotu",
+ "blur": "Zmień wartość rozmycia gaussa",
+ "opacity": "Zmień przezroczystość zaznaczonego elementu",
+ "circle_cx": "Zmień współrzędną cx okręgu",
+ "circle_cy": "Zmień współrzędną cy okręgu",
+ "circle_r": "zmień promień okręgu",
+ "ellipse_cx": "Zmień współrzędną cx elipsy",
+ "ellipse_cy": "Zmień współrzędną cy elipsy",
+ "ellipse_rx": "Zmień promień x elipsy",
+ "ellipse_ry": "Zmień promień y elipsy",
+ "line_x1": "Zmień współrzędna x początku linii",
+ "line_x2": "Zmień współrzędną x końca linii",
+ "line_y1": "Zmień współrzędną y początku linii",
+ "line_y2": "Zmień współrzędną y końca linii",
+ "rect_height": "Zmień wysokość prostokąta",
+ "rect_width": "Zmień szerokość prostokąta",
+ "corner_radius": "Zmień promień zaokrąglenia narożników prostokąta",
+ "image_width": "Zmień wysokość obrazu",
+ "image_height": "Zmień szerokość obrazu",
+ "image_url": "Zmień adres URL",
+ "node_x": "Zmień współrzędną x węzła",
+ "node_y": "Zmień współrzędną y węzła",
+ "seg_type": "Zmień typ segmentu",
+ "straight_segments": "Prosty",
+ "curve_segments": "Zaokrąglony",
+ "text_contents": "Zmień text",
+ "font_family": "Zmień krój czcionki",
+ "font_size": "Zmień rozmiar czcionki",
+ "bold": "Pogrubienie textu",
+ "italic": "Kursywa"
+ },
+ tools: {
+ "main_menu": "Menu główne",
+ "bkgnd_color_opac": "Zmiana koloru/przezroczystości tła",
+ "connector_no_arrow": "Brak strzałek",
+ "fitToContent": "Dopasuj do zawartości",
+ "fit_to_all": "Dopasuj do całej zawartości",
+ "fit_to_canvas": "Dopasuj do widoku",
+ "fit_to_layer_content": "Dopasuj do zawartości warstwy",
+ "fit_to_sel": "Dopasuj do zaznaczenia",
+ "align_relative_to": "Wyrównaj relatywnie do ...",
+ "relativeTo": "relatywnie do:",
+ "page": "strona",
+ "largest_object": "największy obiekt",
+ "selected_objects": "zaznaczone obiekty",
+ "smallest_object": "najmniejszy obiekt",
+ "new_doc": "Nowy obraz",
+ "open_doc": "Otwórz obraz",
+ "export_img": "Eksportuj",
+ "save_doc": "Zapisz obraz",
+ "import_doc": "Importuj SVG",
+ "align_to_page": "Wyrównaj element do strony",
+ "align_bottom": "Wyrównaj do dołu",
+ "align_center": "Wyśrodkuj w poziomie",
+ "align_left": "Wyrównaj do lewej",
+ "align_middle": "Wyśrodkuj w pionie",
+ "align_right": "Wyrównaj do prawej",
+ "align_top": "Wyrównaj do góry",
+ "mode_select": "Zaznaczenie",
+ "mode_fhpath": "Ołówek",
+ "mode_line": "Linia",
+ "mode_connect": "Połącz dwa obiekty",
+ "mode_rect": "Prostokąt",
+ "mode_square": "Kwadrat",
+ "mode_fhrect": "Dowolny prostokąt",
+ "mode_ellipse": "Elipsa",
+ "mode_circle": "Okrąg",
+ "mode_fhellipse": "Dowolna elipsa",
+ "mode_path": "Ścieżka",
+ "mode_shapelib": "Biblioteka kształtów",
+ "mode_text": "Tekst",
+ "mode_image": "Obraz",
+ "mode_zoom": "Powiększenie",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "Uwaga: Ten obraz nie może być osadzony. Być może podany adres na to nie pozwala",
+ "undo": "Wstecz",
+ "redo": "Dalej",
+ "tool_source": "Edytuj źródło",
+ "wireframe_mode": "Tryb szkieletowy",
+ "toggle_grid": "Pokaż/ukryj siatkę",
+ "clone": "Klonuj element(y)",
+ "del": "Usuń warstwę",
+ "group_elements": "Grupuj elementy",
+ "make_link": "Utwórz łącze",
+ "set_link_url": "Ustal adres URL (pozostaw puste aby usunąć)",
+ "to_path": "Konwertuj do ścieżki",
+ "reorient_path": "Zresetuj obwiednię",
+ "ungroup": "Rozgrupuj elementy",
+ "docprops": "Właściwości dokumentu",
+ "imagelib": "Biblioteka obrazów",
+ "move_bottom": "Przenieś pod spód",
+ "move_top": "Przenieś na wierzch",
+ "node_clone": "Klonuj węzeł",
+ "node_delete": "Usuń węzeł",
+ "node_link": "Podłącz punkty kontrolne",
+ "add_subpath": "Dodaj ścieżkę podrzędną",
+ "openclose_path": "Otwórz/zamknij ścieżkę podrzędną",
+ "source_save": "Zachowaj zmiany",
+ "cut": "Wytnij",
+ "copy": "Kopiuj",
+ "paste": "Wklej",
+ "paste_in_place": "Wklej w miejscu",
+ "delete": "Usuń",
+ "group": "Grupuj",
+ "move_front": "Przenieś do przodu",
+ "move_up": "Przenieś warstwę w górę",
+ "move_down": "Przenieś warstwę w dół",
+ "move_back": "Przenieś do tyłu"
+ },
+ layers: {
+ "layer": "Warstwa",
+ "layers": "Warstwy",
+ "del": "Usuń warstwę",
+ "move_down": "Przenieś warstwę w dół",
+ "new": "Nowa warstwa",
+ "rename": "Zmień nazwę warstwy",
+ "move_up": "Przenieś warstwę w górę",
+ "dupe": "Duplikuj warstwę",
+ "merge_down": "Scal w dół",
+ "merge_all": "Scal wszystko",
+ "move_elems_to": "Przenieś elementy do:",
+ "move_selected": "Przenieś zaznaczone elementy do innej warstwy"
+ },
+ config: {
+ "image_props": "Własciwości obrazu",
+ "doc_title": "Tytuł",
+ "doc_dims": "Wymiary pola roboczego",
+ "included_images": "Dołączone obrazy",
+ "image_opt_embed": "Dane osadzone (pliki lokalne)",
+ "image_opt_ref": "Użyj referencji do pliku",
+ "editor_prefs": "Ustawienia edytora",
+ "icon_size": "Rozmiar ikon",
+ "language": "Język",
+ "background": "Tło edytora",
+ "editor_img_url": "Adres URL obrazu",
+ "editor_bg_note": "Uwaga: Tło nie zostało zapisane z obrazem.",
+ "icon_large": "Duże",
+ "icon_medium": "Średnie",
+ "icon_small": "Małe",
+ "icon_xlarge": "Bardzo duże",
+ "select_predefined": "Wybierz predefiniowany:",
+ "units_and_rulers": "Jednostki/Linijki",
+ "show_rulers": "Pokaż linijki",
+ "base_unit": "Podstawowa jednostka:",
+ "grid": "Siatka",
+ "snapping_onoff": "Włącz/wyłącz przyciąganie",
+ "snapping_stepsize": "Przyciągaj co:",
+ "grid_color": "Kolor siatki"
+ },
+ shape_cats: {
+ "basic": "Podstawowe",
+ "object": "Obiekty",
+ "symbol": "Symbole",
+ "arrow": "Strzałki",
+ "flowchart": "Bloki",
+ "animal": "Zwierzęta",
+ "game": "Karty i szachy",
+ "dialog_balloon": "Dymki",
+ "electronics": "Elektronika",
+ "math": "Matematyka",
+ "music": "Muzyka",
+ "misc": "Inne",
+ "raphael_1": "raphaeljs.com zestaw 1",
+ "raphael_2": "raphaeljs.com zestaw 2"
+ },
+ imagelib: {
+ "select_lib": "Wybierz bibliotekę obrazów",
+ "show_list": "Pokaż listę bibliotek",
+ "import_single": "Importuj pojedyńczo",
+ "import_multi": "Importuj wiele",
+ "open": "Otwórz jako nowy dokument"
+ },
+ notification: {
+ "invalidAttrValGiven": "Podano nieprawidłową wartość",
+ "noContentToFitTo": "Brak zawartości do dopasowania",
+ "dupeLayerName": "Istnieje już warstwa o takiej nazwie!",
+ "enterUniqueLayerName": "Podaj unikalną nazwę warstwy",
+ "enterNewLayerName": "Podaj nazwe nowej warstwy",
+ "layerHasThatName": "Warstwa już tak się nazywa",
+ "QmoveElemsToLayer": "Przenies zaznaczone elementy do warstwy \"%s\"?",
+ "QwantToClear": "Jesteś pewien, że chcesz wyczyścić pole robocze?\nHistoria projektu również zostanie skasowana",
+ "QwantToOpen": "Jesteś pewien, że chcesz otworzyć nowy plik?\nHistoria projektu również zostanie skasowana",
+ "QerrorsRevertToSource": "Błąd parsowania źródła Twojego pliku SVG.\nPrzywrócić orginalne źródło pliku SVG?",
+ "QignoreSourceChanges": "Zignorowac zmiany w źródle pliku SVG?",
+ "featNotSupported": "Funkcjonalność niedostępna",
+ "enterNewImgURL": "Podaj adres URL nowego obrazu",
+ "defsFailOnSave": "Uwaga: Ze względu na błąd w przeglądarce, ten obraz może się źle wyswietlać (brak gradientów lub elementów). Będzie jednak wyświetlał się poprawnie skoro został zapisany.",
+ "loadingImage": "Ładowanie obrazu, proszę czekać...",
+ "saveFromBrowser": "Wybierz \"Zapisz jako...\" w przeglądarce aby zapisać obraz jako plik %s.",
+ "noteTheseIssues": "Zwróć uwagę na nastepujące kwestie: ",
+ "unsavedChanges": "Wykryto niezapisane zmiany.",
+ "enterNewLinkURL": "Wpisz nowy adres URL hiperłącza",
+ "errorLoadingSVG": "Błąd: Nie można załadować danych SVG",
+ "URLloadFail": "Nie można załadować z adresu URL",
+ "retrieving": "Pobieranie \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.pt-BR.js b/editor/locale/lang.pt-BR.js
index 854e33b0..21b82afc 100644
--- a/editor/locale/lang.pt-BR.js
+++ b/editor/locale/lang.pt-BR.js
@@ -1,250 +1,250 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "pt-BR",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Cancelar",
- "key_backspace": "Tecla backspace",
- "key_del": "Tecla delete",
- "key_down": "Seta para baixo",
- "key_up": "Seta para cima",
- "more_opts": "Mais opções",
- "url": "URL",
- "width": "Largura",
- "height": "Altura"
- },
- misc: {
- "powered_by": "Tecnologia"
- },
- ui: {
- "toggle_stroke_tools": "Mais opções de traço",
- "palette_info": "Click para mudar a cor de preenchimento, shift-click para mudar a cor do traço",
- "zoom_level": "Mudar zoom",
- "panel_drag": "Arraste para redimensionar o painel"
- },
- properties: {
- "id": "Identifica o elemento",
- "fill_color": "Mudar a cor de preenchimento",
- "stroke_color": "Mudar a cor do traço",
- "stroke_style": "Mudar o estilo do traço",
- "stroke_width": "Mudar a espessura do traço em 1, shift-click para mudar 0.1",
- "pos_x": "Mudar a coordenada X",
- "pos_y": "Mudar a coordenada Y",
- "linecap_butt": "Estilo do fim do traço: Topo",
- "linecap_round": "Estilo do fim do traço: Redondo",
- "linecap_square": "Estilo do fim do traço: Quadrado",
- "linejoin_bevel": "Estilo da Aresta: Chanfro",
- "linejoin_miter": "Estilo da Aresta: Reto",
- "linejoin_round": "Estilo da Aresta: Redondo",
- "angle": "Mudar ângulo de rotação",
- "blur": "Mudar valor de desfoque",
- "opacity": "Mudar opacidade do item selecionado",
- "circle_cx": "Mudar a coordenada cx do círculo",
- "circle_cy": "Mudar a coordenada cy do círculo",
- "circle_r": "Mudar o raio do círculo",
- "ellipse_cx": "Mudar a coordenada cx da elípse",
- "ellipse_cy": "Mudar a coordenada cy da elípse",
- "ellipse_rx": "Mudar o raio x da elípse",
- "ellipse_ry": "Mudar o raio y da elípse",
- "line_x1": "Mudar a coordenada x do início da linha",
- "line_x2": "Mudar a coordenada x do fim da linha",
- "line_y1": "Mudar a coordenada y do início da linha",
- "line_y2": "Mudar a coordenada y do fim da linha",
- "rect_height": "Mudar a altura do retângulo",
- "rect_width": "Mudar a largura do retângulo",
- "corner_radius": "Mudar o raio da aresta do retângulo",
- "image_width": "Mudar a largura da imagem",
- "image_height": "Mudar a altura da imagem",
- "image_url": "Mudar URL",
- "node_x": "Mudar a coordenada x da aresta",
- "node_y": "Mudar a coordenada y da aresta",
- "seg_type": "Mudar o tipo de segmento",
- "straight_segments": "Reto",
- "curve_segments": "Curvo",
- "text_contents": "Mudar conteúdo do texto",
- "font_family": "Mudar o estilo da fonte",
- "font_size": "Mudar o tamanho da fonte",
- "bold": "Negrito",
- "italic": "Italico"
- },
- tools: {
- "main_menu": "Menu Principal",
- "bkgnd_color_opac": "Mudar cor/opacidade do fundo",
- "connector_no_arrow": "Sem flecha",
- "fitToContent": "Ajustar ao conteúdo",
- "fit_to_all": "Ajustar a todo conteúdo",
- "fit_to_canvas": "Ajustar à tela",
- "fit_to_layer_content": "Ajustar ao conteúdo da camada",
- "fit_to_sel": "Ajustar à seleção",
- "align_relative_to": "Alinhar em relação à ...",
- "relativeTo": "Referência:",
- "page": "página",
- "largest_object": "maior objeto",
- "selected_objects": "objetos selecionados",
- "smallest_object": "menor objeto",
- "new_doc": "Nova imagem",
- "open_doc": "Abrir imagem",
- "export_img": "Export",
- "save_doc": "Salvar imagem",
- "import_doc": "Importar SVG",
- "align_to_page": "Alinhar elemento na página",
- "align_bottom": "Alinhar no fundo",
- "align_center": "Alinhar no centro",
- "align_left": "Alinhar na esquerda",
- "align_middle": "Alinhar no meio",
- "align_right": "Alinhar na direita",
- "align_top": "Alinhar no topo",
- "mode_select": "Selecão",
- "mode_fhpath": "Lápis",
- "mode_line": "Linha",
- "mode_connect": "Conecção",
- "mode_rect": "Retângulo",
- "mode_square": "Quadrado",
- "mode_fhrect": "Retângulo a mão-livre",
- "mode_ellipse": "Elípse",
- "mode_circle": "Círculo",
- "mode_fhellipse": "Elípse a mão-livre",
- "mode_path": "Contorno",
- "mode_shapelib": "Biblioteca de Formas",
- "mode_text": "Texto",
- "mode_image": "Imagem",
- "mode_zoom": "Zoom",
- "mode_eyedropper": "Conta-gotas",
- "no_embed": "Atenção: Esta imagem não pode ser incorporada e dependerá de seu caminho para ser exibida",
- "undo": "Desfazer",
- "redo": "Refazer",
- "tool_source": "Editar o código",
- "wireframe_mode": "Modo linhas",
- "toggle_grid": "Mostrar/Esconder grade",
- "clone": "Clonar Elemento(s)",
- "del": "Deletar Elemento(s)",
- "group_elements": "Agrupar Elementos",
- "make_link": "Criar (hyper)link",
- "set_link_url": "Alterar URL (em branco para remover)",
- "to_path": "Converter para Contorno",
- "reorient_path": "Reorientar contorno",
- "ungroup": "Desagrupar Elementos",
- "docprops": "Propriedades",
- "imagelib": "Biblioteca de Imagens",
- "move_bottom": "Mover para o fundo",
- "move_top": "Mover para o topo",
- "node_clone": "Clonar Aresta",
- "node_delete": "Deletar Aresta",
- "node_link": "Alinhar pontos de controle",
- "add_subpath": "Adicionar contorno",
- "openclose_path": "Abrir/Fechar contorno",
- "source_save": "Salvar",
- "cut": "Recortar",
- "copy": "Copiar",
- "paste": "Colar",
- "paste_in_place": "Colar no mesmo local",
- "delete": "Deletar",
- "group": "Agrupar",
- "move_front": "Trazer para Frente",
- "move_up": "Avançar",
- "move_down": "Recuar",
- "move_back": "Enviar para Trás"
- },
- layers: {
- "layer": "Camada",
- "layers": "Camadas",
- "del": "Deletar Camada",
- "move_down": "Enviar Camada para Trás",
- "new": "Nova Camada",
- "rename": "Renomear Camada",
- "move_up": "Trazer Camada para Frente",
- "dupe": "Duplicar Camada",
- "merge_down": "Achatar para baixo",
- "merge_all": "Achatar todas",
- "move_elems_to": "Mover elementos para:",
- "move_selected": "Mover elementos selecionados para outra camada"
- },
- config: {
- "image_props": "Propriedades",
- "doc_title": "Título",
- "doc_dims": "Dimensões",
- "included_images": "Imagens",
- "image_opt_embed": "Incorporadas (arquivos locais)",
- "image_opt_ref": "Usar referência",
- "editor_prefs": "Preferências",
- "icon_size": "Tamanho dos ícones",
- "language": "Idioma",
- "background": "Fundo da página",
- "editor_img_url": "URL da Imagem",
- "editor_bg_note": "Atenção: Fundo da página não será salvo.",
- "icon_large": "Grande",
- "icon_medium": "Médio",
- "icon_small": "Pequeno",
- "icon_xlarge": "Extra Grande",
- "select_predefined": "Modelos:",
- "units_and_rulers": "Unidade & Réguas",
- "show_rulers": "Mostrar réguas",
- "base_unit": "Unidade base:",
- "grid": "Grade",
- "snapping_onoff": "Snap on/off",
- "snapping_stepsize": "Intensidade do Snap:"
- },
- shape_cats: {
- "basic": "Básico",
- "object": "Objetos",
- "symbol": "Símbolos",
- "arrow": "Flechas",
- "flowchart": "Fluxograma",
- "animal": "Animais",
- "game": "Jogos",
- "dialog_balloon": "Balões",
- "electronics": "Eletrônica",
- "math": "Matemática",
- "music": "Música",
- "misc": "Outros",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Selecione uma biblioteca de imagens",
- "show_list": "Voltar à lista de bibliotecas",
- "import_single": "Importar um",
- "import_multi": "Importar múltiplos",
- "open": "Abrir como novo"
- },
- notification: {
- "invalidAttrValGiven": "Valor inválido",
- "noContentToFitTo": "Não há conteúdo",
- "dupeLayerName": "Nome duplicado",
- "enterUniqueLayerName": "Insira um nome único",
- "enterNewLayerName": "Insira um novo nome",
- "layerHasThatName": "A camada já pussui este nome",
- "QmoveElemsToLayer": "Mover elementos selecionados para a camada: \"%s\"?",
- "QwantToClear": "Deseja criar um novo arquivo?\nO histórico também será apagado!",
- "QwantToOpen": "Deseja abrir um novo arquivo?\nO histórico também será apagado!",
- "QerrorsRevertToSource": "Foram encontrados erros ná análise do código SVG.\nReverter para o código SVG original?",
- "QignoreSourceChanges": "Ignorar as mudanças no código SVG?",
- "featNotSupported": "Recurso não suportado",
- "enterNewImgURL": "Insira nova URL da imagem",
- "defsFailOnSave": "Atenção: Devido a um bug em seu navegador, esta imagem pode apresentar erros, porém será salva corretamente.",
- "loadingImage": "Carregando imagem, por favor aguarde...",
- "saveFromBrowser": "Selecione \"Salvar como...\" no seu navegador para salvar esta imagem como um arquivo %s.",
- "noteTheseIssues": "Atenção para as seguintes questões: ",
- "unsavedChanges": "Existem alterações não salvas.",
- "enterNewLinkURL": "Insira novo URL do hyperlink",
- "errorLoadingSVG": "Erro: Impossível carregar dados SVG",
- "URLloadFail": "Impossível carregar deste URL",
- "retrieving": "Recuperando \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "pt-BR",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Cancelar",
+ "key_backspace": "Tecla backspace",
+ "key_del": "Tecla delete",
+ "key_down": "Seta para baixo",
+ "key_up": "Seta para cima",
+ "more_opts": "Mais opções",
+ "url": "URL",
+ "width": "Largura",
+ "height": "Altura"
+ },
+ misc: {
+ "powered_by": "Tecnologia"
+ },
+ ui: {
+ "toggle_stroke_tools": "Mais opções de traço",
+ "palette_info": "Click para mudar a cor de preenchimento, shift-click para mudar a cor do traço",
+ "zoom_level": "Mudar zoom",
+ "panel_drag": "Arraste para redimensionar o painel"
+ },
+ properties: {
+ "id": "Identifica o elemento",
+ "fill_color": "Mudar a cor de preenchimento",
+ "stroke_color": "Mudar a cor do traço",
+ "stroke_style": "Mudar o estilo do traço",
+ "stroke_width": "Mudar a espessura do traço em 1, shift-click para mudar 0.1",
+ "pos_x": "Mudar a coordenada X",
+ "pos_y": "Mudar a coordenada Y",
+ "linecap_butt": "Estilo do fim do traço: Topo",
+ "linecap_round": "Estilo do fim do traço: Redondo",
+ "linecap_square": "Estilo do fim do traço: Quadrado",
+ "linejoin_bevel": "Estilo da Aresta: Chanfro",
+ "linejoin_miter": "Estilo da Aresta: Reto",
+ "linejoin_round": "Estilo da Aresta: Redondo",
+ "angle": "Mudar ângulo de rotação",
+ "blur": "Mudar valor de desfoque",
+ "opacity": "Mudar opacidade do item selecionado",
+ "circle_cx": "Mudar a coordenada cx do círculo",
+ "circle_cy": "Mudar a coordenada cy do círculo",
+ "circle_r": "Mudar o raio do círculo",
+ "ellipse_cx": "Mudar a coordenada cx da elípse",
+ "ellipse_cy": "Mudar a coordenada cy da elípse",
+ "ellipse_rx": "Mudar o raio x da elípse",
+ "ellipse_ry": "Mudar o raio y da elípse",
+ "line_x1": "Mudar a coordenada x do início da linha",
+ "line_x2": "Mudar a coordenada x do fim da linha",
+ "line_y1": "Mudar a coordenada y do início da linha",
+ "line_y2": "Mudar a coordenada y do fim da linha",
+ "rect_height": "Mudar a altura do retângulo",
+ "rect_width": "Mudar a largura do retângulo",
+ "corner_radius": "Mudar o raio da aresta do retângulo",
+ "image_width": "Mudar a largura da imagem",
+ "image_height": "Mudar a altura da imagem",
+ "image_url": "Mudar URL",
+ "node_x": "Mudar a coordenada x da aresta",
+ "node_y": "Mudar a coordenada y da aresta",
+ "seg_type": "Mudar o tipo de segmento",
+ "straight_segments": "Reto",
+ "curve_segments": "Curvo",
+ "text_contents": "Mudar conteúdo do texto",
+ "font_family": "Mudar o estilo da fonte",
+ "font_size": "Mudar o tamanho da fonte",
+ "bold": "Negrito",
+ "italic": "Italico"
+ },
+ tools: {
+ "main_menu": "Menu Principal",
+ "bkgnd_color_opac": "Mudar cor/opacidade do fundo",
+ "connector_no_arrow": "Sem flecha",
+ "fitToContent": "Ajustar ao conteúdo",
+ "fit_to_all": "Ajustar a todo conteúdo",
+ "fit_to_canvas": "Ajustar à tela",
+ "fit_to_layer_content": "Ajustar ao conteúdo da camada",
+ "fit_to_sel": "Ajustar à seleção",
+ "align_relative_to": "Alinhar em relação à ...",
+ "relativeTo": "Referência:",
+ "page": "página",
+ "largest_object": "maior objeto",
+ "selected_objects": "objetos selecionados",
+ "smallest_object": "menor objeto",
+ "new_doc": "Nova imagem",
+ "open_doc": "Abrir imagem",
+ "export_img": "Export",
+ "save_doc": "Salvar imagem",
+ "import_doc": "Importar SVG",
+ "align_to_page": "Alinhar elemento na página",
+ "align_bottom": "Alinhar no fundo",
+ "align_center": "Alinhar no centro",
+ "align_left": "Alinhar na esquerda",
+ "align_middle": "Alinhar no meio",
+ "align_right": "Alinhar na direita",
+ "align_top": "Alinhar no topo",
+ "mode_select": "Selecão",
+ "mode_fhpath": "Lápis",
+ "mode_line": "Linha",
+ "mode_connect": "Conecção",
+ "mode_rect": "Retângulo",
+ "mode_square": "Quadrado",
+ "mode_fhrect": "Retângulo a mão-livre",
+ "mode_ellipse": "Elípse",
+ "mode_circle": "Círculo",
+ "mode_fhellipse": "Elípse a mão-livre",
+ "mode_path": "Contorno",
+ "mode_shapelib": "Biblioteca de Formas",
+ "mode_text": "Texto",
+ "mode_image": "Imagem",
+ "mode_zoom": "Zoom",
+ "mode_eyedropper": "Conta-gotas",
+ "no_embed": "Atenção: Esta imagem não pode ser incorporada e dependerá de seu caminho para ser exibida",
+ "undo": "Desfazer",
+ "redo": "Refazer",
+ "tool_source": "Editar o código",
+ "wireframe_mode": "Modo linhas",
+ "toggle_grid": "Mostrar/Esconder grade",
+ "clone": "Clonar Elemento(s)",
+ "del": "Deletar Elemento(s)",
+ "group_elements": "Agrupar Elementos",
+ "make_link": "Criar (hyper)link",
+ "set_link_url": "Alterar URL (em branco para remover)",
+ "to_path": "Converter para Contorno",
+ "reorient_path": "Reorientar contorno",
+ "ungroup": "Desagrupar Elementos",
+ "docprops": "Propriedades",
+ "imagelib": "Biblioteca de Imagens",
+ "move_bottom": "Mover para o fundo",
+ "move_top": "Mover para o topo",
+ "node_clone": "Clonar Aresta",
+ "node_delete": "Deletar Aresta",
+ "node_link": "Alinhar pontos de controle",
+ "add_subpath": "Adicionar contorno",
+ "openclose_path": "Abrir/Fechar contorno",
+ "source_save": "Salvar",
+ "cut": "Recortar",
+ "copy": "Copiar",
+ "paste": "Colar",
+ "paste_in_place": "Colar no mesmo local",
+ "delete": "Deletar",
+ "group": "Agrupar",
+ "move_front": "Trazer para Frente",
+ "move_up": "Avançar",
+ "move_down": "Recuar",
+ "move_back": "Enviar para Trás"
+ },
+ layers: {
+ "layer": "Camada",
+ "layers": "Camadas",
+ "del": "Deletar Camada",
+ "move_down": "Enviar Camada para Trás",
+ "new": "Nova Camada",
+ "rename": "Renomear Camada",
+ "move_up": "Trazer Camada para Frente",
+ "dupe": "Duplicar Camada",
+ "merge_down": "Achatar para baixo",
+ "merge_all": "Achatar todas",
+ "move_elems_to": "Mover elementos para:",
+ "move_selected": "Mover elementos selecionados para outra camada"
+ },
+ config: {
+ "image_props": "Propriedades",
+ "doc_title": "Título",
+ "doc_dims": "Dimensões",
+ "included_images": "Imagens",
+ "image_opt_embed": "Incorporadas (arquivos locais)",
+ "image_opt_ref": "Usar referência",
+ "editor_prefs": "Preferências",
+ "icon_size": "Tamanho dos ícones",
+ "language": "Idioma",
+ "background": "Fundo da página",
+ "editor_img_url": "URL da Imagem",
+ "editor_bg_note": "Atenção: Fundo da página não será salvo.",
+ "icon_large": "Grande",
+ "icon_medium": "Médio",
+ "icon_small": "Pequeno",
+ "icon_xlarge": "Extra Grande",
+ "select_predefined": "Modelos:",
+ "units_and_rulers": "Unidade & Réguas",
+ "show_rulers": "Mostrar réguas",
+ "base_unit": "Unidade base:",
+ "grid": "Grade",
+ "snapping_onoff": "Snap on/off",
+ "snapping_stepsize": "Intensidade do Snap:"
+ },
+ shape_cats: {
+ "basic": "Básico",
+ "object": "Objetos",
+ "symbol": "Símbolos",
+ "arrow": "Flechas",
+ "flowchart": "Fluxograma",
+ "animal": "Animais",
+ "game": "Jogos",
+ "dialog_balloon": "Balões",
+ "electronics": "Eletrônica",
+ "math": "Matemática",
+ "music": "Música",
+ "misc": "Outros",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Selecione uma biblioteca de imagens",
+ "show_list": "Voltar à lista de bibliotecas",
+ "import_single": "Importar um",
+ "import_multi": "Importar múltiplos",
+ "open": "Abrir como novo"
+ },
+ notification: {
+ "invalidAttrValGiven": "Valor inválido",
+ "noContentToFitTo": "Não há conteúdo",
+ "dupeLayerName": "Nome duplicado",
+ "enterUniqueLayerName": "Insira um nome único",
+ "enterNewLayerName": "Insira um novo nome",
+ "layerHasThatName": "A camada já pussui este nome",
+ "QmoveElemsToLayer": "Mover elementos selecionados para a camada: \"%s\"?",
+ "QwantToClear": "Deseja criar um novo arquivo?\nO histórico também será apagado!",
+ "QwantToOpen": "Deseja abrir um novo arquivo?\nO histórico também será apagado!",
+ "QerrorsRevertToSource": "Foram encontrados erros ná análise do código SVG.\nReverter para o código SVG original?",
+ "QignoreSourceChanges": "Ignorar as mudanças no código SVG?",
+ "featNotSupported": "Recurso não suportado",
+ "enterNewImgURL": "Insira nova URL da imagem",
+ "defsFailOnSave": "Atenção: Devido a um bug em seu navegador, esta imagem pode apresentar erros, porém será salva corretamente.",
+ "loadingImage": "Carregando imagem, por favor aguarde...",
+ "saveFromBrowser": "Selecione \"Salvar como...\" no seu navegador para salvar esta imagem como um arquivo %s.",
+ "noteTheseIssues": "Atenção para as seguintes questões: ",
+ "unsavedChanges": "Existem alterações não salvas.",
+ "enterNewLinkURL": "Insira novo URL do hyperlink",
+ "errorLoadingSVG": "Erro: Impossível carregar dados SVG",
+ "URLloadFail": "Impossível carregar deste URL",
+ "retrieving": "Recuperando \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.pt-PT.js b/editor/locale/lang.pt-PT.js
index 9ead8ba7..d1501edb 100644
--- a/editor/locale/lang.pt-PT.js
+++ b/editor/locale/lang.pt-PT.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "pt-PT",
- dir: "ltr",
- common: {
- "ok": "Salvar",
- "cancel": "Cancelar",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Clique para mudar a cor de preenchimento, shift-clique para mudar a cor do curso",
- "zoom_level": "Alterar o nível de zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Alterar a cor de preenchimento",
- "stroke_color": "Mudar a cor do curso",
- "stroke_style": "Alterar o estilo do traço do curso",
- "stroke_width": "Alterar a largura do curso",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Alterar o ângulo de rotação",
- "blur": "Change gaussian blur value",
- "opacity": "Mude a opacidade item selecionado",
- "circle_cx": "Cx Mudar círculo de coordenadas",
- "circle_cy": "Círculo Mudança cy coordenar",
- "circle_r": "Alterar círculo de raio",
- "ellipse_cx": "Alterar elipse cx coordenar",
- "ellipse_cy": "Elipse Mudança cy coordenar",
- "ellipse_rx": "Raio X Change elipse",
- "ellipse_ry": "Raio y Change elipse",
- "line_x1": "Altere a linha de partida coordenada x",
- "line_x2": "Altere a linha está terminando coordenada x",
- "line_y1": "Mudança na linha de partida coordenada y",
- "line_y2": "Mudança de linha está terminando coordenada y",
- "rect_height": "Alterar altura do retângulo",
- "rect_width": "Alterar a largura retângulo",
- "corner_radius": "Alterar Corner Rectangle Radius",
- "image_width": "Alterar a largura da imagem",
- "image_height": "Alterar altura da imagem",
- "image_url": "Alterar URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Alterar o conteúdo de texto",
- "font_family": "Alterar fonte Família",
- "font_size": "Alterar tamanho de letra",
- "bold": "Bold Text",
- "italic": "Texto em itálico"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Mudar a cor de fundo / opacidade",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Ajustar ao conteúdo",
- "fit_to_all": "Ajustar a todo o conteúdo",
- "fit_to_canvas": "Ajustar à tela",
- "fit_to_layer_content": "Ajustar o conteúdo da camada de",
- "fit_to_sel": "Ajustar à selecção",
- "align_relative_to": "Alinhar em relação a ...",
- "relativeTo": "em relação ao:",
- "page": "Página",
- "largest_object": "maior objeto",
- "selected_objects": "objetos eleitos",
- "smallest_object": "menor objeto",
- "new_doc": "Nova Imagem",
- "open_doc": "Abrir Imagem",
- "export_img": "Export",
- "save_doc": "Salvar Imagem",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Alinhar ao centro",
- "align_left": "Alinhar à Esquerda",
- "align_middle": "Alinhar Médio",
- "align_right": "Alinhar à Direita",
- "align_top": "Align Top",
- "mode_select": "Selecione a ferramenta",
- "mode_fhpath": "Ferramenta Lápis",
- "mode_line": "Ferramenta Linha",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Elipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Ferramenta de Texto",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Desfazer",
- "redo": "Refazer",
- "tool_source": "Fonte Editar",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elementos do Grupo",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Elementos Desagrupar",
- "docprops": "Propriedades do Documento",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Salvar",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move camada para baixo",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Selecione predefinidos:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "pt-PT",
+ dir: "ltr",
+ common: {
+ "ok": "Salvar",
+ "cancel": "Cancelar",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Clique para mudar a cor de preenchimento, shift-clique para mudar a cor do curso",
+ "zoom_level": "Alterar o nível de zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Alterar a cor de preenchimento",
+ "stroke_color": "Mudar a cor do curso",
+ "stroke_style": "Alterar o estilo do traço do curso",
+ "stroke_width": "Alterar a largura do curso",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Alterar o ângulo de rotação",
+ "blur": "Change gaussian blur value",
+ "opacity": "Mude a opacidade item selecionado",
+ "circle_cx": "Cx Mudar círculo de coordenadas",
+ "circle_cy": "Círculo Mudança cy coordenar",
+ "circle_r": "Alterar círculo de raio",
+ "ellipse_cx": "Alterar elipse cx coordenar",
+ "ellipse_cy": "Elipse Mudança cy coordenar",
+ "ellipse_rx": "Raio X Change elipse",
+ "ellipse_ry": "Raio y Change elipse",
+ "line_x1": "Altere a linha de partida coordenada x",
+ "line_x2": "Altere a linha está terminando coordenada x",
+ "line_y1": "Mudança na linha de partida coordenada y",
+ "line_y2": "Mudança de linha está terminando coordenada y",
+ "rect_height": "Alterar altura do retângulo",
+ "rect_width": "Alterar a largura retângulo",
+ "corner_radius": "Alterar Corner Rectangle Radius",
+ "image_width": "Alterar a largura da imagem",
+ "image_height": "Alterar altura da imagem",
+ "image_url": "Alterar URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Alterar o conteúdo de texto",
+ "font_family": "Alterar fonte Família",
+ "font_size": "Alterar tamanho de letra",
+ "bold": "Bold Text",
+ "italic": "Texto em itálico"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Mudar a cor de fundo / opacidade",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Ajustar ao conteúdo",
+ "fit_to_all": "Ajustar a todo o conteúdo",
+ "fit_to_canvas": "Ajustar à tela",
+ "fit_to_layer_content": "Ajustar o conteúdo da camada de",
+ "fit_to_sel": "Ajustar à selecção",
+ "align_relative_to": "Alinhar em relação a ...",
+ "relativeTo": "em relação ao:",
+ "page": "Página",
+ "largest_object": "maior objeto",
+ "selected_objects": "objetos eleitos",
+ "smallest_object": "menor objeto",
+ "new_doc": "Nova Imagem",
+ "open_doc": "Abrir Imagem",
+ "export_img": "Export",
+ "save_doc": "Salvar Imagem",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Alinhar ao centro",
+ "align_left": "Alinhar à Esquerda",
+ "align_middle": "Alinhar Médio",
+ "align_right": "Alinhar à Direita",
+ "align_top": "Align Top",
+ "mode_select": "Selecione a ferramenta",
+ "mode_fhpath": "Ferramenta Lápis",
+ "mode_line": "Ferramenta Linha",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Elipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Ferramenta de Texto",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Desfazer",
+ "redo": "Refazer",
+ "tool_source": "Fonte Editar",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elementos do Grupo",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Elementos Desagrupar",
+ "docprops": "Propriedades do Documento",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Salvar",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move camada para baixo",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Selecione predefinidos:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ro.js b/editor/locale/lang.ro.js
index 199b296a..b8517317 100644
--- a/editor/locale/lang.ro.js
+++ b/editor/locale/lang.ro.js
@@ -1,250 +1,250 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ro",
- dir: "ltr",
- common: {
- "ok": "Ok",
- "cancel": "Anulaţi",
- "key_backspace": "backspace",
- "key_del": "ştergere",
- "key_down": "jos",
- "key_up": "sus",
- "more_opts": "Mai multe opţiuni",
- "url": "URL",
- "width": "Lăţime",
- "height": "Înălţime"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Arătaţi/ascundeţi mai multe unelte de contur",
- "palette_info": "Faceţi clic pentru a schimba culoarea de umplere, Shift-clic pentru a schimba culoarea de contur",
- "zoom_level": "Schimbarea nivelului de zoom",
- "panel_drag": "Trageţi la stanga/dreapta pentru redimensionare panou lateral"
- },
- properties: {
- "id": "Identificare element",
- "fill_color": "Schimbarea culorii de umplere",
- "stroke_color": "Schimbarea culorii de contur",
- "stroke_style": "Schimbarea stilului de contur",
- "stroke_width": "Schimbarea lăţimii conturului",
- "pos_x": "Schimbă coordonata X",
- "pos_y": "Schimbă coordonata Y",
- "linecap_butt": "Capăt de linie: Butuc",
- "linecap_round": "Capăt de linie: Rotund",
- "linecap_square": "Capăt de linie: Pătrat",
- "linejoin_bevel": "Articulaţia liniei: Teşită",
- "linejoin_miter": "Articulaţia liniei: Unghi ascuţit",
- "linejoin_round": "Articulaţia liniei: Rotundă",
- "angle": "Schimbarea unghiul de rotaţie",
- "blur": "Schimbarea valorii estomparii gaussiene",
- "opacity": "Schimbarea gradului de opacitate",
- "circle_cx": "Schimbarea coordonatei CX a cercului",
- "circle_cy": "Schimbarea coordonatei CY a cercului",
- "circle_r": "Schimbarea razei cercului",
- "ellipse_cx": "Schimbarea coordonatei CX a elipsei",
- "ellipse_cy": "Schimbarea coordonatei CY a elipsei",
- "ellipse_rx": "Schimbarea razei elipsei X",
- "ellipse_ry": "Schimbarea razei elipsei Y",
- "line_x1": "Schimbarea coordonatei x a punctului de start",
- "line_x2": "Schimbarea coordonatei x a punctului final",
- "line_y1": "Schimbarea coordonatei y a punctului de start",
- "line_y2": "Schimbare coordonatei y a punctului final",
- "rect_height": "Schimbarea înălţimii dreptunghiului",
- "rect_width": "Schimbarea lăţimii dreptunghiului",
- "corner_radius": "Schimbarea razei colţului dreptunghiului",
- "image_width": "Schimbarea lăţimii imaginii",
- "image_height": "Schimbarea înălţimii imaginii",
- "image_url": "Schimbaţi URL-ul",
- "node_x": "Schimbă coordonata x a punctului",
- "node_y": "Schimbă coordonata x a punctului",
- "seg_type": "Schimbă tipul de segment",
- "straight_segments": "Drept",
- "curve_segments": "Curb",
- "text_contents": "Schimbarea conţinutului textului",
- "font_family": "Modificare familie de fonturi",
- "font_size": "Schimbă dimensiunea fontului",
- "bold": "Text Îngroşat",
- "italic": "Text Înclinat"
- },
- tools: {
- "main_menu": "Menu Principal",
- "bkgnd_color_opac": "Schimbare culoare de fundal / opacitate",
- "connector_no_arrow": "Fără săgeată",
- "fitToContent": "Dimensionare la conţinut",
- "fit_to_all": "Potrivire la tot conţinutul",
- "fit_to_canvas": "Potrivire la Şevalet",
- "fit_to_layer_content": "Potrivire la conţinutul stratului",
- "fit_to_sel": "Potrivire la selecţie",
- "align_relative_to": "Aliniere în raport cu ...",
- "relativeTo": "în raport cu:",
- "page": "pagină",
- "largest_object": "cel mai mare obiect",
- "selected_objects": "obiectele alese",
- "smallest_object": "cel mai mic obiect",
- "new_doc": "Imagine nouă",
- "open_doc": "Imagine deschisă",
- "export_img": "Export",
- "save_doc": "Salvare imagine",
- "import_doc": "Importare SVG",
- "align_to_page": "Aliniere la pagină",
- "align_bottom": "Aliniere jos",
- "align_center": "Aliniere la centru",
- "align_left": "Aliniere la stânga",
- "align_middle": "Aliniere la mijloc",
- "align_right": "Aliniere la dreapta",
- "align_top": "Aliniere sus",
- "mode_select": "Unealtă de Selectare",
- "mode_fhpath": "Unealtă de Traiectorie",
- "mode_line": "Unealtă de Linie",
- "mode_connect": "Conectati doua obiecte",
- "mode_rect": "Unealtă de Dreptunghi",
- "mode_square": "Unealtă de Pătrat",
- "mode_fhrect": "Dreptunghi cu mana liberă",
- "mode_ellipse": "Elipsă",
- "mode_circle": "Cerc",
- "mode_fhellipse": "Elipsă cu mana liberă",
- "mode_path": "Unealtă de Traiectorie",
- "mode_shapelib": "Biblioteca de forme",
- "mode_text": "Unealtă de Text",
- "mode_image": "Unealtă de Imagine",
- "mode_zoom": "Unealtă de Zoom",
- "mode_eyedropper": "Unealtă de captura Culoare",
- "no_embed": "NOTE: Aceasta imagine nu poate fi inglobată. Va depinde de aceasta traiectorie pentru a fi prezentată.",
- "undo": "Anulare",
- "redo": "Refacere",
- "tool_source": "Editare Cod Sursă",
- "wireframe_mode": "Mod Schelet",
- "toggle_grid": "Arată/ascunde Caroiaj",
- "clone": "Clonează Elementul/ele",
- "del": "Şterge Elementul/ele",
- "group_elements": "Grupare Elemente",
- "make_link": "Crează (hyper)link",
- "set_link_url": "Setează link URL (lăsaţi liber pentru eliminare)",
- "to_path": "Converteşte in Traiectorie",
- "reorient_path": "Reorientează Traiectoria",
- "ungroup": "Anulare Grupare Elemente",
- "docprops": "Proprietăţile Documentului",
- "imagelib": "Bibliotecă de Imagini",
- "move_bottom": "Mutare în jos",
- "move_top": "Mutare în sus",
- "node_clone": "Clonează Punct",
- "node_delete": "Şterge Punct",
- "node_link": "Uneşte Punctele de Control",
- "add_subpath": "Adăugaţi sub-traiectorie",
- "openclose_path": "Deschide/inchide sub-traiectorie",
- "source_save": "Folosiţi Schimbările",
- "cut": "Tăiere",
- "copy": "Copiere",
- "paste": "Reproducere",
- "paste_in_place": "Reproducere pe loc",
- "delete": "Ştergere",
- "group": "Group",
- "move_front": "Pune in faţa",
- "move_up": "Pune in spate",
- "move_down": "Trimite in faţa",
- "move_back": "Trimite in spate"
- },
- layers: {
- "layer": "Strat",
- "layers": "Straturi",
- "del": "Ştergeţi Strat",
- "move_down": "Mutare Strat în Jos",
- "new": "Strat Nou",
- "rename": "Redenumiţi Stratul",
- "move_up": "Mutare Strat în Sus",
- "dupe": "Duplicaţi Stratul",
- "merge_down": "Fuzionare in jos",
- "merge_all": "Fuzionarea tuturor",
- "move_elems_to": "Mută elemente la:",
- "move_selected": "Mută elementele selectate pe un alt strat"
- },
- config: {
- "image_props": "Proprietăţile Imaginii",
- "doc_title": "Titlul",
- "doc_dims": "Dimensiunile Şevaletului",
- "included_images": "Imaginile Incluse",
- "image_opt_embed": "Includeţi Datele (fişiere locale)",
- "image_opt_ref": "Foloseşte referinţe la fişiere",
- "editor_prefs": "Preferinţele Editorului",
- "icon_size": "Dimensiunile Butoanelor",
- "language": "Limba",
- "background": "Fondul Editorului",
- "editor_img_url": "URL-ul Imaginii",
- "editor_bg_note": "Notă: Fondul nu va fi salvat cu imaginea.",
- "icon_large": "Mari",
- "icon_medium": "Medii",
- "icon_small": "Mici",
- "icon_xlarge": "Foarte Mari",
- "select_predefined": "Selecţii predefinite:",
- "units_and_rulers": "Unitati si Rigle",
- "show_rulers": "Arată Riglele",
- "base_unit": "Unitate de baza:",
- "grid": "Caroiaj",
- "snapping_onoff": "Fixare on/off",
- "snapping_stepsize": "Dimensiunea pasului de fixare:"
- },
- shape_cats: {
- "basic": "De bază",
- "object": "Obiecte",
- "symbol": "Simboluri",
- "arrow": "Săgeti",
- "flowchart": "Schemă Logică",
- "animal": "Animale",
- "game": "Cărti & şah",
- "dialog_balloon": "Baloane de dialog",
- "electronics": "Electronice",
- "math": "Matematică",
- "music": "Muzică",
- "misc": "Diverse",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Selectati o biblioteca de imagini",
- "show_list": "Arătaţi lista bibliotecii",
- "import_single": "Importare unică",
- "import_multi": "Importare multiplă",
- "open": "Deschideţi ca si document nou"
- },
- notification: {
- "invalidAttrValGiven": "Valoarea data nu este validă",
- "noContentToFitTo": "Fara conţinut de referinţă",
- "dupeLayerName": "Deja exista un strat numit asa!",
- "enterUniqueLayerName": "Rog introduceţi un nume unic",
- "enterNewLayerName": "Rog introduceţi un nume pentru strat",
- "layerHasThatName": "Statul deja are acest nume",
- "QmoveElemsToLayer": "Mutaţi elementele selectate pe stratul '%s'?",
- "QwantToClear": "Doriti să ştergeţi desenul?\nAceasta va sterge si posibilitatea de anulare!",
- "QwantToOpen": "Doriti sa deschideţi un nou fişier?\nAceasta va şterge istoricul!",
- "QerrorsRevertToSource": "Sunt erori de parsing in sursa SVG.\nRevenire la sursa SVG orginală?",
- "QignoreSourceChanges": "Ignoraţi schimbarile la sursa SVG?",
- "featNotSupported": "Funcţie neimplementată",
- "enterNewImgURL": "Introduceţi noul URL pentru Imagine",
- "defsFailOnSave": "NOTE: Din cauza unei erori in browserul dv., aceasta imagine poate apare gresit (fara gradiente sau elemente). Însă va apare corect dupa salvare.",
- "loadingImage": "Imaginea se incarcă, va rugam asteptaţi...",
- "saveFromBrowser": "Selectează \"Salvează ca si...\" in browserul dv. pt. a salva aceasta imagine ca si fisier %s.",
- "noteTheseIssues": "De asemenea remarcati urmatoarele probleme: ",
- "unsavedChanges": "Sunt schimbări nesalvate.",
- "enterNewLinkURL": "IntroduAliniere în raport cu ...sceţi noul URL",
- "errorLoadingSVG": "Eroare: Nu se pot încărca datele SVG",
- "URLloadFail": "Nu se poate încărca de la URL",
- "retrieving": "În preluare \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ro",
+ dir: "ltr",
+ common: {
+ "ok": "Ok",
+ "cancel": "Anulaţi",
+ "key_backspace": "backspace",
+ "key_del": "ştergere",
+ "key_down": "jos",
+ "key_up": "sus",
+ "more_opts": "Mai multe opţiuni",
+ "url": "URL",
+ "width": "Lăţime",
+ "height": "Înălţime"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Arătaţi/ascundeţi mai multe unelte de contur",
+ "palette_info": "Faceţi clic pentru a schimba culoarea de umplere, Shift-clic pentru a schimba culoarea de contur",
+ "zoom_level": "Schimbarea nivelului de zoom",
+ "panel_drag": "Trageţi la stanga/dreapta pentru redimensionare panou lateral"
+ },
+ properties: {
+ "id": "Identificare element",
+ "fill_color": "Schimbarea culorii de umplere",
+ "stroke_color": "Schimbarea culorii de contur",
+ "stroke_style": "Schimbarea stilului de contur",
+ "stroke_width": "Schimbarea lăţimii conturului",
+ "pos_x": "Schimbă coordonata X",
+ "pos_y": "Schimbă coordonata Y",
+ "linecap_butt": "Capăt de linie: Butuc",
+ "linecap_round": "Capăt de linie: Rotund",
+ "linecap_square": "Capăt de linie: Pătrat",
+ "linejoin_bevel": "Articulaţia liniei: Teşită",
+ "linejoin_miter": "Articulaţia liniei: Unghi ascuţit",
+ "linejoin_round": "Articulaţia liniei: Rotundă",
+ "angle": "Schimbarea unghiul de rotaţie",
+ "blur": "Schimbarea valorii estomparii gaussiene",
+ "opacity": "Schimbarea gradului de opacitate",
+ "circle_cx": "Schimbarea coordonatei CX a cercului",
+ "circle_cy": "Schimbarea coordonatei CY a cercului",
+ "circle_r": "Schimbarea razei cercului",
+ "ellipse_cx": "Schimbarea coordonatei CX a elipsei",
+ "ellipse_cy": "Schimbarea coordonatei CY a elipsei",
+ "ellipse_rx": "Schimbarea razei elipsei X",
+ "ellipse_ry": "Schimbarea razei elipsei Y",
+ "line_x1": "Schimbarea coordonatei x a punctului de start",
+ "line_x2": "Schimbarea coordonatei x a punctului final",
+ "line_y1": "Schimbarea coordonatei y a punctului de start",
+ "line_y2": "Schimbare coordonatei y a punctului final",
+ "rect_height": "Schimbarea înălţimii dreptunghiului",
+ "rect_width": "Schimbarea lăţimii dreptunghiului",
+ "corner_radius": "Schimbarea razei colţului dreptunghiului",
+ "image_width": "Schimbarea lăţimii imaginii",
+ "image_height": "Schimbarea înălţimii imaginii",
+ "image_url": "Schimbaţi URL-ul",
+ "node_x": "Schimbă coordonata x a punctului",
+ "node_y": "Schimbă coordonata x a punctului",
+ "seg_type": "Schimbă tipul de segment",
+ "straight_segments": "Drept",
+ "curve_segments": "Curb",
+ "text_contents": "Schimbarea conţinutului textului",
+ "font_family": "Modificare familie de fonturi",
+ "font_size": "Schimbă dimensiunea fontului",
+ "bold": "Text Îngroşat",
+ "italic": "Text Înclinat"
+ },
+ tools: {
+ "main_menu": "Menu Principal",
+ "bkgnd_color_opac": "Schimbare culoare de fundal / opacitate",
+ "connector_no_arrow": "Fără săgeată",
+ "fitToContent": "Dimensionare la conţinut",
+ "fit_to_all": "Potrivire la tot conţinutul",
+ "fit_to_canvas": "Potrivire la Şevalet",
+ "fit_to_layer_content": "Potrivire la conţinutul stratului",
+ "fit_to_sel": "Potrivire la selecţie",
+ "align_relative_to": "Aliniere în raport cu ...",
+ "relativeTo": "în raport cu:",
+ "page": "pagină",
+ "largest_object": "cel mai mare obiect",
+ "selected_objects": "obiectele alese",
+ "smallest_object": "cel mai mic obiect",
+ "new_doc": "Imagine nouă",
+ "open_doc": "Imagine deschisă",
+ "export_img": "Export",
+ "save_doc": "Salvare imagine",
+ "import_doc": "Importare SVG",
+ "align_to_page": "Aliniere la pagină",
+ "align_bottom": "Aliniere jos",
+ "align_center": "Aliniere la centru",
+ "align_left": "Aliniere la stânga",
+ "align_middle": "Aliniere la mijloc",
+ "align_right": "Aliniere la dreapta",
+ "align_top": "Aliniere sus",
+ "mode_select": "Unealtă de Selectare",
+ "mode_fhpath": "Unealtă de Traiectorie",
+ "mode_line": "Unealtă de Linie",
+ "mode_connect": "Conectati doua obiecte",
+ "mode_rect": "Unealtă de Dreptunghi",
+ "mode_square": "Unealtă de Pătrat",
+ "mode_fhrect": "Dreptunghi cu mana liberă",
+ "mode_ellipse": "Elipsă",
+ "mode_circle": "Cerc",
+ "mode_fhellipse": "Elipsă cu mana liberă",
+ "mode_path": "Unealtă de Traiectorie",
+ "mode_shapelib": "Biblioteca de forme",
+ "mode_text": "Unealtă de Text",
+ "mode_image": "Unealtă de Imagine",
+ "mode_zoom": "Unealtă de Zoom",
+ "mode_eyedropper": "Unealtă de captura Culoare",
+ "no_embed": "NOTE: Aceasta imagine nu poate fi inglobată. Va depinde de aceasta traiectorie pentru a fi prezentată.",
+ "undo": "Anulare",
+ "redo": "Refacere",
+ "tool_source": "Editare Cod Sursă",
+ "wireframe_mode": "Mod Schelet",
+ "toggle_grid": "Arată/ascunde Caroiaj",
+ "clone": "Clonează Elementul/ele",
+ "del": "Şterge Elementul/ele",
+ "group_elements": "Grupare Elemente",
+ "make_link": "Crează (hyper)link",
+ "set_link_url": "Setează link URL (lăsaţi liber pentru eliminare)",
+ "to_path": "Converteşte in Traiectorie",
+ "reorient_path": "Reorientează Traiectoria",
+ "ungroup": "Anulare Grupare Elemente",
+ "docprops": "Proprietăţile Documentului",
+ "imagelib": "Bibliotecă de Imagini",
+ "move_bottom": "Mutare în jos",
+ "move_top": "Mutare în sus",
+ "node_clone": "Clonează Punct",
+ "node_delete": "Şterge Punct",
+ "node_link": "Uneşte Punctele de Control",
+ "add_subpath": "Adăugaţi sub-traiectorie",
+ "openclose_path": "Deschide/inchide sub-traiectorie",
+ "source_save": "Folosiţi Schimbările",
+ "cut": "Tăiere",
+ "copy": "Copiere",
+ "paste": "Reproducere",
+ "paste_in_place": "Reproducere pe loc",
+ "delete": "Ştergere",
+ "group": "Group",
+ "move_front": "Pune in faţa",
+ "move_up": "Pune in spate",
+ "move_down": "Trimite in faţa",
+ "move_back": "Trimite in spate"
+ },
+ layers: {
+ "layer": "Strat",
+ "layers": "Straturi",
+ "del": "Ştergeţi Strat",
+ "move_down": "Mutare Strat în Jos",
+ "new": "Strat Nou",
+ "rename": "Redenumiţi Stratul",
+ "move_up": "Mutare Strat în Sus",
+ "dupe": "Duplicaţi Stratul",
+ "merge_down": "Fuzionare in jos",
+ "merge_all": "Fuzionarea tuturor",
+ "move_elems_to": "Mută elemente la:",
+ "move_selected": "Mută elementele selectate pe un alt strat"
+ },
+ config: {
+ "image_props": "Proprietăţile Imaginii",
+ "doc_title": "Titlul",
+ "doc_dims": "Dimensiunile Şevaletului",
+ "included_images": "Imaginile Incluse",
+ "image_opt_embed": "Includeţi Datele (fişiere locale)",
+ "image_opt_ref": "Foloseşte referinţe la fişiere",
+ "editor_prefs": "Preferinţele Editorului",
+ "icon_size": "Dimensiunile Butoanelor",
+ "language": "Limba",
+ "background": "Fondul Editorului",
+ "editor_img_url": "URL-ul Imaginii",
+ "editor_bg_note": "Notă: Fondul nu va fi salvat cu imaginea.",
+ "icon_large": "Mari",
+ "icon_medium": "Medii",
+ "icon_small": "Mici",
+ "icon_xlarge": "Foarte Mari",
+ "select_predefined": "Selecţii predefinite:",
+ "units_and_rulers": "Unitati si Rigle",
+ "show_rulers": "Arată Riglele",
+ "base_unit": "Unitate de baza:",
+ "grid": "Caroiaj",
+ "snapping_onoff": "Fixare on/off",
+ "snapping_stepsize": "Dimensiunea pasului de fixare:"
+ },
+ shape_cats: {
+ "basic": "De bază",
+ "object": "Obiecte",
+ "symbol": "Simboluri",
+ "arrow": "Săgeti",
+ "flowchart": "Schemă Logică",
+ "animal": "Animale",
+ "game": "Cărti & şah",
+ "dialog_balloon": "Baloane de dialog",
+ "electronics": "Electronice",
+ "math": "Matematică",
+ "music": "Muzică",
+ "misc": "Diverse",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Selectati o biblioteca de imagini",
+ "show_list": "Arătaţi lista bibliotecii",
+ "import_single": "Importare unică",
+ "import_multi": "Importare multiplă",
+ "open": "Deschideţi ca si document nou"
+ },
+ notification: {
+ "invalidAttrValGiven": "Valoarea data nu este validă",
+ "noContentToFitTo": "Fara conţinut de referinţă",
+ "dupeLayerName": "Deja exista un strat numit asa!",
+ "enterUniqueLayerName": "Rog introduceţi un nume unic",
+ "enterNewLayerName": "Rog introduceţi un nume pentru strat",
+ "layerHasThatName": "Statul deja are acest nume",
+ "QmoveElemsToLayer": "Mutaţi elementele selectate pe stratul '%s'?",
+ "QwantToClear": "Doriti să ştergeţi desenul?\nAceasta va sterge si posibilitatea de anulare!",
+ "QwantToOpen": "Doriti sa deschideţi un nou fişier?\nAceasta va şterge istoricul!",
+ "QerrorsRevertToSource": "Sunt erori de parsing in sursa SVG.\nRevenire la sursa SVG orginală?",
+ "QignoreSourceChanges": "Ignoraţi schimbarile la sursa SVG?",
+ "featNotSupported": "Funcţie neimplementată",
+ "enterNewImgURL": "Introduceţi noul URL pentru Imagine",
+ "defsFailOnSave": "NOTE: Din cauza unei erori in browserul dv., aceasta imagine poate apare gresit (fara gradiente sau elemente). Însă va apare corect dupa salvare.",
+ "loadingImage": "Imaginea se incarcă, va rugam asteptaţi...",
+ "saveFromBrowser": "Selectează \"Salvează ca si...\" in browserul dv. pt. a salva aceasta imagine ca si fisier %s.",
+ "noteTheseIssues": "De asemenea remarcati urmatoarele probleme: ",
+ "unsavedChanges": "Sunt schimbări nesalvate.",
+ "enterNewLinkURL": "IntroduAliniere în raport cu ...sceţi noul URL",
+ "errorLoadingSVG": "Eroare: Nu se pot încărca datele SVG",
+ "URLloadFail": "Nu se poate încărca de la URL",
+ "retrieving": "În preluare \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.ru.js b/editor/locale/lang.ru.js
index 9404cc12..b2bdf6ab 100644
--- a/editor/locale/lang.ru.js
+++ b/editor/locale/lang.ru.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "ru",
- dir: "ltr",
- common: {
- "ok": "Сохранить",
- "cancel": "Отменить",
- "key_backspace": "Backspace",
- "key_del": "Delete",
- "key_down": "Вниз",
- "key_up": "Вверх",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Нажмите для изменения цвета заливки, Shift-Click изменить цвета обводки",
- "zoom_level": "Изменить масштаб",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Изменить цвет заливки",
- "stroke_color": "Изменить цвет обводки",
- "stroke_style": "Изменить стиль обводки",
- "stroke_width": "Изменить толщину обводки",
- "pos_x": "Изменить горизонтальный координат",
- "pos_y": "Изменить вертикальный координат",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Изменить угол поворота",
- "blur": "Change gaussian blur value",
- "opacity": "Изменить непрозрачность элемента",
- "circle_cx": "Изменить горизонтальный координат (CX) окружности",
- "circle_cy": "Изменить вертикальный координат (CY) окружности",
- "circle_r": "Изменить радиус окружности",
- "ellipse_cx": "Изменить горизонтальный координат (CX) эллипса",
- "ellipse_cy": "Изменить вертикальный координат (CY) эллипса",
- "ellipse_rx": "Изменить горизонтальный радиус эллипса",
- "ellipse_ry": "Изменить вертикальный радиус эллипса",
- "line_x1": "Изменить горизонтальный координат X начальной точки линии",
- "line_x2": "Изменить горизонтальный координат X конечной точки линии",
- "line_y1": "Изменить вертикальный координат Y начальной точки линии",
- "line_y2": "Изменить вертикальный координат Y конечной точки линии",
- "rect_height": "Изменениe высоту прямоугольника",
- "rect_width": "Измененить ширину прямоугольника",
- "corner_radius": "Радиус закругленности угла",
- "image_width": "Изменить ширину изображения",
- "image_height": "Изменить высоту изображения",
- "image_url": "Изменить URL",
- "node_x": "Изменить горизонтальную координату узла",
- "node_y": "Изменить вертикальную координату узла",
- "seg_type": "Изменить вид",
- "straight_segments": "Отрезок",
- "curve_segments": "Сплайн",
- "text_contents": "Изменить содержание текста",
- "font_family": "Изменить семейство шрифтов",
- "font_size": "Изменить размер шрифта",
- "bold": "Жирный",
- "italic": "Курсив"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Изменить цвет фона или прозрачность",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Под размер содержимого",
- "fit_to_all": "Под размер всех слоев",
- "fit_to_canvas": "Под размер холста",
- "fit_to_layer_content": "Под размер содержания слоя",
- "fit_to_sel": "Под размер выделенного",
- "align_relative_to": "Выровнять по отношению к ...",
- "relativeTo": "По отношению к ",
- "page": "страница",
- "largest_object": "Наибольший объект",
- "selected_objects": "Выделенные объекты",
- "smallest_object": "Самый маленький объект",
- "new_doc": "Создать изображение",
- "open_doc": "Открыть изображение",
- "export_img": "Export",
- "save_doc": "Сохранить изображение",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Выровнять по нижнему краю",
- "align_center": "Центрировать по вертикальной оси",
- "align_left": "По левому краю",
- "align_middle": "Центрировать по горизонтальной оси",
- "align_right": "По правому краю",
- "align_top": "Выровнять по верхнему краю",
- "mode_select": "Выделить",
- "mode_fhpath": "Карандаш",
- "mode_line": "Линия",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Прямоугольник от руки",
- "mode_ellipse": "Эллипс",
- "mode_circle": "Окружность",
- "mode_fhellipse": "Эллипс от руки",
- "mode_path": "Контуры",
- "mode_shapelib": "Shape library",
- "mode_text": "Текст",
- "mode_image": "Изображение",
- "mode_zoom": "Лупа",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Отменить",
- "redo": "Вернуть",
- "tool_source": "Редактировать исходный код",
- "wireframe_mode": "Каркас",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Создать группу элементов",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "В контур",
- "reorient_path": "Изменить ориентацию контура",
- "ungroup": "Разгруппировать элементы",
- "docprops": "Свойства документа",
- "imagelib": "Image Library",
- "move_bottom": "Опустить",
- "move_top": "Поднять",
- "node_clone": "Создать копию узла",
- "node_delete": "Удалить узел",
- "node_link": "Связать узлы",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Сохранить",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "Delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Слой",
- "layers": "Layers",
- "del": "Удалить слой",
- "move_down": "Опустить слой",
- "new": "Создать слой",
- "rename": "Переименовать Слой",
- "move_up": "Поднять слой",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Переместить выделенные элементы:",
- "move_selected": "Переместить выделенные элементы на другой слой"
- },
- config: {
- "image_props": "Свойства изображения",
- "doc_title": "Название",
- "doc_dims": "Размеры холста",
- "included_images": "Встроенные изображения",
- "image_opt_embed": "Локальные файлы",
- "image_opt_ref": "По ссылкам",
- "editor_prefs": "Параметры",
- "icon_size": "Размер значков",
- "language": "Язык",
- "background": "Фон",
- "editor_img_url": "Image URL",
- "editor_bg_note": "(Фон не сохранится вместе с изображением.)",
- "icon_large": "Большие",
- "icon_medium": "Средние",
- "icon_small": "Малые",
- "icon_xlarge": "Огромные",
- "select_predefined": "Выбирать предопределенный размер",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Некорректное значение аргумента",
- "noContentToFitTo": "Нет содержания, по которому выровнять.",
- "dupeLayerName": "Слой с этим именем уже существует.",
- "enterUniqueLayerName": "Пожалуйста, введите имя для слоя.",
- "enterNewLayerName": "Пожалуйста, введите новое имя.",
- "layerHasThatName": "Слой уже называется этим именем.",
- "QmoveElemsToLayer": "Переместить выделенные элементы на слой '%s'?",
- "QwantToClear": "Вы хотите очистить?\nИстория действий будет забыта!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "Была проблема при парсинге вашего SVG исходного кода.\nЗаменить его предыдущим SVG кодом?",
- "QignoreSourceChanges": "Забыть без сохранения?",
- "featNotSupported": "Возможность не реализована",
- "enterNewImgURL": "Введите новый URL изображения",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "ru",
+ dir: "ltr",
+ common: {
+ "ok": "Сохранить",
+ "cancel": "Отменить",
+ "key_backspace": "Backspace",
+ "key_del": "Delete",
+ "key_down": "Вниз",
+ "key_up": "Вверх",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Нажмите для изменения цвета заливки, Shift-Click изменить цвета обводки",
+ "zoom_level": "Изменить масштаб",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Изменить цвет заливки",
+ "stroke_color": "Изменить цвет обводки",
+ "stroke_style": "Изменить стиль обводки",
+ "stroke_width": "Изменить толщину обводки",
+ "pos_x": "Изменить горизонтальный координат",
+ "pos_y": "Изменить вертикальный координат",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Изменить угол поворота",
+ "blur": "Change gaussian blur value",
+ "opacity": "Изменить непрозрачность элемента",
+ "circle_cx": "Изменить горизонтальный координат (CX) окружности",
+ "circle_cy": "Изменить вертикальный координат (CY) окружности",
+ "circle_r": "Изменить радиус окружности",
+ "ellipse_cx": "Изменить горизонтальный координат (CX) эллипса",
+ "ellipse_cy": "Изменить вертикальный координат (CY) эллипса",
+ "ellipse_rx": "Изменить горизонтальный радиус эллипса",
+ "ellipse_ry": "Изменить вертикальный радиус эллипса",
+ "line_x1": "Изменить горизонтальный координат X начальной точки линии",
+ "line_x2": "Изменить горизонтальный координат X конечной точки линии",
+ "line_y1": "Изменить вертикальный координат Y начальной точки линии",
+ "line_y2": "Изменить вертикальный координат Y конечной точки линии",
+ "rect_height": "Изменениe высоту прямоугольника",
+ "rect_width": "Измененить ширину прямоугольника",
+ "corner_radius": "Радиус закругленности угла",
+ "image_width": "Изменить ширину изображения",
+ "image_height": "Изменить высоту изображения",
+ "image_url": "Изменить URL",
+ "node_x": "Изменить горизонтальную координату узла",
+ "node_y": "Изменить вертикальную координату узла",
+ "seg_type": "Изменить вид",
+ "straight_segments": "Отрезок",
+ "curve_segments": "Сплайн",
+ "text_contents": "Изменить содержание текста",
+ "font_family": "Изменить семейство шрифтов",
+ "font_size": "Изменить размер шрифта",
+ "bold": "Жирный",
+ "italic": "Курсив"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Изменить цвет фона или прозрачность",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Под размер содержимого",
+ "fit_to_all": "Под размер всех слоев",
+ "fit_to_canvas": "Под размер холста",
+ "fit_to_layer_content": "Под размер содержания слоя",
+ "fit_to_sel": "Под размер выделенного",
+ "align_relative_to": "Выровнять по отношению к ...",
+ "relativeTo": "По отношению к ",
+ "page": "страница",
+ "largest_object": "Наибольший объект",
+ "selected_objects": "Выделенные объекты",
+ "smallest_object": "Самый маленький объект",
+ "new_doc": "Создать изображение",
+ "open_doc": "Открыть изображение",
+ "export_img": "Export",
+ "save_doc": "Сохранить изображение",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Выровнять по нижнему краю",
+ "align_center": "Центрировать по вертикальной оси",
+ "align_left": "По левому краю",
+ "align_middle": "Центрировать по горизонтальной оси",
+ "align_right": "По правому краю",
+ "align_top": "Выровнять по верхнему краю",
+ "mode_select": "Выделить",
+ "mode_fhpath": "Карандаш",
+ "mode_line": "Линия",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Прямоугольник от руки",
+ "mode_ellipse": "Эллипс",
+ "mode_circle": "Окружность",
+ "mode_fhellipse": "Эллипс от руки",
+ "mode_path": "Контуры",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Текст",
+ "mode_image": "Изображение",
+ "mode_zoom": "Лупа",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Отменить",
+ "redo": "Вернуть",
+ "tool_source": "Редактировать исходный код",
+ "wireframe_mode": "Каркас",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Создать группу элементов",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "В контур",
+ "reorient_path": "Изменить ориентацию контура",
+ "ungroup": "Разгруппировать элементы",
+ "docprops": "Свойства документа",
+ "imagelib": "Image Library",
+ "move_bottom": "Опустить",
+ "move_top": "Поднять",
+ "node_clone": "Создать копию узла",
+ "node_delete": "Удалить узел",
+ "node_link": "Связать узлы",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Сохранить",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "Delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Слой",
+ "layers": "Layers",
+ "del": "Удалить слой",
+ "move_down": "Опустить слой",
+ "new": "Создать слой",
+ "rename": "Переименовать Слой",
+ "move_up": "Поднять слой",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Переместить выделенные элементы:",
+ "move_selected": "Переместить выделенные элементы на другой слой"
+ },
+ config: {
+ "image_props": "Свойства изображения",
+ "doc_title": "Название",
+ "doc_dims": "Размеры холста",
+ "included_images": "Встроенные изображения",
+ "image_opt_embed": "Локальные файлы",
+ "image_opt_ref": "По ссылкам",
+ "editor_prefs": "Параметры",
+ "icon_size": "Размер значков",
+ "language": "Язык",
+ "background": "Фон",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "(Фон не сохранится вместе с изображением.)",
+ "icon_large": "Большие",
+ "icon_medium": "Средние",
+ "icon_small": "Малые",
+ "icon_xlarge": "Огромные",
+ "select_predefined": "Выбирать предопределенный размер",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Некорректное значение аргумента",
+ "noContentToFitTo": "Нет содержания, по которому выровнять.",
+ "dupeLayerName": "Слой с этим именем уже существует.",
+ "enterUniqueLayerName": "Пожалуйста, введите имя для слоя.",
+ "enterNewLayerName": "Пожалуйста, введите новое имя.",
+ "layerHasThatName": "Слой уже называется этим именем.",
+ "QmoveElemsToLayer": "Переместить выделенные элементы на слой '%s'?",
+ "QwantToClear": "Вы хотите очистить?\nИстория действий будет забыта!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "Была проблема при парсинге вашего SVG исходного кода.\nЗаменить его предыдущим SVG кодом?",
+ "QignoreSourceChanges": "Забыть без сохранения?",
+ "featNotSupported": "Возможность не реализована",
+ "enterNewImgURL": "Введите новый URL изображения",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sk.js b/editor/locale/lang.sk.js
index ab01da94..1dae0467 100644
--- a/editor/locale/lang.sk.js
+++ b/editor/locale/lang.sk.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sk",
- dir: "ltr",
- common: {
- "ok": "Uložiť",
- "cancel": "Zrušiť",
- "key_backspace": "Backspace",
- "key_del": "Delete",
- "key_down": "šípka dole",
- "key_up": "šípka hore",
- "more_opts": "Viac možností",
- "url": "URL",
- "width": "Šírka",
- "height": "Výška"
- },
- misc: {
- "powered_by": "Beží na"
- },
- ui: {
- "toggle_stroke_tools": "Skryť/ukázať viac nástrojov pre krivku",
- "palette_info": "Kliknutím zmeníte farbu výplne, so Shiftom zmeníte farbu obrysu",
- "zoom_level": "Zmena priblíženia",
- "panel_drag": "Potiahnutie vľavo/vpravo na zmenu veľkosti bočného panela"
- },
- properties: {
- "id": "Zmeniť ID elementu",
- "fill_color": "Zmeniť farbu výplne",
- "stroke_color": "Zmeniť farbu obrysu",
- "stroke_style": "Zmeniť štýl obrysu",
- "stroke_width": "Zmeniť hrúbku obrysu",
- "pos_x": "Zmeniť súradnicu X",
- "pos_y": "Zmeniť súradnicu Y",
- "linecap_butt": "Koniec čiary: presný",
- "linecap_round": "Koniec čiary: zaoblený",
- "linecap_square": "Koniec čiary: so štvorcovým presahom",
- "linejoin_bevel": "Napojenie čiar: skosené",
- "linejoin_miter": "Napojenie čiar: ostré",
- "linejoin_round": "Napojenie čiar: oblé",
- "angle": "Zmeniť uhol natočenia",
- "blur": "Zmeniť intenzitu rozmazania",
- "opacity": "Zmeniť prehľadnosť vybraných položiek",
- "circle_cx": "Zmeniť súradnicu X stredu kružnice",
- "circle_cy": "Zmeniť súradnicu Y stredu kružnice",
- "circle_r": "Zmeniť polomer kružnice",
- "ellipse_cx": "Zmeniť súradnicu X stredu elipsy",
- "ellipse_cy": "Zmeniť súradnicu Y stredu elipsy",
- "ellipse_rx": "Zmeniť polomer X elipsy",
- "ellipse_ry": "Zmeniť polomer Y elipsy",
- "line_x1": "Zmeniť počiatočnú súradnicu X čiary",
- "line_x2": "Zmeniť koncovú súradnicu X čiary",
- "line_y1": "Zmeniť počiatočnú súradnicu Y čiary",
- "line_y2": "Zmeniť koncovú súradnicu Y čiary",
- "rect_height": "Zmena výšku obdĺžnika",
- "rect_width": "Zmeniť šírku obdĺžnika",
- "corner_radius": "Zmeniť zaoblenie rohov obdĺžnika",
- "image_width": "Zmeniť šírku obrázka",
- "image_height": "Zmeniť výšku obrázka",
- "image_url": "Zmeniť URL",
- "node_x": "Zmeniť uzlu súradnicu X",
- "node_y": "Zmeniť uzlu súradnicu Y",
- "seg_type": "Zmeniť typ segmentu",
- "straight_segments": "Rovný",
- "curve_segments": "Krivka",
- "text_contents": "Zmeniť text",
- "font_family": "Zmeniť font",
- "font_size": "Zmeniť veľkosť písma",
- "bold": "Tučné",
- "italic": "Kurzíva"
- },
- tools: {
- "main_menu": "Hlavné menu",
- "bkgnd_color_opac": "Zmeniť farbu a priehľadnosť pozadia",
- "connector_no_arrow": "Spojnica bez šípok",
- "fitToContent": "Prispôsobiť obsahu",
- "fit_to_all": "Prisposobiť celému obsahu",
- "fit_to_canvas": "Prispôsobiť stránke",
- "fit_to_layer_content": "Prispôsobiť obsahu vrstvy",
- "fit_to_sel": "Prispôsobiť výberu",
- "align_relative_to": "Zarovnať relatívne k ...",
- "relativeTo": "vzhľadom k:",
- "page": "stránke",
- "largest_object": "najväčšiemu objektu",
- "selected_objects": "zvoleným objektom",
- "smallest_object": "najmenšiemu objektu",
- "new_doc": "Nový obrázok",
- "open_doc": "Otvoriť obrázok",
- "export_img": "Export",
- "save_doc": "Uložiť obrázok",
- "import_doc": "Import Image",
- "align_to_page": "Zarovnať element na stránku",
- "align_bottom": "Zarovnať dole",
- "align_center": "Zarovnať na stred",
- "align_left": "Zarovnať doľava",
- "align_middle": "Zarovnať na stred",
- "align_right": "Zarovnať doprava",
- "align_top": "Zarovnať hore",
- "mode_select": "Výber",
- "mode_fhpath": "Ceruzka",
- "mode_line": "Čiara",
- "mode_connect": "Spojiť dva objekty",
- "mode_rect": "Obdĺžnik",
- "mode_square": "Štvorec",
- "mode_fhrect": "Obdĺžnik voľnou rukou",
- "mode_ellipse": "Elipsa",
- "mode_circle": "Kružnica",
- "mode_fhellipse": "Elipsa voľnou rukou",
- "mode_path": "Krivka",
- "mode_shapelib": "Knižnica Tvarov",
- "mode_text": "Text",
- "mode_image": "Obrázok",
- "mode_zoom": "Priblíženie",
- "mode_eyedropper": "Pipeta",
- "no_embed": "POZNÁMKA: Tento obrázok nemôže byť vložený. Jeho zobrazenie bude závisieť na jeho ceste",
- "undo": "Späť",
- "redo": "Opakovať",
- "tool_source": "Upraviť SVG kód",
- "wireframe_mode": "Drôtový model",
- "toggle_grid": "Zobraz/Skry mriežku",
- "clone": "Klonuj element(y)",
- "del": "Zmaž element(y)",
- "group_elements": "Zoskupiť elementy",
- "make_link": "Naviaž odkaz (hyper)link",
- "set_link_url": "Nastav odkaz URL (ak prázdny, odstráni sa)",
- "to_path": "Previesť na krivku",
- "reorient_path": "Zmeniť orientáciu krivky",
- "ungroup": "Zrušiť skupinu",
- "docprops": "Vlastnosti dokumentu",
- "imagelib": "Knižnica obrázkov",
- "move_bottom": "Presunúť spodok",
- "move_top": "Presunúť na vrch",
- "node_clone": "Klonovať uzol",
- "node_delete": "Zmazať uzol",
- "node_link": "Prepojiť kontrolné body",
- "add_subpath": "Pridať ďalšiu súčasť krivky",
- "openclose_path": "Otvoriť/uzatvoriť súčasť krivky",
- "source_save": "Uložiť",
- "cut": "Vystrihnutie",
- "copy": "Kópia",
- "paste": "Vloženie",
- "paste_in_place": "Vloženie na pôvodnom mieste",
- "delete": "Zmazanie",
- "group": "Group",
- "move_front": "Vysuň navrch",
- "move_up": "Vysuň vpred",
- "move_down": "Zasuň na spodok",
- "move_back": "Zasuň dozadu"
- },
- layers: {
- "layer": "Vrstva",
- "layers": "Vrstvy",
- "del": "Odstrániť vrstvu",
- "move_down": "Presunúť vrstvu dole",
- "new": "Nová vrstva",
- "rename": "Premenovať vrstvu",
- "move_up": "Presunúť vrstvu hore",
- "dupe": "Zduplikovať vrstvu",
- "merge_down": "Zlúčiť s vrstvou dole",
- "merge_all": "Zlúčiť všetko",
- "move_elems_to": "Presunúť elementy do:",
- "move_selected": "Presunúť vybrané elementy do inej vrstvy"
- },
- config: {
- "image_props": "Vlastnosti obrázka",
- "doc_title": "Titulok",
- "doc_dims": "Rozmery plátna",
- "included_images": "Vložené obrázky",
- "image_opt_embed": "Vložiť data (lokálne súbory)",
- "image_opt_ref": "Použiť referenciu na súbor",
- "editor_prefs": "Vlastnosti editora",
- "icon_size": "Veľkosť ikon",
- "language": "Jazyk",
- "background": "Zmeniť pozadie",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Poznámka: Pozadie nebude uložené spolu s obrázkom.",
- "icon_large": "Veľká",
- "icon_medium": "Stredná",
- "icon_small": "Malá",
- "icon_xlarge": "Extra veľká",
- "select_predefined": "Vybrať preddefinovaný:",
- "units_and_rulers": "Jednotky & Pravítka",
- "show_rulers": "Ukáž pravítka",
- "base_unit": "Základné jednotky:",
- "grid": "Mriežka",
- "snapping_onoff": "Priväzovanie (do mriežky) zap/vyp",
- "snapping_stepsize": "Priväzovanie (do mriežky) veľkosť kroku:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Základné",
- "object": "Objekty",
- "symbol": "Symboly",
- "arrow": "Šípky",
- "flowchart": "Vývojové diagramy",
- "animal": "Zvieratá",
- "game": "Karty & Šach",
- "dialog_balloon": "Dialogové balóny",
- "electronics": "Elektronika",
- "math": "Matematické",
- "music": "Hudba",
- "misc": "Rôzne",
- "raphael_1": "raphaeljs.com sada 1",
- "raphael_2": "raphaeljs.com sada 2"
- },
- imagelib: {
- "select_lib": "Výber knižnice obrázkov",
- "show_list": "Prehľad knižnice",
- "import_single": "Import jeden",
- "import_multi": "Import viacero",
- "open": "Otvoriť ako nový dokument"
- },
- notification: {
- "invalidAttrValGiven": "Neplatná hodnota",
- "noContentToFitTo": "Vyberte oblasť na prispôsobenie",
- "dupeLayerName": "Vrstva s daným názvom už existuje!",
- "enterUniqueLayerName": "Zadajte jedinečný názov vrstvy",
- "enterNewLayerName": "Zadajte názov vrstvy",
- "layerHasThatName": "Vrstva už má zadaný tento názov",
- "QmoveElemsToLayer": "Presunúť elementy do vrstvy '%s'?",
- "QwantToClear": "Naozaj chcete vymazať kresbu?\n(História bude taktiež vymazaná!)!",
- "QwantToOpen": "Chcete otvoriť nový súbor?\nTo však tiež vymaže Vašu UNDO knižnicu!",
- "QerrorsRevertToSource": "Chyba pri načítaní SVG dokumentu.\nVrátiť povodný SVG dokument?",
- "QignoreSourceChanges": "Ignorovať zmeny v SVG dokumente?",
- "featNotSupported": "Vlastnosť nie je podporovaná",
- "enterNewImgURL": "Zadajte nové URL obrázka",
- "defsFailOnSave": "POZNÁMKA: Kvôli chybe v prehliadači sa tento obrázok môže zobraziť nesprávne (napr. chýbajúce prechody či elementy). Po uložení sa zobrazí správne.",
- "loadingImage": "Nahrávam obrázok, prosím čakajte ...",
- "saveFromBrowser": "Vyberte \"Uložiť ako ...\" vo vašom prehliadači na uloženie tohoto obrázka do súboru %s.",
- "noteTheseIssues": "Môžu sa vyskytnúť nasledujúce problémy: ",
- "unsavedChanges": "Sú tu neuložené zmeny.",
- "enterNewLinkURL": "Zadajte nové URL odkazu (hyperlink)",
- "errorLoadingSVG": "Chyba: Nedajú sa načítať SVG data",
- "URLloadFail": "Nemožno čítať z URL",
- "retrieving": "Načítavanie \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sk",
+ dir: "ltr",
+ common: {
+ "ok": "Uložiť",
+ "cancel": "Zrušiť",
+ "key_backspace": "Backspace",
+ "key_del": "Delete",
+ "key_down": "šípka dole",
+ "key_up": "šípka hore",
+ "more_opts": "Viac možností",
+ "url": "URL",
+ "width": "Šírka",
+ "height": "Výška"
+ },
+ misc: {
+ "powered_by": "Beží na"
+ },
+ ui: {
+ "toggle_stroke_tools": "Skryť/ukázať viac nástrojov pre krivku",
+ "palette_info": "Kliknutím zmeníte farbu výplne, so Shiftom zmeníte farbu obrysu",
+ "zoom_level": "Zmena priblíženia",
+ "panel_drag": "Potiahnutie vľavo/vpravo na zmenu veľkosti bočného panela"
+ },
+ properties: {
+ "id": "Zmeniť ID elementu",
+ "fill_color": "Zmeniť farbu výplne",
+ "stroke_color": "Zmeniť farbu obrysu",
+ "stroke_style": "Zmeniť štýl obrysu",
+ "stroke_width": "Zmeniť hrúbku obrysu",
+ "pos_x": "Zmeniť súradnicu X",
+ "pos_y": "Zmeniť súradnicu Y",
+ "linecap_butt": "Koniec čiary: presný",
+ "linecap_round": "Koniec čiary: zaoblený",
+ "linecap_square": "Koniec čiary: so štvorcovým presahom",
+ "linejoin_bevel": "Napojenie čiar: skosené",
+ "linejoin_miter": "Napojenie čiar: ostré",
+ "linejoin_round": "Napojenie čiar: oblé",
+ "angle": "Zmeniť uhol natočenia",
+ "blur": "Zmeniť intenzitu rozmazania",
+ "opacity": "Zmeniť prehľadnosť vybraných položiek",
+ "circle_cx": "Zmeniť súradnicu X stredu kružnice",
+ "circle_cy": "Zmeniť súradnicu Y stredu kružnice",
+ "circle_r": "Zmeniť polomer kružnice",
+ "ellipse_cx": "Zmeniť súradnicu X stredu elipsy",
+ "ellipse_cy": "Zmeniť súradnicu Y stredu elipsy",
+ "ellipse_rx": "Zmeniť polomer X elipsy",
+ "ellipse_ry": "Zmeniť polomer Y elipsy",
+ "line_x1": "Zmeniť počiatočnú súradnicu X čiary",
+ "line_x2": "Zmeniť koncovú súradnicu X čiary",
+ "line_y1": "Zmeniť počiatočnú súradnicu Y čiary",
+ "line_y2": "Zmeniť koncovú súradnicu Y čiary",
+ "rect_height": "Zmena výšku obdĺžnika",
+ "rect_width": "Zmeniť šírku obdĺžnika",
+ "corner_radius": "Zmeniť zaoblenie rohov obdĺžnika",
+ "image_width": "Zmeniť šírku obrázka",
+ "image_height": "Zmeniť výšku obrázka",
+ "image_url": "Zmeniť URL",
+ "node_x": "Zmeniť uzlu súradnicu X",
+ "node_y": "Zmeniť uzlu súradnicu Y",
+ "seg_type": "Zmeniť typ segmentu",
+ "straight_segments": "Rovný",
+ "curve_segments": "Krivka",
+ "text_contents": "Zmeniť text",
+ "font_family": "Zmeniť font",
+ "font_size": "Zmeniť veľkosť písma",
+ "bold": "Tučné",
+ "italic": "Kurzíva"
+ },
+ tools: {
+ "main_menu": "Hlavné menu",
+ "bkgnd_color_opac": "Zmeniť farbu a priehľadnosť pozadia",
+ "connector_no_arrow": "Spojnica bez šípok",
+ "fitToContent": "Prispôsobiť obsahu",
+ "fit_to_all": "Prisposobiť celému obsahu",
+ "fit_to_canvas": "Prispôsobiť stránke",
+ "fit_to_layer_content": "Prispôsobiť obsahu vrstvy",
+ "fit_to_sel": "Prispôsobiť výberu",
+ "align_relative_to": "Zarovnať relatívne k ...",
+ "relativeTo": "vzhľadom k:",
+ "page": "stránke",
+ "largest_object": "najväčšiemu objektu",
+ "selected_objects": "zvoleným objektom",
+ "smallest_object": "najmenšiemu objektu",
+ "new_doc": "Nový obrázok",
+ "open_doc": "Otvoriť obrázok",
+ "export_img": "Export",
+ "save_doc": "Uložiť obrázok",
+ "import_doc": "Import Image",
+ "align_to_page": "Zarovnať element na stránku",
+ "align_bottom": "Zarovnať dole",
+ "align_center": "Zarovnať na stred",
+ "align_left": "Zarovnať doľava",
+ "align_middle": "Zarovnať na stred",
+ "align_right": "Zarovnať doprava",
+ "align_top": "Zarovnať hore",
+ "mode_select": "Výber",
+ "mode_fhpath": "Ceruzka",
+ "mode_line": "Čiara",
+ "mode_connect": "Spojiť dva objekty",
+ "mode_rect": "Obdĺžnik",
+ "mode_square": "Štvorec",
+ "mode_fhrect": "Obdĺžnik voľnou rukou",
+ "mode_ellipse": "Elipsa",
+ "mode_circle": "Kružnica",
+ "mode_fhellipse": "Elipsa voľnou rukou",
+ "mode_path": "Krivka",
+ "mode_shapelib": "Knižnica Tvarov",
+ "mode_text": "Text",
+ "mode_image": "Obrázok",
+ "mode_zoom": "Priblíženie",
+ "mode_eyedropper": "Pipeta",
+ "no_embed": "POZNÁMKA: Tento obrázok nemôže byť vložený. Jeho zobrazenie bude závisieť na jeho ceste",
+ "undo": "Späť",
+ "redo": "Opakovať",
+ "tool_source": "Upraviť SVG kód",
+ "wireframe_mode": "Drôtový model",
+ "toggle_grid": "Zobraz/Skry mriežku",
+ "clone": "Klonuj element(y)",
+ "del": "Zmaž element(y)",
+ "group_elements": "Zoskupiť elementy",
+ "make_link": "Naviaž odkaz (hyper)link",
+ "set_link_url": "Nastav odkaz URL (ak prázdny, odstráni sa)",
+ "to_path": "Previesť na krivku",
+ "reorient_path": "Zmeniť orientáciu krivky",
+ "ungroup": "Zrušiť skupinu",
+ "docprops": "Vlastnosti dokumentu",
+ "imagelib": "Knižnica obrázkov",
+ "move_bottom": "Presunúť spodok",
+ "move_top": "Presunúť na vrch",
+ "node_clone": "Klonovať uzol",
+ "node_delete": "Zmazať uzol",
+ "node_link": "Prepojiť kontrolné body",
+ "add_subpath": "Pridať ďalšiu súčasť krivky",
+ "openclose_path": "Otvoriť/uzatvoriť súčasť krivky",
+ "source_save": "Uložiť",
+ "cut": "Vystrihnutie",
+ "copy": "Kópia",
+ "paste": "Vloženie",
+ "paste_in_place": "Vloženie na pôvodnom mieste",
+ "delete": "Zmazanie",
+ "group": "Group",
+ "move_front": "Vysuň navrch",
+ "move_up": "Vysuň vpred",
+ "move_down": "Zasuň na spodok",
+ "move_back": "Zasuň dozadu"
+ },
+ layers: {
+ "layer": "Vrstva",
+ "layers": "Vrstvy",
+ "del": "Odstrániť vrstvu",
+ "move_down": "Presunúť vrstvu dole",
+ "new": "Nová vrstva",
+ "rename": "Premenovať vrstvu",
+ "move_up": "Presunúť vrstvu hore",
+ "dupe": "Zduplikovať vrstvu",
+ "merge_down": "Zlúčiť s vrstvou dole",
+ "merge_all": "Zlúčiť všetko",
+ "move_elems_to": "Presunúť elementy do:",
+ "move_selected": "Presunúť vybrané elementy do inej vrstvy"
+ },
+ config: {
+ "image_props": "Vlastnosti obrázka",
+ "doc_title": "Titulok",
+ "doc_dims": "Rozmery plátna",
+ "included_images": "Vložené obrázky",
+ "image_opt_embed": "Vložiť data (lokálne súbory)",
+ "image_opt_ref": "Použiť referenciu na súbor",
+ "editor_prefs": "Vlastnosti editora",
+ "icon_size": "Veľkosť ikon",
+ "language": "Jazyk",
+ "background": "Zmeniť pozadie",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Poznámka: Pozadie nebude uložené spolu s obrázkom.",
+ "icon_large": "Veľká",
+ "icon_medium": "Stredná",
+ "icon_small": "Malá",
+ "icon_xlarge": "Extra veľká",
+ "select_predefined": "Vybrať preddefinovaný:",
+ "units_and_rulers": "Jednotky & Pravítka",
+ "show_rulers": "Ukáž pravítka",
+ "base_unit": "Základné jednotky:",
+ "grid": "Mriežka",
+ "snapping_onoff": "Priväzovanie (do mriežky) zap/vyp",
+ "snapping_stepsize": "Priväzovanie (do mriežky) veľkosť kroku:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Základné",
+ "object": "Objekty",
+ "symbol": "Symboly",
+ "arrow": "Šípky",
+ "flowchart": "Vývojové diagramy",
+ "animal": "Zvieratá",
+ "game": "Karty & Šach",
+ "dialog_balloon": "Dialogové balóny",
+ "electronics": "Elektronika",
+ "math": "Matematické",
+ "music": "Hudba",
+ "misc": "Rôzne",
+ "raphael_1": "raphaeljs.com sada 1",
+ "raphael_2": "raphaeljs.com sada 2"
+ },
+ imagelib: {
+ "select_lib": "Výber knižnice obrázkov",
+ "show_list": "Prehľad knižnice",
+ "import_single": "Import jeden",
+ "import_multi": "Import viacero",
+ "open": "Otvoriť ako nový dokument"
+ },
+ notification: {
+ "invalidAttrValGiven": "Neplatná hodnota",
+ "noContentToFitTo": "Vyberte oblasť na prispôsobenie",
+ "dupeLayerName": "Vrstva s daným názvom už existuje!",
+ "enterUniqueLayerName": "Zadajte jedinečný názov vrstvy",
+ "enterNewLayerName": "Zadajte názov vrstvy",
+ "layerHasThatName": "Vrstva už má zadaný tento názov",
+ "QmoveElemsToLayer": "Presunúť elementy do vrstvy '%s'?",
+ "QwantToClear": "Naozaj chcete vymazať kresbu?\n(História bude taktiež vymazaná!)!",
+ "QwantToOpen": "Chcete otvoriť nový súbor?\nTo však tiež vymaže Vašu UNDO knižnicu!",
+ "QerrorsRevertToSource": "Chyba pri načítaní SVG dokumentu.\nVrátiť povodný SVG dokument?",
+ "QignoreSourceChanges": "Ignorovať zmeny v SVG dokumente?",
+ "featNotSupported": "Vlastnosť nie je podporovaná",
+ "enterNewImgURL": "Zadajte nové URL obrázka",
+ "defsFailOnSave": "POZNÁMKA: Kvôli chybe v prehliadači sa tento obrázok môže zobraziť nesprávne (napr. chýbajúce prechody či elementy). Po uložení sa zobrazí správne.",
+ "loadingImage": "Nahrávam obrázok, prosím čakajte ...",
+ "saveFromBrowser": "Vyberte \"Uložiť ako ...\" vo vašom prehliadači na uloženie tohoto obrázka do súboru %s.",
+ "noteTheseIssues": "Môžu sa vyskytnúť nasledujúce problémy: ",
+ "unsavedChanges": "Sú tu neuložené zmeny.",
+ "enterNewLinkURL": "Zadajte nové URL odkazu (hyperlink)",
+ "errorLoadingSVG": "Chyba: Nedajú sa načítať SVG data",
+ "URLloadFail": "Nemožno čítať z URL",
+ "retrieving": "Načítavanie \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sl.js b/editor/locale/lang.sl.js
index 70e57664..b6c44f66 100644
--- a/editor/locale/lang.sl.js
+++ b/editor/locale/lang.sl.js
@@ -1,250 +1,250 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sl",
- dir: "ltr",
- common: {
- "ok": "V redu",
- "cancel": "Prekliči",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "dol",
- "key_up": "gor",
- "more_opts": "Več možnosti",
- "url": "URL",
- "width": "širina",
- "height": "višina"
- },
- misc: {
- "powered_by": "Izdelano z"
- },
- ui: {
- "toggle_stroke_tools": "Pokaži/skrij več orodij za oris",
- "palette_info": "Kliknite, če želite spremeniti barvo polnila, kliknite+Shift, če želite spremeniti barvo orisa",
- "zoom_level": "Povečava",
- "panel_drag": "Povlecite levo/desno za ogled stranske vrstice"
- },
- properties: {
- "id": "ID elementa",
- "fill_color": "Spremeni barvo polnila",
- "stroke_color": "Spremeni barvo orisa",
- "stroke_style": "Spremeni slog orisa",
- "stroke_width": "Spreminjanje širino orisa",
- "pos_x": "Spremeni X koordinato",
- "pos_y": "Spremeni Y koordinato",
- "linecap_butt": "Začetek črte: odsekan",
- "linecap_round": "Začetek črte: zaobljen",
- "linecap_square": "Začetek črte: kvadraten",
- "linejoin_bevel": "Ovinek črte: Odsekan",
- "linejoin_miter": "Linejoin: V kot",
- "linejoin_round": "Linejoin: Zaobljen",
- "angle": "Spremeni kot zasuka",
- "blur": "Spremeni zameglitev roba",
- "opacity": "Spremeni prosojnost",
- "circle_cx": "Spremeni CX koordinato",
- "circle_cy": "Spremeni CY koordinato",
- "circle_r": "Spremeni polmer kroga",
- "ellipse_cx": "Spremeni CX koordinato",
- "ellipse_cy": "Spremeni CY koordinato",
- "ellipse_rx": "Spremeni X polmer",
- "ellipse_ry": "Spremeni Y polmer",
- "line_x1": "Spremeni začetno X koordinato",
- "line_x2": "Spremeni končno X koordinato",
- "line_y1": "Spremeni začetno Y koordinato",
- "line_y2": "Spremeni končno Y koordinato",
- "rect_height": "Spremeni višino pravokotnika",
- "rect_width": "Spremeni širino pravokotnika",
- "corner_radius": "Spremeni Pravokotnik Corner Radius",
- "image_width": "Spremeni širino slike",
- "image_height": "Spremeni višino slike",
- "image_url": "Spremeni URL",
- "node_x": "Spremeni X koordinato oglišča",
- "node_y": "Spremeni Y koordinato oglišča",
- "seg_type": "Spremeni vrsto odseka",
- "straight_segments": "Raven odsek",
- "curve_segments": "Ukrivljen odsek",
- "text_contents": "Spremeni besedilo",
- "font_family": "Spremeni tip pisave",
- "font_size": "Spremeni velikost pisave",
- "bold": "Krepko",
- "italic": "Poševno"
- },
- tools: {
- "main_menu": "Glavni meni",
- "bkgnd_color_opac": "Spremeni barvo / prosojnost",
- "connector_no_arrow": "Brez puščice",
- "fitToContent": "Prilagodi vsebini",
- "fit_to_all": "Prilagodi vsemu",
- "fit_to_canvas": "Prilagodi sliki",
- "fit_to_layer_content": "Prilagodi sloju",
- "fit_to_sel": "Prilagodi izboru",
- "align_relative_to": "Poravnaj glede na ...",
- "relativeTo": "glede na:",
- "page": "page",
- "largest_object": "največji objekt",
- "selected_objects": "izbrani objekt",
- "smallest_object": "najmanjši objekt",
- "new_doc": "Nova slika",
- "open_doc": "Odpri sliko",
- "export_img": "Izvozi v PNG",
- "save_doc": "Shrani sliko",
- "import_doc": "Uvozi SVG",
- "align_to_page": "Poravnaj na stran",
- "align_bottom": "Poravnaj na dno",
- "align_center": "Poravnaj na sredino",
- "align_left": "Poravnaj levo",
- "align_middle": "Poravnaj na sredino",
- "align_right": "Poravnaj desno",
- "align_top": "Poravnaj na vrh",
- "mode_select": "Izberi",
- "mode_fhpath": "Svinčnik",
- "mode_line": "Crta",
- "mode_connect": "Poveži dva objekta",
- "mode_rect": "Pravokotnik",
- "mode_square": "Kvadrat",
- "mode_fhrect": "Prostoročni pravokotnik",
- "mode_ellipse": "Elipsa",
- "mode_circle": "Krog",
- "mode_fhellipse": "Prostoročna elipsa",
- "mode_path": "Pot",
- "mode_shapelib": "Knjižnica oblik",
- "mode_text": "Besedilo",
- "mode_image": "Slika",
- "mode_zoom": "Povečava",
- "mode_eyedropper": "Ugotovi barvo",
- "no_embed": "OPOMBA: Ta slika ne more biti vključena. It will depend on this path to be displayed",
- "undo": "Razveljavi",
- "redo": "Uveljavi",
- "tool_source": "Uredi vir",
- "wireframe_mode": "Wireframe način",
- "toggle_grid": "Pokaži/skrij mrežo",
- "clone": "Kloniraj element(e)",
- "del": "Izbriši element(e)",
- "group_elements": "Združi element(e)",
- "make_link": "Vstavi (hiper)povezavo",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Pretvori v pot",
- "reorient_path": "Reorient pot",
- "ungroup": "Razdruži elemente",
- "docprops": "Lastnosti dokumenta",
- "imagelib": "Knjižnica slik",
- "move_bottom": "Premakni na dno",
- "move_top": "Premakni na vrh",
- "node_clone": "Kloniraj oglišče",
- "node_delete": "Izbriši oglišče",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Shrani",
- "cut": "Izreži",
- "copy": "Kopiraj",
- "paste": "Prilepi",
- "paste_in_place": "Prilepi na mesto",
- "delete": "Izbriši",
- "group": "Združi",
- "move_front": "Postavi v ospredje",
- "move_up": "Pomakni naporej",
- "move_down": "Pomakni nazaj",
- "move_back": "Postavi v ozadje"
- },
- layers: {
- "layer": "Sloj",
- "layers": "Sloji",
- "del": "Izbriši sloj",
- "move_down": "Premakni navzdol",
- "new": "Nov sloj",
- "rename": "Preimenuj sloj",
- "move_up": "Premakni navzgor",
- "dupe": "Podvoji sloj",
- "merge_down": "Združi s spodnjimi",
- "merge_all": "Združi vse",
- "move_elems_to": "Premakni elemente v:",
- "move_selected": "Premakne elemente v drug sloj"
- },
- config: {
- "image_props": "Lastnosti slike",
- "doc_title": "Naslov",
- "doc_dims": "Dimenzije slike",
- "included_images": "Vključene slike",
- "image_opt_embed": "Vključene (local files)",
- "image_opt_ref": "Povezane (Use file reference)",
- "editor_prefs": "Lastnosti urejevalnika",
- "icon_size": "Velikost ikon",
- "language": "Jezik",
- "background": "Ozadje urejevalnika",
- "editor_img_url": "URL slike",
- "editor_bg_note": "OPOMBA: Ozdaje ne bo shranjeno s sliko.",
- "icon_large": "velike",
- "icon_medium": "srednje",
- "icon_small": "majhne",
- "icon_xlarge": "zelo velike",
- "select_predefined": "Izberi prednastavljeno:",
- "units_and_rulers": "Enote & ravnilo",
- "show_rulers": "Pokaži ravnilo",
- "base_unit": "Osnovne enote",
- "grid": "Mreža",
- "snapping_onoff": "Pripni na mrežo DA/NE",
- "snapping_stepsize": "Snapping Step-Size:"
- },
- shape_cats: {
- "basic": "Osnovno",
- "object": "Objekti",
- "symbol": "Simboli",
- "arrow": "Puščice",
- "flowchart": "Tok",
- "animal": "Živali",
- "game": "Igralne karte in šah",
- "dialog_balloon": "Pogovorni balončki",
- "electronics": "Elektronika",
- "math": "Matematika",
- "music": "Glasba",
- "misc": "Razno",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Izberi knjižnico slik",
- "show_list": "Pokaži seznam",
- "import_single": "Uvozi eno",
- "import_multi": "Uvozi več",
- "open": "Odpri kot nov dokument"
- },
- notification: {
- "invalidAttrValGiven": "Napačna vrednost!",
- "noContentToFitTo": "Ni vsebine za prilagajanje",
- "dupeLayerName": "Sloj s tem imenom že obstajal!",
- "enterUniqueLayerName": "Vnesite edinstveno ime sloja",
- "enterNewLayerName": "Vnesite ime novega sloja",
- "layerHasThatName": "Sloje že ima to ime",
- "QmoveElemsToLayer": "Premaknem izbrane elemente v sloj '%s'?",
- "QwantToClear": "Ali želite počistiti risbo?\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!",
- "QwantToOpen": "Ali želite odpreti novo datoteko?\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignoriram spremembe, narejene v SVG kodi?",
- "featNotSupported": "Ni podprto",
- "enterNewImgURL": "Vnesite nov URL slike",
- "defsFailOnSave": "OPOMBA: Zaradi napake vašega brskalnika obstaja možnost, da ta slika ni prikazan pravilno (manjkajo določeni elementi ali gradient). Vseeno bo prikaz pravilen, ko bo slika enkrat shranjena.",
- "loadingImage": "Nalagam sliko, prosimo, počakajte ...",
- "saveFromBrowser": "Izberite \"Shrani kot ...\" v brskalniku, če želite shraniti kot %s.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "Obstajajo neshranjene spremembe.",
- "enterNewLinkURL": "Vnesite novo URL povezavo",
- "errorLoadingSVG": "Napaka: Ne morem naložiti SVG podatkov",
- "URLloadFail": "Ne morem naložiti z URL",
- "retrieving": "Pridobivanje \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sl",
+ dir: "ltr",
+ common: {
+ "ok": "V redu",
+ "cancel": "Prekliči",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "dol",
+ "key_up": "gor",
+ "more_opts": "Več možnosti",
+ "url": "URL",
+ "width": "širina",
+ "height": "višina"
+ },
+ misc: {
+ "powered_by": "Izdelano z"
+ },
+ ui: {
+ "toggle_stroke_tools": "Pokaži/skrij več orodij za oris",
+ "palette_info": "Kliknite, če želite spremeniti barvo polnila, kliknite+Shift, če želite spremeniti barvo orisa",
+ "zoom_level": "Povečava",
+ "panel_drag": "Povlecite levo/desno za ogled stranske vrstice"
+ },
+ properties: {
+ "id": "ID elementa",
+ "fill_color": "Spremeni barvo polnila",
+ "stroke_color": "Spremeni barvo orisa",
+ "stroke_style": "Spremeni slog orisa",
+ "stroke_width": "Spreminjanje širino orisa",
+ "pos_x": "Spremeni X koordinato",
+ "pos_y": "Spremeni Y koordinato",
+ "linecap_butt": "Začetek črte: odsekan",
+ "linecap_round": "Začetek črte: zaobljen",
+ "linecap_square": "Začetek črte: kvadraten",
+ "linejoin_bevel": "Ovinek črte: Odsekan",
+ "linejoin_miter": "Linejoin: V kot",
+ "linejoin_round": "Linejoin: Zaobljen",
+ "angle": "Spremeni kot zasuka",
+ "blur": "Spremeni zameglitev roba",
+ "opacity": "Spremeni prosojnost",
+ "circle_cx": "Spremeni CX koordinato",
+ "circle_cy": "Spremeni CY koordinato",
+ "circle_r": "Spremeni polmer kroga",
+ "ellipse_cx": "Spremeni CX koordinato",
+ "ellipse_cy": "Spremeni CY koordinato",
+ "ellipse_rx": "Spremeni X polmer",
+ "ellipse_ry": "Spremeni Y polmer",
+ "line_x1": "Spremeni začetno X koordinato",
+ "line_x2": "Spremeni končno X koordinato",
+ "line_y1": "Spremeni začetno Y koordinato",
+ "line_y2": "Spremeni končno Y koordinato",
+ "rect_height": "Spremeni višino pravokotnika",
+ "rect_width": "Spremeni širino pravokotnika",
+ "corner_radius": "Spremeni Pravokotnik Corner Radius",
+ "image_width": "Spremeni širino slike",
+ "image_height": "Spremeni višino slike",
+ "image_url": "Spremeni URL",
+ "node_x": "Spremeni X koordinato oglišča",
+ "node_y": "Spremeni Y koordinato oglišča",
+ "seg_type": "Spremeni vrsto odseka",
+ "straight_segments": "Raven odsek",
+ "curve_segments": "Ukrivljen odsek",
+ "text_contents": "Spremeni besedilo",
+ "font_family": "Spremeni tip pisave",
+ "font_size": "Spremeni velikost pisave",
+ "bold": "Krepko",
+ "italic": "Poševno"
+ },
+ tools: {
+ "main_menu": "Glavni meni",
+ "bkgnd_color_opac": "Spremeni barvo / prosojnost",
+ "connector_no_arrow": "Brez puščice",
+ "fitToContent": "Prilagodi vsebini",
+ "fit_to_all": "Prilagodi vsemu",
+ "fit_to_canvas": "Prilagodi sliki",
+ "fit_to_layer_content": "Prilagodi sloju",
+ "fit_to_sel": "Prilagodi izboru",
+ "align_relative_to": "Poravnaj glede na ...",
+ "relativeTo": "glede na:",
+ "page": "page",
+ "largest_object": "največji objekt",
+ "selected_objects": "izbrani objekt",
+ "smallest_object": "najmanjši objekt",
+ "new_doc": "Nova slika",
+ "open_doc": "Odpri sliko",
+ "export_img": "Izvozi v PNG",
+ "save_doc": "Shrani sliko",
+ "import_doc": "Uvozi SVG",
+ "align_to_page": "Poravnaj na stran",
+ "align_bottom": "Poravnaj na dno",
+ "align_center": "Poravnaj na sredino",
+ "align_left": "Poravnaj levo",
+ "align_middle": "Poravnaj na sredino",
+ "align_right": "Poravnaj desno",
+ "align_top": "Poravnaj na vrh",
+ "mode_select": "Izberi",
+ "mode_fhpath": "Svinčnik",
+ "mode_line": "Crta",
+ "mode_connect": "Poveži dva objekta",
+ "mode_rect": "Pravokotnik",
+ "mode_square": "Kvadrat",
+ "mode_fhrect": "Prostoročni pravokotnik",
+ "mode_ellipse": "Elipsa",
+ "mode_circle": "Krog",
+ "mode_fhellipse": "Prostoročna elipsa",
+ "mode_path": "Pot",
+ "mode_shapelib": "Knjižnica oblik",
+ "mode_text": "Besedilo",
+ "mode_image": "Slika",
+ "mode_zoom": "Povečava",
+ "mode_eyedropper": "Ugotovi barvo",
+ "no_embed": "OPOMBA: Ta slika ne more biti vključena. It will depend on this path to be displayed",
+ "undo": "Razveljavi",
+ "redo": "Uveljavi",
+ "tool_source": "Uredi vir",
+ "wireframe_mode": "Wireframe način",
+ "toggle_grid": "Pokaži/skrij mrežo",
+ "clone": "Kloniraj element(e)",
+ "del": "Izbriši element(e)",
+ "group_elements": "Združi element(e)",
+ "make_link": "Vstavi (hiper)povezavo",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Pretvori v pot",
+ "reorient_path": "Reorient pot",
+ "ungroup": "Razdruži elemente",
+ "docprops": "Lastnosti dokumenta",
+ "imagelib": "Knjižnica slik",
+ "move_bottom": "Premakni na dno",
+ "move_top": "Premakni na vrh",
+ "node_clone": "Kloniraj oglišče",
+ "node_delete": "Izbriši oglišče",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Shrani",
+ "cut": "Izreži",
+ "copy": "Kopiraj",
+ "paste": "Prilepi",
+ "paste_in_place": "Prilepi na mesto",
+ "delete": "Izbriši",
+ "group": "Združi",
+ "move_front": "Postavi v ospredje",
+ "move_up": "Pomakni naporej",
+ "move_down": "Pomakni nazaj",
+ "move_back": "Postavi v ozadje"
+ },
+ layers: {
+ "layer": "Sloj",
+ "layers": "Sloji",
+ "del": "Izbriši sloj",
+ "move_down": "Premakni navzdol",
+ "new": "Nov sloj",
+ "rename": "Preimenuj sloj",
+ "move_up": "Premakni navzgor",
+ "dupe": "Podvoji sloj",
+ "merge_down": "Združi s spodnjimi",
+ "merge_all": "Združi vse",
+ "move_elems_to": "Premakni elemente v:",
+ "move_selected": "Premakne elemente v drug sloj"
+ },
+ config: {
+ "image_props": "Lastnosti slike",
+ "doc_title": "Naslov",
+ "doc_dims": "Dimenzije slike",
+ "included_images": "Vključene slike",
+ "image_opt_embed": "Vključene (local files)",
+ "image_opt_ref": "Povezane (Use file reference)",
+ "editor_prefs": "Lastnosti urejevalnika",
+ "icon_size": "Velikost ikon",
+ "language": "Jezik",
+ "background": "Ozadje urejevalnika",
+ "editor_img_url": "URL slike",
+ "editor_bg_note": "OPOMBA: Ozdaje ne bo shranjeno s sliko.",
+ "icon_large": "velike",
+ "icon_medium": "srednje",
+ "icon_small": "majhne",
+ "icon_xlarge": "zelo velike",
+ "select_predefined": "Izberi prednastavljeno:",
+ "units_and_rulers": "Enote & ravnilo",
+ "show_rulers": "Pokaži ravnilo",
+ "base_unit": "Osnovne enote",
+ "grid": "Mreža",
+ "snapping_onoff": "Pripni na mrežo DA/NE",
+ "snapping_stepsize": "Snapping Step-Size:"
+ },
+ shape_cats: {
+ "basic": "Osnovno",
+ "object": "Objekti",
+ "symbol": "Simboli",
+ "arrow": "Puščice",
+ "flowchart": "Tok",
+ "animal": "Živali",
+ "game": "Igralne karte in šah",
+ "dialog_balloon": "Pogovorni balončki",
+ "electronics": "Elektronika",
+ "math": "Matematika",
+ "music": "Glasba",
+ "misc": "Razno",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Izberi knjižnico slik",
+ "show_list": "Pokaži seznam",
+ "import_single": "Uvozi eno",
+ "import_multi": "Uvozi več",
+ "open": "Odpri kot nov dokument"
+ },
+ notification: {
+ "invalidAttrValGiven": "Napačna vrednost!",
+ "noContentToFitTo": "Ni vsebine za prilagajanje",
+ "dupeLayerName": "Sloj s tem imenom že obstajal!",
+ "enterUniqueLayerName": "Vnesite edinstveno ime sloja",
+ "enterNewLayerName": "Vnesite ime novega sloja",
+ "layerHasThatName": "Sloje že ima to ime",
+ "QmoveElemsToLayer": "Premaknem izbrane elemente v sloj '%s'?",
+ "QwantToClear": "Ali želite počistiti risbo?\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!",
+ "QwantToOpen": "Ali želite odpreti novo datoteko?\nTo bo izbrisalo tudi zgodovino korakov (ni mogoče razveljaviti)!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignoriram spremembe, narejene v SVG kodi?",
+ "featNotSupported": "Ni podprto",
+ "enterNewImgURL": "Vnesite nov URL slike",
+ "defsFailOnSave": "OPOMBA: Zaradi napake vašega brskalnika obstaja možnost, da ta slika ni prikazan pravilno (manjkajo določeni elementi ali gradient). Vseeno bo prikaz pravilen, ko bo slika enkrat shranjena.",
+ "loadingImage": "Nalagam sliko, prosimo, počakajte ...",
+ "saveFromBrowser": "Izberite \"Shrani kot ...\" v brskalniku, če želite shraniti kot %s.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "Obstajajo neshranjene spremembe.",
+ "enterNewLinkURL": "Vnesite novo URL povezavo",
+ "errorLoadingSVG": "Napaka: Ne morem naložiti SVG podatkov",
+ "URLloadFail": "Ne morem naložiti z URL",
+ "retrieving": "Pridobivanje \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sq.js b/editor/locale/lang.sq.js
index 1ebd1b4b..97da8140 100644
--- a/editor/locale/lang.sq.js
+++ b/editor/locale/lang.sq.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sq",
- dir: "ltr",
- common: {
- "ok": "Ruaj",
- "cancel": "Anulo",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klikoni për të ndryshuar mbushur me ngjyra, shift-klikoni për të ndryshuar ngjyrën pash",
- "zoom_level": "Ndryshimi zoom nivel",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Ndryshimi mbush color",
- "stroke_color": "Change color pash",
- "stroke_style": "Ndryshimi dash goditje stil",
- "stroke_width": "Ndryshimi goditje width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Kënd Ndryshimi rrotullim",
- "blur": "Change gaussian blur value",
- "opacity": "Ndryshimi zgjedhur errësirë item",
- "circle_cx": "Cx rrethi Ndryshimi i bashkërenduar",
- "circle_cy": "Ndryshimi i rrethit cy koordinuar",
- "circle_r": "Rreze rreth Ndryshimi i",
- "ellipse_cx": "Ndryshimi elips e cx koordinuar",
- "ellipse_cy": "Elips cy Ndryshimi i bashkërenduar",
- "ellipse_rx": "Rreze x elips Ndryshimi i",
- "ellipse_ry": "Radiusi y elips ndërroj",
- "line_x1": "Shkarko Ndryshimi që fillon x koordinuar",
- "line_x2": "Linjë Ndryshimi i fund x koordinuar",
- "line_y1": "Shkarko Ndryshimi që fillon y koordinuar",
- "line_y2": "Shkarko Ndryshimi i dhënë fund y koordinuar",
- "rect_height": "Height Ndryshimi drejtkëndësh",
- "rect_width": "Width Ndryshimi drejtkëndësh",
- "corner_radius": "Ndryshimi Rectangle Corner Radius",
- "image_width": "Ndryshimi image width",
- "image_height": "Height të ndryshuar imazhin",
- "image_url": "Ndrysho URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Text contents Ndryshimi",
- "font_family": "Ndryshimi Font Family",
- "font_size": "Ndryshimi Font Size",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change color background / patejdukshmëri",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit për të gjithë përmbajtjen",
- "fit_to_canvas": "Fit në kanavacë",
- "fit_to_layer_content": "Shtresë Fit to content",
- "fit_to_sel": "Fit to Selection",
- "align_relative_to": "Vendose në lidhje me ...",
- "relativeTo": "lidhje me:",
- "page": "faqe",
- "largest_object": "madh objekt",
- "selected_objects": "objektet e zgjedhur",
- "smallest_object": "objektit më të vogël",
- "new_doc": "New Image",
- "open_doc": "Image Hapur",
- "export_img": "Export",
- "save_doc": "Image Ruaj",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Align Mesme",
- "align_right": "Align Right",
- "align_top": "Align Top",
- "mode_select": "Zgjidhni Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Lëndë Hand Rectangle",
- "mode_ellipse": "Elips",
- "mode_circle": "Rrethi",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Burimi Edit",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Elementet e Grupit",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Elemente Ungroup",
- "docprops": "Dokumenti Prona",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Ruaj",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Down Layer",
- "new": "Re Shtresa",
- "rename": "Rename Layer",
- "move_up": "Move Up Layer",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Zgjidhni paracaktuara:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sq",
+ dir: "ltr",
+ common: {
+ "ok": "Ruaj",
+ "cancel": "Anulo",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klikoni për të ndryshuar mbushur me ngjyra, shift-klikoni për të ndryshuar ngjyrën pash",
+ "zoom_level": "Ndryshimi zoom nivel",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Ndryshimi mbush color",
+ "stroke_color": "Change color pash",
+ "stroke_style": "Ndryshimi dash goditje stil",
+ "stroke_width": "Ndryshimi goditje width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Kënd Ndryshimi rrotullim",
+ "blur": "Change gaussian blur value",
+ "opacity": "Ndryshimi zgjedhur errësirë item",
+ "circle_cx": "Cx rrethi Ndryshimi i bashkërenduar",
+ "circle_cy": "Ndryshimi i rrethit cy koordinuar",
+ "circle_r": "Rreze rreth Ndryshimi i",
+ "ellipse_cx": "Ndryshimi elips e cx koordinuar",
+ "ellipse_cy": "Elips cy Ndryshimi i bashkërenduar",
+ "ellipse_rx": "Rreze x elips Ndryshimi i",
+ "ellipse_ry": "Radiusi y elips ndërroj",
+ "line_x1": "Shkarko Ndryshimi që fillon x koordinuar",
+ "line_x2": "Linjë Ndryshimi i fund x koordinuar",
+ "line_y1": "Shkarko Ndryshimi që fillon y koordinuar",
+ "line_y2": "Shkarko Ndryshimi i dhënë fund y koordinuar",
+ "rect_height": "Height Ndryshimi drejtkëndësh",
+ "rect_width": "Width Ndryshimi drejtkëndësh",
+ "corner_radius": "Ndryshimi Rectangle Corner Radius",
+ "image_width": "Ndryshimi image width",
+ "image_height": "Height të ndryshuar imazhin",
+ "image_url": "Ndrysho URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Text contents Ndryshimi",
+ "font_family": "Ndryshimi Font Family",
+ "font_size": "Ndryshimi Font Size",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change color background / patejdukshmëri",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit për të gjithë përmbajtjen",
+ "fit_to_canvas": "Fit në kanavacë",
+ "fit_to_layer_content": "Shtresë Fit to content",
+ "fit_to_sel": "Fit to Selection",
+ "align_relative_to": "Vendose në lidhje me ...",
+ "relativeTo": "lidhje me:",
+ "page": "faqe",
+ "largest_object": "madh objekt",
+ "selected_objects": "objektet e zgjedhur",
+ "smallest_object": "objektit më të vogël",
+ "new_doc": "New Image",
+ "open_doc": "Image Hapur",
+ "export_img": "Export",
+ "save_doc": "Image Ruaj",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Align Mesme",
+ "align_right": "Align Right",
+ "align_top": "Align Top",
+ "mode_select": "Zgjidhni Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Lëndë Hand Rectangle",
+ "mode_ellipse": "Elips",
+ "mode_circle": "Rrethi",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Burimi Edit",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Elementet e Grupit",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Elemente Ungroup",
+ "docprops": "Dokumenti Prona",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Ruaj",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Down Layer",
+ "new": "Re Shtresa",
+ "rename": "Rename Layer",
+ "move_up": "Move Up Layer",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Zgjidhni paracaktuara:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sr.js b/editor/locale/lang.sr.js
index 0e9ad21c..a283b57f 100644
--- a/editor/locale/lang.sr.js
+++ b/editor/locale/lang.sr.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sr",
- dir: "ltr",
- common: {
- "ok": "Сачувати",
- "cancel": "Откажи",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Кликните да бисте променили боју попуне, Схифт-кликните да промените боју удар",
- "zoom_level": "Промените ниво зумирања",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Промена боје попуне",
- "stroke_color": "Промена боје удар",
- "stroke_style": "Промена ход Дасх стил",
- "stroke_width": "Промена удара ширина",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Промени ротације Угао",
- "blur": "Change gaussian blur value",
- "opacity": "Промена изабране ставке непрозирност",
- "circle_cx": "Промена круг'с ЦКС координатни",
- "circle_cy": "Промена круг'с ср координатни",
- "circle_r": "Промена круга је полупречник",
- "ellipse_cx": "Промена елипса ЦКС'с координатни",
- "ellipse_cy": "Промена елипса'с ср координатни",
- "ellipse_rx": "Промена елипса'с Кс радијуса",
- "ellipse_ry": "Промена елипса је радијус Ы",
- "line_x1": "Промена линија Стартни кс координата",
- "line_x2": "Промена линија је завршетак кс координата",
- "line_y1": "Промена линија у координатни почетак Ы",
- "line_y2": "Промена линија је Ы координата се завршава",
- "rect_height": "Промени правоугаоник висина",
- "rect_width": "Промени правоугаоник ширине",
- "corner_radius": "Промена правоугаоник Кутак радијуса",
- "image_width": "Промени слику ширине",
- "image_height": "Промени слику висине",
- "image_url": "Промените УРЛ адресу",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Промена садржаја текстуалне",
- "font_family": "Цханге фонт породицу",
- "font_size": "Цханге фонт сизе",
- "bold": "Подебљан текст",
- "italic": "Италиц текст"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Промена боје позадине / непрозирност",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Стане на садржај",
- "fit_to_all": "Уклопи у сав садржај",
- "fit_to_canvas": "Стане на платну",
- "fit_to_layer_content": "Уклопи у слоју садржај",
- "fit_to_sel": "Уклопи у избор",
- "align_relative_to": "Алигн у односу на ...",
- "relativeTo": "у односу на:",
- "page": "страна",
- "largest_object": "Највећи објекат",
- "selected_objects": "изабраних објеката",
- "smallest_object": "Најмањи објекат",
- "new_doc": "Нова слика",
- "open_doc": "Отвори слике",
- "export_img": "Export",
- "save_doc": "Сачувај слика",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Поравнај доле",
- "align_center": "Поравнај по центру",
- "align_left": "Поравнај лево",
- "align_middle": "Алигн Средњи",
- "align_right": "Поравнај десно",
- "align_top": "Поравнајте врх",
- "mode_select": "Изаберите алатку",
- "mode_fhpath": "Алатка оловка",
- "mode_line": "Линија Алат",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Фрее-Ручни правоугаоник",
- "mode_ellipse": "Елипса",
- "mode_circle": "Круг",
- "mode_fhellipse": "Фрее-Ручни Елипса",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Текст Алат",
- "mode_image": "Алатка за слике",
- "mode_zoom": "Алатка за зумирање",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Поништи",
- "redo": "Редо",
- "tool_source": "Уреди Извор",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Група Елементи",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Разгрупирање Елементи",
- "docprops": "Особине документа",
- "imagelib": "Image Library",
- "move_bottom": "Премести на доле",
- "move_top": "Премести на врх",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Сачувати",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Избриши слој",
- "move_down": "Помери слој доле",
- "new": "Нови слој",
- "rename": "Преименуј слој",
- "move_up": "Помери слој Горе",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Изаберите унапред дефинисани:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sr",
+ dir: "ltr",
+ common: {
+ "ok": "Сачувати",
+ "cancel": "Откажи",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Кликните да бисте променили боју попуне, Схифт-кликните да промените боју удар",
+ "zoom_level": "Промените ниво зумирања",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Промена боје попуне",
+ "stroke_color": "Промена боје удар",
+ "stroke_style": "Промена ход Дасх стил",
+ "stroke_width": "Промена удара ширина",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Промени ротације Угао",
+ "blur": "Change gaussian blur value",
+ "opacity": "Промена изабране ставке непрозирност",
+ "circle_cx": "Промена круг'с ЦКС координатни",
+ "circle_cy": "Промена круг'с ср координатни",
+ "circle_r": "Промена круга је полупречник",
+ "ellipse_cx": "Промена елипса ЦКС'с координатни",
+ "ellipse_cy": "Промена елипса'с ср координатни",
+ "ellipse_rx": "Промена елипса'с Кс радијуса",
+ "ellipse_ry": "Промена елипса је радијус Ы",
+ "line_x1": "Промена линија Стартни кс координата",
+ "line_x2": "Промена линија је завршетак кс координата",
+ "line_y1": "Промена линија у координатни почетак Ы",
+ "line_y2": "Промена линија је Ы координата се завршава",
+ "rect_height": "Промени правоугаоник висина",
+ "rect_width": "Промени правоугаоник ширине",
+ "corner_radius": "Промена правоугаоник Кутак радијуса",
+ "image_width": "Промени слику ширине",
+ "image_height": "Промени слику висине",
+ "image_url": "Промените УРЛ адресу",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Промена садржаја текстуалне",
+ "font_family": "Цханге фонт породицу",
+ "font_size": "Цханге фонт сизе",
+ "bold": "Подебљан текст",
+ "italic": "Италиц текст"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Промена боје позадине / непрозирност",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Стане на садржај",
+ "fit_to_all": "Уклопи у сав садржај",
+ "fit_to_canvas": "Стане на платну",
+ "fit_to_layer_content": "Уклопи у слоју садржај",
+ "fit_to_sel": "Уклопи у избор",
+ "align_relative_to": "Алигн у односу на ...",
+ "relativeTo": "у односу на:",
+ "page": "страна",
+ "largest_object": "Највећи објекат",
+ "selected_objects": "изабраних објеката",
+ "smallest_object": "Најмањи објекат",
+ "new_doc": "Нова слика",
+ "open_doc": "Отвори слике",
+ "export_img": "Export",
+ "save_doc": "Сачувај слика",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Поравнај доле",
+ "align_center": "Поравнај по центру",
+ "align_left": "Поравнај лево",
+ "align_middle": "Алигн Средњи",
+ "align_right": "Поравнај десно",
+ "align_top": "Поравнајте врх",
+ "mode_select": "Изаберите алатку",
+ "mode_fhpath": "Алатка оловка",
+ "mode_line": "Линија Алат",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Фрее-Ручни правоугаоник",
+ "mode_ellipse": "Елипса",
+ "mode_circle": "Круг",
+ "mode_fhellipse": "Фрее-Ручни Елипса",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Текст Алат",
+ "mode_image": "Алатка за слике",
+ "mode_zoom": "Алатка за зумирање",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Поништи",
+ "redo": "Редо",
+ "tool_source": "Уреди Извор",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Група Елементи",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Разгрупирање Елементи",
+ "docprops": "Особине документа",
+ "imagelib": "Image Library",
+ "move_bottom": "Премести на доле",
+ "move_top": "Премести на врх",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Сачувати",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Избриши слој",
+ "move_down": "Помери слој доле",
+ "new": "Нови слој",
+ "rename": "Преименуј слој",
+ "move_up": "Помери слој Горе",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Изаберите унапред дефинисани:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sv.js b/editor/locale/lang.sv.js
index d3eb7745..c9289e15 100644
--- a/editor/locale/lang.sv.js
+++ b/editor/locale/lang.sv.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sv",
- dir: "ltr",
- common: {
- "ok": "Spara",
- "cancel": "Avbryt",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Klicka för att ändra fyllningsfärg, shift-klicka för att ändra färgar",
- "zoom_level": "Ändra zoomnivå",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Ändra fyllningsfärg",
- "stroke_color": "Ändra färgar",
- "stroke_style": "Ändra stroke Dash stil",
- "stroke_width": "Ändra stroke bredd",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Ändra rotationsvinkel",
- "blur": "Change gaussian blur value",
- "opacity": "Ändra markerat objekt opacitet",
- "circle_cx": "Ändra cirkeln cx samordna",
- "circle_cy": "Ändra cirkeln samordna cy",
- "circle_r": "Ändra cirkelns radie",
- "ellipse_cx": "Ändra ellips's cx samordna",
- "ellipse_cy": "Ändra ellips's samordna cy",
- "ellipse_rx": "Ändra ellips's x radie",
- "ellipse_ry": "Ändra ellips's y radie",
- "line_x1": "Ändra Lines startar x samordna",
- "line_x2": "Ändra Lines slutar x samordna",
- "line_y1": "Ändra Lines startar Y-koordinat",
- "line_y2": "Ändra Lines slutar Y-koordinat",
- "rect_height": "Ändra rektangel höjd",
- "rect_width": "Ändra rektangel bredd",
- "corner_radius": "Ändra rektangel hörnradie",
- "image_width": "Ändra bild bredd",
- "image_height": "Ändra bildhöjd",
- "image_url": "Ändra URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Ändra textinnehållet",
- "font_family": "Ändra Typsnitt",
- "font_size": "Ändra textstorlek",
- "bold": "Fet text",
- "italic": "Kursiv text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Ändra bakgrundsfärg / opacitet",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Passar till allt innehåll",
- "fit_to_canvas": "Anpassa till duk",
- "fit_to_layer_content": "Anpassa till lager innehåll",
- "fit_to_sel": "Anpassa till val",
- "align_relative_to": "Justera förhållande till ...",
- "relativeTo": "jämfört:",
- "page": "sida",
- "largest_object": "största objekt",
- "selected_objects": "valda objekt",
- "smallest_object": "minsta objektet",
- "new_doc": "New Image",
- "open_doc": "Öppna bild",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Centrera",
- "align_left": "Vänsterjustera",
- "align_middle": "Justera Middle",
- "align_right": "Högerjustera",
- "align_top": "Justera Top",
- "mode_select": "Markeringsverktyget",
- "mode_fhpath": "Pennverktyget",
- "mode_line": "Linjeverktyg",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Fri hand rektangel",
- "mode_ellipse": "Ellips",
- "mode_circle": "Circle",
- "mode_fhellipse": "Fri hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Textverktyg",
- "mode_image": "Bildverktyg",
- "mode_zoom": "Zoomverktyget",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Ångra",
- "redo": "Redo",
- "tool_source": "Redigera källa",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Dela Elements",
- "docprops": "Dokumentegenskaper",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Flytta till början",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Spara",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Radera Layer",
- "move_down": "Flytta Layer Down",
- "new": "New Layer",
- "rename": "Byt namn på Layer",
- "move_up": "Flytta Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Välj fördefinierad:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sv",
+ dir: "ltr",
+ common: {
+ "ok": "Spara",
+ "cancel": "Avbryt",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Klicka för att ändra fyllningsfärg, shift-klicka för att ändra färgar",
+ "zoom_level": "Ändra zoomnivå",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Ändra fyllningsfärg",
+ "stroke_color": "Ändra färgar",
+ "stroke_style": "Ändra stroke Dash stil",
+ "stroke_width": "Ändra stroke bredd",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Ändra rotationsvinkel",
+ "blur": "Change gaussian blur value",
+ "opacity": "Ändra markerat objekt opacitet",
+ "circle_cx": "Ändra cirkeln cx samordna",
+ "circle_cy": "Ändra cirkeln samordna cy",
+ "circle_r": "Ändra cirkelns radie",
+ "ellipse_cx": "Ändra ellips's cx samordna",
+ "ellipse_cy": "Ändra ellips's samordna cy",
+ "ellipse_rx": "Ändra ellips's x radie",
+ "ellipse_ry": "Ändra ellips's y radie",
+ "line_x1": "Ändra Lines startar x samordna",
+ "line_x2": "Ändra Lines slutar x samordna",
+ "line_y1": "Ändra Lines startar Y-koordinat",
+ "line_y2": "Ändra Lines slutar Y-koordinat",
+ "rect_height": "Ändra rektangel höjd",
+ "rect_width": "Ändra rektangel bredd",
+ "corner_radius": "Ändra rektangel hörnradie",
+ "image_width": "Ändra bild bredd",
+ "image_height": "Ändra bildhöjd",
+ "image_url": "Ändra URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Ändra textinnehållet",
+ "font_family": "Ändra Typsnitt",
+ "font_size": "Ändra textstorlek",
+ "bold": "Fet text",
+ "italic": "Kursiv text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Ändra bakgrundsfärg / opacitet",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Passar till allt innehåll",
+ "fit_to_canvas": "Anpassa till duk",
+ "fit_to_layer_content": "Anpassa till lager innehåll",
+ "fit_to_sel": "Anpassa till val",
+ "align_relative_to": "Justera förhållande till ...",
+ "relativeTo": "jämfört:",
+ "page": "sida",
+ "largest_object": "största objekt",
+ "selected_objects": "valda objekt",
+ "smallest_object": "minsta objektet",
+ "new_doc": "New Image",
+ "open_doc": "Öppna bild",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Centrera",
+ "align_left": "Vänsterjustera",
+ "align_middle": "Justera Middle",
+ "align_right": "Högerjustera",
+ "align_top": "Justera Top",
+ "mode_select": "Markeringsverktyget",
+ "mode_fhpath": "Pennverktyget",
+ "mode_line": "Linjeverktyg",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Fri hand rektangel",
+ "mode_ellipse": "Ellips",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Fri hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Textverktyg",
+ "mode_image": "Bildverktyg",
+ "mode_zoom": "Zoomverktyget",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Ångra",
+ "redo": "Redo",
+ "tool_source": "Redigera källa",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Dela Elements",
+ "docprops": "Dokumentegenskaper",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Flytta till början",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Spara",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Radera Layer",
+ "move_down": "Flytta Layer Down",
+ "new": "New Layer",
+ "rename": "Byt namn på Layer",
+ "move_up": "Flytta Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Välj fördefinierad:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.sw.js b/editor/locale/lang.sw.js
index 89c7f86a..e928f9fd 100644
--- a/editor/locale/lang.sw.js
+++ b/editor/locale/lang.sw.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "sw",
- dir: "ltr",
- common: {
- "ok": "Okoa",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click kubadili kujaza color, skiftarbete-click kubadili kiharusi color",
- "zoom_level": "Change zoom ngazi",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change kujaza Michezo",
- "stroke_color": "Change kiharusi Michezo",
- "stroke_style": "Change kiharusi dash style",
- "stroke_width": "Change kiharusi width",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change mzunguko vinkel",
- "blur": "Change gaussian blur value",
- "opacity": "Change selected opacity punkt",
- "circle_cx": "Change mduara's CX kuratibu",
- "circle_cy": "Change mduara's cy kuratibu",
- "circle_r": "Change mduara's Radius",
- "ellipse_cx": "Change ellipse s CX kuratibu",
- "ellipse_cy": "Change ellipse s cy kuratibu",
- "ellipse_rx": "Change ellipse s x Radius",
- "ellipse_ry": "Change ellipse's y Radius",
- "line_x1": "Change Mpya's mapya x kuratibu",
- "line_x2": "Change Mpya's kuishia x kuratibu",
- "line_y1": "Change Mpya's mapya y kuratibu",
- "line_y2": "Change Mpya's kuishia y kuratibu",
- "rect_height": "Change Mstatili height",
- "rect_width": "Change Mstatili width",
- "corner_radius": "Change Mstatili Corner Radius",
- "image_width": "Change image width",
- "image_height": "Change image urefu",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Change Nakala contents",
- "font_family": "Change font Family",
- "font_size": "Change font Size",
- "bold": "Bold Nakala",
- "italic": "Italiki Nakala"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color / opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Waliopo Content",
- "fit_to_all": "Waliopo all content",
- "fit_to_canvas": "Wanaofaa Canvas",
- "fit_to_layer_content": "Waliopo safu content",
- "fit_to_sel": "Waliopo uteuzi",
- "align_relative_to": "Align jamaa na ...",
- "relativeTo": "relativa att:",
- "page": "Page",
- "largest_object": "ukubwa object",
- "selected_objects": "waliochaguliwa vitu",
- "smallest_object": "minsta object",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Kati align",
- "align_right": "Align Right",
- "align_top": "Align Juu",
- "mode_select": "Select Tool",
- "mode_fhpath": "Penseli Tool",
- "mode_line": "Mpya Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Nakala Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Tengua",
- "redo": "Redo",
- "tool_source": "Edit Lugha",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Kikundi Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Kuhama Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Save",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Layer Down",
- "new": "Mpya Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "sw",
+ dir: "ltr",
+ common: {
+ "ok": "Okoa",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click kubadili kujaza color, skiftarbete-click kubadili kiharusi color",
+ "zoom_level": "Change zoom ngazi",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change kujaza Michezo",
+ "stroke_color": "Change kiharusi Michezo",
+ "stroke_style": "Change kiharusi dash style",
+ "stroke_width": "Change kiharusi width",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change mzunguko vinkel",
+ "blur": "Change gaussian blur value",
+ "opacity": "Change selected opacity punkt",
+ "circle_cx": "Change mduara's CX kuratibu",
+ "circle_cy": "Change mduara's cy kuratibu",
+ "circle_r": "Change mduara's Radius",
+ "ellipse_cx": "Change ellipse s CX kuratibu",
+ "ellipse_cy": "Change ellipse s cy kuratibu",
+ "ellipse_rx": "Change ellipse s x Radius",
+ "ellipse_ry": "Change ellipse's y Radius",
+ "line_x1": "Change Mpya's mapya x kuratibu",
+ "line_x2": "Change Mpya's kuishia x kuratibu",
+ "line_y1": "Change Mpya's mapya y kuratibu",
+ "line_y2": "Change Mpya's kuishia y kuratibu",
+ "rect_height": "Change Mstatili height",
+ "rect_width": "Change Mstatili width",
+ "corner_radius": "Change Mstatili Corner Radius",
+ "image_width": "Change image width",
+ "image_height": "Change image urefu",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Change Nakala contents",
+ "font_family": "Change font Family",
+ "font_size": "Change font Size",
+ "bold": "Bold Nakala",
+ "italic": "Italiki Nakala"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color / opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Waliopo Content",
+ "fit_to_all": "Waliopo all content",
+ "fit_to_canvas": "Wanaofaa Canvas",
+ "fit_to_layer_content": "Waliopo safu content",
+ "fit_to_sel": "Waliopo uteuzi",
+ "align_relative_to": "Align jamaa na ...",
+ "relativeTo": "relativa att:",
+ "page": "Page",
+ "largest_object": "ukubwa object",
+ "selected_objects": "waliochaguliwa vitu",
+ "smallest_object": "minsta object",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Kati align",
+ "align_right": "Align Right",
+ "align_top": "Align Juu",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Penseli Tool",
+ "mode_line": "Mpya Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Nakala Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Tengua",
+ "redo": "Redo",
+ "tool_source": "Edit Lugha",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Kikundi Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Kuhama Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Save",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Layer Down",
+ "new": "Mpya Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.test.js b/editor/locale/lang.test.js
index 2ba1673b..4c775659 100644
--- a/editor/locale/lang.test.js
+++ b/editor/locale/lang.test.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "test",
- dir: "ltr",
- common: {
- "ok": "OK",
- "cancel": "Cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Click to change fill color, shift-click to change stroke color",
- "zoom_level": "Change zoom level",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Change fill color",
- "stroke_color": "Change stroke color",
- "stroke_style": "Change stroke dash style",
- "stroke_width": "Change stroke width by 1, shift-click to change by 0.1",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Change rotation angle",
- "blur": "Change gaussian blur value",
- "opacity": "Change selected item opacity",
- "circle_cx": "Change circle's cx coordinate",
- "circle_cy": "Change circle's cy coordinate",
- "circle_r": "Change circle's radius",
- "ellipse_cx": "Change ellipse's cx coordinate",
- "ellipse_cy": "Change ellipse's cy coordinate",
- "ellipse_rx": "Change ellipse's x radius",
- "ellipse_ry": "Change ellipse's y radius",
- "line_x1": "Change line's starting x coordinate",
- "line_x2": "Change line's ending x coordinate",
- "line_y1": "Change line's starting y coordinate",
- "line_y2": "Change line's ending y coordinate",
- "rect_height": "Change rectangle height",
- "rect_width": "Change rectangle width",
- "corner_radius": "Change Rectangle Corner Radius",
- "image_width": "Change image width",
- "image_height": "Change image height",
- "image_url": "Change URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Change text contents",
- "font_family": "Change Font Family",
- "font_size": "Change Font Size",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Change background color/opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit to all content",
- "fit_to_canvas": "Fit to canvas",
- "fit_to_layer_content": "Fit to layer content",
- "fit_to_sel": "Fit to selection",
- "align_relative_to": "Align relative to ...",
- "relativeTo": "relative to:",
- "page": "page",
- "largest_object": "largest object",
- "selected_objects": "selected objects",
- "smallest_object": "smallest object",
- "new_doc": "New Image",
- "open_doc": "Open SVG",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Align Center",
- "align_left": "Align Left",
- "align_middle": "Align Middle",
- "align_right": "Align Right",
- "align_top": "Align Top",
- "mode_select": "Select Tool",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-Hand Rectangle",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Free-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Undo",
- "redo": "Redo",
- "tool_source": "Edit Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Move to Bottom",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Apply Changes",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Move Layer Up",
- "move_down": "Move Layer Down",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Rename Layer",
- "move_up": "Move Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Select predefined:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer \"%s\"?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "test",
+ dir: "ltr",
+ common: {
+ "ok": "OK",
+ "cancel": "Cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Click to change fill color, shift-click to change stroke color",
+ "zoom_level": "Change zoom level",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Change fill color",
+ "stroke_color": "Change stroke color",
+ "stroke_style": "Change stroke dash style",
+ "stroke_width": "Change stroke width by 1, shift-click to change by 0.1",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Change rotation angle",
+ "blur": "Change gaussian blur value",
+ "opacity": "Change selected item opacity",
+ "circle_cx": "Change circle's cx coordinate",
+ "circle_cy": "Change circle's cy coordinate",
+ "circle_r": "Change circle's radius",
+ "ellipse_cx": "Change ellipse's cx coordinate",
+ "ellipse_cy": "Change ellipse's cy coordinate",
+ "ellipse_rx": "Change ellipse's x radius",
+ "ellipse_ry": "Change ellipse's y radius",
+ "line_x1": "Change line's starting x coordinate",
+ "line_x2": "Change line's ending x coordinate",
+ "line_y1": "Change line's starting y coordinate",
+ "line_y2": "Change line's ending y coordinate",
+ "rect_height": "Change rectangle height",
+ "rect_width": "Change rectangle width",
+ "corner_radius": "Change Rectangle Corner Radius",
+ "image_width": "Change image width",
+ "image_height": "Change image height",
+ "image_url": "Change URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Change text contents",
+ "font_family": "Change Font Family",
+ "font_size": "Change Font Size",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Change background color/opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit to all content",
+ "fit_to_canvas": "Fit to canvas",
+ "fit_to_layer_content": "Fit to layer content",
+ "fit_to_sel": "Fit to selection",
+ "align_relative_to": "Align relative to ...",
+ "relativeTo": "relative to:",
+ "page": "page",
+ "largest_object": "largest object",
+ "selected_objects": "selected objects",
+ "smallest_object": "smallest object",
+ "new_doc": "New Image",
+ "open_doc": "Open SVG",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Align Center",
+ "align_left": "Align Left",
+ "align_middle": "Align Middle",
+ "align_right": "Align Right",
+ "align_top": "Align Top",
+ "mode_select": "Select Tool",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-Hand Rectangle",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Free-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Undo",
+ "redo": "Redo",
+ "tool_source": "Edit Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Move to Bottom",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Apply Changes",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Move Layer Up",
+ "move_down": "Move Layer Down",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Rename Layer",
+ "move_up": "Move Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Select predefined:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer \"%s\"?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.th.js b/editor/locale/lang.th.js
index 1d44ac16..60fb5886 100644
--- a/editor/locale/lang.th.js
+++ b/editor/locale/lang.th.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "th",
- dir: "ltr",
- common: {
- "ok": "บันทึก",
- "cancel": "ยกเลิก",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "คลิกเพื่อเปลี่ยนใส่สีกะคลิกเปลี่ยนสีจังหวะ",
- "zoom_level": "เปลี่ยนระดับการซูม",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "เปลี่ยนใส่สี",
- "stroke_color": "สีจังหวะเปลี่ยน",
- "stroke_style": "รีบเปลี่ยนสไตล์จังหวะ",
- "stroke_width": "ความกว้างจังหวะเปลี่ยน",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "มุมหมุนเปลี่ยน",
- "blur": "Change gaussian blur value",
- "opacity": "เปลี่ยนความทึบเลือกรายการ",
- "circle_cx": "Cx วงกลมเปลี่ยนของพิกัด",
- "circle_cy": "วงกลมเปลี่ยนเป็น cy ประสานงาน",
- "circle_r": "รัศมีวงกลมเปลี่ยนเป็น",
- "ellipse_cx": "เปลี่ยน ellipse ของ cx ประสานงาน",
- "ellipse_cy": "Ellipse เปลี่ยนของ cy ประสานงาน",
- "ellipse_rx": "Ellipse เปลี่ยนของรัศมี x",
- "ellipse_ry": "Ellipse เปลี่ยนของรัศมี y",
- "line_x1": "สายเปลี่ยนเป็นเริ่มต้น x พิกัด",
- "line_x2": "สายเปลี่ยนเป็นสิ้นสุด x พิกัด",
- "line_y1": "สายเปลี่ยนเป็นเริ่มต้น y พิกัด",
- "line_y2": "สายเปลี่ยนเป็นสิ้นสุด y พิกัด",
- "rect_height": "ความสูงสี่เหลี่ยมผืนผ้าเปลี่ยน",
- "rect_width": "ความกว้างสี่เหลี่ยมผืนผ้าเปลี่ยน",
- "corner_radius": "รัศมีเปลี่ยนสี่เหลี่ยมผืนผ้า Corner",
- "image_width": "ความกว้างเปลี่ยนรูปภาพ",
- "image_height": "ความสูงเปลี่ยนรูปภาพ",
- "image_url": "URL เปลี่ยน",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "เปลี่ยนเนื้อหาข้อความ",
- "font_family": "ครอบครัว Change Font",
- "font_size": "เปลี่ยนขนาดตัวอักษร",
- "bold": "ข้อความตัวหนา",
- "italic": "ข้อความตัวเอียง"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "สีพื้นหลังเปลี่ยน / ความทึบ",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "พอดีกับเนื้อหาทั้งหมด",
- "fit_to_canvas": "เหมาะสมในการผ้าใบ",
- "fit_to_layer_content": "พอดีเนื้อหาชั้นที่",
- "fit_to_sel": "เหมาะสมในการเลือก",
- "align_relative_to": "จัดชิดเทียบกับ ...",
- "relativeTo": "เทียบกับ:",
- "page": "หน้า",
- "largest_object": "ที่ใหญ่ที่สุดในวัตถุ",
- "selected_objects": "วัตถุเลือกตั้ง",
- "smallest_object": "วัตถุที่เล็กที่สุด",
- "new_doc": "รูปภาพใหม่",
- "open_doc": "ภาพเปิด",
- "export_img": "Export",
- "save_doc": "บันทึกรูปภาพ",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "ด้านล่างชิด",
- "align_center": "จัดแนวกึ่งกลาง",
- "align_left": "จัดชิดซ้าย",
- "align_middle": "กลางชิด",
- "align_right": "จัดชิดขวา",
- "align_top": "ด้านบนชิด",
- "mode_select": "เครื่องมือเลือก",
- "mode_fhpath": "เครื่องมือดินสอ",
- "mode_line": "เครื่องมือ Line",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "สี่เหลี่ยมผืนผ้า Free-Hand",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Ellipse Free-Hand",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "เครื่องมือ Text",
- "mode_image": "เครื่องมือ Image",
- "mode_zoom": "เครื่องมือซูม",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "เลิก",
- "redo": "ทำซ้ำ",
- "tool_source": "แหล่งที่มาแก้ไข",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "องค์ประกอบของกลุ่ม",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "องค์ประกอบ Ungroup",
- "docprops": "คุณสมบัติของเอกสาร",
- "imagelib": "Image Library",
- "move_bottom": "ย้ายไปด้านล่าง",
- "move_top": "ย้ายไปด้านบน",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "บันทึก",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "ย้าย Layer ลง",
- "new": "Layer ใหม่",
- "rename": "Layer เปลี่ยนชื่อ",
- "move_up": "ย้าย Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "เลือกที่กำหนดไว้ล่วงหน้า:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "th",
+ dir: "ltr",
+ common: {
+ "ok": "บันทึก",
+ "cancel": "ยกเลิก",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "คลิกเพื่อเปลี่ยนใส่สีกะคลิกเปลี่ยนสีจังหวะ",
+ "zoom_level": "เปลี่ยนระดับการซูม",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "เปลี่ยนใส่สี",
+ "stroke_color": "สีจังหวะเปลี่ยน",
+ "stroke_style": "รีบเปลี่ยนสไตล์จังหวะ",
+ "stroke_width": "ความกว้างจังหวะเปลี่ยน",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "มุมหมุนเปลี่ยน",
+ "blur": "Change gaussian blur value",
+ "opacity": "เปลี่ยนความทึบเลือกรายการ",
+ "circle_cx": "Cx วงกลมเปลี่ยนของพิกัด",
+ "circle_cy": "วงกลมเปลี่ยนเป็น cy ประสานงาน",
+ "circle_r": "รัศมีวงกลมเปลี่ยนเป็น",
+ "ellipse_cx": "เปลี่ยน ellipse ของ cx ประสานงาน",
+ "ellipse_cy": "Ellipse เปลี่ยนของ cy ประสานงาน",
+ "ellipse_rx": "Ellipse เปลี่ยนของรัศมี x",
+ "ellipse_ry": "Ellipse เปลี่ยนของรัศมี y",
+ "line_x1": "สายเปลี่ยนเป็นเริ่มต้น x พิกัด",
+ "line_x2": "สายเปลี่ยนเป็นสิ้นสุด x พิกัด",
+ "line_y1": "สายเปลี่ยนเป็นเริ่มต้น y พิกัด",
+ "line_y2": "สายเปลี่ยนเป็นสิ้นสุด y พิกัด",
+ "rect_height": "ความสูงสี่เหลี่ยมผืนผ้าเปลี่ยน",
+ "rect_width": "ความกว้างสี่เหลี่ยมผืนผ้าเปลี่ยน",
+ "corner_radius": "รัศมีเปลี่ยนสี่เหลี่ยมผืนผ้า Corner",
+ "image_width": "ความกว้างเปลี่ยนรูปภาพ",
+ "image_height": "ความสูงเปลี่ยนรูปภาพ",
+ "image_url": "URL เปลี่ยน",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "เปลี่ยนเนื้อหาข้อความ",
+ "font_family": "ครอบครัว Change Font",
+ "font_size": "เปลี่ยนขนาดตัวอักษร",
+ "bold": "ข้อความตัวหนา",
+ "italic": "ข้อความตัวเอียง"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "สีพื้นหลังเปลี่ยน / ความทึบ",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "พอดีกับเนื้อหาทั้งหมด",
+ "fit_to_canvas": "เหมาะสมในการผ้าใบ",
+ "fit_to_layer_content": "พอดีเนื้อหาชั้นที่",
+ "fit_to_sel": "เหมาะสมในการเลือก",
+ "align_relative_to": "จัดชิดเทียบกับ ...",
+ "relativeTo": "เทียบกับ:",
+ "page": "หน้า",
+ "largest_object": "ที่ใหญ่ที่สุดในวัตถุ",
+ "selected_objects": "วัตถุเลือกตั้ง",
+ "smallest_object": "วัตถุที่เล็กที่สุด",
+ "new_doc": "รูปภาพใหม่",
+ "open_doc": "ภาพเปิด",
+ "export_img": "Export",
+ "save_doc": "บันทึกรูปภาพ",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "ด้านล่างชิด",
+ "align_center": "จัดแนวกึ่งกลาง",
+ "align_left": "จัดชิดซ้าย",
+ "align_middle": "กลางชิด",
+ "align_right": "จัดชิดขวา",
+ "align_top": "ด้านบนชิด",
+ "mode_select": "เครื่องมือเลือก",
+ "mode_fhpath": "เครื่องมือดินสอ",
+ "mode_line": "เครื่องมือ Line",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "สี่เหลี่ยมผืนผ้า Free-Hand",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Ellipse Free-Hand",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "เครื่องมือ Text",
+ "mode_image": "เครื่องมือ Image",
+ "mode_zoom": "เครื่องมือซูม",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "เลิก",
+ "redo": "ทำซ้ำ",
+ "tool_source": "แหล่งที่มาแก้ไข",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "องค์ประกอบของกลุ่ม",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "องค์ประกอบ Ungroup",
+ "docprops": "คุณสมบัติของเอกสาร",
+ "imagelib": "Image Library",
+ "move_bottom": "ย้ายไปด้านล่าง",
+ "move_top": "ย้ายไปด้านบน",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "บันทึก",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "ย้าย Layer ลง",
+ "new": "Layer ใหม่",
+ "rename": "Layer เปลี่ยนชื่อ",
+ "move_up": "ย้าย Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "เลือกที่กำหนดไว้ล่วงหน้า:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.tl.js b/editor/locale/lang.tl.js
index 3e009271..5d26d29f 100644
--- a/editor/locale/lang.tl.js
+++ b/editor/locale/lang.tl.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "tl",
- dir: "ltr",
- common: {
- "ok": "I-save",
- "cancel": "I-cancel",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "I-click upang baguhin ang punan ang kulay, paglilipat-click upang baguhin ang paghampas ng kulay",
- "zoom_level": "Baguhin ang antas ng zoom",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Baguhin ang punuin ng kulay",
- "stroke_color": "Baguhin ang kulay ng paghampas",
- "stroke_style": "Baguhin ang stroke pagsugod estilo",
- "stroke_width": "Baguhin ang stroke lapad",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Baguhin ang pag-ikot anggulo",
- "blur": "Change gaussian blur value",
- "opacity": "Palitan ang mga napiling bagay kalabuan",
- "circle_cx": "Cx Baguhin ang bilog's coordinate",
- "circle_cy": "Baguhin ang bilog's cy coordinate",
- "circle_r": "Baguhin ang radius ng bilog",
- "ellipse_cx": "Baguhin ang tambilugan's cx-ugma",
- "ellipse_cy": "Baguhin ang tambilugan's cy coordinate",
- "ellipse_rx": "X radius Baguhin ang tambilugan's",
- "ellipse_ry": "Y radius Baguhin ang tambilugan's",
- "line_x1": "Baguhin ang linya ng simula x coordinate",
- "line_x2": "Baguhin ang linya ay nagtatapos x coordinate",
- "line_y1": "Baguhin ang linya ng simula y coordinate",
- "line_y2": "Baguhin ang linya ay nagtatapos y coordinate",
- "rect_height": "Baguhin ang rektanggulo taas",
- "rect_width": "Baguhin ang rektanggulo lapad",
- "corner_radius": "Baguhin ang Parihaba Corner Radius",
- "image_width": "Baguhin ang lapad ng imahe",
- "image_height": "Baguhin ang taas ng imahe",
- "image_url": "Baguhin ang URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Baguhin ang mga nilalaman ng teksto",
- "font_family": "Baguhin ang Pamilya ng Font",
- "font_size": "Baguhin ang Laki ng Font",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Baguhin ang kulay ng background / kalabuan",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Pagkasyahin sa Nilalaman",
- "fit_to_all": "Pagkasyahin sa lahat ng mga nilalaman",
- "fit_to_canvas": "Pagkasyahin sa tolda",
- "fit_to_layer_content": "Pagkasyahin sa layer nilalaman",
- "fit_to_sel": "Pagkasyahin sa pagpili",
- "align_relative_to": "Pantayin sa kamag-anak sa ...",
- "relativeTo": "kamag-anak sa:",
- "page": "pahina",
- "largest_object": "pinakamalaking bagay",
- "selected_objects": "inihalal na mga bagay",
- "smallest_object": "pinakamaliit na bagay",
- "new_doc": "Bagong Imahe",
- "open_doc": "Buksan ang Image",
- "export_img": "Export",
- "save_doc": "I-save ang Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Pantayin sa Ibaba",
- "align_center": "Pantayin sa Gitna",
- "align_left": "Pantayin ang Kaliwa",
- "align_middle": "Pantayin sa Gitnang",
- "align_right": "Pantayin sa Kanan",
- "align_top": "Pantayin Top",
- "mode_select": "Piliin ang Tool",
- "mode_fhpath": "Kasangkapan ng lapis",
- "mode_line": "Line Kasangkapan",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Libreng-kamay Parihaba",
- "mode_ellipse": "Tambilugan",
- "mode_circle": "Circle",
- "mode_fhellipse": "Libreng-kamay tambilugan",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Kasangkapan",
- "mode_image": "Image Kasangkapan",
- "mode_zoom": "Mag-zoom Kasangkapan",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Bawiin",
- "redo": "Gawin muli",
- "tool_source": "I-edit ang Source",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Group Sangkap",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Sangkap",
- "docprops": "Document Katangian",
- "imagelib": "Image Library",
- "move_bottom": "Ilipat sa Ibaba",
- "move_top": "Ilipat sa Tuktok",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "I-save",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Tanggalin Layer",
- "move_down": "Ilipat Layer Down",
- "new": "Bagong Layer",
- "rename": "Palitan ang pangalan ng Layer",
- "move_up": "Ilipat Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Piliin ang paunang-natukoy na:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "tl",
+ dir: "ltr",
+ common: {
+ "ok": "I-save",
+ "cancel": "I-cancel",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "I-click upang baguhin ang punan ang kulay, paglilipat-click upang baguhin ang paghampas ng kulay",
+ "zoom_level": "Baguhin ang antas ng zoom",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Baguhin ang punuin ng kulay",
+ "stroke_color": "Baguhin ang kulay ng paghampas",
+ "stroke_style": "Baguhin ang stroke pagsugod estilo",
+ "stroke_width": "Baguhin ang stroke lapad",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Baguhin ang pag-ikot anggulo",
+ "blur": "Change gaussian blur value",
+ "opacity": "Palitan ang mga napiling bagay kalabuan",
+ "circle_cx": "Cx Baguhin ang bilog's coordinate",
+ "circle_cy": "Baguhin ang bilog's cy coordinate",
+ "circle_r": "Baguhin ang radius ng bilog",
+ "ellipse_cx": "Baguhin ang tambilugan's cx-ugma",
+ "ellipse_cy": "Baguhin ang tambilugan's cy coordinate",
+ "ellipse_rx": "X radius Baguhin ang tambilugan's",
+ "ellipse_ry": "Y radius Baguhin ang tambilugan's",
+ "line_x1": "Baguhin ang linya ng simula x coordinate",
+ "line_x2": "Baguhin ang linya ay nagtatapos x coordinate",
+ "line_y1": "Baguhin ang linya ng simula y coordinate",
+ "line_y2": "Baguhin ang linya ay nagtatapos y coordinate",
+ "rect_height": "Baguhin ang rektanggulo taas",
+ "rect_width": "Baguhin ang rektanggulo lapad",
+ "corner_radius": "Baguhin ang Parihaba Corner Radius",
+ "image_width": "Baguhin ang lapad ng imahe",
+ "image_height": "Baguhin ang taas ng imahe",
+ "image_url": "Baguhin ang URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Baguhin ang mga nilalaman ng teksto",
+ "font_family": "Baguhin ang Pamilya ng Font",
+ "font_size": "Baguhin ang Laki ng Font",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Baguhin ang kulay ng background / kalabuan",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Pagkasyahin sa Nilalaman",
+ "fit_to_all": "Pagkasyahin sa lahat ng mga nilalaman",
+ "fit_to_canvas": "Pagkasyahin sa tolda",
+ "fit_to_layer_content": "Pagkasyahin sa layer nilalaman",
+ "fit_to_sel": "Pagkasyahin sa pagpili",
+ "align_relative_to": "Pantayin sa kamag-anak sa ...",
+ "relativeTo": "kamag-anak sa:",
+ "page": "pahina",
+ "largest_object": "pinakamalaking bagay",
+ "selected_objects": "inihalal na mga bagay",
+ "smallest_object": "pinakamaliit na bagay",
+ "new_doc": "Bagong Imahe",
+ "open_doc": "Buksan ang Image",
+ "export_img": "Export",
+ "save_doc": "I-save ang Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Pantayin sa Ibaba",
+ "align_center": "Pantayin sa Gitna",
+ "align_left": "Pantayin ang Kaliwa",
+ "align_middle": "Pantayin sa Gitnang",
+ "align_right": "Pantayin sa Kanan",
+ "align_top": "Pantayin Top",
+ "mode_select": "Piliin ang Tool",
+ "mode_fhpath": "Kasangkapan ng lapis",
+ "mode_line": "Line Kasangkapan",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Libreng-kamay Parihaba",
+ "mode_ellipse": "Tambilugan",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Libreng-kamay tambilugan",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Kasangkapan",
+ "mode_image": "Image Kasangkapan",
+ "mode_zoom": "Mag-zoom Kasangkapan",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Bawiin",
+ "redo": "Gawin muli",
+ "tool_source": "I-edit ang Source",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Group Sangkap",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Sangkap",
+ "docprops": "Document Katangian",
+ "imagelib": "Image Library",
+ "move_bottom": "Ilipat sa Ibaba",
+ "move_top": "Ilipat sa Tuktok",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "I-save",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Tanggalin Layer",
+ "move_down": "Ilipat Layer Down",
+ "new": "Bagong Layer",
+ "rename": "Palitan ang pangalan ng Layer",
+ "move_up": "Ilipat Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Piliin ang paunang-natukoy na:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.tr.js b/editor/locale/lang.tr.js
index 5ee2f4a1..0a5f453c 100644
--- a/editor/locale/lang.tr.js
+++ b/editor/locale/lang.tr.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "tr",
- dir: "ltr",
- common: {
- "ok": "Kaydetmek",
- "cancel": "Iptal",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Tıklatın renk, vardiya dolgu zamanlı rengini değiştirmek için tıklayın değiştirmek için",
- "zoom_level": "Yakınlaştırma düzeyini değiştirebilirsiniz",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Renk değiştirmek doldurmak",
- "stroke_color": "Değiştirmek inme renk",
- "stroke_style": "Değiştirmek inme çizgi stili",
- "stroke_width": "Değiştirmek vuruş genişliği",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Değiştirmek dönme açısı",
- "blur": "Change gaussian blur value",
- "opacity": "Değiştirmek öğe opacity seçilmiş",
- "circle_cx": "Değiştirmek daire's cx koordine",
- "circle_cy": "Değiştirmek daire cy koordine's",
- "circle_r": "Değiştirmek daire yarıçapı",
- "ellipse_cx": "'s Koordine cx elips Girişi",
- "ellipse_cy": "Değiştirmek elips cy koordine's",
- "ellipse_rx": "Değiştirmek elips's x yarıçapı",
- "ellipse_ry": "Değiştirmek elips Y yarıçapı",
- "line_x1": "Değiştirmek hattı's koordine x başlangıç",
- "line_x2": "Değiştirmek hattı's koordine x biten",
- "line_y1": "Değiştirmek hattı y başlangıç's koordine",
- "line_y2": "Değiştirmek hattı y biten's koordine",
- "rect_height": "Değiştirmek dikdörtgen yüksekliği",
- "rect_width": "Değiştirmek dikdörtgen genişliği",
- "corner_radius": "Değiştirmek Dikdörtgen Köşe Yarıçap",
- "image_width": "Değiştirmek görüntü genişliği",
- "image_height": "Değiştirmek görüntü yüksekliği",
- "image_url": "Değiştirmek URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Değiştirmek metin içeriği",
- "font_family": "Font değiştir Aile",
- "font_size": "Change font size",
- "bold": "Kalın Yazı",
- "italic": "Italik yazı"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Arka plan rengini değiştirmek / opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Fit to Content",
- "fit_to_all": "Fit tüm içerik için",
- "fit_to_canvas": "Fit tuvaline",
- "fit_to_layer_content": "Sığacak şekilde katman içerik",
- "fit_to_sel": "Fit seçimine",
- "align_relative_to": "Align göre ...",
- "relativeTo": "göreli:",
- "page": "sayfa",
- "largest_object": "en büyük nesne",
- "selected_objects": "seçilen nesneleri",
- "smallest_object": "küçük nesne",
- "new_doc": "Yeni Resim",
- "open_doc": "Aç Resim",
- "export_img": "Export",
- "save_doc": "Görüntüyü Kaydet",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Ortala",
- "align_left": "Sola",
- "align_middle": "Align Orta",
- "align_right": "Sağa Hizala",
- "align_top": "Align Top",
- "mode_select": "Seçim aracı",
- "mode_fhpath": "Kalem Aracı",
- "mode_line": "Line Aracı",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-El Dikdörtgen",
- "mode_ellipse": "Elips",
- "mode_circle": "Daire",
- "mode_fhellipse": "Free-El Elips",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Metin Aracı",
- "mode_image": "Resim Aracı",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Geri",
- "redo": "Redo",
- "tool_source": "Değiştir Kaynak",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Grup Elemanları",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Çöz Elemanları",
- "docprops": "Belge Özellikleri",
- "imagelib": "Image Library",
- "move_bottom": "Altına gider",
- "move_top": "Üste taşı",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Kaydetmek",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Delete Layer",
- "move_down": "Katman Aşağı Taşı",
- "new": "Yeni Katman",
- "rename": "Rename Katman",
- "move_up": "Up Katman Taşı",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Seçin önceden tanımlanmış:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "tr",
+ dir: "ltr",
+ common: {
+ "ok": "Kaydetmek",
+ "cancel": "Iptal",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Tıklatın renk, vardiya dolgu zamanlı rengini değiştirmek için tıklayın değiştirmek için",
+ "zoom_level": "Yakınlaştırma düzeyini değiştirebilirsiniz",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Renk değiştirmek doldurmak",
+ "stroke_color": "Değiştirmek inme renk",
+ "stroke_style": "Değiştirmek inme çizgi stili",
+ "stroke_width": "Değiştirmek vuruş genişliği",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Değiştirmek dönme açısı",
+ "blur": "Change gaussian blur value",
+ "opacity": "Değiştirmek öğe opacity seçilmiş",
+ "circle_cx": "Değiştirmek daire's cx koordine",
+ "circle_cy": "Değiştirmek daire cy koordine's",
+ "circle_r": "Değiştirmek daire yarıçapı",
+ "ellipse_cx": "'s Koordine cx elips Girişi",
+ "ellipse_cy": "Değiştirmek elips cy koordine's",
+ "ellipse_rx": "Değiştirmek elips's x yarıçapı",
+ "ellipse_ry": "Değiştirmek elips Y yarıçapı",
+ "line_x1": "Değiştirmek hattı's koordine x başlangıç",
+ "line_x2": "Değiştirmek hattı's koordine x biten",
+ "line_y1": "Değiştirmek hattı y başlangıç's koordine",
+ "line_y2": "Değiştirmek hattı y biten's koordine",
+ "rect_height": "Değiştirmek dikdörtgen yüksekliği",
+ "rect_width": "Değiştirmek dikdörtgen genişliği",
+ "corner_radius": "Değiştirmek Dikdörtgen Köşe Yarıçap",
+ "image_width": "Değiştirmek görüntü genişliği",
+ "image_height": "Değiştirmek görüntü yüksekliği",
+ "image_url": "Değiştirmek URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Değiştirmek metin içeriği",
+ "font_family": "Font değiştir Aile",
+ "font_size": "Change font size",
+ "bold": "Kalın Yazı",
+ "italic": "Italik yazı"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Arka plan rengini değiştirmek / opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Fit to Content",
+ "fit_to_all": "Fit tüm içerik için",
+ "fit_to_canvas": "Fit tuvaline",
+ "fit_to_layer_content": "Sığacak şekilde katman içerik",
+ "fit_to_sel": "Fit seçimine",
+ "align_relative_to": "Align göre ...",
+ "relativeTo": "göreli:",
+ "page": "sayfa",
+ "largest_object": "en büyük nesne",
+ "selected_objects": "seçilen nesneleri",
+ "smallest_object": "küçük nesne",
+ "new_doc": "Yeni Resim",
+ "open_doc": "Aç Resim",
+ "export_img": "Export",
+ "save_doc": "Görüntüyü Kaydet",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Ortala",
+ "align_left": "Sola",
+ "align_middle": "Align Orta",
+ "align_right": "Sağa Hizala",
+ "align_top": "Align Top",
+ "mode_select": "Seçim aracı",
+ "mode_fhpath": "Kalem Aracı",
+ "mode_line": "Line Aracı",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-El Dikdörtgen",
+ "mode_ellipse": "Elips",
+ "mode_circle": "Daire",
+ "mode_fhellipse": "Free-El Elips",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Metin Aracı",
+ "mode_image": "Resim Aracı",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Geri",
+ "redo": "Redo",
+ "tool_source": "Değiştir Kaynak",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Grup Elemanları",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Çöz Elemanları",
+ "docprops": "Belge Özellikleri",
+ "imagelib": "Image Library",
+ "move_bottom": "Altına gider",
+ "move_top": "Üste taşı",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Kaydetmek",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Delete Layer",
+ "move_down": "Katman Aşağı Taşı",
+ "new": "Yeni Katman",
+ "rename": "Rename Katman",
+ "move_up": "Up Katman Taşı",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Seçin önceden tanımlanmış:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.uk.js b/editor/locale/lang.uk.js
index 984ae1fb..b73c6a0b 100644
--- a/editor/locale/lang.uk.js
+++ b/editor/locale/lang.uk.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "uk",
- dir: "ltr",
- common: {
- "ok": "Зберегти",
- "cancel": "Скасування",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Натисніть для зміни кольору заливки, Shift-Click змінити обвід",
- "zoom_level": "Зміна масштабу",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Зміна кольору заливки",
- "stroke_color": "Зміна кольору інсульт",
- "stroke_style": "Зміна стилю інсульт тире",
- "stroke_width": "Зміни ширина штриха",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Зміна кута повороту",
- "blur": "Change gaussian blur value",
- "opacity": "Зміна вибраного пункту непрозорості",
- "circle_cx": "CX зміну кола координата",
- "circle_cy": "Зміни гуртка CY координати",
- "circle_r": "Зміна кола's радіус",
- "ellipse_cx": "Зміни еліпса CX координати",
- "ellipse_cy": "Зміни еліпса CY координати",
- "ellipse_rx": "Х Зміни еліпса радіусом",
- "ellipse_ry": "Зміни у еліпса радіусом",
- "line_x1": "Зміни починає координати лінія х",
- "line_x2": "Зміни за період, що закінчився лінія координати х",
- "line_y1": "Зміни лінія починає Y координата",
- "line_y2": "Зміна за період, що закінчився лінія Y координата",
- "rect_height": "Зміни прямокутник висотою",
- "rect_width": "Зміна ширини прямокутника",
- "corner_radius": "Зміни прямокутник Corner Radius",
- "image_width": "Зміни ширина зображення",
- "image_height": "Зміна висоти зображення",
- "image_url": "Змінити URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Зміна змісту тексту",
- "font_family": "Зміни Сімейство шрифтів",
- "font_size": "Змінити розмір шрифту",
- "bold": "Товстий текст",
- "italic": "Похилий текст"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Зміна кольору тла / непрозорість",
- "connector_no_arrow": "No arrow",
- "fitToContent": "За розміром змісту",
- "fit_to_all": "За розміром весь вміст",
- "fit_to_canvas": "Розмір полотна",
- "fit_to_layer_content": "За розміром шар змісту",
- "fit_to_sel": "Вибір розміру",
- "align_relative_to": "Вирівняти по відношенню до ...",
- "relativeTo": "в порівнянні з:",
- "page": "сторінка",
- "largest_object": "найбільший об'єкт",
- "selected_objects": "обраними об'єктами",
- "smallest_object": "маленький об'єкт",
- "new_doc": "Нове зображення",
- "open_doc": "Відкрити зображення",
- "export_img": "Export",
- "save_doc": "Зберегти малюнок",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Вирівняти по нижньому краю",
- "align_center": "Вирівняти по центру",
- "align_left": "По лівому краю",
- "align_middle": "Вирівняти Близького",
- "align_right": "По правому краю",
- "align_top": "Вирівняти по верхньому краю",
- "mode_select": "Виберіть інструмент",
- "mode_fhpath": "Pencil Tool",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Вільної руки Прямокутник",
- "mode_ellipse": "Еліпс",
- "mode_circle": "Коло",
- "mode_fhellipse": "Вільної руки Еліпс",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Текст Tool",
- "mode_image": "Image Tool",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Скасувати",
- "redo": "Повтор",
- "tool_source": "Змінити вихідний",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Група елементів",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Елементи розгрупувати",
- "docprops": "Властивості документа",
- "imagelib": "Image Library",
- "move_bottom": "Перемістити вниз",
- "move_top": "Перемістити догори",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Зберегти",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Видалити шар",
- "move_down": "Перемістити шар на",
- "new": "Новий шар",
- "rename": "Перейменувати Шар",
- "move_up": "Переміщення шару до",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Виберіть зумовлений:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "uk",
+ dir: "ltr",
+ common: {
+ "ok": "Зберегти",
+ "cancel": "Скасування",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Натисніть для зміни кольору заливки, Shift-Click змінити обвід",
+ "zoom_level": "Зміна масштабу",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Зміна кольору заливки",
+ "stroke_color": "Зміна кольору інсульт",
+ "stroke_style": "Зміна стилю інсульт тире",
+ "stroke_width": "Зміни ширина штриха",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Зміна кута повороту",
+ "blur": "Change gaussian blur value",
+ "opacity": "Зміна вибраного пункту непрозорості",
+ "circle_cx": "CX зміну кола координата",
+ "circle_cy": "Зміни гуртка CY координати",
+ "circle_r": "Зміна кола's радіус",
+ "ellipse_cx": "Зміни еліпса CX координати",
+ "ellipse_cy": "Зміни еліпса CY координати",
+ "ellipse_rx": "Х Зміни еліпса радіусом",
+ "ellipse_ry": "Зміни у еліпса радіусом",
+ "line_x1": "Зміни починає координати лінія х",
+ "line_x2": "Зміни за період, що закінчився лінія координати х",
+ "line_y1": "Зміни лінія починає Y координата",
+ "line_y2": "Зміна за період, що закінчився лінія Y координата",
+ "rect_height": "Зміни прямокутник висотою",
+ "rect_width": "Зміна ширини прямокутника",
+ "corner_radius": "Зміни прямокутник Corner Radius",
+ "image_width": "Зміни ширина зображення",
+ "image_height": "Зміна висоти зображення",
+ "image_url": "Змінити URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Зміна змісту тексту",
+ "font_family": "Зміни Сімейство шрифтів",
+ "font_size": "Змінити розмір шрифту",
+ "bold": "Товстий текст",
+ "italic": "Похилий текст"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Зміна кольору тла / непрозорість",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "За розміром змісту",
+ "fit_to_all": "За розміром весь вміст",
+ "fit_to_canvas": "Розмір полотна",
+ "fit_to_layer_content": "За розміром шар змісту",
+ "fit_to_sel": "Вибір розміру",
+ "align_relative_to": "Вирівняти по відношенню до ...",
+ "relativeTo": "в порівнянні з:",
+ "page": "сторінка",
+ "largest_object": "найбільший об'єкт",
+ "selected_objects": "обраними об'єктами",
+ "smallest_object": "маленький об'єкт",
+ "new_doc": "Нове зображення",
+ "open_doc": "Відкрити зображення",
+ "export_img": "Export",
+ "save_doc": "Зберегти малюнок",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Вирівняти по нижньому краю",
+ "align_center": "Вирівняти по центру",
+ "align_left": "По лівому краю",
+ "align_middle": "Вирівняти Близького",
+ "align_right": "По правому краю",
+ "align_top": "Вирівняти по верхньому краю",
+ "mode_select": "Виберіть інструмент",
+ "mode_fhpath": "Pencil Tool",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Вільної руки Прямокутник",
+ "mode_ellipse": "Еліпс",
+ "mode_circle": "Коло",
+ "mode_fhellipse": "Вільної руки Еліпс",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Текст Tool",
+ "mode_image": "Image Tool",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Скасувати",
+ "redo": "Повтор",
+ "tool_source": "Змінити вихідний",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Група елементів",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Елементи розгрупувати",
+ "docprops": "Властивості документа",
+ "imagelib": "Image Library",
+ "move_bottom": "Перемістити вниз",
+ "move_top": "Перемістити догори",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Зберегти",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Видалити шар",
+ "move_down": "Перемістити шар на",
+ "new": "Новий шар",
+ "rename": "Перейменувати Шар",
+ "move_up": "Переміщення шару до",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Виберіть зумовлений:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.vi.js b/editor/locale/lang.vi.js
index bdba16dc..1af73697 100644
--- a/editor/locale/lang.vi.js
+++ b/editor/locale/lang.vi.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "vi",
- dir: "ltr",
- common: {
- "ok": "Lưu",
- "cancel": "Hủy",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "Nhấn vào đây để thay đổi đầy màu sắc, thay đổi nhấp chuột để thay đổi màu sắc đột quỵ",
- "zoom_level": "Thay đổi mức độ phóng",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "Thay đổi đầy màu sắc",
- "stroke_color": "Thay đổi màu sắc đột quỵ",
- "stroke_style": "Thay đổi phong cách đột quỵ dash",
- "stroke_width": "Thay đổi chiều rộng đột quỵ",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "Thay đổi góc xoay",
- "blur": "Change gaussian blur value",
- "opacity": "Thay đổi lựa chọn opacity mục",
- "circle_cx": "Thay đổi hình tròn của cx phối hợp",
- "circle_cy": "Thay đổi hình tròn của vi phối hợp",
- "circle_r": "Thay đổi bán kính của hình tròn",
- "ellipse_cx": "Thay đổi hình elip của cx phối hợp",
- "ellipse_cy": "Thay đổi hình elip của vi phối hợp",
- "ellipse_rx": "Thay đổi hình elip của x bán kính",
- "ellipse_ry": "Y Thay đổi bán kính của hình ellipse",
- "line_x1": "Thay đổi dòng của bắt đầu từ x phối hợp",
- "line_x2": "Thay đổi dòng của x kết thúc sớm nhất phối hợp",
- "line_y1": "Thay đổi dòng của bắt đầu từ y phối hợp",
- "line_y2": "Thay đổi dòng của kết thúc y phối hợp",
- "rect_height": "Thay đổi hình chữ nhật chiều cao",
- "rect_width": "Thay đổi hình chữ nhật chiều rộng",
- "corner_radius": "Thay đổi chữ nhật Corner Radius",
- "image_width": "Thay đổi hình ảnh rộng",
- "image_height": "Thay đổi hình ảnh chiều cao",
- "image_url": "Thay đổi URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "Thay đổi nội dung văn bản",
- "font_family": "Thay đổi Font Gia đình",
- "font_size": "Thay đổi cỡ chữ",
- "bold": "Bold Text",
- "italic": "Italic Text"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "Thay đổi màu nền / opacity",
- "connector_no_arrow": "No arrow",
- "fitToContent": "Phù hợp với nội dung",
- "fit_to_all": "Phù hợp với tất cả nội dung",
- "fit_to_canvas": "Phù hợp với vải",
- "fit_to_layer_content": "Vào lớp phù hợp với nội dung",
- "fit_to_sel": "Phù hợp để lựa chọn",
- "align_relative_to": "Căn liên quan đến ...",
- "relativeTo": "liên quan đến:",
- "page": "Page",
- "largest_object": "lớn nhất đối tượng",
- "selected_objects": "bầu các đối tượng",
- "smallest_object": "nhỏ đối tượng",
- "new_doc": "Hình mới",
- "open_doc": "Mở Image",
- "export_img": "Export",
- "save_doc": "Save Image",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "Align Bottom",
- "align_center": "Căn giữa",
- "align_left": "Căn còn lại",
- "align_middle": "Căn Trung",
- "align_right": "Căn phải",
- "align_top": "Căn Top",
- "mode_select": "Chọn Công cụ",
- "mode_fhpath": "Bút chì Công cụ",
- "mode_line": "Line Tool",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Việt-Hand Hình chữ nhật",
- "mode_ellipse": "Ellipse",
- "mode_circle": "Circle",
- "mode_fhellipse": "Việt-Hand Ellipse",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "Text Tool",
- "mode_image": "Hình Công cụ",
- "mode_zoom": "Zoom Tool",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "Hoàn tác",
- "redo": "Làm lại",
- "tool_source": "Sửa Nguồn",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "Nhóm Elements",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "Document Properties",
- "imagelib": "Image Library",
- "move_bottom": "Chuyển đến đáy",
- "move_top": "Move to Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "Lưu",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "Xoá Layer",
- "move_down": "Move Layer Down",
- "new": "New Layer",
- "rename": "Đổi tên Layer",
- "move_up": "Di chuyển Layer Up",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "Chọn định sẵn:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "vi",
+ dir: "ltr",
+ common: {
+ "ok": "Lưu",
+ "cancel": "Hủy",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "Nhấn vào đây để thay đổi đầy màu sắc, thay đổi nhấp chuột để thay đổi màu sắc đột quỵ",
+ "zoom_level": "Thay đổi mức độ phóng",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "Thay đổi đầy màu sắc",
+ "stroke_color": "Thay đổi màu sắc đột quỵ",
+ "stroke_style": "Thay đổi phong cách đột quỵ dash",
+ "stroke_width": "Thay đổi chiều rộng đột quỵ",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "Thay đổi góc xoay",
+ "blur": "Change gaussian blur value",
+ "opacity": "Thay đổi lựa chọn opacity mục",
+ "circle_cx": "Thay đổi hình tròn của cx phối hợp",
+ "circle_cy": "Thay đổi hình tròn của vi phối hợp",
+ "circle_r": "Thay đổi bán kính của hình tròn",
+ "ellipse_cx": "Thay đổi hình elip của cx phối hợp",
+ "ellipse_cy": "Thay đổi hình elip của vi phối hợp",
+ "ellipse_rx": "Thay đổi hình elip của x bán kính",
+ "ellipse_ry": "Y Thay đổi bán kính của hình ellipse",
+ "line_x1": "Thay đổi dòng của bắt đầu từ x phối hợp",
+ "line_x2": "Thay đổi dòng của x kết thúc sớm nhất phối hợp",
+ "line_y1": "Thay đổi dòng của bắt đầu từ y phối hợp",
+ "line_y2": "Thay đổi dòng của kết thúc y phối hợp",
+ "rect_height": "Thay đổi hình chữ nhật chiều cao",
+ "rect_width": "Thay đổi hình chữ nhật chiều rộng",
+ "corner_radius": "Thay đổi chữ nhật Corner Radius",
+ "image_width": "Thay đổi hình ảnh rộng",
+ "image_height": "Thay đổi hình ảnh chiều cao",
+ "image_url": "Thay đổi URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "Thay đổi nội dung văn bản",
+ "font_family": "Thay đổi Font Gia đình",
+ "font_size": "Thay đổi cỡ chữ",
+ "bold": "Bold Text",
+ "italic": "Italic Text"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "Thay đổi màu nền / opacity",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "Phù hợp với nội dung",
+ "fit_to_all": "Phù hợp với tất cả nội dung",
+ "fit_to_canvas": "Phù hợp với vải",
+ "fit_to_layer_content": "Vào lớp phù hợp với nội dung",
+ "fit_to_sel": "Phù hợp để lựa chọn",
+ "align_relative_to": "Căn liên quan đến ...",
+ "relativeTo": "liên quan đến:",
+ "page": "Page",
+ "largest_object": "lớn nhất đối tượng",
+ "selected_objects": "bầu các đối tượng",
+ "smallest_object": "nhỏ đối tượng",
+ "new_doc": "Hình mới",
+ "open_doc": "Mở Image",
+ "export_img": "Export",
+ "save_doc": "Save Image",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "Align Bottom",
+ "align_center": "Căn giữa",
+ "align_left": "Căn còn lại",
+ "align_middle": "Căn Trung",
+ "align_right": "Căn phải",
+ "align_top": "Căn Top",
+ "mode_select": "Chọn Công cụ",
+ "mode_fhpath": "Bút chì Công cụ",
+ "mode_line": "Line Tool",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Việt-Hand Hình chữ nhật",
+ "mode_ellipse": "Ellipse",
+ "mode_circle": "Circle",
+ "mode_fhellipse": "Việt-Hand Ellipse",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "Text Tool",
+ "mode_image": "Hình Công cụ",
+ "mode_zoom": "Zoom Tool",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "Hoàn tác",
+ "redo": "Làm lại",
+ "tool_source": "Sửa Nguồn",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "Nhóm Elements",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "Document Properties",
+ "imagelib": "Image Library",
+ "move_bottom": "Chuyển đến đáy",
+ "move_top": "Move to Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "Lưu",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "Xoá Layer",
+ "move_down": "Move Layer Down",
+ "new": "New Layer",
+ "rename": "Đổi tên Layer",
+ "move_up": "Di chuyển Layer Up",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "Chọn định sẵn:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.yi.js b/editor/locale/lang.yi.js
index 17f49d12..560e34ac 100644
--- a/editor/locale/lang.yi.js
+++ b/editor/locale/lang.yi.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "yi",
- dir: "ltr",
- common: {
- "ok": "היט",
- "cancel": "באָטל מאַכן",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "גיט צו ענדערן אָנעסן קאָליר, יבעררוק-גיט צו טוישן מאַך קאָליר",
- "zoom_level": "ענדערן פארגרעסער הייך",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "ענדערן אָנעסן קאָליר",
- "stroke_color": "טוישן מאַך קאָליר",
- "stroke_style": "טוישן מאַך לאָך מאָדע",
- "stroke_width": "טוישן מאַך ברייט",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "ענדערן ראָוטיישאַן ווינקל",
- "blur": "Change gaussian blur value",
- "opacity": "ענדערן סעלעקטעד נומער אָופּאַסאַטי",
- "circle_cx": "ענדערן קרייז ס קקס קאָואָרדאַנאַט",
- "circle_cy": "ענדערן קרייז ס סי קאָואָרדאַנאַט",
- "circle_r": "ענדערן קרייז ס ראַדיוס",
- "ellipse_cx": "ענדערן יליפּס ס קקס קאָואָרדאַנאַט",
- "ellipse_cy": "ענדערן יליפּס ס סי קאָואָרדאַנאַט",
- "ellipse_rx": "ענדערן יליפּס ס 'קס ראַדיוס",
- "ellipse_ry": "ענדערן יליפּס ס 'י ראַדיוס",
- "line_x1": "טוישן ליניע ס 'סטאַרטינג קס קאָואָרדאַנאַט",
- "line_x2": "טוישן ליניע ס 'סאָף קס קאָואָרדאַנאַט",
- "line_y1": "טוישן ליניע ס 'סטאַרטינג י קאָואָרדאַנאַט",
- "line_y2": "טוישן ליניע ס 'סאָף י קאָואָרדאַנאַט",
- "rect_height": "ענדערן גראָדעק הייך",
- "rect_width": "ענדערן גראָדעק ברייט",
- "corner_radius": "ענדערן רעקטאַנגלע קאָרנער ראַדיוס",
- "image_width": "טוישן בילד ברייט",
- "image_height": "טוישן בילד הייך",
- "image_url": "ענדערן URL",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "ענדערן טעקסט אינהאַלט",
- "font_family": "ענדערן פאָנט פאַמילי",
- "font_size": "בייטן פאָנט גרייס",
- "bold": "דרייסט טעקסט",
- "italic": "יטאַליק טעקסט"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "ענדערן הינטערגרונט פאַרב / אָופּאַסאַטי",
- "connector_no_arrow": "No arrow",
- "fitToContent": "פּאַסיק צו אינהאַלט",
- "fit_to_all": "פּאַסיק צו אַלע אינהאַלט",
- "fit_to_canvas": "פּאַסיק צו לייוונט",
- "fit_to_layer_content": "פּאַסיק צו שיכטע אינהאַלט",
- "fit_to_sel": "פּאַסיק צו אָפּקלייב",
- "align_relative_to": "יינרייען קאָרעוו צו ...",
- "relativeTo": "קאָרעוו צו:",
- "page": "בלאַט",
- "largest_object": "לאַרדזשאַסט קעגן",
- "selected_objects": "עלעקטעד אַבדזשעקץ",
- "smallest_object": "סמאָלאַסט קעגן",
- "new_doc": "ניו בילד",
- "open_doc": "Open בילד",
- "export_img": "Export",
- "save_doc": "היט בילד",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "יינרייען באָטטאָם",
- "align_center": "יינרייען צענטער",
- "align_left": "יינרייען לעפט",
- "align_middle": "יינרייען מיטל",
- "align_right": "יינרייען רעכט",
- "align_top": "יינרייען Top",
- "mode_select": "סעלעקטירן טול",
- "mode_fhpath": "בלייער טול",
- "mode_line": "שורה טול",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "Free-הענט רעקטאַנגלע",
- "mode_ellipse": "עלליפּסע",
- "mode_circle": "קאַראַהאָד",
- "mode_fhellipse": "Free-הענט עלליפּסע",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "טעקסט טול",
- "mode_image": "בילד טול",
- "mode_zoom": "פארגרעסער טול",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "ופמאַכן",
- "redo": "רעדאָ",
- "tool_source": "רעדאַקטירן סאָרס",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "גרופּע עלעמענץ",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "ונגראָופּ עלעמענץ",
- "docprops": "דאָקומענט פּראָפּערטיעס",
- "imagelib": "Image Library",
- "move_bottom": "מאַך צו באָטטאָם",
- "move_top": "באַוועגן צו Top",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "היט",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "ויסמעקן לייַער",
- "move_down": "קער לייַער דאָוון",
- "new": "ניו לייַער",
- "rename": "רענאַמע לייַער",
- "move_up": "באַוועגן לייַער אַרויף",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "סעלעקטירן פּרעדעפינעד:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "yi",
+ dir: "ltr",
+ common: {
+ "ok": "היט",
+ "cancel": "באָטל מאַכן",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "גיט צו ענדערן אָנעסן קאָליר, יבעררוק-גיט צו טוישן מאַך קאָליר",
+ "zoom_level": "ענדערן פארגרעסער הייך",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "ענדערן אָנעסן קאָליר",
+ "stroke_color": "טוישן מאַך קאָליר",
+ "stroke_style": "טוישן מאַך לאָך מאָדע",
+ "stroke_width": "טוישן מאַך ברייט",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "ענדערן ראָוטיישאַן ווינקל",
+ "blur": "Change gaussian blur value",
+ "opacity": "ענדערן סעלעקטעד נומער אָופּאַסאַטי",
+ "circle_cx": "ענדערן קרייז ס קקס קאָואָרדאַנאַט",
+ "circle_cy": "ענדערן קרייז ס סי קאָואָרדאַנאַט",
+ "circle_r": "ענדערן קרייז ס ראַדיוס",
+ "ellipse_cx": "ענדערן יליפּס ס קקס קאָואָרדאַנאַט",
+ "ellipse_cy": "ענדערן יליפּס ס סי קאָואָרדאַנאַט",
+ "ellipse_rx": "ענדערן יליפּס ס 'קס ראַדיוס",
+ "ellipse_ry": "ענדערן יליפּס ס 'י ראַדיוס",
+ "line_x1": "טוישן ליניע ס 'סטאַרטינג קס קאָואָרדאַנאַט",
+ "line_x2": "טוישן ליניע ס 'סאָף קס קאָואָרדאַנאַט",
+ "line_y1": "טוישן ליניע ס 'סטאַרטינג י קאָואָרדאַנאַט",
+ "line_y2": "טוישן ליניע ס 'סאָף י קאָואָרדאַנאַט",
+ "rect_height": "ענדערן גראָדעק הייך",
+ "rect_width": "ענדערן גראָדעק ברייט",
+ "corner_radius": "ענדערן רעקטאַנגלע קאָרנער ראַדיוס",
+ "image_width": "טוישן בילד ברייט",
+ "image_height": "טוישן בילד הייך",
+ "image_url": "ענדערן URL",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "ענדערן טעקסט אינהאַלט",
+ "font_family": "ענדערן פאָנט פאַמילי",
+ "font_size": "בייטן פאָנט גרייס",
+ "bold": "דרייסט טעקסט",
+ "italic": "יטאַליק טעקסט"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "ענדערן הינטערגרונט פאַרב / אָופּאַסאַטי",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "פּאַסיק צו אינהאַלט",
+ "fit_to_all": "פּאַסיק צו אַלע אינהאַלט",
+ "fit_to_canvas": "פּאַסיק צו לייוונט",
+ "fit_to_layer_content": "פּאַסיק צו שיכטע אינהאַלט",
+ "fit_to_sel": "פּאַסיק צו אָפּקלייב",
+ "align_relative_to": "יינרייען קאָרעוו צו ...",
+ "relativeTo": "קאָרעוו צו:",
+ "page": "בלאַט",
+ "largest_object": "לאַרדזשאַסט קעגן",
+ "selected_objects": "עלעקטעד אַבדזשעקץ",
+ "smallest_object": "סמאָלאַסט קעגן",
+ "new_doc": "ניו בילד",
+ "open_doc": "Open בילד",
+ "export_img": "Export",
+ "save_doc": "היט בילד",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "יינרייען באָטטאָם",
+ "align_center": "יינרייען צענטער",
+ "align_left": "יינרייען לעפט",
+ "align_middle": "יינרייען מיטל",
+ "align_right": "יינרייען רעכט",
+ "align_top": "יינרייען Top",
+ "mode_select": "סעלעקטירן טול",
+ "mode_fhpath": "בלייער טול",
+ "mode_line": "שורה טול",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "Free-הענט רעקטאַנגלע",
+ "mode_ellipse": "עלליפּסע",
+ "mode_circle": "קאַראַהאָד",
+ "mode_fhellipse": "Free-הענט עלליפּסע",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "טעקסט טול",
+ "mode_image": "בילד טול",
+ "mode_zoom": "פארגרעסער טול",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "ופמאַכן",
+ "redo": "רעדאָ",
+ "tool_source": "רעדאַקטירן סאָרס",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "גרופּע עלעמענץ",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "ונגראָופּ עלעמענץ",
+ "docprops": "דאָקומענט פּראָפּערטיעס",
+ "imagelib": "Image Library",
+ "move_bottom": "מאַך צו באָטטאָם",
+ "move_top": "באַוועגן צו Top",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "היט",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "ויסמעקן לייַער",
+ "move_down": "קער לייַער דאָוון",
+ "new": "ניו לייַער",
+ "rename": "רענאַמע לייַער",
+ "move_up": "באַוועגן לייַער אַרויף",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "סעלעקטירן פּרעדעפינעד:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.zh-CN.js b/editor/locale/lang.zh-CN.js
index dbea4699..2185e2b5 100644
--- a/editor/locale/lang.zh-CN.js
+++ b/editor/locale/lang.zh-CN.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "zh-CN",
- dir: "ltr",
- common: {
- "ok": "保存",
- "cancel": "取消",
- "key_backspace": "退格",
- "key_del": "删除",
- "key_down": "下",
- "key_up": "上",
- "more_opts": "更多选项",
- "url": "URL",
- "width": "宽度",
- "height": "高度"
- },
- misc: {
- "powered_by": "版权所有"
- },
- ui: {
- "toggle_stroke_tools": "显示/隐藏更式边线工具",
- "palette_info": "点击更改填充颜色,按住Shift键单击更改线条颜色",
- "zoom_level": "更改缩放级别",
- "panel_drag": "左右拖拽调整面板大小"
- },
- properties: {
- "id": "元素ID",
- "fill_color": "更改填充颜色",
- "stroke_color": "线条的颜色变化",
- "stroke_style": "更改线条样式",
- "stroke_width": "更改线条宽度",
- "pos_x": "更改X坐标",
- "pos_y": "更改Y坐标",
- "linecap_butt": "顶端样式: 齐平",
- "linecap_round": "顶端样式: 圆滑",
- "linecap_square": "顶端样式: 方块",
- "linejoin_bevel": "连接处: 削平",
- "linejoin_miter": "连接处: 直角",
- "linejoin_round": "连接处: 圆角",
- "angle": "更改旋转角度",
- "blur": "更改高斯模糊值",
- "opacity": "更改所选条目的不透明度",
- "circle_cx": "改变圆的中心X坐标",
- "circle_cy": "改变圆的中心Y坐标",
- "circle_r": "改变圆的半径",
- "ellipse_cx": "改变椭圆的中心X坐标",
- "ellipse_cy": "改变椭圆的中心Y坐标",
- "ellipse_rx": "改变椭圆的x半径",
- "ellipse_ry": "改变椭圆的y半径",
- "line_x1": "更改直线起点的x坐标",
- "line_x2": "更改直线终点的x坐标",
- "line_y1": "更改直线起点的y坐标",
- "line_y2": "更改直线终点的y坐标",
- "rect_height": "更改矩形的高度",
- "rect_width": "更改矩形的宽度",
- "corner_radius": "角半径:",
- "image_width": "更改图像的宽度",
- "image_height": "更改图像的高度",
- "image_url": "更改网址",
- "node_x": "更改节点的X坐标",
- "node_y": "更改节点的Y坐标",
- "seg_type": "修改线段类型",
- "straight_segments": "直线",
- "curve_segments": "曲线",
- "text_contents": "更改文本内容",
- "font_family": "更改字体样式",
- "font_size": "更改字体大小",
- "bold": "粗体",
- "italic": "斜体"
- },
- tools: {
- "main_menu": "主菜单",
- "bkgnd_color_opac": "更改背景颜色/不透明",
- "connector_no_arrow": "无箭头",
- "fitToContent": "适应内容",
- "fit_to_all": "适应于所有的内容",
- "fit_to_canvas": "适应画布",
- "fit_to_layer_content": "适应层内容",
- "fit_to_sel": "适应选中内容",
- "align_relative_to": "相对对齐 ...",
- "relativeTo": "相对于:",
- "page": "网页",
- "largest_object": "最大对象",
- "selected_objects": "选中的对象",
- "smallest_object": "最小的对象",
- "new_doc": "新文档",
- "open_doc": "打开文档",
- "export_img": "导出",
- "save_doc": "保存图像",
- "import_doc": "导入SVG",
- "align_to_page": "对齐元素到页面",
- "align_bottom": "底部对齐",
- "align_center": "居中对齐",
- "align_left": "左对齐",
- "align_middle": "水平居中对齐",
- "align_right": "右对齐",
- "align_top": "顶端对齐",
- "mode_select": "选择工具",
- "mode_fhpath": "铅笔工具",
- "mode_line": "线工具",
- "mode_connect": "连接两个对象",
- "mode_rect": "矩形",
- "mode_square": "正方形",
- "mode_fhrect": "自由矩形",
- "mode_ellipse": "椭圆",
- "mode_circle": "圆形",
- "mode_fhellipse": "自由椭圆",
- "mode_path": "路径",
- "mode_shapelib": "图形库",
- "mode_text": "文字工具",
- "mode_image": "图像工具",
- "mode_zoom": "缩放工具",
- "mode_eyedropper": "吸管",
- "no_embed": "注意: 根据SVG图像的存储位置,内嵌的位图可能无法显示!",
- "undo": "撤消",
- "redo": "重做",
- "tool_source": "编辑源",
- "wireframe_mode": "线条模式",
- "toggle_grid": "显示/隐藏 网格",
- "clone": "克隆元素",
- "del": "删除元素",
- "group_elements": "组合元素",
- "make_link": "创建超链接",
- "set_link_url": "设置链接URL (设置为空以删除)",
- "to_path": "转换为路径",
- "reorient_path": "调整路径",
- "ungroup": "取消组合元素",
- "docprops": "文档属性",
- "imagelib": "图像库",
- "move_bottom": "移至底部",
- "move_top": "移至顶部",
- "node_clone": "复制节点",
- "node_delete": "删除节点",
- "node_link": "连接控制点",
- "add_subpath": "添加子路径",
- "openclose_path": "打开/关闭 子路径",
- "source_save": "保存",
- "cut": "剪切",
- "copy": "复制",
- "paste": "粘贴",
- "paste_in_place": "粘贴到原位置",
- "delete": "删除",
- "group": "组合",
- "move_front": "移至顶部",
- "move_up": "向上移动",
- "move_down": "向下移动",
- "move_back": "移至底部"
- },
- layers: {
- "layer": "图层",
- "layers": "图层",
- "del": "删除图层",
- "move_down": "向下移动图层",
- "new": "新建图层",
- "rename": "重命名图层",
- "move_up": "向上移动图层",
- "dupe": "复制图层",
- "merge_down": "向下合并",
- "merge_all": "全部合并",
- "move_elems_to": "移动元素至:",
- "move_selected": "移动元素至另一个图层"
- },
- config: {
- "image_props": "图像属性",
- "doc_title": "标题",
- "doc_dims": "画布大小",
- "included_images": "包含图像",
- "image_opt_embed": "嵌入数据 (本地文件)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "编辑器首选项",
- "icon_size": "图标大小",
- "language": "语言",
- "background": "编辑器背景",
- "editor_img_url": "图像 URL",
- "editor_bg_note": "注意: 背景不会保存在图像中.",
- "icon_large": "大",
- "icon_medium": "中",
- "icon_small": "小",
- "icon_xlarge": "特大",
- "select_predefined": "选择预定义:",
- "units_and_rulers": "单位 & 标尺",
- "show_rulers": "显示标尺",
- "base_unit": "基本单位:",
- "grid": "网格",
- "snapping_onoff": "吸附开/关",
- "snapping_stepsize": "吸附步长:",
- "grid_color": "网格颜色"
- },
- shape_cats: {
- "basic": "常规",
- "object": "对象",
- "symbol": "符号",
- "arrow": "箭头",
- "flowchart": "流程图",
- "animal": "动物",
- "game": "纸牌 & 棋子",
- "dialog_balloon": "信息气球",
- "electronics": "电力元件",
- "math": "数学符号",
- "music": "音乐符号",
- "misc": "杂项",
- "raphael_1": "常用图标1",
- "raphael_2": "常用图标2"
- },
- imagelib: {
- "select_lib": "选择一个图像库",
- "show_list": "显示库列表",
- "import_single": "单个导入",
- "import_multi": "批量导入",
- "open": "打开一个新文档"
- },
- notification: {
- "invalidAttrValGiven": "无效的参数",
- "noContentToFitTo": "无可适应的内容",
- "dupeLayerName": "已存在同名的图层!",
- "enterUniqueLayerName": "请输入一个唯一的图层名称",
- "enterNewLayerName": "请输入新的图层名称",
- "layerHasThatName": "图层已经采用了该名称",
- "QmoveElemsToLayer": "您确定移动所选元素到图层'%s'吗?",
- "QwantToClear": "您希望清除当前绘制的所有图形吗?\n该操作将无法撤消!",
- "QwantToOpen": "您希望打开一个新文档吗?\n该操作将无法撤消!",
- "QerrorsRevertToSource": "SVG文件解析错误.\n是否还原到最初的SVG文件?",
- "QignoreSourceChanges": "忽略对SVG文件所作的更改么?",
- "featNotSupported": "不支持该功能",
- "enterNewImgURL": "请输入新图像的URLL",
- "defsFailOnSave": "注意: 由于您所使用的浏览器存在缺陷, 该图像无法正确显示 (不支持渐变或相关元素). 修复该缺陷后可正确显示.",
- "loadingImage": "正在加载图像, 请稍候...",
- "saveFromBrowser": "选择浏览器中的 \"另存为...\" 将该图像保存为 %s 文件.",
- "noteTheseIssues": "同时注意以下几点: ",
- "unsavedChanges": "存在未保存的修改.",
- "enterNewLinkURL": "输入新建链接的URL地址",
- "errorLoadingSVG": "错误: 无法加载SVG数据",
- "URLloadFail": "无法从URL中加载",
- "retrieving": "检索 \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "zh-CN",
+ dir: "ltr",
+ common: {
+ "ok": "保存",
+ "cancel": "取消",
+ "key_backspace": "退格",
+ "key_del": "删除",
+ "key_down": "下",
+ "key_up": "上",
+ "more_opts": "更多选项",
+ "url": "URL",
+ "width": "宽度",
+ "height": "高度"
+ },
+ misc: {
+ "powered_by": "版权所有"
+ },
+ ui: {
+ "toggle_stroke_tools": "显示/隐藏更式边线工具",
+ "palette_info": "点击更改填充颜色,按住Shift键单击更改线条颜色",
+ "zoom_level": "更改缩放级别",
+ "panel_drag": "左右拖拽调整面板大小"
+ },
+ properties: {
+ "id": "元素ID",
+ "fill_color": "更改填充颜色",
+ "stroke_color": "线条的颜色变化",
+ "stroke_style": "更改线条样式",
+ "stroke_width": "更改线条宽度",
+ "pos_x": "更改X坐标",
+ "pos_y": "更改Y坐标",
+ "linecap_butt": "顶端样式: 齐平",
+ "linecap_round": "顶端样式: 圆滑",
+ "linecap_square": "顶端样式: 方块",
+ "linejoin_bevel": "连接处: 削平",
+ "linejoin_miter": "连接处: 直角",
+ "linejoin_round": "连接处: 圆角",
+ "angle": "更改旋转角度",
+ "blur": "更改高斯模糊值",
+ "opacity": "更改所选条目的不透明度",
+ "circle_cx": "改变圆的中心X坐标",
+ "circle_cy": "改变圆的中心Y坐标",
+ "circle_r": "改变圆的半径",
+ "ellipse_cx": "改变椭圆的中心X坐标",
+ "ellipse_cy": "改变椭圆的中心Y坐标",
+ "ellipse_rx": "改变椭圆的x半径",
+ "ellipse_ry": "改变椭圆的y半径",
+ "line_x1": "更改直线起点的x坐标",
+ "line_x2": "更改直线终点的x坐标",
+ "line_y1": "更改直线起点的y坐标",
+ "line_y2": "更改直线终点的y坐标",
+ "rect_height": "更改矩形的高度",
+ "rect_width": "更改矩形的宽度",
+ "corner_radius": "角半径:",
+ "image_width": "更改图像的宽度",
+ "image_height": "更改图像的高度",
+ "image_url": "更改网址",
+ "node_x": "更改节点的X坐标",
+ "node_y": "更改节点的Y坐标",
+ "seg_type": "修改线段类型",
+ "straight_segments": "直线",
+ "curve_segments": "曲线",
+ "text_contents": "更改文本内容",
+ "font_family": "更改字体样式",
+ "font_size": "更改字体大小",
+ "bold": "粗体",
+ "italic": "斜体"
+ },
+ tools: {
+ "main_menu": "主菜单",
+ "bkgnd_color_opac": "更改背景颜色/不透明",
+ "connector_no_arrow": "无箭头",
+ "fitToContent": "适应内容",
+ "fit_to_all": "适应于所有的内容",
+ "fit_to_canvas": "适应画布",
+ "fit_to_layer_content": "适应层内容",
+ "fit_to_sel": "适应选中内容",
+ "align_relative_to": "相对对齐 ...",
+ "relativeTo": "相对于:",
+ "page": "网页",
+ "largest_object": "最大对象",
+ "selected_objects": "选中的对象",
+ "smallest_object": "最小的对象",
+ "new_doc": "新文档",
+ "open_doc": "打开文档",
+ "export_img": "导出",
+ "save_doc": "保存图像",
+ "import_doc": "导入SVG",
+ "align_to_page": "对齐元素到页面",
+ "align_bottom": "底部对齐",
+ "align_center": "居中对齐",
+ "align_left": "左对齐",
+ "align_middle": "水平居中对齐",
+ "align_right": "右对齐",
+ "align_top": "顶端对齐",
+ "mode_select": "选择工具",
+ "mode_fhpath": "铅笔工具",
+ "mode_line": "线工具",
+ "mode_connect": "连接两个对象",
+ "mode_rect": "矩形",
+ "mode_square": "正方形",
+ "mode_fhrect": "自由矩形",
+ "mode_ellipse": "椭圆",
+ "mode_circle": "圆形",
+ "mode_fhellipse": "自由椭圆",
+ "mode_path": "路径",
+ "mode_shapelib": "图形库",
+ "mode_text": "文字工具",
+ "mode_image": "图像工具",
+ "mode_zoom": "缩放工具",
+ "mode_eyedropper": "吸管",
+ "no_embed": "注意: 根据SVG图像的存储位置,内嵌的位图可能无法显示!",
+ "undo": "撤消",
+ "redo": "重做",
+ "tool_source": "编辑源",
+ "wireframe_mode": "线条模式",
+ "toggle_grid": "显示/隐藏 网格",
+ "clone": "克隆元素",
+ "del": "删除元素",
+ "group_elements": "组合元素",
+ "make_link": "创建超链接",
+ "set_link_url": "设置链接URL (设置为空以删除)",
+ "to_path": "转换为路径",
+ "reorient_path": "调整路径",
+ "ungroup": "取消组合元素",
+ "docprops": "文档属性",
+ "imagelib": "图像库",
+ "move_bottom": "移至底部",
+ "move_top": "移至顶部",
+ "node_clone": "复制节点",
+ "node_delete": "删除节点",
+ "node_link": "连接控制点",
+ "add_subpath": "添加子路径",
+ "openclose_path": "打开/关闭 子路径",
+ "source_save": "保存",
+ "cut": "剪切",
+ "copy": "复制",
+ "paste": "粘贴",
+ "paste_in_place": "粘贴到原位置",
+ "delete": "删除",
+ "group": "组合",
+ "move_front": "移至顶部",
+ "move_up": "向上移动",
+ "move_down": "向下移动",
+ "move_back": "移至底部"
+ },
+ layers: {
+ "layer": "图层",
+ "layers": "图层",
+ "del": "删除图层",
+ "move_down": "向下移动图层",
+ "new": "新建图层",
+ "rename": "重命名图层",
+ "move_up": "向上移动图层",
+ "dupe": "复制图层",
+ "merge_down": "向下合并",
+ "merge_all": "全部合并",
+ "move_elems_to": "移动元素至:",
+ "move_selected": "移动元素至另一个图层"
+ },
+ config: {
+ "image_props": "图像属性",
+ "doc_title": "标题",
+ "doc_dims": "画布大小",
+ "included_images": "包含图像",
+ "image_opt_embed": "嵌入数据 (本地文件)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "编辑器首选项",
+ "icon_size": "图标大小",
+ "language": "语言",
+ "background": "编辑器背景",
+ "editor_img_url": "图像 URL",
+ "editor_bg_note": "注意: 背景不会保存在图像中.",
+ "icon_large": "大",
+ "icon_medium": "中",
+ "icon_small": "小",
+ "icon_xlarge": "特大",
+ "select_predefined": "选择预定义:",
+ "units_and_rulers": "单位 & 标尺",
+ "show_rulers": "显示标尺",
+ "base_unit": "基本单位:",
+ "grid": "网格",
+ "snapping_onoff": "吸附开/关",
+ "snapping_stepsize": "吸附步长:",
+ "grid_color": "网格颜色"
+ },
+ shape_cats: {
+ "basic": "常规",
+ "object": "对象",
+ "symbol": "符号",
+ "arrow": "箭头",
+ "flowchart": "流程图",
+ "animal": "动物",
+ "game": "纸牌 & 棋子",
+ "dialog_balloon": "信息气球",
+ "electronics": "电力元件",
+ "math": "数学符号",
+ "music": "音乐符号",
+ "misc": "杂项",
+ "raphael_1": "常用图标1",
+ "raphael_2": "常用图标2"
+ },
+ imagelib: {
+ "select_lib": "选择一个图像库",
+ "show_list": "显示库列表",
+ "import_single": "单个导入",
+ "import_multi": "批量导入",
+ "open": "打开一个新文档"
+ },
+ notification: {
+ "invalidAttrValGiven": "无效的参数",
+ "noContentToFitTo": "无可适应的内容",
+ "dupeLayerName": "已存在同名的图层!",
+ "enterUniqueLayerName": "请输入一个唯一的图层名称",
+ "enterNewLayerName": "请输入新的图层名称",
+ "layerHasThatName": "图层已经采用了该名称",
+ "QmoveElemsToLayer": "您确定移动所选元素到图层'%s'吗?",
+ "QwantToClear": "您希望清除当前绘制的所有图形吗?\n该操作将无法撤消!",
+ "QwantToOpen": "您希望打开一个新文档吗?\n该操作将无法撤消!",
+ "QerrorsRevertToSource": "SVG文件解析错误.\n是否还原到最初的SVG文件?",
+ "QignoreSourceChanges": "忽略对SVG文件所作的更改么?",
+ "featNotSupported": "不支持该功能",
+ "enterNewImgURL": "请输入新图像的URLL",
+ "defsFailOnSave": "注意: 由于您所使用的浏览器存在缺陷, 该图像无法正确显示 (不支持渐变或相关元素). 修复该缺陷后可正确显示.",
+ "loadingImage": "正在加载图像, 请稍候...",
+ "saveFromBrowser": "选择浏览器中的 \"另存为...\" 将该图像保存为 %s 文件.",
+ "noteTheseIssues": "同时注意以下几点: ",
+ "unsavedChanges": "存在未保存的修改.",
+ "enterNewLinkURL": "输入新建链接的URL地址",
+ "errorLoadingSVG": "错误: 无法加载SVG数据",
+ "URLloadFail": "无法从URL中加载",
+ "retrieving": "检索 \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.zh-HK.js b/editor/locale/lang.zh-HK.js
index 5e567848..929c9a02 100644
--- a/editor/locale/lang.zh-HK.js
+++ b/editor/locale/lang.zh-HK.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "zh-HK",
- dir: "ltr",
- common: {
- "ok": "保存",
- "cancel": "取消",
- "key_backspace": "backspace",
- "key_del": "delete",
- "key_down": "down",
- "key_up": "up",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "点击更改填充颜色,按住Shift键单击更改颜色中风",
- "zoom_level": "更改缩放级别",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "更改填充颜色",
- "stroke_color": "中风的颜色变化",
- "stroke_style": "更改行程冲刺风格",
- "stroke_width": "笔划宽度的变化",
- "pos_x": "Change X coordinate",
- "pos_y": "Change Y coordinate",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "旋转角度的变化",
- "blur": "Change gaussian blur value",
- "opacity": "更改所选项目不透明",
- "circle_cx": "改变循环的CX坐标",
- "circle_cy": "改变循环的赛扬坐标",
- "circle_r": "改变圆的半径",
- "ellipse_cx": "改变椭圆的CX坐标",
- "ellipse_cy": "改变椭圆的赛扬坐标",
- "ellipse_rx": "改变椭圆的x半径",
- "ellipse_ry": "改变椭圆的y半径",
- "line_x1": "更改行的起点的x坐标",
- "line_x2": "更改行的结束x坐标",
- "line_y1": "更改行的起点的y坐标",
- "line_y2": "更改行的结束y坐标",
- "rect_height": "更改矩形的高度",
- "rect_width": "更改矩形的宽度",
- "corner_radius": "角半径:",
- "image_width": "更改图像的宽度",
- "image_height": "更改图像高度",
- "image_url": "更改网址",
- "node_x": "Change node's x coordinate",
- "node_y": "Change node's y coordinate",
- "seg_type": "Change Segment type",
- "straight_segments": "Straight",
- "curve_segments": "Curve",
- "text_contents": "更改文字内容",
- "font_family": "更改字体家族",
- "font_size": "更改字体大小",
- "bold": "粗体",
- "italic": "斜体文本"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "更改背景颜色/不透明",
- "connector_no_arrow": "No arrow",
- "fitToContent": "适合内容",
- "fit_to_all": "适合于所有的内容",
- "fit_to_canvas": "适合画布",
- "fit_to_layer_content": "适合层内容",
- "fit_to_sel": "适合选择",
- "align_relative_to": "相对对齐 ...",
- "relativeTo": "相对于:",
- "page": "网页",
- "largest_object": "最大对象",
- "selected_objects": "选对象",
- "smallest_object": "最小的对象",
- "new_doc": "新形象",
- "open_doc": "打开图像",
- "export_img": "Export",
- "save_doc": "保存图像",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "底部对齐",
- "align_center": "居中对齐",
- "align_left": "左对齐",
- "align_middle": "中间对齐",
- "align_right": "右对齐",
- "align_top": "顶端对齐",
- "mode_select": "选择工具",
- "mode_fhpath": "铅笔工具",
- "mode_line": "线工具",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "免费手矩形",
- "mode_ellipse": "椭圆",
- "mode_circle": "圈",
- "mode_fhellipse": "免费手椭圆",
- "mode_path": "Path Tool",
- "mode_shapelib": "Shape library",
- "mode_text": "文字工具",
- "mode_image": "图像工具",
- "mode_zoom": "缩放工具",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "撤消",
- "redo": "重做",
- "tool_source": "编辑源",
- "wireframe_mode": "Wireframe Mode",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "族元素",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "Convert to Path",
- "reorient_path": "Reorient path",
- "ungroup": "Ungroup Elements",
- "docprops": "文档属性",
- "imagelib": "Image Library",
- "move_bottom": "移至底部",
- "move_top": "移动到顶部",
- "node_clone": "Clone Node",
- "node_delete": "Delete Node",
- "node_link": "Link Control Points",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "保存",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "Layer",
- "layers": "Layers",
- "del": "删除层",
- "move_down": "层向下移动",
- "new": "新层",
- "rename": "重命名层",
- "move_up": "移动层最多",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "Move elements to:",
- "move_selected": "Move selected elements to a different layer"
- },
- config: {
- "image_props": "Image Properties",
- "doc_title": "Title",
- "doc_dims": "Canvas Dimensions",
- "included_images": "Included Images",
- "image_opt_embed": "Embed data (local files)",
- "image_opt_ref": "Use file reference",
- "editor_prefs": "Editor Preferences",
- "icon_size": "Icon size",
- "language": "Language",
- "background": "Editor Background",
- "editor_img_url": "Image URL",
- "editor_bg_note": "Note: Background will not be saved with image.",
- "icon_large": "Large",
- "icon_medium": "Medium",
- "icon_small": "Small",
- "icon_xlarge": "Extra Large",
- "select_predefined": "选择预定义:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "Invalid value given",
- "noContentToFitTo": "No content to fit to",
- "dupeLayerName": "There is already a layer named that!",
- "enterUniqueLayerName": "Please enter a unique layer name",
- "enterNewLayerName": "Please enter the new layer name",
- "layerHasThatName": "Layer already has that name",
- "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
- "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
- "QignoreSourceChanges": "Ignore changes made to SVG source?",
- "featNotSupported": "Feature not supported",
- "enterNewImgURL": "Enter the new image URL",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "zh-HK",
+ dir: "ltr",
+ common: {
+ "ok": "保存",
+ "cancel": "取消",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "点击更改填充颜色,按住Shift键单击更改颜色中风",
+ "zoom_level": "更改缩放级别",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "更改填充颜色",
+ "stroke_color": "中风的颜色变化",
+ "stroke_style": "更改行程冲刺风格",
+ "stroke_width": "笔划宽度的变化",
+ "pos_x": "Change X coordinate",
+ "pos_y": "Change Y coordinate",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "旋转角度的变化",
+ "blur": "Change gaussian blur value",
+ "opacity": "更改所选项目不透明",
+ "circle_cx": "改变循环的CX坐标",
+ "circle_cy": "改变循环的赛扬坐标",
+ "circle_r": "改变圆的半径",
+ "ellipse_cx": "改变椭圆的CX坐标",
+ "ellipse_cy": "改变椭圆的赛扬坐标",
+ "ellipse_rx": "改变椭圆的x半径",
+ "ellipse_ry": "改变椭圆的y半径",
+ "line_x1": "更改行的起点的x坐标",
+ "line_x2": "更改行的结束x坐标",
+ "line_y1": "更改行的起点的y坐标",
+ "line_y2": "更改行的结束y坐标",
+ "rect_height": "更改矩形的高度",
+ "rect_width": "更改矩形的宽度",
+ "corner_radius": "角半径:",
+ "image_width": "更改图像的宽度",
+ "image_height": "更改图像高度",
+ "image_url": "更改网址",
+ "node_x": "Change node's x coordinate",
+ "node_y": "Change node's y coordinate",
+ "seg_type": "Change Segment type",
+ "straight_segments": "Straight",
+ "curve_segments": "Curve",
+ "text_contents": "更改文字内容",
+ "font_family": "更改字体家族",
+ "font_size": "更改字体大小",
+ "bold": "粗体",
+ "italic": "斜体文本"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "更改背景颜色/不透明",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "适合内容",
+ "fit_to_all": "适合于所有的内容",
+ "fit_to_canvas": "适合画布",
+ "fit_to_layer_content": "适合层内容",
+ "fit_to_sel": "适合选择",
+ "align_relative_to": "相对对齐 ...",
+ "relativeTo": "相对于:",
+ "page": "网页",
+ "largest_object": "最大对象",
+ "selected_objects": "选对象",
+ "smallest_object": "最小的对象",
+ "new_doc": "新形象",
+ "open_doc": "打开图像",
+ "export_img": "Export",
+ "save_doc": "保存图像",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "底部对齐",
+ "align_center": "居中对齐",
+ "align_left": "左对齐",
+ "align_middle": "中间对齐",
+ "align_right": "右对齐",
+ "align_top": "顶端对齐",
+ "mode_select": "选择工具",
+ "mode_fhpath": "铅笔工具",
+ "mode_line": "线工具",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "免费手矩形",
+ "mode_ellipse": "椭圆",
+ "mode_circle": "圈",
+ "mode_fhellipse": "免费手椭圆",
+ "mode_path": "Path Tool",
+ "mode_shapelib": "Shape library",
+ "mode_text": "文字工具",
+ "mode_image": "图像工具",
+ "mode_zoom": "缩放工具",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "撤消",
+ "redo": "重做",
+ "tool_source": "编辑源",
+ "wireframe_mode": "Wireframe Mode",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "族元素",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "Convert to Path",
+ "reorient_path": "Reorient path",
+ "ungroup": "Ungroup Elements",
+ "docprops": "文档属性",
+ "imagelib": "Image Library",
+ "move_bottom": "移至底部",
+ "move_top": "移动到顶部",
+ "node_clone": "Clone Node",
+ "node_delete": "Delete Node",
+ "node_link": "Link Control Points",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "保存",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "Layer",
+ "layers": "Layers",
+ "del": "删除层",
+ "move_down": "层向下移动",
+ "new": "新层",
+ "rename": "重命名层",
+ "move_up": "移动层最多",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "Move elements to:",
+ "move_selected": "Move selected elements to a different layer"
+ },
+ config: {
+ "image_props": "Image Properties",
+ "doc_title": "Title",
+ "doc_dims": "Canvas Dimensions",
+ "included_images": "Included Images",
+ "image_opt_embed": "Embed data (local files)",
+ "image_opt_ref": "Use file reference",
+ "editor_prefs": "Editor Preferences",
+ "icon_size": "Icon size",
+ "language": "Language",
+ "background": "Editor Background",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "Note: Background will not be saved with image.",
+ "icon_large": "Large",
+ "icon_medium": "Medium",
+ "icon_small": "Small",
+ "icon_xlarge": "Extra Large",
+ "select_predefined": "选择预定义:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "Invalid value given",
+ "noContentToFitTo": "No content to fit to",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "enterNewLayerName": "Please enter the new layer name",
+ "layerHasThatName": "Layer already has that name",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "featNotSupported": "Feature not supported",
+ "enterNewImgURL": "Enter the new image URL",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/lang.zh-TW.js b/editor/locale/lang.zh-TW.js
index 7394b781..eee3e9fe 100644
--- a/editor/locale/lang.zh-TW.js
+++ b/editor/locale/lang.zh-TW.js
@@ -1,251 +1,251 @@
/* eslint-disable quotes */
/* globals svgEditor */
svgEditor.readLang({
- lang: "zh-TW",
- dir: "ltr",
- common: {
- "ok": "保存",
- "cancel": "取消",
- "key_backspace": "空白",
- "key_del": "刪除",
- "key_down": "下",
- "key_up": "上",
- "more_opts": "More Options",
- "url": "URL",
- "width": "Width",
- "height": "Height"
- },
- misc: {
- "powered_by": "Powered by"
- },
- ui: {
- "toggle_stroke_tools": "Show/hide more stroke tools",
- "palette_info": "點擊更改填充顏色,按住Shift鍵單擊更改線條顏色",
- "zoom_level": "更改縮放級別",
- "panel_drag": "Drag left/right to resize side panel"
- },
- properties: {
- "id": "Identify the element",
- "fill_color": "更改填充顏色",
- "stroke_color": "線條顏色",
- "stroke_style": "更改線條(虛線)風格",
- "stroke_width": "線條寬度",
- "pos_x": "調整 X 軸",
- "pos_y": "調整 Y 軸",
- "linecap_butt": "Linecap: Butt",
- "linecap_round": "Linecap: Round",
- "linecap_square": "Linecap: Square",
- "linejoin_bevel": "Linejoin: Bevel",
- "linejoin_miter": "Linejoin: Miter",
- "linejoin_round": "Linejoin: Round",
- "angle": "旋轉角度",
- "blur": "Change gaussian blur value",
- "opacity": "更改所選項目不透明度",
- "circle_cx": "改變圓的CX坐標",
- "circle_cy": "改變圓的CY坐標",
- "circle_r": "改變圓的半徑",
- "ellipse_cx": "改變橢圓的圓心x軸座標",
- "ellipse_cy": "改變橢圓的圓心y軸座標",
- "ellipse_rx": "改變橢圓的x軸長",
- "ellipse_ry": "改變橢圓的y軸長",
- "line_x1": "更改行的起點的x坐標",
- "line_x2": "更改行的終點x坐標",
- "line_y1": "更改行的起點的y坐標",
- "line_y2": "更改行的終點y坐標",
- "rect_height": "更改矩形的高度",
- "rect_width": "更改矩形的寬度",
- "corner_radius": "角半徑:",
- "image_width": "更改圖像的寬度",
- "image_height": "更改圖像高度",
- "image_url": "更改網址",
- "node_x": "改變節點的x軸座標",
- "node_y": "改變節點的y軸座標",
- "seg_type": "Change Segment type",
- "straight_segments": "直線",
- "curve_segments": "曲線",
- "text_contents": "更改文字內容",
- "font_family": "更改字體",
- "font_size": "更改字體大小",
- "bold": "粗體",
- "italic": "斜體"
- },
- tools: {
- "main_menu": "Main Menu",
- "bkgnd_color_opac": "更改背景顏色/不透明",
- "connector_no_arrow": "No arrow",
- "fitToContent": "適合內容",
- "fit_to_all": "適合所有的內容",
- "fit_to_canvas": "適合畫布",
- "fit_to_layer_content": "適合圖層內容",
- "fit_to_sel": "適合選取的物件",
- "align_relative_to": "相對對齊 ...",
- "relativeTo": "相對於:",
- "page": "網頁",
- "largest_object": "最大的物件",
- "selected_objects": "選取物件",
- "smallest_object": "最小的物件",
- "new_doc": "清空圖像",
- "open_doc": "打開圖像",
- "export_img": "Export",
- "save_doc": "保存圖像",
- "import_doc": "Import Image",
- "align_to_page": "Align Element to Page",
- "align_bottom": "底部對齊",
- "align_center": "居中對齊",
- "align_left": "向左對齊",
- "align_middle": "中間對齊",
- "align_right": "向右對齊",
- "align_top": "頂端對齊",
- "mode_select": "選擇工具",
- "mode_fhpath": "鉛筆工具",
- "mode_line": "線工具",
- "mode_connect": "Connect two objects",
- "mode_rect": "Rectangle Tool",
- "mode_square": "Square Tool",
- "mode_fhrect": "徒手畫矩形",
- "mode_ellipse": "橢圓",
- "mode_circle": "圓",
- "mode_fhellipse": "徒手畫橢圓",
- "mode_path": "路徑工具",
- "mode_shapelib": "Shape library",
- "mode_text": "文字工具",
- "mode_image": "圖像工具",
- "mode_zoom": "縮放工具",
- "mode_eyedropper": "Eye Dropper Tool",
- "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
- "undo": "取消復原",
- "redo": "復原",
- "tool_source": "編輯SVG原始碼",
- "wireframe_mode": "框線模式(只瀏覽線條)",
- "toggle_grid": "Show/Hide Grid",
- "clone": "Clone Element(s)",
- "del": "Delete Element(s)",
- "group_elements": "群組",
- "make_link": "Make (hyper)link",
- "set_link_url": "Set link URL (leave empty to remove)",
- "to_path": "轉換成路徑",
- "reorient_path": "調整路徑",
- "ungroup": "取消群組",
- "docprops": "文件屬性",
- "imagelib": "Image Library",
- "move_bottom": "移至底部",
- "move_top": "移動到頂部",
- "node_clone": "增加節點",
- "node_delete": "刪除節點",
- "node_link": "將控制點連起來",
- "add_subpath": "Add sub-path",
- "openclose_path": "Open/close sub-path",
- "source_save": "保存",
- "cut": "Cut",
- "copy": "Copy",
- "paste": "Paste",
- "paste_in_place": "Paste in Place",
- "delete": "Delete",
- "group": "Group",
- "move_front": "Bring to Front",
- "move_up": "Bring Forward",
- "move_down": "Send Backward",
- "move_back": "Send to Back"
- },
- layers: {
- "layer": "圖層",
- "layers": "Layers",
- "del": "刪除圖層",
- "move_down": "向下移動圖層",
- "new": "新增圖層",
- "rename": "重新命名圖層",
- "move_up": "向上移動圖層",
- "dupe": "Duplicate Layer",
- "merge_down": "Merge Down",
- "merge_all": "Merge All",
- "move_elems_to": "移動物件到:",
- "move_selected": "移動被點選的物件其他圖層"
- },
- config: {
- "image_props": "圖片屬性",
- "doc_title": "標題",
- "doc_dims": "畫布大小",
- "included_images": "包含圖像",
- "image_opt_embed": "內嵌資料 (本地端檔案)",
- "image_opt_ref": "使用檔案參照",
- "editor_prefs": "編輯器屬性",
- "icon_size": "圖示大小",
- "language": "語言",
- "background": "編輯器背景",
- "editor_img_url": "Image URL",
- "editor_bg_note": "注意: 編輯器背景不會和圖像一起儲存",
- "icon_large": "大",
- "icon_medium": "中",
- "icon_small": "小",
- "icon_xlarge": "特大",
- "select_predefined": "使用預設值:",
- "units_and_rulers": "Units & Rulers",
- "show_rulers": "Show rulers",
- "base_unit": "Base Unit:",
- "grid": "Grid",
- "snapping_onoff": "Snapping on/off",
- "snapping_stepsize": "Snapping Step-Size:",
- "grid_color": "Grid color"
- },
- shape_cats: {
- "basic": "Basic",
- "object": "Objects",
- "symbol": "Symbols",
- "arrow": "Arrows",
- "flowchart": "Flowchart",
- "animal": "Animals",
- "game": "Cards & Chess",
- "dialog_balloon": "Dialog balloons",
- "electronics": "Electronics",
- "math": "Mathematical",
- "music": "Music",
- "misc": "Miscellaneous",
- "raphael_1": "raphaeljs.com set 1",
- "raphael_2": "raphaeljs.com set 2"
- },
- imagelib: {
- "select_lib": "Select an image library",
- "show_list": "Show library list",
- "import_single": "Import single",
- "import_multi": "Import multiple",
- "open": "Open as new document"
- },
- notification: {
- "invalidAttrValGiven": "數值給定錯誤",
- "noContentToFitTo": "找不到符合的內容",
- "dupeLayerName": "喔不!已經有另一個同樣名稱的圖層了!",
- "enterUniqueLayerName": "請輸入一個名稱不重複的",
- "enterNewLayerName": "請輸入新圖層的名稱",
- "layerHasThatName": "圖層本來就是這個名稱(抱怨)",
- "QmoveElemsToLayer": "要搬移所選取的物件到'%s'層嗎?",
- "QwantToClear": "要清空圖像嗎?\n這會順便清空你的回復紀錄!",
- "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
- "QerrorsRevertToSource": "SVG原始碼解析錯誤\n要回復到原本的SVG原始碼嗎?",
- "QignoreSourceChanges": "要忽略對SVG原始碼的更動嗎?",
- "featNotSupported": "未提供此功能",
- "enterNewImgURL": "輸入新的圖片網址",
- "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
- "loadingImage": "Loading image, please wait...",
- "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
- "noteTheseIssues": "Also note the following issues: ",
- "unsavedChanges": "There are unsaved changes.",
- "enterNewLinkURL": "Enter the new hyperlink URL",
- "errorLoadingSVG": "Error: Unable to load SVG data",
- "URLloadFail": "Unable to load from URL",
- "retrieving": "Retrieving \"%s\"..."
- },
- confirmSetStorage: {
- message: "By default and where supported, SVG-Edit can store your editor " +
- "preferences and SVG content locally on your machine so you do not " +
- "need to add these back each time you load SVG-Edit. If, for privacy " +
- "reasons, you do not wish to store this information on your machine, " +
- "you can change away from the default option below.",
- storagePrefsAndContent: "Store preferences and SVG content locally",
- storagePrefsOnly: "Only store preferences locally",
- storagePrefs: "Store preferences locally",
- storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
- storageNoPrefs: "Do not store my preferences locally",
- rememberLabel: "Remember this choice?",
- rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
- }
+ lang: "zh-TW",
+ dir: "ltr",
+ common: {
+ "ok": "保存",
+ "cancel": "取消",
+ "key_backspace": "空白",
+ "key_del": "刪除",
+ "key_down": "下",
+ "key_up": "上",
+ "more_opts": "More Options",
+ "url": "URL",
+ "width": "Width",
+ "height": "Height"
+ },
+ misc: {
+ "powered_by": "Powered by"
+ },
+ ui: {
+ "toggle_stroke_tools": "Show/hide more stroke tools",
+ "palette_info": "點擊更改填充顏色,按住Shift鍵單擊更改線條顏色",
+ "zoom_level": "更改縮放級別",
+ "panel_drag": "Drag left/right to resize side panel"
+ },
+ properties: {
+ "id": "Identify the element",
+ "fill_color": "更改填充顏色",
+ "stroke_color": "線條顏色",
+ "stroke_style": "更改線條(虛線)風格",
+ "stroke_width": "線條寬度",
+ "pos_x": "調整 X 軸",
+ "pos_y": "調整 Y 軸",
+ "linecap_butt": "Linecap: Butt",
+ "linecap_round": "Linecap: Round",
+ "linecap_square": "Linecap: Square",
+ "linejoin_bevel": "Linejoin: Bevel",
+ "linejoin_miter": "Linejoin: Miter",
+ "linejoin_round": "Linejoin: Round",
+ "angle": "旋轉角度",
+ "blur": "Change gaussian blur value",
+ "opacity": "更改所選項目不透明度",
+ "circle_cx": "改變圓的CX坐標",
+ "circle_cy": "改變圓的CY坐標",
+ "circle_r": "改變圓的半徑",
+ "ellipse_cx": "改變橢圓的圓心x軸座標",
+ "ellipse_cy": "改變橢圓的圓心y軸座標",
+ "ellipse_rx": "改變橢圓的x軸長",
+ "ellipse_ry": "改變橢圓的y軸長",
+ "line_x1": "更改行的起點的x坐標",
+ "line_x2": "更改行的終點x坐標",
+ "line_y1": "更改行的起點的y坐標",
+ "line_y2": "更改行的終點y坐標",
+ "rect_height": "更改矩形的高度",
+ "rect_width": "更改矩形的寬度",
+ "corner_radius": "角半徑:",
+ "image_width": "更改圖像的寬度",
+ "image_height": "更改圖像高度",
+ "image_url": "更改網址",
+ "node_x": "改變節點的x軸座標",
+ "node_y": "改變節點的y軸座標",
+ "seg_type": "Change Segment type",
+ "straight_segments": "直線",
+ "curve_segments": "曲線",
+ "text_contents": "更改文字內容",
+ "font_family": "更改字體",
+ "font_size": "更改字體大小",
+ "bold": "粗體",
+ "italic": "斜體"
+ },
+ tools: {
+ "main_menu": "Main Menu",
+ "bkgnd_color_opac": "更改背景顏色/不透明",
+ "connector_no_arrow": "No arrow",
+ "fitToContent": "適合內容",
+ "fit_to_all": "適合所有的內容",
+ "fit_to_canvas": "適合畫布",
+ "fit_to_layer_content": "適合圖層內容",
+ "fit_to_sel": "適合選取的物件",
+ "align_relative_to": "相對對齊 ...",
+ "relativeTo": "相對於:",
+ "page": "網頁",
+ "largest_object": "最大的物件",
+ "selected_objects": "選取物件",
+ "smallest_object": "最小的物件",
+ "new_doc": "清空圖像",
+ "open_doc": "打開圖像",
+ "export_img": "Export",
+ "save_doc": "保存圖像",
+ "import_doc": "Import Image",
+ "align_to_page": "Align Element to Page",
+ "align_bottom": "底部對齊",
+ "align_center": "居中對齊",
+ "align_left": "向左對齊",
+ "align_middle": "中間對齊",
+ "align_right": "向右對齊",
+ "align_top": "頂端對齊",
+ "mode_select": "選擇工具",
+ "mode_fhpath": "鉛筆工具",
+ "mode_line": "線工具",
+ "mode_connect": "Connect two objects",
+ "mode_rect": "Rectangle Tool",
+ "mode_square": "Square Tool",
+ "mode_fhrect": "徒手畫矩形",
+ "mode_ellipse": "橢圓",
+ "mode_circle": "圓",
+ "mode_fhellipse": "徒手畫橢圓",
+ "mode_path": "路徑工具",
+ "mode_shapelib": "Shape library",
+ "mode_text": "文字工具",
+ "mode_image": "圖像工具",
+ "mode_zoom": "縮放工具",
+ "mode_eyedropper": "Eye Dropper Tool",
+ "no_embed": "NOTE: This image cannot be embedded. It will depend on this path to be displayed",
+ "undo": "取消復原",
+ "redo": "復原",
+ "tool_source": "編輯SVG原始碼",
+ "wireframe_mode": "框線模式(只瀏覽線條)",
+ "toggle_grid": "Show/Hide Grid",
+ "clone": "Clone Element(s)",
+ "del": "Delete Element(s)",
+ "group_elements": "群組",
+ "make_link": "Make (hyper)link",
+ "set_link_url": "Set link URL (leave empty to remove)",
+ "to_path": "轉換成路徑",
+ "reorient_path": "調整路徑",
+ "ungroup": "取消群組",
+ "docprops": "文件屬性",
+ "imagelib": "Image Library",
+ "move_bottom": "移至底部",
+ "move_top": "移動到頂部",
+ "node_clone": "增加節點",
+ "node_delete": "刪除節點",
+ "node_link": "將控制點連起來",
+ "add_subpath": "Add sub-path",
+ "openclose_path": "Open/close sub-path",
+ "source_save": "保存",
+ "cut": "Cut",
+ "copy": "Copy",
+ "paste": "Paste",
+ "paste_in_place": "Paste in Place",
+ "delete": "Delete",
+ "group": "Group",
+ "move_front": "Bring to Front",
+ "move_up": "Bring Forward",
+ "move_down": "Send Backward",
+ "move_back": "Send to Back"
+ },
+ layers: {
+ "layer": "圖層",
+ "layers": "Layers",
+ "del": "刪除圖層",
+ "move_down": "向下移動圖層",
+ "new": "新增圖層",
+ "rename": "重新命名圖層",
+ "move_up": "向上移動圖層",
+ "dupe": "Duplicate Layer",
+ "merge_down": "Merge Down",
+ "merge_all": "Merge All",
+ "move_elems_to": "移動物件到:",
+ "move_selected": "移動被點選的物件其他圖層"
+ },
+ config: {
+ "image_props": "圖片屬性",
+ "doc_title": "標題",
+ "doc_dims": "畫布大小",
+ "included_images": "包含圖像",
+ "image_opt_embed": "內嵌資料 (本地端檔案)",
+ "image_opt_ref": "使用檔案參照",
+ "editor_prefs": "編輯器屬性",
+ "icon_size": "圖示大小",
+ "language": "語言",
+ "background": "編輯器背景",
+ "editor_img_url": "Image URL",
+ "editor_bg_note": "注意: 編輯器背景不會和圖像一起儲存",
+ "icon_large": "大",
+ "icon_medium": "中",
+ "icon_small": "小",
+ "icon_xlarge": "特大",
+ "select_predefined": "使用預設值:",
+ "units_and_rulers": "Units & Rulers",
+ "show_rulers": "Show rulers",
+ "base_unit": "Base Unit:",
+ "grid": "Grid",
+ "snapping_onoff": "Snapping on/off",
+ "snapping_stepsize": "Snapping Step-Size:",
+ "grid_color": "Grid color"
+ },
+ shape_cats: {
+ "basic": "Basic",
+ "object": "Objects",
+ "symbol": "Symbols",
+ "arrow": "Arrows",
+ "flowchart": "Flowchart",
+ "animal": "Animals",
+ "game": "Cards & Chess",
+ "dialog_balloon": "Dialog balloons",
+ "electronics": "Electronics",
+ "math": "Mathematical",
+ "music": "Music",
+ "misc": "Miscellaneous",
+ "raphael_1": "raphaeljs.com set 1",
+ "raphael_2": "raphaeljs.com set 2"
+ },
+ imagelib: {
+ "select_lib": "Select an image library",
+ "show_list": "Show library list",
+ "import_single": "Import single",
+ "import_multi": "Import multiple",
+ "open": "Open as new document"
+ },
+ notification: {
+ "invalidAttrValGiven": "數值給定錯誤",
+ "noContentToFitTo": "找不到符合的內容",
+ "dupeLayerName": "喔不!已經有另一個同樣名稱的圖層了!",
+ "enterUniqueLayerName": "請輸入一個名稱不重複的",
+ "enterNewLayerName": "請輸入新圖層的名稱",
+ "layerHasThatName": "圖層本來就是這個名稱(抱怨)",
+ "QmoveElemsToLayer": "要搬移所選取的物件到'%s'層嗎?",
+ "QwantToClear": "要清空圖像嗎?\n這會順便清空你的回復紀錄!",
+ "QwantToOpen": "Do you want to open a new file?\nThis will also erase your undo history!",
+ "QerrorsRevertToSource": "SVG原始碼解析錯誤\n要回復到原本的SVG原始碼嗎?",
+ "QignoreSourceChanges": "要忽略對SVG原始碼的更動嗎?",
+ "featNotSupported": "未提供此功能",
+ "enterNewImgURL": "輸入新的圖片網址",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "loadingImage": "Loading image, please wait...",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "unsavedChanges": "There are unsaved changes.",
+ "enterNewLinkURL": "Enter the new hyperlink URL",
+ "errorLoadingSVG": "Error: Unable to load SVG data",
+ "URLloadFail": "Unable to load from URL",
+ "retrieving": "Retrieving \"%s\"..."
+ },
+ confirmSetStorage: {
+ message: "By default and where supported, SVG-Edit can store your editor " +
+ "preferences and SVG content locally on your machine so you do not " +
+ "need to add these back each time you load SVG-Edit. If, for privacy " +
+ "reasons, you do not wish to store this information on your machine, " +
+ "you can change away from the default option below.",
+ storagePrefsAndContent: "Store preferences and SVG content locally",
+ storagePrefsOnly: "Only store preferences locally",
+ storagePrefs: "Store preferences locally",
+ storageNoPrefsOrContent: "Do not store my preferences or SVG content locally",
+ storageNoPrefs: "Do not store my preferences locally",
+ rememberLabel: "Remember this choice?",
+ rememberTooltip: "If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again."
+ }
});
diff --git a/editor/locale/locale.js b/editor/locale/locale.js
index 19011991..f534e491 100644
--- a/editor/locale/locale.js
+++ b/editor/locale/locale.js
@@ -21,300 +21,300 @@ var svgEditor = (function ($, editor) {
var langParam;
function setStrings (type, obj, ids) {
- // Root element to look for element from
- var sel, val, $elem, elem, parent = $('#svg_editor').parent();
- for (sel in obj) {
- val = obj[sel];
- if (!val) { console.log(sel); }
+ // Root element to look for element from
+ var sel, val, $elem, elem, parent = $('#svg_editor').parent();
+ for (sel in obj) {
+ val = obj[sel];
+ if (!val) { console.log(sel); }
- if (ids) { sel = '#' + sel; }
- $elem = parent.find(sel);
- if ($elem.length) {
- elem = parent.find(sel)[0];
+ if (ids) { sel = '#' + sel; }
+ $elem = parent.find(sel);
+ if ($elem.length) {
+ elem = parent.find(sel)[0];
- switch (type) {
- case 'content':
- for (var i = 0, node; (node = elem.childNodes[i]); i++) {
- if (node.nodeType === 3 && node.textContent.trim()) {
- node.textContent = val;
- break;
- }
- }
- break;
+ switch (type) {
+ case 'content':
+ for (var i = 0, node; (node = elem.childNodes[i]); i++) {
+ if (node.nodeType === 3 && node.textContent.trim()) {
+ node.textContent = val;
+ break;
+ }
+ }
+ break;
- case 'title':
- elem.title = val;
- break;
- }
- } else {
- console.log('Missing: ' + sel);
- }
- }
+ case 'title':
+ elem.title = val;
+ break;
+ }
+ } else {
+ console.log('Missing: ' + sel);
+ }
+ }
}
editor.readLang = function (langData) {
- var more = editor.canvas.runExtensions('addlangData', langParam, true);
- $.each(more, function (i, m) {
- if (m.data) {
- langData = $.merge(langData, m.data);
- }
- });
+ var more = editor.canvas.runExtensions('addlangData', langParam, true);
+ $.each(more, function (i, m) {
+ if (m.data) {
+ langData = $.merge(langData, m.data);
+ }
+ });
- // Old locale file, do nothing for now.
- if (!langData.tools) { return; }
+ // Old locale file, do nothing for now.
+ if (!langData.tools) { return; }
- var tools = langData.tools,
- // misc = langData.misc,
- properties = langData.properties,
- config = langData.config,
- layers = langData.layers,
- common = langData.common,
- ui = langData.ui;
+ var tools = langData.tools,
+ // misc = langData.misc,
+ properties = langData.properties,
+ config = langData.config,
+ layers = langData.layers,
+ common = langData.common,
+ ui = langData.ui;
- setStrings('content', {
- // copyrightLabel: misc.powered_by, // Currently commented out in svg-editor.html
- curve_segments: properties.curve_segments,
- fitToContent: tools.fitToContent,
- fit_to_all: tools.fit_to_all,
- fit_to_canvas: tools.fit_to_canvas,
- fit_to_layer_content: tools.fit_to_layer_content,
- fit_to_sel: tools.fit_to_sel,
+ setStrings('content', {
+ // copyrightLabel: misc.powered_by, // Currently commented out in svg-editor.html
+ curve_segments: properties.curve_segments,
+ fitToContent: tools.fitToContent,
+ fit_to_all: tools.fit_to_all,
+ fit_to_canvas: tools.fit_to_canvas,
+ fit_to_layer_content: tools.fit_to_layer_content,
+ fit_to_sel: tools.fit_to_sel,
- icon_large: config.icon_large,
- icon_medium: config.icon_medium,
- icon_small: config.icon_small,
- icon_xlarge: config.icon_xlarge,
- image_opt_embed: config.image_opt_embed,
- image_opt_ref: config.image_opt_ref,
- includedImages: config.included_images,
+ icon_large: config.icon_large,
+ icon_medium: config.icon_medium,
+ icon_small: config.icon_small,
+ icon_xlarge: config.icon_xlarge,
+ image_opt_embed: config.image_opt_embed,
+ image_opt_ref: config.image_opt_ref,
+ includedImages: config.included_images,
- largest_object: tools.largest_object,
+ largest_object: tools.largest_object,
- layersLabel: layers.layers,
- page: tools.page,
- relativeToLabel: tools.relativeTo,
- selLayerLabel: layers.move_elems_to,
- selectedPredefined: config.select_predefined,
+ layersLabel: layers.layers,
+ page: tools.page,
+ relativeToLabel: tools.relativeTo,
+ selLayerLabel: layers.move_elems_to,
+ selectedPredefined: config.select_predefined,
- selected_objects: tools.selected_objects,
- smallest_object: tools.smallest_object,
- straight_segments: properties.straight_segments,
+ selected_objects: tools.selected_objects,
+ smallest_object: tools.smallest_object,
+ straight_segments: properties.straight_segments,
- svginfo_bg_url: config.editor_img_url + ':',
- svginfo_bg_note: config.editor_bg_note,
- svginfo_change_background: config.background,
- svginfo_dim: config.doc_dims,
- svginfo_editor_prefs: config.editor_prefs,
- svginfo_height: common.height,
- svginfo_icons: config.icon_size,
- svginfo_image_props: config.image_props,
- svginfo_lang: config.language,
- svginfo_title: config.doc_title,
- svginfo_width: common.width,
+ svginfo_bg_url: config.editor_img_url + ':',
+ svginfo_bg_note: config.editor_bg_note,
+ svginfo_change_background: config.background,
+ svginfo_dim: config.doc_dims,
+ svginfo_editor_prefs: config.editor_prefs,
+ svginfo_height: common.height,
+ svginfo_icons: config.icon_size,
+ svginfo_image_props: config.image_props,
+ svginfo_lang: config.language,
+ svginfo_title: config.doc_title,
+ svginfo_width: common.width,
- tool_docprops_cancel: common.cancel,
- tool_docprops_save: common.ok,
+ tool_docprops_cancel: common.cancel,
+ tool_docprops_save: common.ok,
- tool_source_cancel: common.cancel,
- tool_source_save: common.ok,
+ tool_source_cancel: common.cancel,
+ tool_source_save: common.ok,
- tool_prefs_cancel: common.cancel,
- tool_prefs_save: common.ok,
+ tool_prefs_cancel: common.cancel,
+ tool_prefs_save: common.ok,
- sidepanel_handle: layers.layers.split('').join(' '),
+ sidepanel_handle: layers.layers.split('').join(' '),
- tool_clear: tools.new_doc,
- tool_docprops: tools.docprops,
- tool_export: tools.export_img,
- tool_import: tools.import_doc,
- tool_imagelib: tools.imagelib,
- tool_open: tools.open_doc,
- tool_save: tools.save_doc,
+ tool_clear: tools.new_doc,
+ tool_docprops: tools.docprops,
+ tool_export: tools.export_img,
+ tool_import: tools.import_doc,
+ tool_imagelib: tools.imagelib,
+ tool_open: tools.open_doc,
+ tool_save: tools.save_doc,
- svginfo_units_rulers: config.units_and_rulers,
- svginfo_rulers_onoff: config.show_rulers,
- svginfo_unit: config.base_unit,
+ svginfo_units_rulers: config.units_and_rulers,
+ svginfo_rulers_onoff: config.show_rulers,
+ svginfo_unit: config.base_unit,
- svginfo_grid_settings: config.grid,
- svginfo_snap_onoff: config.snapping_onoff,
- svginfo_snap_step: config.snapping_stepsize,
- svginfo_grid_color: config.grid_color
- }, true);
+ svginfo_grid_settings: config.grid,
+ svginfo_snap_onoff: config.snapping_onoff,
+ svginfo_snap_step: config.snapping_stepsize,
+ svginfo_grid_color: config.grid_color
+ }, true);
- // Shape categories
- var o, cats = {};
- for (o in langData.shape_cats) {
- cats['#shape_cats [data-cat="' + o + '"]'] = langData.shape_cats[o];
- }
+ // Shape categories
+ var o, cats = {};
+ for (o in langData.shape_cats) {
+ cats['#shape_cats [data-cat="' + o + '"]'] = langData.shape_cats[o];
+ }
- // TODO: Find way to make this run after shapelib ext has loaded
- setTimeout(function () {
- setStrings('content', cats);
- }, 2000);
+ // TODO: Find way to make this run after shapelib ext has loaded
+ setTimeout(function () {
+ setStrings('content', cats);
+ }, 2000);
- // Context menus
- var opts = {};
- $.each(['cut', 'copy', 'paste', 'paste_in_place', 'delete', 'group', 'ungroup', 'move_front', 'move_up', 'move_down', 'move_back'], function () {
- opts['#cmenu_canvas a[href="#' + this + '"]'] = tools[this];
- });
+ // Context menus
+ var opts = {};
+ $.each(['cut', 'copy', 'paste', 'paste_in_place', 'delete', 'group', 'ungroup', 'move_front', 'move_up', 'move_down', 'move_back'], function () {
+ opts['#cmenu_canvas a[href="#' + this + '"]'] = tools[this];
+ });
- $.each(['dupe', 'merge_down', 'merge_all'], function () {
- opts['#cmenu_layers a[href="#' + this + '"]'] = layers[this];
- });
+ $.each(['dupe', 'merge_down', 'merge_all'], function () {
+ opts['#cmenu_layers a[href="#' + this + '"]'] = layers[this];
+ });
- opts['#cmenu_layers a[href="#delete"]'] = layers.del;
+ opts['#cmenu_layers a[href="#delete"]'] = layers.del;
- setStrings('content', opts);
+ setStrings('content', opts);
- setStrings('title', {
- align_relative_to: tools.align_relative_to,
- circle_cx: properties.circle_cx,
- circle_cy: properties.circle_cy,
- circle_r: properties.circle_r,
- cornerRadiusLabel: properties.corner_radius,
- ellipse_cx: properties.ellipse_cx,
- ellipse_cy: properties.ellipse_cy,
- ellipse_rx: properties.ellipse_rx,
- ellipse_ry: properties.ellipse_ry,
- fill_color: properties.fill_color,
- font_family: properties.font_family,
- idLabel: properties.id,
- image_height: properties.image_height,
- image_url: properties.image_url,
- image_width: properties.image_width,
- layer_delete: layers.del,
- layer_down: layers.move_down,
- layer_new: layers['new'],
- layer_rename: layers.rename,
- layer_moreopts: common.more_opts,
- layer_up: layers.move_up,
- line_x1: properties.line_x1,
- line_x2: properties.line_x2,
- line_y1: properties.line_y1,
- line_y2: properties.line_y2,
- linecap_butt: properties.linecap_butt,
- linecap_round: properties.linecap_round,
- linecap_square: properties.linecap_square,
- linejoin_bevel: properties.linejoin_bevel,
- linejoin_miter: properties.linejoin_miter,
- linejoin_round: properties.linejoin_round,
- main_icon: tools.main_menu,
- mode_connect: tools.mode_connect,
- tools_shapelib_show: tools.mode_shapelib,
- palette: ui.palette_info,
- zoom_panel: ui.zoom_level,
- path_node_x: properties.node_x,
- path_node_y: properties.node_y,
- rect_height_tool: properties.rect_height,
- rect_width_tool: properties.rect_width,
- seg_type: properties.seg_type,
- selLayerNames: layers.move_selected,
- selected_x: properties.pos_x,
- selected_y: properties.pos_y,
- stroke_color: properties.stroke_color,
- stroke_style: properties.stroke_style,
- stroke_width: properties.stroke_width,
- svginfo_title: config.doc_title,
- text: properties.text_contents,
- toggle_stroke_tools: ui.toggle_stroke_tools,
- tool_add_subpath: tools.add_subpath,
- tool_alignbottom: tools.align_bottom,
- tool_aligncenter: tools.align_center,
- tool_alignleft: tools.align_left,
- tool_alignmiddle: tools.align_middle,
- tool_alignright: tools.align_right,
- tool_aligntop: tools.align_top,
- tool_angle: properties.angle,
- tool_blur: properties.blur,
- tool_bold: properties.bold,
- tool_circle: tools.mode_circle,
- tool_clone: tools.clone,
- tool_clone_multi: tools.clone,
- tool_delete: tools.del,
- tool_delete_multi: tools.del,
- tool_ellipse: tools.mode_ellipse,
- tool_eyedropper: tools.mode_eyedropper,
- tool_fhellipse: tools.mode_fhellipse,
- tool_fhpath: tools.mode_fhpath,
- tool_fhrect: tools.mode_fhrect,
- tool_font_size: properties.font_size,
- tool_group_elements: tools.group_elements,
- tool_make_link: tools.make_link,
- tool_link_url: tools.set_link_url,
- tool_image: tools.mode_image,
- tool_italic: properties.italic,
- tool_line: tools.mode_line,
- tool_move_bottom: tools.move_bottom,
- tool_move_top: tools.move_top,
- tool_node_clone: tools.node_clone,
- tool_node_delete: tools.node_delete,
- tool_node_link: tools.node_link,
- tool_opacity: properties.opacity,
- tool_openclose_path: tools.openclose_path,
- tool_path: tools.mode_path,
- tool_position: tools.align_to_page,
- tool_rect: tools.mode_rect,
- tool_redo: tools.redo,
- tool_reorient: tools.reorient_path,
- tool_select: tools.mode_select,
- tool_source: tools.source_save,
- tool_square: tools.mode_square,
- tool_text: tools.mode_text,
- tool_topath: tools.to_path,
- tool_undo: tools.undo,
- tool_ungroup: tools.ungroup,
- tool_wireframe: tools.wireframe_mode,
- view_grid: tools.toggle_grid,
- tool_zoom: tools.mode_zoom,
- url_notice: tools.no_embed
+ setStrings('title', {
+ align_relative_to: tools.align_relative_to,
+ circle_cx: properties.circle_cx,
+ circle_cy: properties.circle_cy,
+ circle_r: properties.circle_r,
+ cornerRadiusLabel: properties.corner_radius,
+ ellipse_cx: properties.ellipse_cx,
+ ellipse_cy: properties.ellipse_cy,
+ ellipse_rx: properties.ellipse_rx,
+ ellipse_ry: properties.ellipse_ry,
+ fill_color: properties.fill_color,
+ font_family: properties.font_family,
+ idLabel: properties.id,
+ image_height: properties.image_height,
+ image_url: properties.image_url,
+ image_width: properties.image_width,
+ layer_delete: layers.del,
+ layer_down: layers.move_down,
+ layer_new: layers['new'],
+ layer_rename: layers.rename,
+ layer_moreopts: common.more_opts,
+ layer_up: layers.move_up,
+ line_x1: properties.line_x1,
+ line_x2: properties.line_x2,
+ line_y1: properties.line_y1,
+ line_y2: properties.line_y2,
+ linecap_butt: properties.linecap_butt,
+ linecap_round: properties.linecap_round,
+ linecap_square: properties.linecap_square,
+ linejoin_bevel: properties.linejoin_bevel,
+ linejoin_miter: properties.linejoin_miter,
+ linejoin_round: properties.linejoin_round,
+ main_icon: tools.main_menu,
+ mode_connect: tools.mode_connect,
+ tools_shapelib_show: tools.mode_shapelib,
+ palette: ui.palette_info,
+ zoom_panel: ui.zoom_level,
+ path_node_x: properties.node_x,
+ path_node_y: properties.node_y,
+ rect_height_tool: properties.rect_height,
+ rect_width_tool: properties.rect_width,
+ seg_type: properties.seg_type,
+ selLayerNames: layers.move_selected,
+ selected_x: properties.pos_x,
+ selected_y: properties.pos_y,
+ stroke_color: properties.stroke_color,
+ stroke_style: properties.stroke_style,
+ stroke_width: properties.stroke_width,
+ svginfo_title: config.doc_title,
+ text: properties.text_contents,
+ toggle_stroke_tools: ui.toggle_stroke_tools,
+ tool_add_subpath: tools.add_subpath,
+ tool_alignbottom: tools.align_bottom,
+ tool_aligncenter: tools.align_center,
+ tool_alignleft: tools.align_left,
+ tool_alignmiddle: tools.align_middle,
+ tool_alignright: tools.align_right,
+ tool_aligntop: tools.align_top,
+ tool_angle: properties.angle,
+ tool_blur: properties.blur,
+ tool_bold: properties.bold,
+ tool_circle: tools.mode_circle,
+ tool_clone: tools.clone,
+ tool_clone_multi: tools.clone,
+ tool_delete: tools.del,
+ tool_delete_multi: tools.del,
+ tool_ellipse: tools.mode_ellipse,
+ tool_eyedropper: tools.mode_eyedropper,
+ tool_fhellipse: tools.mode_fhellipse,
+ tool_fhpath: tools.mode_fhpath,
+ tool_fhrect: tools.mode_fhrect,
+ tool_font_size: properties.font_size,
+ tool_group_elements: tools.group_elements,
+ tool_make_link: tools.make_link,
+ tool_link_url: tools.set_link_url,
+ tool_image: tools.mode_image,
+ tool_italic: properties.italic,
+ tool_line: tools.mode_line,
+ tool_move_bottom: tools.move_bottom,
+ tool_move_top: tools.move_top,
+ tool_node_clone: tools.node_clone,
+ tool_node_delete: tools.node_delete,
+ tool_node_link: tools.node_link,
+ tool_opacity: properties.opacity,
+ tool_openclose_path: tools.openclose_path,
+ tool_path: tools.mode_path,
+ tool_position: tools.align_to_page,
+ tool_rect: tools.mode_rect,
+ tool_redo: tools.redo,
+ tool_reorient: tools.reorient_path,
+ tool_select: tools.mode_select,
+ tool_source: tools.source_save,
+ tool_square: tools.mode_square,
+ tool_text: tools.mode_text,
+ tool_topath: tools.to_path,
+ tool_undo: tools.undo,
+ tool_ungroup: tools.ungroup,
+ tool_wireframe: tools.wireframe_mode,
+ view_grid: tools.toggle_grid,
+ tool_zoom: tools.mode_zoom,
+ url_notice: tools.no_embed
- }, true);
+ }, true);
- editor.setLang(langParam, langData);
+ editor.setLang(langParam, langData);
};
editor.putLocale = function (givenParam, goodLangs) {
- if (givenParam) {
- langParam = givenParam;
- } else {
- langParam = $.pref('lang');
- if (!langParam) {
- if (navigator.userLanguage) { // Explorer
- langParam = navigator.userLanguage;
- } else if (navigator.language) { // FF, Opera, ...
- langParam = navigator.language;
- }
- if (langParam == null) { // Todo: Would cause problems if uiStrings removed; remove this?
- return;
- }
- }
+ if (givenParam) {
+ langParam = givenParam;
+ } else {
+ langParam = $.pref('lang');
+ if (!langParam) {
+ if (navigator.userLanguage) { // Explorer
+ langParam = navigator.userLanguage;
+ } else if (navigator.language) { // FF, Opera, ...
+ langParam = navigator.language;
+ }
+ if (langParam == null) { // Todo: Would cause problems if uiStrings removed; remove this?
+ return;
+ }
+ }
- console.log('Lang: ' + langParam);
+ console.log('Lang: ' + langParam);
- // Set to English if language is not in list of good langs
- if ($.inArray(langParam, goodLangs) === -1 && langParam !== 'test') {
- langParam = 'en';
- }
+ // Set to English if language is not in list of good langs
+ if ($.inArray(langParam, goodLangs) === -1 && langParam !== 'test') {
+ langParam = 'en';
+ }
- // don't bother on first run if language is English
- // The following line prevents setLang from running
- // extensions which depend on updated uiStrings,
- // so commenting it out.
- // if (langParam.indexOf("en") === 0) {return;}
- }
+ // don't bother on first run if language is English
+ // The following line prevents setLang from running
+ // extensions which depend on updated uiStrings,
+ // so commenting it out.
+ // if (langParam.indexOf("en") === 0) {return;}
+ }
- var conf = editor.curConfig;
+ var conf = editor.curConfig;
- var url = conf.langPath + 'lang.' + langParam + '.js';
+ var url = conf.langPath + 'lang.' + langParam + '.js';
- $.getScript(url, function (d) {
- // Fails locally in Chrome 5+
- if (!d) {
- var s = document.createElement('script');
- s.src = url;
- document.querySelector('head').appendChild(s);
- }
- });
+ $.getScript(url, function (d) {
+ // Fails locally in Chrome 5+
+ if (!d) {
+ var s = document.createElement('script');
+ s.src = url;
+ document.querySelector('head').appendChild(s);
+ }
+ });
};
return editor;
diff --git a/editor/spinbtn/JQuerySpinBtn.js b/editor/spinbtn/JQuerySpinBtn.js
index 87f14f80..1205342a 100644
--- a/editor/spinbtn/JQuerySpinBtn.js
+++ b/editor/spinbtn/JQuerySpinBtn.js
@@ -32,10 +32,10 @@
* - Made adjustValue(0) only run on certain keyup events, not all.
*
* Tested in IE6, Opera9, Firefox 1.5
- * v1.0 11 Aug 2006 - George Adamson - First release
- * v1.1 Aug 2006 - George Adamson - Minor enhancements
- * v1.2 27 Sep 2006 - Mark Gibson - Major enhancements
- * v1.3a 28 Sep 2006 - George Adamson - Minor enhancements
+ * v1.0 11 Aug 2006 - George Adamson - First release
+ * v1.1 Aug 2006 - George Adamson - Minor enhancements
+ * v1.2 27 Sep 2006 - Mark Gibson - Major enhancements
+ * v1.3a 28 Sep 2006 - George Adamson - Minor enhancements
* v1.4 18 Jun 2009 - Jeff Schiller - Added callback function
* v1.5 06 Jul 2009 - Jeff Schiller - Fixes for Opera.
* v1.6 13 Oct 2009 - Alexis Deveria - Added stepfunc function
@@ -46,227 +46,227 @@
Sample usage:
- // Create group of settings to initialise spinbutton(s). (Optional)
- var myOptions = {
- min: 0, // Set lower limit.
- max: 100, // Set upper limit.
- step: 1, // Set increment size.
- smallStep: 0.5, // Set shift-click increment size.
- spinClass: mySpinBtnClass, // CSS class to style the spinbutton. (Class also specifies url of the up/down button image.)
- upClass: mySpinUpClass, // CSS class for style when mouse over up button.
- downClass: mySpinDnClass // CSS class for style when mouse over down button.
- }
+ // Create group of settings to initialise spinbutton(s). (Optional)
+ var myOptions = {
+ min: 0, // Set lower limit.
+ max: 100, // Set upper limit.
+ step: 1, // Set increment size.
+ smallStep: 0.5, // Set shift-click increment size.
+ spinClass: mySpinBtnClass, // CSS class to style the spinbutton. (Class also specifies url of the up/down button image.)
+ upClass: mySpinUpClass, // CSS class for style when mouse over up button.
+ downClass: mySpinDnClass // CSS class for style when mouse over down button.
+ }
- $(document).ready(function(){
+ $(document).ready(function(){
- // Initialise INPUT element(s) as SpinButtons: (passing options if desired)
- $("#myInputElement").SpinButton(myOptions);
+ // Initialise INPUT element(s) as SpinButtons: (passing options if desired)
+ $("#myInputElement").SpinButton(myOptions);
- });
+ });
*/
$.fn.SpinButton = function (cfg) {
- 'use strict';
- function coord (el, prop) {
- var c = el[prop], b = document.body;
+ 'use strict';
+ function coord (el, prop) {
+ var c = el[prop], b = document.body;
- while ((el = el.offsetParent) && (el !== b)) {
- if (!$.browser.msie || (el.currentStyle.position !== 'relative')) {
- c += el[prop];
- }
- }
+ while ((el = el.offsetParent) && (el !== b)) {
+ if (!$.browser.msie || (el.currentStyle.position !== 'relative')) {
+ c += el[prop];
+ }
+ }
- return c;
- }
+ return c;
+ }
- return this.each(function () {
- this.repeating = false;
+ return this.each(function () {
+ this.repeating = false;
- // Apply specified options or defaults:
- // (Ought to refactor this some day to use $.extend() instead)
- this.spinCfg = {
- // min: cfg && cfg.min ? Number(cfg.min) : null,
- // max: cfg && cfg.max ? Number(cfg.max) : null,
- min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null, // Fixes bug with min:0
- max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
- step: cfg && cfg.step ? Number(cfg.step) : 1,
- stepfunc: cfg && cfg.stepfunc ? cfg.stepfunc : false,
- page: cfg && cfg.page ? Number(cfg.page) : 10,
- upClass: cfg && cfg.upClass ? cfg.upClass : 'up',
- downClass: cfg && cfg.downClass ? cfg.downClass : 'down',
- reset: cfg && cfg.reset ? cfg.reset : this.value,
- delay: cfg && cfg.delay ? Number(cfg.delay) : 500,
- interval: cfg && cfg.interval ? Number(cfg.interval) : 100,
- _btn_width: 20,
- _direction: null,
- _delay: null,
- _repeat: null,
- callback: cfg && cfg.callback ? cfg.callback : null
- };
+ // Apply specified options or defaults:
+ // (Ought to refactor this some day to use $.extend() instead)
+ this.spinCfg = {
+ // min: cfg && cfg.min ? Number(cfg.min) : null,
+ // max: cfg && cfg.max ? Number(cfg.max) : null,
+ min: cfg && !isNaN(parseFloat(cfg.min)) ? Number(cfg.min) : null, // Fixes bug with min:0
+ max: cfg && !isNaN(parseFloat(cfg.max)) ? Number(cfg.max) : null,
+ step: cfg && cfg.step ? Number(cfg.step) : 1,
+ stepfunc: cfg && cfg.stepfunc ? cfg.stepfunc : false,
+ page: cfg && cfg.page ? Number(cfg.page) : 10,
+ upClass: cfg && cfg.upClass ? cfg.upClass : 'up',
+ downClass: cfg && cfg.downClass ? cfg.downClass : 'down',
+ reset: cfg && cfg.reset ? cfg.reset : this.value,
+ delay: cfg && cfg.delay ? Number(cfg.delay) : 500,
+ interval: cfg && cfg.interval ? Number(cfg.interval) : 100,
+ _btn_width: 20,
+ _direction: null,
+ _delay: null,
+ _repeat: null,
+ callback: cfg && cfg.callback ? cfg.callback : null
+ };
- // if a smallStep isn't supplied, use half the regular step
- this.spinCfg.smallStep = cfg && cfg.smallStep ? cfg.smallStep : this.spinCfg.step / 2;
+ // if a smallStep isn't supplied, use half the regular step
+ this.spinCfg.smallStep = cfg && cfg.smallStep ? cfg.smallStep : this.spinCfg.step / 2;
- this.adjustValue = function (i) {
- var v;
- if (isNaN(this.value)) {
- v = this.spinCfg.reset;
- } else if ($.isFunction(this.spinCfg.stepfunc)) {
- v = this.spinCfg.stepfunc(this, i);
- } else {
- // weirdest javascript bug ever: 5.1 + 0.1 = 5.199999999
- v = Number((Number(this.value) + Number(i)).toFixed(5));
- }
- if (this.spinCfg.min !== null) { v = Math.max(v, this.spinCfg.min); }
- if (this.spinCfg.max !== null) { v = Math.min(v, this.spinCfg.max); }
- this.value = v;
- if ($.isFunction(this.spinCfg.callback)) { this.spinCfg.callback(this); }
- };
+ this.adjustValue = function (i) {
+ var v;
+ if (isNaN(this.value)) {
+ v = this.spinCfg.reset;
+ } else if ($.isFunction(this.spinCfg.stepfunc)) {
+ v = this.spinCfg.stepfunc(this, i);
+ } else {
+ // weirdest javascript bug ever: 5.1 + 0.1 = 5.199999999
+ v = Number((Number(this.value) + Number(i)).toFixed(5));
+ }
+ if (this.spinCfg.min !== null) { v = Math.max(v, this.spinCfg.min); }
+ if (this.spinCfg.max !== null) { v = Math.min(v, this.spinCfg.max); }
+ this.value = v;
+ if ($.isFunction(this.spinCfg.callback)) { this.spinCfg.callback(this); }
+ };
- $(this)
- .addClass(cfg && cfg.spinClass ? cfg.spinClass : 'spin-button')
+ $(this)
+ .addClass(cfg && cfg.spinClass ? cfg.spinClass : 'spin-button')
- .mousemove(function (e) {
- // Determine which button mouse is over, or not (spin direction):
- var x = e.pageX || e.x;
- var y = e.pageY || e.y;
- var el = e.target || e.srcElement;
- var scale = svgEditor.tool_scale || 1;
- var height = $(el).height() / 2;
+ .mousemove(function (e) {
+ // Determine which button mouse is over, or not (spin direction):
+ var x = e.pageX || e.x;
+ var y = e.pageY || e.y;
+ var el = e.target || e.srcElement;
+ var scale = svgEditor.tool_scale || 1;
+ var height = $(el).height() / 2;
- var direction =
- (x > coord(el, 'offsetLeft') +
- el.offsetWidth * scale - this.spinCfg._btn_width)
- ? ((y < coord(el, 'offsetTop') + height * scale) ? 1 : -1) : 0;
+ var direction =
+ (x > coord(el, 'offsetLeft') +
+ el.offsetWidth * scale - this.spinCfg._btn_width)
+ ? ((y < coord(el, 'offsetTop') + height * scale) ? 1 : -1) : 0;
- if (direction !== this.spinCfg._direction) {
- // Style up/down buttons:
- switch (direction) {
- case 1: // Up arrow:
- $(this).removeClass(this.spinCfg.downClass).addClass(this.spinCfg.upClass);
- break;
- case -1: // Down arrow:
- $(this).removeClass(this.spinCfg.upClass).addClass(this.spinCfg.downClass);
- break;
- default: // Mouse is elsewhere in the textbox
- $(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
- }
+ if (direction !== this.spinCfg._direction) {
+ // Style up/down buttons:
+ switch (direction) {
+ case 1: // Up arrow:
+ $(this).removeClass(this.spinCfg.downClass).addClass(this.spinCfg.upClass);
+ break;
+ case -1: // Down arrow:
+ $(this).removeClass(this.spinCfg.upClass).addClass(this.spinCfg.downClass);
+ break;
+ default: // Mouse is elsewhere in the textbox
+ $(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
+ }
- // Set spin direction:
- this.spinCfg._direction = direction;
- }
- })
+ // Set spin direction:
+ this.spinCfg._direction = direction;
+ }
+ })
- .mouseout(function () {
- // Reset up/down buttons to their normal appearance when mouse moves away:
- $(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
- this.spinCfg._direction = null;
- window.clearInterval(this.spinCfg._repeat);
- window.clearTimeout(this.spinCfg._delay);
- })
+ .mouseout(function () {
+ // Reset up/down buttons to their normal appearance when mouse moves away:
+ $(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);
+ this.spinCfg._direction = null;
+ window.clearInterval(this.spinCfg._repeat);
+ window.clearTimeout(this.spinCfg._delay);
+ })
- .mousedown(function (e) {
- if (e.button === 0 && this.spinCfg._direction !== 0) {
- // Respond to click on one of the buttons:
- var self = this;
- var stepSize = e.shiftKey ? self.spinCfg.smallStep : self.spinCfg.step;
+ .mousedown(function (e) {
+ if (e.button === 0 && this.spinCfg._direction !== 0) {
+ // Respond to click on one of the buttons:
+ var self = this;
+ var stepSize = e.shiftKey ? self.spinCfg.smallStep : self.spinCfg.step;
- var adjust = function () {
- self.adjustValue(self.spinCfg._direction * stepSize);
- };
+ var adjust = function () {
+ self.adjustValue(self.spinCfg._direction * stepSize);
+ };
- adjust();
+ adjust();
- // Initial delay before repeating adjustment
- self.spinCfg._delay = window.setTimeout(function () {
- adjust();
- // Repeat adjust at regular intervals
- self.spinCfg._repeat = window.setInterval(adjust, self.spinCfg.interval);
- }, self.spinCfg.delay);
- }
- })
+ // Initial delay before repeating adjustment
+ self.spinCfg._delay = window.setTimeout(function () {
+ adjust();
+ // Repeat adjust at regular intervals
+ self.spinCfg._repeat = window.setInterval(adjust, self.spinCfg.interval);
+ }, self.spinCfg.delay);
+ }
+ })
- .mouseup(function (e) {
- // Cancel repeating adjustment
- window.clearInterval(this.spinCfg._repeat);
- window.clearTimeout(this.spinCfg._delay);
- })
+ .mouseup(function (e) {
+ // Cancel repeating adjustment
+ window.clearInterval(this.spinCfg._repeat);
+ window.clearTimeout(this.spinCfg._delay);
+ })
- .dblclick(function (e) {
- if ($.browser.msie) {
- this.adjustValue(this.spinCfg._direction * this.spinCfg.step);
- }
- })
+ .dblclick(function (e) {
+ if ($.browser.msie) {
+ this.adjustValue(this.spinCfg._direction * this.spinCfg.step);
+ }
+ })
- .keydown(function (e) {
- // Respond to up/down arrow keys.
- switch (e.keyCode) {
- case 38: this.adjustValue(this.spinCfg.step); break; // Up
- case 40: this.adjustValue(-this.spinCfg.step); break; // Down
- case 33: this.adjustValue(this.spinCfg.page); break; // PageUp
- case 34: this.adjustValue(-this.spinCfg.page); break; // PageDown
- }
- })
+ .keydown(function (e) {
+ // Respond to up/down arrow keys.
+ switch (e.keyCode) {
+ case 38: this.adjustValue(this.spinCfg.step); break; // Up
+ case 40: this.adjustValue(-this.spinCfg.step); break; // Down
+ case 33: this.adjustValue(this.spinCfg.page); break; // PageUp
+ case 34: this.adjustValue(-this.spinCfg.page); break; // PageDown
+ }
+ })
- /*
- http://unixpapa.com/js/key.html describes the current state-of-affairs for
- key repeat events:
- - Safari 3.1 changed their model so that keydown is reliably repeated going forward
- - Firefox and Opera still only repeat the keypress event, not the keydown
- */
- .keypress(function (e) {
- if (this.repeating) {
- // Respond to up/down arrow keys.
- switch (e.keyCode) {
- case 38: this.adjustValue(this.spinCfg.step); break; // Up
- case 40: this.adjustValue(-this.spinCfg.step); break; // Down
- case 33: this.adjustValue(this.spinCfg.page); break; // PageUp
- case 34: this.adjustValue(-this.spinCfg.page); break; // PageDown
- }
- // we always ignore the first keypress event (use the keydown instead)
- } else {
- this.repeating = true;
- }
- })
+ /*
+ http://unixpapa.com/js/key.html describes the current state-of-affairs for
+ key repeat events:
+ - Safari 3.1 changed their model so that keydown is reliably repeated going forward
+ - Firefox and Opera still only repeat the keypress event, not the keydown
+ */
+ .keypress(function (e) {
+ if (this.repeating) {
+ // Respond to up/down arrow keys.
+ switch (e.keyCode) {
+ case 38: this.adjustValue(this.spinCfg.step); break; // Up
+ case 40: this.adjustValue(-this.spinCfg.step); break; // Down
+ case 33: this.adjustValue(this.spinCfg.page); break; // PageUp
+ case 34: this.adjustValue(-this.spinCfg.page); break; // PageDown
+ }
+ // we always ignore the first keypress event (use the keydown instead)
+ } else {
+ this.repeating = true;
+ }
+ })
- // clear the 'repeating' flag
- .keyup(function (e) {
- this.repeating = false;
- switch (e.keyCode) {
- case 38: // Up
- case 40: // Down
- case 33: // PageUp
- case 34: // PageDown
- case 13: this.adjustValue(0); break; // Enter/Return
- }
- })
+ // clear the 'repeating' flag
+ .keyup(function (e) {
+ this.repeating = false;
+ switch (e.keyCode) {
+ case 38: // Up
+ case 40: // Down
+ case 33: // PageUp
+ case 34: // PageDown
+ case 13: this.adjustValue(0); break; // Enter/Return
+ }
+ })
- .bind('mousewheel', function (e) {
- // Respond to mouse wheel in IE. (It returns up/dn motion in multiples of 120)
- if (e.wheelDelta >= 120) {
- this.adjustValue(this.spinCfg.step);
- } else if (e.wheelDelta <= -120) {
- this.adjustValue(-this.spinCfg.step);
- }
+ .bind('mousewheel', function (e) {
+ // Respond to mouse wheel in IE. (It returns up/dn motion in multiples of 120)
+ if (e.wheelDelta >= 120) {
+ this.adjustValue(this.spinCfg.step);
+ } else if (e.wheelDelta <= -120) {
+ this.adjustValue(-this.spinCfg.step);
+ }
- e.preventDefault();
- })
+ e.preventDefault();
+ })
- .change(function (e) {
- this.adjustValue(0);
- });
+ .change(function (e) {
+ this.adjustValue(0);
+ });
- if (this.addEventListener) {
- // Respond to mouse wheel in Firefox
- this.addEventListener('DOMMouseScroll', function (e) {
- if (e.detail > 0) {
- this.adjustValue(-this.spinCfg.step);
- } else if (e.detail < 0) {
- this.adjustValue(this.spinCfg.step);
- }
+ if (this.addEventListener) {
+ // Respond to mouse wheel in Firefox
+ this.addEventListener('DOMMouseScroll', function (e) {
+ if (e.detail > 0) {
+ this.adjustValue(-this.spinCfg.step);
+ } else if (e.detail < 0) {
+ this.adjustValue(this.spinCfg.step);
+ }
- e.preventDefault();
- }, false);
- }
- });
+ e.preventDefault();
+ }, false);
+ }
+ });
};
diff --git a/editor/svgicons/jquery.svgicons.js b/editor/svgicons/jquery.svgicons.js
index 66814b20..426ee853 100644
--- a/editor/svgicons/jquery.svgicons.js
+++ b/editor/svgicons/jquery.svgicons.js
@@ -38,91 +38,91 @@ All options are optional and can include:
- 'h (number)': The icon heights
- 'fallback (object literal)': List of raster images with each
- key being the SVG icon ID to replace, and the value the image file name.
+ key being the SVG icon ID to replace, and the value the image file name.
- 'fallback_path (string)': The path to use for all images
- listed under "fallback"
+ listed under "fallback"
- 'replace (boolean)': If set to true, HTML elements will be replaced by,
- rather than include the SVG icon.
+ rather than include the SVG icon.
- 'placement (object literal)': List with selectors for keys and SVG icon ids
- as values. This provides a custom method of adding icons.
+ as values. This provides a custom method of adding icons.
- 'resize (object literal)': List with selectors for keys and numbers
- as values. This allows an easy way to resize specific icons.
+ as values. This allows an easy way to resize specific icons.
- 'callback (function)': A function to call when all icons have been loaded.
- Includes an object literal as its argument with as keys all icon IDs and the
- icon as a jQuery object as its value.
+ Includes an object literal as its argument with as keys all icon IDs and the
+ icon as a jQuery object as its value.
- 'id_match (boolean)': Automatically attempt to match SVG icon ids with
- corresponding HTML id (default: true)
+ corresponding HTML id (default: true)
- 'no_img (boolean)': Prevent attempting to convert the icon into an
- element (may be faster, help for browser consistency)
+ element (may be faster, help for browser consistency)
- 'svgz (boolean)': Indicate that the file is an SVGZ file, and thus not to
- parse as XML. SVGZ files add compression benefits, but getting data from
- them fails in Firefox 2 and older.
+ parse as XML. SVGZ files add compression benefits, but getting data from
+ them fails in Firefox 2 and older.
5. To access an icon at a later point without using the callback, use this:
- $.getSvgIcon(id (string));
+ $.getSvgIcon(id (string));
This will return the icon (as jQuery object) with a given ID.
6. To resize icons at a later point without using the callback, use this:
- $.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
+ $.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
Example usage #1:
$(function() {
- $.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
- // No options have been set, so all icons will automatically be inserted
- // into HTML elements that match the same IDs.
+ $.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
+ // No options have been set, so all icons will automatically be inserted
+ // into HTML elements that match the same IDs.
});
Example usage #2:
$(function() {
- $.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
- callback: function(icons) { // Custom callback function that sets click
- // events for each icon
- $.each(icons, function(id, icon) {
- icon.click(function() {
- alert('You clicked on the icon with id ' + id);
- });
- });
- }
- }); //The SVG file that contains all icons
+ $.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
+ callback: function(icons) { // Custom callback function that sets click
+ // events for each icon
+ $.each(icons, function(id, icon) {
+ icon.click(function() {
+ alert('You clicked on the icon with id ' + id);
+ });
+ });
+ }
+ }); //The SVG file that contains all icons
});
Example usage #3:
$(function() {
- $.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
- w: 32, // All icons will be 32px wide
- h: 32, // All icons will be 32px high
- fallback_path: 'icons/', // All fallback files can be found here
- fallback: {
- '#open_icon': 'open.png', // The "open.png" will be appended to the
- // HTML element with ID "open_icon"
- '#close_icon': 'close.png',
- '#save_icon': 'save.png'
- },
- placement: {'.open_icon','open'}, // The "open" icon will be added
- // to all elements with class "open_icon"
- resize: function() {
- '#save_icon .svg_icon': 64 // The "save" icon will be resized to 64 x 64px
- },
+ $.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
+ w: 32, // All icons will be 32px wide
+ h: 32, // All icons will be 32px high
+ fallback_path: 'icons/', // All fallback files can be found here
+ fallback: {
+ '#open_icon': 'open.png', // The "open.png" will be appended to the
+ // HTML element with ID "open_icon"
+ '#close_icon': 'close.png',
+ '#save_icon': 'save.png'
+ },
+ placement: {'.open_icon','open'}, // The "open" icon will be added
+ // to all elements with class "open_icon"
+ resize: function() {
+ '#save_icon .svg_icon': 64 // The "save" icon will be resized to 64 x 64px
+ },
- callback: function(icons) { // Sets background color for "close" icon
- icons['close'].css('background','red');
- },
+ callback: function(icons) { // Sets background color for "close" icon
+ icons['close'].css('background','red');
+ },
- svgz: true // Indicates that an SVGZ file is being used
+ svgz: true // Indicates that an SVGZ file is being used
- })
+ })
});
*/
@@ -130,357 +130,357 @@ $(function() {
var svgIcons = {}, fixIDs;
$.svgIcons = function (file, opts) {
- var svgns = 'http://www.w3.org/2000/svg',
- xlinkns = 'http://www.w3.org/1999/xlink',
- iconW = opts.w || 24,
- iconH = opts.h || 24,
- elems, svgdoc, testImg,
- iconsMade = false, dataLoaded = false, loadAttempts = 0,
- // ua = navigator.userAgent,
- isOpera = !!window.opera,
- // isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/') === -1),
- dataPre = 'data:image/svg+xml;charset=utf-8;base64,';
+ var svgns = 'http://www.w3.org/2000/svg',
+ xlinkns = 'http://www.w3.org/1999/xlink',
+ iconW = opts.w || 24,
+ iconH = opts.h || 24,
+ elems, svgdoc, testImg,
+ iconsMade = false, dataLoaded = false, loadAttempts = 0,
+ // ua = navigator.userAgent,
+ isOpera = !!window.opera,
+ // isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/') === -1),
+ dataPre = 'data:image/svg+xml;charset=utf-8;base64,';
- if (opts.svgz) {
- var dataEl = $('').appendTo('body').hide();
- try {
- svgdoc = dataEl[0].contentDocument;
- dataEl.load(getIcons);
- getIcons(0, true); // Opera will not run "load" event if file is already cached
- } catch (err1) {
- useFallback();
- }
- } else {
- var parser = new DOMParser();
- $.ajax({
- url: file,
- dataType: 'string',
- success: function (data) {
- if (!data) {
- $(useFallback);
- return;
- }
- svgdoc = parser.parseFromString(data, 'text/xml');
- $(function () {
- getIcons('ajax');
- });
- },
- error: function (err) {
- // TODO: Fix Opera widget icon bug
- if (window.opera) {
- $(function () {
- useFallback();
- });
- } else {
- if (err.responseText) {
- svgdoc = parser.parseFromString(err.responseText, 'text/xml');
+ if (opts.svgz) {
+ var dataEl = $('').appendTo('body').hide();
+ try {
+ svgdoc = dataEl[0].contentDocument;
+ dataEl.load(getIcons);
+ getIcons(0, true); // Opera will not run "load" event if file is already cached
+ } catch (err1) {
+ useFallback();
+ }
+ } else {
+ var parser = new DOMParser();
+ $.ajax({
+ url: file,
+ dataType: 'string',
+ success: function (data) {
+ if (!data) {
+ $(useFallback);
+ return;
+ }
+ svgdoc = parser.parseFromString(data, 'text/xml');
+ $(function () {
+ getIcons('ajax');
+ });
+ },
+ error: function (err) {
+ // TODO: Fix Opera widget icon bug
+ if (window.opera) {
+ $(function () {
+ useFallback();
+ });
+ } else {
+ if (err.responseText) {
+ svgdoc = parser.parseFromString(err.responseText, 'text/xml');
- if (!svgdoc.childNodes.length) {
- $(useFallback);
- }
- $(function () {
- getIcons('ajax');
- });
- } else {
- $(useFallback);
- }
- }
- }
- });
- }
+ if (!svgdoc.childNodes.length) {
+ $(useFallback);
+ }
+ $(function () {
+ getIcons('ajax');
+ });
+ } else {
+ $(useFallback);
+ }
+ }
+ }
+ });
+ }
- function getIcons (evt, noWait) {
- if (evt !== 'ajax') {
- if (dataLoaded) return;
- // Webkit sometimes says svgdoc is undefined, other times
- // it fails to load all nodes. Thus we must make sure the "eof"
- // element is loaded.
- svgdoc = dataEl[0].contentDocument; // Needed again for Webkit
- var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
- if (!isReady && !(noWait && isReady)) {
- loadAttempts++;
- if (loadAttempts < 50) {
- setTimeout(getIcons, 20);
- } else {
- useFallback();
- dataLoaded = true;
- }
- return;
- }
- dataLoaded = true;
- }
+ function getIcons (evt, noWait) {
+ if (evt !== 'ajax') {
+ if (dataLoaded) return;
+ // Webkit sometimes says svgdoc is undefined, other times
+ // it fails to load all nodes. Thus we must make sure the "eof"
+ // element is loaded.
+ svgdoc = dataEl[0].contentDocument; // Needed again for Webkit
+ var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
+ if (!isReady && !(noWait && isReady)) {
+ loadAttempts++;
+ if (loadAttempts < 50) {
+ setTimeout(getIcons, 20);
+ } else {
+ useFallback();
+ dataLoaded = true;
+ }
+ return;
+ }
+ dataLoaded = true;
+ }
- elems = $(svgdoc.firstChild).children(); // .getElementsByTagName('foreignContent');
+ elems = $(svgdoc.firstChild).children(); // .getElementsByTagName('foreignContent');
- if (!opts.no_img) {
- var testSrc = dataPre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
+ if (!opts.no_img) {
+ var testSrc = dataPre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
- testImg = $(new Image()).attr({
- src: testSrc,
- width: 0,
- height: 0
- }).appendTo('body')
- .load(function () {
- // Safari 4 crashes, Opera and Chrome don't
- makeIcons(true);
- }).error(function () {
- makeIcons();
- });
- } else {
- setTimeout(function () {
- if (!iconsMade) makeIcons();
- }, 500);
- }
- }
+ testImg = $(new Image()).attr({
+ src: testSrc,
+ width: 0,
+ height: 0
+ }).appendTo('body')
+ .load(function () {
+ // Safari 4 crashes, Opera and Chrome don't
+ makeIcons(true);
+ }).error(function () {
+ makeIcons();
+ });
+ } else {
+ setTimeout(function () {
+ if (!iconsMade) makeIcons();
+ }, 500);
+ }
+ }
- var setIcon = function (target, icon, id, setID) {
- if (isOpera) icon.css('visibility', 'hidden');
- if (opts.replace) {
- if (setID) icon.attr('id', id);
- var cl = target.attr('class');
- if (cl) icon.attr('class', 'svg_icon ' + cl);
- target.replaceWith(icon);
- } else {
- target.append(icon);
- }
- if (isOpera) {
- setTimeout(function () {
- icon.removeAttr('style');
- }, 1);
- }
- };
+ var setIcon = function (target, icon, id, setID) {
+ if (isOpera) icon.css('visibility', 'hidden');
+ if (opts.replace) {
+ if (setID) icon.attr('id', id);
+ var cl = target.attr('class');
+ if (cl) icon.attr('class', 'svg_icon ' + cl);
+ target.replaceWith(icon);
+ } else {
+ target.append(icon);
+ }
+ if (isOpera) {
+ setTimeout(function () {
+ icon.removeAttr('style');
+ }, 1);
+ }
+ };
- var holder;
- var addIcon = function (icon, id) {
- if (opts.id_match === undefined || opts.id_match !== false) {
- setIcon(holder, icon, id, true);
- }
- svgIcons[id] = icon;
- };
+ var holder;
+ var addIcon = function (icon, id) {
+ if (opts.id_match === undefined || opts.id_match !== false) {
+ setIcon(holder, icon, id, true);
+ }
+ svgIcons[id] = icon;
+ };
- function makeIcons (toImage, fallback) {
- if (iconsMade) return;
- if (opts.no_img) toImage = false;
- var tempHolder;
+ function makeIcons (toImage, fallback) {
+ if (iconsMade) return;
+ if (opts.no_img) toImage = false;
+ var tempHolder;
- if (toImage) {
- tempHolder = $(document.createElement('div'));
- tempHolder.hide().appendTo('body');
- }
- if (fallback) {
- var path = opts.fallback_path || '';
- $.each(fallback, function (id, imgsrc) {
- holder = $('#' + id);
- var icon = $(new Image())
- .attr({
- 'class': 'svg_icon',
- src: path + imgsrc,
- 'width': iconW,
- 'height': iconH,
- 'alt': 'icon'
- });
+ if (toImage) {
+ tempHolder = $(document.createElement('div'));
+ tempHolder.hide().appendTo('body');
+ }
+ if (fallback) {
+ var path = opts.fallback_path || '';
+ $.each(fallback, function (id, imgsrc) {
+ holder = $('#' + id);
+ var icon = $(new Image())
+ .attr({
+ 'class': 'svg_icon',
+ src: path + imgsrc,
+ 'width': iconW,
+ 'height': iconH,
+ 'alt': 'icon'
+ });
- addIcon(icon, id);
- });
- } else {
- var len = elems.length;
- for (var i = 0; i < len; i++) {
- var elem = elems[i];
- var id = elem.id;
- if (id === 'svg_eof') break;
- holder = $('#' + id);
- var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
- var svgroot = document.createElementNS(svgns, 'svg');
- // Per https://www.w3.org/TR/xml-names11/#defaulting, the namespace for
- // attributes should have no value.
- svgroot.setAttributeNS(null, 'viewBox', [0, 0, iconW, iconH].join(' '));
+ addIcon(icon, id);
+ });
+ } else {
+ var len = elems.length;
+ for (var i = 0; i < len; i++) {
+ var elem = elems[i];
+ var id = elem.id;
+ if (id === 'svg_eof') break;
+ holder = $('#' + id);
+ var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
+ var svgroot = document.createElementNS(svgns, 'svg');
+ // Per https://www.w3.org/TR/xml-names11/#defaulting, the namespace for
+ // attributes should have no value.
+ svgroot.setAttributeNS(null, 'viewBox', [0, 0, iconW, iconH].join(' '));
- // Make flexible by converting width/height to viewBox
- var w = svg.getAttribute('width');
- var h = svg.getAttribute('height');
- svg.removeAttribute('width');
- svg.removeAttribute('height');
+ // Make flexible by converting width/height to viewBox
+ var w = svg.getAttribute('width');
+ var h = svg.getAttribute('height');
+ svg.removeAttribute('width');
+ svg.removeAttribute('height');
- var vb = svg.getAttribute('viewBox');
- if (!vb) {
- svg.setAttribute('viewBox', [0, 0, w, h].join(' '));
- }
+ var vb = svg.getAttribute('viewBox');
+ if (!vb) {
+ svg.setAttribute('viewBox', [0, 0, w, h].join(' '));
+ }
- // Not using jQuery to be a bit faster
- svgroot.setAttribute('xmlns', svgns);
- svgroot.setAttribute('width', iconW);
- svgroot.setAttribute('height', iconH);
- svgroot.setAttribute('xmlns:xlink', xlinkns);
- svgroot.setAttribute('class', 'svg_icon');
+ // Not using jQuery to be a bit faster
+ svgroot.setAttribute('xmlns', svgns);
+ svgroot.setAttribute('width', iconW);
+ svgroot.setAttribute('height', iconH);
+ svgroot.setAttribute('xmlns:xlink', xlinkns);
+ svgroot.setAttribute('class', 'svg_icon');
- // Without cloning, Firefox will make another GET request.
- // With cloning, causes issue in Opera/Win/Non-EN
- if (!isOpera) svg = svg.cloneNode(true);
+ // Without cloning, Firefox will make another GET request.
+ // With cloning, causes issue in Opera/Win/Non-EN
+ if (!isOpera) svg = svg.cloneNode(true);
- svgroot.appendChild(svg);
- var icon;
- if (toImage) {
- tempHolder.empty().append(svgroot);
- var str = dataPre + encode64(unescape(encodeURIComponent(new XMLSerializer().serializeToString(svgroot))));
- icon = $(new Image())
- .attr({'class': 'svg_icon', src: str});
- } else {
- icon = fixIDs($(svgroot), i);
- }
- addIcon(icon, id);
- }
- }
+ svgroot.appendChild(svg);
+ var icon;
+ if (toImage) {
+ tempHolder.empty().append(svgroot);
+ var str = dataPre + encode64(unescape(encodeURIComponent(new XMLSerializer().serializeToString(svgroot))));
+ icon = $(new Image())
+ .attr({'class': 'svg_icon', src: str});
+ } else {
+ icon = fixIDs($(svgroot), i);
+ }
+ addIcon(icon, id);
+ }
+ }
- if (opts.placement) {
- $.each(opts.placement, function (sel, id) {
- if (!svgIcons[id]) return;
- $(sel).each(function (i) {
- var copy = svgIcons[id].clone();
- if (i > 0 && !toImage) copy = fixIDs(copy, i, true);
- setIcon($(this), copy, id);
- });
- });
- }
- if (!fallback) {
- if (toImage) tempHolder.remove();
- if (dataEl) dataEl.remove();
- if (testImg) testImg.remove();
- }
- if (opts.resize) $.resizeSvgIcons(opts.resize);
- iconsMade = true;
+ if (opts.placement) {
+ $.each(opts.placement, function (sel, id) {
+ if (!svgIcons[id]) return;
+ $(sel).each(function (i) {
+ var copy = svgIcons[id].clone();
+ if (i > 0 && !toImage) copy = fixIDs(copy, i, true);
+ setIcon($(this), copy, id);
+ });
+ });
+ }
+ if (!fallback) {
+ if (toImage) tempHolder.remove();
+ if (dataEl) dataEl.remove();
+ if (testImg) testImg.remove();
+ }
+ if (opts.resize) $.resizeSvgIcons(opts.resize);
+ iconsMade = true;
- if (opts.callback) opts.callback(svgIcons);
- }
+ if (opts.callback) opts.callback(svgIcons);
+ }
- fixIDs = function (svgEl, svgNum, force) {
- var defs = svgEl.find('defs');
- if (!defs.length) return svgEl;
- var idElems;
- if (isOpera) {
- idElems = defs.find('*').filter(function () {
- return !!this.id;
- });
- } else {
- idElems = defs.find('[id]');
- }
+ fixIDs = function (svgEl, svgNum, force) {
+ var defs = svgEl.find('defs');
+ if (!defs.length) return svgEl;
+ var idElems;
+ if (isOpera) {
+ idElems = defs.find('*').filter(function () {
+ return !!this.id;
+ });
+ } else {
+ idElems = defs.find('[id]');
+ }
- var allElems = svgEl[0].getElementsByTagName('*'), len = allElems.length;
+ var allElems = svgEl[0].getElementsByTagName('*'), len = allElems.length;
- idElems.each(function (i) {
- var id = this.id;
- /*
- var noDupes = ($(svgdoc).find('#' + id).length <= 1);
- if (isOpera) noDupes = false; // Opera didn't clone svgEl, so not reliable
- if(!force && noDupes) return;
- */
- var newId = 'x' + id + svgNum + i;
- this.id = newId;
+ idElems.each(function (i) {
+ var id = this.id;
+ /*
+ var noDupes = ($(svgdoc).find('#' + id).length <= 1);
+ if (isOpera) noDupes = false; // Opera didn't clone svgEl, so not reliable
+ if(!force && noDupes) return;
+ */
+ var newId = 'x' + id + svgNum + i;
+ this.id = newId;
- var oldVal = 'url(#' + id + ')';
- var newVal = 'url(#' + newId + ')';
+ var oldVal = 'url(#' + id + ')';
+ var newVal = 'url(#' + newId + ')';
- // Selector method, possibly faster but fails in Opera / jQuery 1.4.3
- // svgEl.find('[fill="url(#' + id + ')"]').each(function() {
- // this.setAttribute('fill', 'url(#' + newId + ')');
- // }).end().find('[stroke="url(#' + id + ')"]').each(function() {
- // this.setAttribute('stroke', 'url(#' + newId + ')');
- // }).end().find('use').each(function() {
- // if(this.getAttribute('xlink:href') == '#' + id) {
- // this.setAttributeNS(xlinkns,'href','#' + newId);
- // }
- // }).end().find('[filter="url(#' + id + ')"]').each(function() {
- // this.setAttribute('filter', 'url(#' + newId + ')');
- // });
+ // Selector method, possibly faster but fails in Opera / jQuery 1.4.3
+ // svgEl.find('[fill="url(#' + id + ')"]').each(function() {
+ // this.setAttribute('fill', 'url(#' + newId + ')');
+ // }).end().find('[stroke="url(#' + id + ')"]').each(function() {
+ // this.setAttribute('stroke', 'url(#' + newId + ')');
+ // }).end().find('use').each(function() {
+ // if(this.getAttribute('xlink:href') == '#' + id) {
+ // this.setAttributeNS(xlinkns,'href','#' + newId);
+ // }
+ // }).end().find('[filter="url(#' + id + ')"]').each(function() {
+ // this.setAttribute('filter', 'url(#' + newId + ')');
+ // });
- for (i = 0; i < len; i++) {
- var elem = allElems[i];
- if (elem.getAttribute('fill') === oldVal) {
- elem.setAttribute('fill', newVal);
- }
- if (elem.getAttribute('stroke') === oldVal) {
- elem.setAttribute('stroke', newVal);
- }
- if (elem.getAttribute('filter') === oldVal) {
- elem.setAttribute('filter', newVal);
- }
- }
- });
- return svgEl;
- };
+ for (i = 0; i < len; i++) {
+ var elem = allElems[i];
+ if (elem.getAttribute('fill') === oldVal) {
+ elem.setAttribute('fill', newVal);
+ }
+ if (elem.getAttribute('stroke') === oldVal) {
+ elem.setAttribute('stroke', newVal);
+ }
+ if (elem.getAttribute('filter') === oldVal) {
+ elem.setAttribute('filter', newVal);
+ }
+ }
+ });
+ return svgEl;
+ };
- function useFallback () {
- if (file.indexOf('.svgz') > -1) {
- var regFile = file.replace('.svgz', '.svg');
- if (window.console) {
- console.log('.svgz failed, trying with .svg');
- }
- $.svgIcons(regFile, opts);
- } else if (opts.fallback) {
- makeIcons(false, opts.fallback);
- }
- }
+ function useFallback () {
+ if (file.indexOf('.svgz') > -1) {
+ var regFile = file.replace('.svgz', '.svg');
+ if (window.console) {
+ console.log('.svgz failed, trying with .svg');
+ }
+ $.svgIcons(regFile, opts);
+ } else if (opts.fallback) {
+ makeIcons(false, opts.fallback);
+ }
+ }
- function encode64 (input) {
- // base64 strings are 4/3 larger than the original string
- if (window.btoa) return window.btoa(input);
- var _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
- var output = new Array(Math.floor((input.length + 2) / 3) * 4);
- var chr1, chr2, chr3;
- var enc1, enc2, enc3, enc4;
- var i = 0, p = 0;
+ function encode64 (input) {
+ // base64 strings are 4/3 larger than the original string
+ if (window.btoa) return window.btoa(input);
+ var _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+ var output = new Array(Math.floor((input.length + 2) / 3) * 4);
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0, p = 0;
- do {
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
+ do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
- enc1 = chr1 >> 2;
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
- enc4 = chr3 & 63;
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
- output[p++] = _keyStr.charAt(enc1);
- output[p++] = _keyStr.charAt(enc2);
- output[p++] = _keyStr.charAt(enc3);
- output[p++] = _keyStr.charAt(enc4);
- } while (i < input.length);
+ output[p++] = _keyStr.charAt(enc1);
+ output[p++] = _keyStr.charAt(enc2);
+ output[p++] = _keyStr.charAt(enc3);
+ output[p++] = _keyStr.charAt(enc4);
+ } while (i < input.length);
- return output.join('');
- }
+ return output.join('');
+ }
};
$.getSvgIcon = function (id, uniqueClone) {
- var icon = svgIcons[id];
- if (uniqueClone && icon) {
- icon = fixIDs(icon, 0, true).clone(true);
- }
- return icon;
+ var icon = svgIcons[id];
+ if (uniqueClone && icon) {
+ icon = fixIDs(icon, 0, true).clone(true);
+ }
+ return icon;
};
$.resizeSvgIcons = function (obj) {
- // FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
- var changeSel = !$('.svg_icon:first').length;
- $.each(obj, function (sel, size) {
- var arr = $.isArray(size);
- var w = arr ? size[0] : size,
- h = arr ? size[1] : size;
- if (changeSel) {
- sel = sel.replace(/\.svg_icon/g, 'svg');
- }
- $(sel).each(function () {
- this.setAttribute('width', w);
- this.setAttribute('height', h);
- if (window.opera && window.widget) {
- this.parentNode.style.width = w + 'px';
- this.parentNode.style.height = h + 'px';
- }
- });
- });
+ // FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
+ var changeSel = !$('.svg_icon:first').length;
+ $.each(obj, function (sel, size) {
+ var arr = $.isArray(size);
+ var w = arr ? size[0] : size,
+ h = arr ? size[1] : size;
+ if (changeSel) {
+ sel = sel.replace(/\.svg_icon/g, 'svg');
+ }
+ $(sel).each(function () {
+ this.setAttribute('width', w);
+ this.setAttribute('height', h);
+ if (window.opera && window.widget) {
+ this.parentNode.style.width = w + 'px';
+ this.parentNode.style.height = h + 'px';
+ }
+ });
+ });
};
})(jQuery);
diff --git a/firefox-extension/content/svg-edit-overlay.js b/firefox-extension/content/svg-edit-overlay.js
index d0881397..3ddbcd0c 100644
--- a/firefox-extension/content/svg-edit-overlay.js
+++ b/firefox-extension/content/svg-edit-overlay.js
@@ -1,5 +1,5 @@
/* eslint-disable no-var */
function startSvgEdit () { // eslint-disable-line no-unused-vars
- var url = 'chrome://svg-edit/content/editor/svg-editor.html';
- window.openDialog(url, 'SVG Editor', 'width=1024,height=700,menubar=no,toolbar=no');
+ var url = 'chrome://svg-edit/content/editor/svg-editor.html';
+ window.openDialog(url, 'SVG Editor', 'width=1024,height=700,menubar=no,toolbar=no');
}
diff --git a/firefox-extension/handlers.js b/firefox-extension/handlers.js
index 3431f14e..8d387059 100644
--- a/firefox-extension/handlers.js
+++ b/firefox-extension/handlers.js
@@ -2,55 +2,55 @@
/* global $, Components, svgCanvas, netscape */
// Note: This JavaScript file must be included as the last script on the main HTML editor page to override the open/save handlers
$(function () {
- if (!window.Components) return;
+ if (!window.Components) return;
- function mozFilePicker (readflag) {
- var fp = window.Components.classes['@mozilla.org/filepicker;1']
- .createInstance(Components.interfaces.nsIFilePicker);
- if (readflag) fp.init(window, 'Pick a SVG file', fp.modeOpen);
- else fp.init(window, 'Pick a SVG file', fp.modeSave);
- fp.defaultExtension = '*.svg';
- fp.show();
- return fp.file;
- }
+ function mozFilePicker (readflag) {
+ var fp = window.Components.classes['@mozilla.org/filepicker;1']
+ .createInstance(Components.interfaces.nsIFilePicker);
+ if (readflag) fp.init(window, 'Pick a SVG file', fp.modeOpen);
+ else fp.init(window, 'Pick a SVG file', fp.modeSave);
+ fp.defaultExtension = '*.svg';
+ fp.show();
+ return fp.file;
+ }
- svgCanvas.setCustomHandlers({
- open: function () {
- try {
- netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
- var file = mozFilePicker(true);
- if (!file) {
- return null;
- }
+ svgCanvas.setCustomHandlers({
+ open: function () {
+ try {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
+ var file = mozFilePicker(true);
+ if (!file) {
+ return null;
+ }
- var inputStream = Components.classes['@mozilla.org/network/file-input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream);
- inputStream.init(file, 0x01, parseInt('00004', 8), null);
- var sInputStream = Components.classes['@mozilla.org/scriptableinputstream;1'].createInstance(Components.interfaces.nsIScriptableInputStream);
- sInputStream.init(inputStream);
- svgCanvas.setSvgString(sInputStream.read(sInputStream.available()));
- } catch (e) {
- console.log('Exception while attempting to load' + e);
- }
- },
- save: function (svg, str) {
- try {
- var file = mozFilePicker(false);
- if (!file) {
- return;
- }
+ var inputStream = Components.classes['@mozilla.org/network/file-input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream);
+ inputStream.init(file, 0x01, parseInt('00004', 8), null);
+ var sInputStream = Components.classes['@mozilla.org/scriptableinputstream;1'].createInstance(Components.interfaces.nsIScriptableInputStream);
+ sInputStream.init(inputStream);
+ svgCanvas.setSvgString(sInputStream.read(sInputStream.available()));
+ } catch (e) {
+ console.log('Exception while attempting to load' + e);
+ }
+ },
+ save: function (svg, str) {
+ try {
+ var file = mozFilePicker(false);
+ if (!file) {
+ return;
+ }
- if (!file.exists()) {
- file.create(0, parseInt('0664', 8));
- }
+ if (!file.exists()) {
+ file.create(0, parseInt('0664', 8));
+ }
- var out = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
- out.init(file, 0x20 | 0x02, parseInt('00004', 8), null);
- out.write(str, str.length);
- out.flush();
- out.close();
- } catch (e) {
- alert(e);
- }
- }
- });
+ var out = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
+ out.init(file, 0x20 | 0x02, parseInt('00004', 8), null);
+ out.write(str, str.length);
+ out.flush();
+ out.close();
+ } catch (e) {
+ alert(e);
+ }
+ }
+ });
});
diff --git a/opera-widget/handlers.js b/opera-widget/handlers.js
index 3f5bce10..a639aec1 100644
--- a/opera-widget/handlers.js
+++ b/opera-widget/handlers.js
@@ -2,58 +2,58 @@
/* globals $, svgCanvas */
// Note: This JavaScript file must be included as the last script on the main HTML editor page to override the open/save handlers
$(function () {
- if (window.opera && window.opera.io && window.opera.io.filesystem) {
- svgCanvas.setCustomHandlers({
- open: function () {
- try {
- window.opera.io.filesystem.browseForFile(
- new Date().getTime(), /* mountpoint name */
- '', /* default location */
- function (file) {
- try {
- if (file) {
- var fstream = file.open(file, 'r');
- var output = '';
- while (!fstream.eof) {
- output += fstream.readLine();
- }
+ if (window.opera && window.opera.io && window.opera.io.filesystem) {
+ svgCanvas.setCustomHandlers({
+ open: function () {
+ try {
+ window.opera.io.filesystem.browseForFile(
+ new Date().getTime(), /* mountpoint name */
+ '', /* default location */
+ function (file) {
+ try {
+ if (file) {
+ var fstream = file.open(file, 'r');
+ var output = '';
+ while (!fstream.eof) {
+ output += fstream.readLine();
+ }
- svgCanvas.setSvgString(output); /* 'this' is bound to the filestream object here */
- }
- } catch (e) {
- console.log('Reading file failed.');
- }
- },
- false, /* not persistent */
- false, /* no multiple selections */
- '*.svg' /* file extension filter */
- );
- } catch (e) {
- console.log('Open file failed.');
- }
- },
- save: function (window, svg) {
- try {
- window.opera.io.filesystem.browseForSave(
- new Date().getTime(), /* mountpoint name */
- '', /* default location */
- function (file) {
- try {
- if (file) {
- var fstream = file.open(file, 'w');
- fstream.write(svg, 'UTF-8');
- fstream.close();
- }
- } catch (e) {
- console.log('Write to file failed.');
- }
- },
- false /* not persistent */
- );
- } catch (e) {
- console.log('Save file failed.');
- }
- }
- });
- }
+ svgCanvas.setSvgString(output); /* 'this' is bound to the filestream object here */
+ }
+ } catch (e) {
+ console.log('Reading file failed.');
+ }
+ },
+ false, /* not persistent */
+ false, /* no multiple selections */
+ '*.svg' /* file extension filter */
+ );
+ } catch (e) {
+ console.log('Open file failed.');
+ }
+ },
+ save: function (window, svg) {
+ try {
+ window.opera.io.filesystem.browseForSave(
+ new Date().getTime(), /* mountpoint name */
+ '', /* default location */
+ function (file) {
+ try {
+ if (file) {
+ var fstream = file.open(file, 'w');
+ fstream.write(svg, 'UTF-8');
+ fstream.close();
+ }
+ } catch (e) {
+ console.log('Write to file failed.');
+ }
+ },
+ false /* not persistent */
+ );
+ } catch (e) {
+ console.log('Save file failed.');
+ }
+ }
+ });
+ }
});
diff --git a/screencasts/svgopen2010/script.js b/screencasts/svgopen2010/script.js
index 69ddcf81..68ac2d1e 100644
--- a/screencasts/svgopen2010/script.js
+++ b/screencasts/svgopen2010/script.js
@@ -7,84 +7,84 @@ var ctr = 0;
var spaces = /\s+/, a1 = [''];
var toArray = function (list) {
- return Array.prototype.slice.call(list || [], 0);
+ return Array.prototype.slice.call(list || [], 0);
};
var byId = function (id) {
- if (typeof id === 'string') { return doc.getElementById(id); }
- return id;
+ if (typeof id === 'string') { return doc.getElementById(id); }
+ return id;
};
var query = function (query, root) {
- if (!query) { return []; }
- if (typeof query !== 'string') { return toArray(query); }
- if (typeof root === 'string') {
- root = byId(root);
- if (!root) { return []; }
- }
+ if (!query) { return []; }
+ if (typeof query !== 'string') { return toArray(query); }
+ if (typeof root === 'string') {
+ root = byId(root);
+ if (!root) { return []; }
+ }
- root = root || document;
- var rootIsDoc = (root.nodeType === 9);
- var doc = rootIsDoc ? root : (root.ownerDocument || document);
+ root = root || document;
+ var rootIsDoc = (root.nodeType === 9);
+ var doc = rootIsDoc ? root : (root.ownerDocument || document);
- // rewrite the query to be ID rooted
- if (!rootIsDoc || ('>~+'.indexOf(query.charAt(0)) >= 0)) {
- root.id = root.id || ('qUnique' + (ctr++));
- query = '#' + root.id + ' ' + query;
- }
- // don't choke on something like ".yada.yada >"
- if ('>~+'.indexOf(query.slice(-1)) >= 0) { query += ' *'; }
+ // rewrite the query to be ID rooted
+ if (!rootIsDoc || ('>~+'.indexOf(query.charAt(0)) >= 0)) {
+ root.id = root.id || ('qUnique' + (ctr++));
+ query = '#' + root.id + ' ' + query;
+ }
+ // don't choke on something like ".yada.yada >"
+ if ('>~+'.indexOf(query.slice(-1)) >= 0) { query += ' *'; }
- return toArray(doc.querySelectorAll(query));
+ return toArray(doc.querySelectorAll(query));
};
var strToArray = function (s) {
- if (typeof s === 'string' || s instanceof String) {
- if (s.indexOf(' ') < 0) {
- a1[0] = s;
- return a1;
- }
- return s.split(spaces);
- }
- return s;
+ if (typeof s === 'string' || s instanceof String) {
+ if (s.indexOf(' ') < 0) {
+ a1[0] = s;
+ return a1;
+ }
+ return s.split(spaces);
+ }
+ return s;
};
var addClass = function (node, classStr) {
- classStr = strToArray(classStr);
- var cls = ' ' + node.className + ' ';
- for (var i = 0, len = classStr.length, c; i < len; ++i) {
- c = classStr[i];
- if (c && cls.indexOf(' ' + c + ' ') < 0) {
- cls += c + ' ';
- }
- }
- node.className = cls.trim();
+ classStr = strToArray(classStr);
+ var cls = ' ' + node.className + ' ';
+ for (var i = 0, len = classStr.length, c; i < len; ++i) {
+ c = classStr[i];
+ if (c && cls.indexOf(' ' + c + ' ') < 0) {
+ cls += c + ' ';
+ }
+ }
+ node.className = cls.trim();
};
var removeClass = function (node, classStr) {
- var cls;
- if (classStr !== undefined) {
- classStr = strToArray(classStr);
- cls = ' ' + node.className + ' ';
- for (var i = 0, len = classStr.length; i < len; ++i) {
- cls = cls.replace(' ' + classStr[i] + ' ', ' ');
- }
- cls = cls.trim();
- } else {
- cls = '';
- }
- if (node.className !== cls) {
- node.className = cls;
- }
+ var cls;
+ if (classStr !== undefined) {
+ classStr = strToArray(classStr);
+ cls = ' ' + node.className + ' ';
+ for (var i = 0, len = classStr.length; i < len; ++i) {
+ cls = cls.replace(' ' + classStr[i] + ' ', ' ');
+ }
+ cls = cls.trim();
+ } else {
+ cls = '';
+ }
+ if (node.className !== cls) {
+ node.className = cls;
+ }
};
var toggleClass = function (node, classStr) {
- var cls = ' ' + node.className + ' ';
- if (cls.indexOf(' ' + classStr.trim() + ' ') >= 0) {
- removeClass(node, classStr);
- } else {
- addClass(node, classStr);
- }
+ var cls = ' ' + node.className + ' ';
+ if (cls.indexOf(' ' + classStr.trim() + ' ') >= 0) {
+ removeClass(node, classStr);
+ } else {
+ addClass(node, classStr);
+ }
};
var ua = navigator.userAgent;
@@ -93,237 +93,237 @@ var isWK = parseFloat(ua.split('WebKit/')[1]) || undefined;
var isOpera = parseFloat(ua.split('Opera/')[1]) || undefined;
var canTransition = (function () {
- var ver = parseFloat(ua.split('Version/')[1]) || undefined;
- // test to determine if this browser can handle CSS transitions.
- var cachedCanTransition =
- (isWK || (isFF && isFF > 3.6) || (isOpera && ver >= 10.5));
- return function () { return cachedCanTransition; };
+ var ver = parseFloat(ua.split('Version/')[1]) || undefined;
+ // test to determine if this browser can handle CSS transitions.
+ var cachedCanTransition =
+ (isWK || (isFF && isFF > 3.6) || (isOpera && ver >= 10.5));
+ return function () { return cachedCanTransition; };
})();
//
// Slide class
//
var Slide = function (node, idx) {
- this._node = node;
- if (idx >= 0) {
- this._count = idx + 1;
- }
- if (this._node) {
- addClass(this._node, 'slide distant-slide');
- }
- this._makeCounter();
- this._makeBuildList();
+ this._node = node;
+ if (idx >= 0) {
+ this._count = idx + 1;
+ }
+ if (this._node) {
+ addClass(this._node, 'slide distant-slide');
+ }
+ this._makeCounter();
+ this._makeBuildList();
};
Slide.prototype = {
- _node: null,
- _count: 0,
- _buildList: [],
- _visited: false,
- _currentState: '',
- _states: [ 'distant-slide', 'far-past',
- 'past', 'current', 'future',
- 'far-future', 'distant-slide' ],
- setState: function (state) {
- if (typeof state !== 'string') {
- state = this._states[state];
- }
- if (state === 'current' && !this._visited) {
- this._visited = true;
- this._makeBuildList();
- }
- removeClass(this._node, this._states);
- addClass(this._node, state);
- this._currentState = state;
+ _node: null,
+ _count: 0,
+ _buildList: [],
+ _visited: false,
+ _currentState: '',
+ _states: [ 'distant-slide', 'far-past',
+ 'past', 'current', 'future',
+ 'far-future', 'distant-slide' ],
+ setState: function (state) {
+ if (typeof state !== 'string') {
+ state = this._states[state];
+ }
+ if (state === 'current' && !this._visited) {
+ this._visited = true;
+ this._makeBuildList();
+ }
+ removeClass(this._node, this._states);
+ addClass(this._node, state);
+ this._currentState = state;
- // delay first auto run. Really wish this were in CSS.
- /*
- this._runAutos();
- */
- var _t = this;
- setTimeout(function () { _t._runAutos(); }, 400);
- },
- _makeCounter: function () {
- if (!this._count || !this._node) { return; }
- var c = doc.createElement('span');
- c.innerHTML = this._count;
- c.className = 'counter';
- this._node.appendChild(c);
- },
- _makeBuildList: function () {
- this._buildList = [];
- if (disableBuilds) { return; }
- if (this._node) {
- this._buildList = query('[data-build] > *', this._node);
- }
- this._buildList.forEach(function (el) {
- addClass(el, 'to-build');
- });
- },
- _runAutos: function () {
- if (this._currentState !== 'current') {
- return;
- }
- // find the next auto, slice it out of the list, and run it
- var idx = -1;
- this._buildList.some(function (n, i) {
- if (n.hasAttribute('data-auto')) {
- idx = i;
- return true;
- }
- return false;
- });
- if (idx >= 0) {
- var elem = this._buildList.splice(idx, 1)[0];
- var transitionEnd = isWK ? 'webkitTransitionEnd' : (isFF ? 'mozTransitionEnd' : 'oTransitionEnd');
- var _t = this;
- if (canTransition()) {
- var l = function (evt) {
- elem.parentNode.removeEventListener(transitionEnd, l, false);
- _t._runAutos();
- };
- elem.parentNode.addEventListener(transitionEnd, l, false);
- removeClass(elem, 'to-build');
- } else {
- setTimeout(function () {
- removeClass(elem, 'to-build');
- _t._runAutos();
- }, 400);
- }
- }
- },
- buildNext: function () {
- if (!this._buildList.length) {
- return false;
- }
- removeClass(this._buildList.shift(), 'to-build');
- return true;
- }
+ // delay first auto run. Really wish this were in CSS.
+ /*
+ this._runAutos();
+ */
+ var _t = this;
+ setTimeout(function () { _t._runAutos(); }, 400);
+ },
+ _makeCounter: function () {
+ if (!this._count || !this._node) { return; }
+ var c = doc.createElement('span');
+ c.innerHTML = this._count;
+ c.className = 'counter';
+ this._node.appendChild(c);
+ },
+ _makeBuildList: function () {
+ this._buildList = [];
+ if (disableBuilds) { return; }
+ if (this._node) {
+ this._buildList = query('[data-build] > *', this._node);
+ }
+ this._buildList.forEach(function (el) {
+ addClass(el, 'to-build');
+ });
+ },
+ _runAutos: function () {
+ if (this._currentState !== 'current') {
+ return;
+ }
+ // find the next auto, slice it out of the list, and run it
+ var idx = -1;
+ this._buildList.some(function (n, i) {
+ if (n.hasAttribute('data-auto')) {
+ idx = i;
+ return true;
+ }
+ return false;
+ });
+ if (idx >= 0) {
+ var elem = this._buildList.splice(idx, 1)[0];
+ var transitionEnd = isWK ? 'webkitTransitionEnd' : (isFF ? 'mozTransitionEnd' : 'oTransitionEnd');
+ var _t = this;
+ if (canTransition()) {
+ var l = function (evt) {
+ elem.parentNode.removeEventListener(transitionEnd, l, false);
+ _t._runAutos();
+ };
+ elem.parentNode.addEventListener(transitionEnd, l, false);
+ removeClass(elem, 'to-build');
+ } else {
+ setTimeout(function () {
+ removeClass(elem, 'to-build');
+ _t._runAutos();
+ }, 400);
+ }
+ }
+ },
+ buildNext: function () {
+ if (!this._buildList.length) {
+ return false;
+ }
+ removeClass(this._buildList.shift(), 'to-build');
+ return true;
+ }
};
//
// SlideShow class
//
var SlideShow = function (slides) {
- this._slides = (slides || []).map(function (el, idx) {
- return new Slide(el, idx);
- });
+ this._slides = (slides || []).map(function (el, idx) {
+ return new Slide(el, idx);
+ });
- var h = window.location.hash;
- try {
- this.current = parseInt(h.split('#slide')[1], 10);
- } catch (e) { /* squeltch */ }
- this.current = isNaN(this.current) ? 1 : this.current;
- var _t = this;
- doc.addEventListener('keydown',
- function (e) { _t.handleKeys(e); }, false);
- doc.addEventListener('mousewheel',
- function (e) { _t.handleWheel(e); }, false);
- doc.addEventListener('DOMMouseScroll',
- function (e) { _t.handleWheel(e); }, false);
- doc.addEventListener('touchstart',
- function (e) { _t.handleTouchStart(e); }, false);
- doc.addEventListener('touchend',
- function (e) { _t.handleTouchEnd(e); }, false);
- window.addEventListener('popstate',
- function (e) { _t.go(e.state); }, false);
- this._update();
+ var h = window.location.hash;
+ try {
+ this.current = parseInt(h.split('#slide')[1], 10);
+ } catch (e) { /* squeltch */ }
+ this.current = isNaN(this.current) ? 1 : this.current;
+ var _t = this;
+ doc.addEventListener('keydown',
+ function (e) { _t.handleKeys(e); }, false);
+ doc.addEventListener('mousewheel',
+ function (e) { _t.handleWheel(e); }, false);
+ doc.addEventListener('DOMMouseScroll',
+ function (e) { _t.handleWheel(e); }, false);
+ doc.addEventListener('touchstart',
+ function (e) { _t.handleTouchStart(e); }, false);
+ doc.addEventListener('touchend',
+ function (e) { _t.handleTouchEnd(e); }, false);
+ window.addEventListener('popstate',
+ function (e) { _t.go(e.state); }, false);
+ this._update();
};
SlideShow.prototype = {
- _slides: [],
- _update: function (dontPush) {
- document.querySelector('#presentation-counter').innerText = this.current;
- if (history.pushState) {
- if (!dontPush) {
- history.pushState(this.current, 'Slide ' + this.current, '#slide' + this.current);
- }
- } else {
- window.location.hash = 'slide' + this.current;
- }
- for (var x = this.current - 1; x < this.current + 7; x++) {
- if (this._slides[x - 4]) {
- this._slides[x - 4].setState(Math.max(0, x - this.current));
- }
- }
- },
+ _slides: [],
+ _update: function (dontPush) {
+ document.querySelector('#presentation-counter').innerText = this.current;
+ if (history.pushState) {
+ if (!dontPush) {
+ history.pushState(this.current, 'Slide ' + this.current, '#slide' + this.current);
+ }
+ } else {
+ window.location.hash = 'slide' + this.current;
+ }
+ for (var x = this.current - 1; x < this.current + 7; x++) {
+ if (this._slides[x - 4]) {
+ this._slides[x - 4].setState(Math.max(0, x - this.current));
+ }
+ }
+ },
- current: 0,
- next: function () {
- if (!this._slides[this.current - 1].buildNext()) {
- this.current = Math.min(this.current + 1, this._slides.length);
- this._update();
- }
- },
- prev: function () {
- this.current = Math.max(this.current - 1, 1);
- this._update();
- },
- go: function (num) {
- if (history.pushState && this.current !== num) {
- history.replaceState(this.current, 'Slide ' + this.current, '#slide' + this.current);
- }
- this.current = num;
- this._update(true);
- },
+ current: 0,
+ next: function () {
+ if (!this._slides[this.current - 1].buildNext()) {
+ this.current = Math.min(this.current + 1, this._slides.length);
+ this._update();
+ }
+ },
+ prev: function () {
+ this.current = Math.max(this.current - 1, 1);
+ this._update();
+ },
+ go: function (num) {
+ if (history.pushState && this.current !== num) {
+ history.replaceState(this.current, 'Slide ' + this.current, '#slide' + this.current);
+ }
+ this.current = num;
+ this._update(true);
+ },
- _notesOn: false,
- showNotes: function () {
- var notesOn = this._notesOn = !this._notesOn;
- query('.notes').forEach(function (el) {
- el.style.display = (notesOn) ? 'block' : 'none';
- });
- },
- switch3D: function () {
- toggleClass(document.body, 'three-d');
- },
- handleWheel: function (e) {
- var delta = 0;
- if (e.wheelDelta) {
- delta = e.wheelDelta / 120;
- if (isOpera) {
- delta = -delta;
- }
- } else if (e.detail) {
- delta = -e.detail / 3;
- }
+ _notesOn: false,
+ showNotes: function () {
+ var notesOn = this._notesOn = !this._notesOn;
+ query('.notes').forEach(function (el) {
+ el.style.display = (notesOn) ? 'block' : 'none';
+ });
+ },
+ switch3D: function () {
+ toggleClass(document.body, 'three-d');
+ },
+ handleWheel: function (e) {
+ var delta = 0;
+ if (e.wheelDelta) {
+ delta = e.wheelDelta / 120;
+ if (isOpera) {
+ delta = -delta;
+ }
+ } else if (e.detail) {
+ delta = -e.detail / 3;
+ }
- if (delta > 0) {
- this.prev();
- return;
- }
- if (delta < 0) {
- this.next();
- }
- },
- handleKeys: function (e) {
- if (/^(input|textarea)$/i.test(e.target.nodeName)) return;
+ if (delta > 0) {
+ this.prev();
+ return;
+ }
+ if (delta < 0) {
+ this.next();
+ }
+ },
+ handleKeys: function (e) {
+ if (/^(input|textarea)$/i.test(e.target.nodeName)) return;
- switch (e.keyCode) {
- case 37: // left arrow
- this.prev(); break;
- case 39: // right arrow
- case 32: // space
- this.next(); break;
- case 50: // 2
- this.showNotes(); break;
- case 51: // 3
- this.switch3D(); break;
- }
- },
- _touchStartX: 0,
- handleTouchStart: function (e) {
- this._touchStartX = e.touches[0].pageX;
- },
- handleTouchEnd: function (e) {
- var delta = this._touchStartX - e.changedTouches[0].pageX;
- var SWIPE_SIZE = 150;
- if (delta > SWIPE_SIZE) {
- this.next();
- } else if (delta < -SWIPE_SIZE) {
- this.prev();
- }
- }
+ switch (e.keyCode) {
+ case 37: // left arrow
+ this.prev(); break;
+ case 39: // right arrow
+ case 32: // space
+ this.next(); break;
+ case 50: // 2
+ this.showNotes(); break;
+ case 51: // 3
+ this.switch3D(); break;
+ }
+ },
+ _touchStartX: 0,
+ handleTouchStart: function (e) {
+ this._touchStartX = e.touches[0].pageX;
+ },
+ handleTouchEnd: function (e) {
+ var delta = this._touchStartX - e.changedTouches[0].pageX;
+ var SWIPE_SIZE = 150;
+ if (delta > SWIPE_SIZE) {
+ this.next();
+ } else if (delta < -SWIPE_SIZE) {
+ this.prev();
+ }
+ }
};
// Initialize
@@ -338,38 +338,38 @@ var counters = document.querySelectorAll('.counter');
var slides = document.querySelectorAll('.slide');
function toggleCounter () {
- toArray(counters).forEach(function (el) {
- el.style.display = (el.offsetHeight) ? 'none' : 'block';
- });
+ toArray(counters).forEach(function (el) {
+ el.style.display = (el.offsetHeight) ? 'none' : 'block';
+ });
}
function toggleSize () {
- toArray(slides).forEach(function (el) {
- if (!/reduced/.test(el.className)) {
- addClass(el, 'reduced');
- } else {
- removeClass(el, 'reduced');
- }
- });
+ toArray(slides).forEach(function (el) {
+ if (!/reduced/.test(el.className)) {
+ addClass(el, 'reduced');
+ } else {
+ removeClass(el, 'reduced');
+ }
+ });
}
function toggleTransitions () {
- toArray(slides).forEach(function (el) {
- if (!/no-transitions/.test(el.className)) {
- addClass(el, 'no-transitions');
- } else {
- removeClass(el, 'no-transitions');
- }
- });
+ toArray(slides).forEach(function (el) {
+ if (!/no-transitions/.test(el.className)) {
+ addClass(el, 'no-transitions');
+ } else {
+ removeClass(el, 'no-transitions');
+ }
+ });
}
function toggleGradients () {
- toArray(slides).forEach(function (el) {
- if (!/no-gradients/.test(el.className)) {
- addClass(el, 'no-gradients');
- } else {
- removeClass(el, 'no-gradients');
- }
- });
+ toArray(slides).forEach(function (el) {
+ if (!/no-gradients/.test(el.className)) {
+ addClass(el, 'no-gradients');
+ } else {
+ removeClass(el, 'no-gradients');
+ }
+ });
}
})();